directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: rev 9919 - in incubator/directory/rms: . trunk trunk/api trunk/api/src trunk/api/src/docbook trunk/api/src/images trunk/api/src/java trunk/api/src/java/org trunk/api/src/java/org/apache trunk/api/src/java/org/apache/rms trunk/api/src/test trunk/api/src/test/org trunk/api/src/test/org/apache trunk/api/src/test/org/apache/rms trunk/api/xdocs trunk/api/xdocs/images trunk/gui trunk/gui/main trunk/gui/main/conf trunk/gui/main/src trunk/gui/main/src/docbook trunk/gui/main/src/images trunk/gui/main/src/java trunk/gui/main/src/java/org trunk/gui/main/src/java/org/apache trunk/gui/main/src/java/org/apache/rms trunk/gui/main/src/java/org/apache/rms/ui trunk/gui/main/src/java/org/apache/rms/ui/actions trunk/gui/main/src/java/org/apache/rms/ui/images trunk/gui/main/src/java/org/apache/rms/ui/images/16x16 trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow trunk/gui/main/src/java/org/apache/rms/ui/images/24x24 trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow trunk/gui/main/src/java/org/apache/rms/ui/images/32x32 trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow trunk/gui/main/src/java/org/apache/rms/ui/images/48x48 trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow trunk/gui/main/xdocs trunk/gui/main/xdocs/images trunk/gui/navtree trunk/gui/navtree/src trunk/gui/navtree/src/java trunk/gui/navtree/src/java/org trunk/gui/navtree/src/java/org/apache trunk/gui/navtree/src/java/org/apache/rms trunk/gui/navtree/src/java/org/apache/rms/ui trunk/gui/navtree/src/java/org/apache/rms/ui/navtree trunk/gui/ocmm trunk/gui/ocmm/api trunk/gui/ocmm/api/src trunk/gui/ocmm/api/src/java trunk/gui/ocmm/api/src/java/org trunk/gui/ocmm/api/src/java/org/apache trunk/gui/ocmm/api/src/java/org/apache/rms trunk/gui/ocmm/api/src/java/org/apache/rms/ui trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm trunk/gui/ocmm/impl trunk/gui/ocmm/impl/conf trunk/gui/ocmm/impl/src trunk/gui/ocmm/impl/src/java trunk/gui/ocmm/impl/src/java/org trunk/gui/ocmm/impl/src/java/org/apache trunk/gui/ocmm/impl/src/java/org/apache/rms trunk/gui/ocmm/impl/src/java/org/apache/rms/ui trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl trunk/gui/ocmm/impl/src/test trunk/gui/ocmm/impl/src/test/org trunk/gui/ocmm/impl/src/test/org/apache trunk/gui/ocmm/impl/src/test/org/apache/rms trunk/gui/ocmm/impl/src/test/org/apache/rms/ui trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/test trunk/gui/ocmm/spi trunk/gui/ocmm/spi/src trunk/gui/ocmm/spi/src/java trunk/gui/ocmm/spi/src/java/org trunk/gui/ocmm/spi/src/java/org/apache trunk/gui/ocmm/spi/src/java/org/apache/rms trunk/gui/ocmm/spi/src/java/org/apache/rms/ui trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi trunk/gui/ocmm/xdocs trunk/gui/ocmm/xdocs/structure trunk/jdbc trunk/jdbc/src trunk/jdbc/src/docbook trunk/jdbc/src/images trunk/jdbc/src/java trunk/jdbc/src/java/org trunk/jdbc/src/java/org/apache trunk/jdbc/src/java/org/apache/rms trunk/jdbc/src/java/org/apache/rms/jdbc trunk/jdbc/src/java/org/apache/rms/jdbc/oracle trunk/jdbc/src/java/org/apache/rms/jdbc/utils trunk/jdbc/src/sql trunk/jdbc/src/test trunk/jdbc/src/test/org trunk/jdbc/src/test/org/apache trunk/jdbc/src/test/org/apache/rms trunk/jdbc/src/test/org/apache/rms/jdbc trunk/jdbc/xdocs trunk/jdbc/xdocs/images trunk/jdbm trunk/jdbm/src trunk/jdbm/src/java trunk/jdbm/src/java/org trunk/jdbm/src/java/org/apache trunk/jdbm/src/java/org/apache/rms trunk/jdbm/src/java/org/apache/rms/jdbm trunk/jdbm/xdocs trunk/je trunk/je/src trunk/je/src/java trunk/je/src/java/org trunk/je/src/java/org/apache trunk/je/src/java/org/apache/rms trunk/je/src/java/org/apache/rms/je trunk/je/src/test trunk/je/src/test/org trunk/je/src/test/org/apache trunk/je/src/test/org/apache/rms trunk/je/src/test/org/apache/rms/je trunk/je/xdocs trunk/jndi trunk/spi trunk/spi/src trunk/spi/src/docbook trunk/spi/src/images trunk/spi/src/java trunk/spi/src/java/org trunk/spi/src/java/org/apache trunk/spi/src/java/org/apache/rms trunk/spi/src/java/org/apache/rms/spi trunk/spi/xdocs trunk/spi/xdocs/images trunk/xdocs
Date Thu, 08 Apr 2004 01:57:25 GMT
Author: akarasulu
Date: Wed Apr  7 18:57:22 2004
New Revision: 9919

Added:
   incubator/directory/rms/
   incubator/directory/rms/trunk/
   incubator/directory/rms/trunk/api/
   incubator/directory/rms/trunk/api/LICENSE.txt
   incubator/directory/rms/trunk/api/api.iml
   incubator/directory/rms/trunk/api/maven.log
   incubator/directory/rms/trunk/api/maven.xml
   incubator/directory/rms/trunk/api/project.properties
   incubator/directory/rms/trunk/api/project.xml
   incubator/directory/rms/trunk/api/src/
   incubator/directory/rms/trunk/api/src/docbook/
   incubator/directory/rms/trunk/api/src/images/
   incubator/directory/rms/trunk/api/src/java/
   incubator/directory/rms/trunk/api/src/java/org/
   incubator/directory/rms/trunk/api/src/java/org/apache/
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/Application.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermission.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermissionIterator.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitUtils.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEvent.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEventType.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheListener.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultApplication.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultBitPermission.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultProfile.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultRole.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultUser.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/Profile.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/Rms.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsException.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsFactory.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/Role.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/User.java
   incubator/directory/rms/trunk/api/src/java/org/apache/rms/package.html
   incubator/directory/rms/trunk/api/src/test/
   incubator/directory/rms/trunk/api/src/test/org/
   incubator/directory/rms/trunk/api/src/test/org/apache/
   incubator/directory/rms/trunk/api/src/test/org/apache/rms/
   incubator/directory/rms/trunk/api/src/test/org/apache/rms/BitUtilsTest.java
   incubator/directory/rms/trunk/api/xdocs/
   incubator/directory/rms/trunk/api/xdocs/images/
   incubator/directory/rms/trunk/api/xdocs/images/cache-classes-color.gif   (contents, props changed)
   incubator/directory/rms/trunk/api/xdocs/images/interface-aggregation-color.gif   (contents, props changed)
   incubator/directory/rms/trunk/api/xdocs/images/interface-aggregation.gif   (contents, props changed)
   incubator/directory/rms/trunk/api/xdocs/index.xml
   incubator/directory/rms/trunk/api/xdocs/navigation.xml
   incubator/directory/rms/trunk/gui/
   incubator/directory/rms/trunk/gui/main/
   incubator/directory/rms/trunk/gui/main/.classpath
   incubator/directory/rms/trunk/gui/main/.project
   incubator/directory/rms/trunk/gui/main/conf/
   incubator/directory/rms/trunk/gui/main/conf/block.xml
   incubator/directory/rms/trunk/gui/main/conf/config.xml
   incubator/directory/rms/trunk/gui/main/gui-main.iml
   incubator/directory/rms/trunk/gui/main/maven.log
   incubator/directory/rms/trunk/gui/main/maven.xml
   incubator/directory/rms/trunk/gui/main/project.properties
   incubator/directory/rms/trunk/gui/main/project.xml
   incubator/directory/rms/trunk/gui/main/src/
   incubator/directory/rms/trunk/gui/main/src/docbook/
   incubator/directory/rms/trunk/gui/main/src/images/
   incubator/directory/rms/trunk/gui/main/src/java/
   incubator/directory/rms/trunk/gui/main/src/java/org/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/AboutBox.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/ActionMenuManager.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/DetailTableManager.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/Images.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcMainFrame.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellEditor.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellRenderer.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableModel.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTreeCellRenderer.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmsManagementConsole.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/TreePathUtils.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddPermissionToApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddRoleToProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/BaseMenuItemHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreatePermissionDialog.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateProfileForUserHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateRoleForApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateUserHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeletePermissionFromApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteProfileFromUserHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteRoleFromApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteUserHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DenyPermissionForProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToRoleHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/HandlerTemplate.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuItemHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RefreshHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RemoveRoleFromProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameApplicationHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionDialog.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameRoleHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameUserHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeDenialFromProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeGrantFromProfileHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokePermissionFromRoleHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/SubMenuHandler.java
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/closefile.gif   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/help.gif   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/earth.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/.cvsignore
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/add2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_server.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/at.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_blue.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_green.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_red.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_yellow.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/delete2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/earth_lock.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/environment.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_bronze.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_silver.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/home.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_error.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_information.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_new.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_ok.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_view.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_warning.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_cards.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/joypad.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/keys.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/replace2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_add.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_delete.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_refresh.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users3_preferences.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users_back.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users_family.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman1.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman2.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman3.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman4.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/worker.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/status.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/openfile.gif   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/xdocs/
   incubator/directory/rms/trunk/gui/main/xdocs/images/
   incubator/directory/rms/trunk/gui/main/xdocs/images/mmc.png   (contents, props changed)
   incubator/directory/rms/trunk/gui/main/xdocs/index.xml
   incubator/directory/rms/trunk/gui/main/xdocs/navigation.xml
   incubator/directory/rms/trunk/gui/main/xdocs/requirements.xml
   incubator/directory/rms/trunk/gui/main/xdocs/rt.xml
   incubator/directory/rms/trunk/gui/navtree/
   incubator/directory/rms/trunk/gui/navtree/.classpath
   incubator/directory/rms/trunk/gui/navtree/.project
   incubator/directory/rms/trunk/gui/navtree/navtree.iml
   incubator/directory/rms/trunk/gui/navtree/project.xml
   incubator/directory/rms/trunk/gui/navtree/src/
   incubator/directory/rms/trunk/gui/navtree/src/java/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/BeanTreeNode.java
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainerTreeNode.java
   incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainmentTreeNode.java
   incubator/directory/rms/trunk/gui/ocmm/
   incubator/directory/rms/trunk/gui/ocmm/api/
   incubator/directory/rms/trunk/gui/ocmm/api/.classpath
   incubator/directory/rms/trunk/gui/ocmm/api/.project
   incubator/directory/rms/trunk/gui/ocmm/api/maven.log
   incubator/directory/rms/trunk/gui/ocmm/api/maven.xml
   incubator/directory/rms/trunk/gui/ocmm/api/ocmm-api.iml
   incubator/directory/rms/trunk/gui/ocmm/api/project.xml
   incubator/directory/rms/trunk/gui/ocmm/api/src/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Action.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Container.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentMetadata.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentModel.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContextUtils.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultAction.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainer.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentMetadata.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentModel.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultIconUsage.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/IconUsage.java
   incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/package.html
   incubator/directory/rms/trunk/gui/ocmm/impl/
   incubator/directory/rms/trunk/gui/ocmm/impl/.classpath
   incubator/directory/rms/trunk/gui/ocmm/impl/.project
   incubator/directory/rms/trunk/gui/ocmm/impl/conf/
   incubator/directory/rms/trunk/gui/ocmm/impl/conf/block.xml
   incubator/directory/rms/trunk/gui/ocmm/impl/conf/config.xml
   incubator/directory/rms/trunk/gui/ocmm/impl/maven.log
   incubator/directory/rms/trunk/gui/ocmm/impl/maven.xml
   incubator/directory/rms/trunk/gui/ocmm/impl/merlin.properties
   incubator/directory/rms/trunk/gui/ocmm/impl/ocmm-impl.iml
   incubator/directory/rms/trunk/gui/ocmm/impl/project.xml
   incubator/directory/rms/trunk/gui/ocmm/impl/src/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.java
   incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.xconfig
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/test/
   incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/test/MerlinOcmmFactoryTest.java
   incubator/directory/rms/trunk/gui/ocmm/maven.log
   incubator/directory/rms/trunk/gui/ocmm/maven.xml
   incubator/directory/rms/trunk/gui/ocmm/project.properties
   incubator/directory/rms/trunk/gui/ocmm/project.xml
   incubator/directory/rms/trunk/gui/ocmm/spi/
   incubator/directory/rms/trunk/gui/ocmm/spi/.classpath
   incubator/directory/rms/trunk/gui/ocmm/spi/.project
   incubator/directory/rms/trunk/gui/ocmm/spi/maven.log
   incubator/directory/rms/trunk/gui/ocmm/spi/maven.xml
   incubator/directory/rms/trunk/gui/ocmm/spi/ocmm-spi.iml
   incubator/directory/rms/trunk/gui/ocmm/spi/project.xml
   incubator/directory/rms/trunk/gui/ocmm/spi/src/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi/
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi/ContainmentModelFactory.java
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi/ModelFactoryMonitor.java
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi/ModelFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/gui/ocmm/spi/src/java/org/apache/rms/ui/ocmm/spi/package.html
   incubator/directory/rms/trunk/gui/ocmm/xdocs/
   incubator/directory/rms/trunk/gui/ocmm/xdocs/index.xml
   incubator/directory/rms/trunk/gui/ocmm/xdocs/navigation.xml
   incubator/directory/rms/trunk/gui/ocmm/xdocs/site.jsl
   incubator/directory/rms/trunk/gui/ocmm/xdocs/structure/
   incubator/directory/rms/trunk/gui/ocmm/xdocs/structure/index.xml
   incubator/directory/rms/trunk/gui/ocmm/xdocs/structure/navigation.xml
   incubator/directory/rms/trunk/gui/ocmm/xdocs/stylesheet.css
   incubator/directory/rms/trunk/jdbc/
   incubator/directory/rms/trunk/jdbc/jdbc.iml
   incubator/directory/rms/trunk/jdbc/maven.log
   incubator/directory/rms/trunk/jdbc/maven.xml
   incubator/directory/rms/trunk/jdbc/project.properties
   incubator/directory/rms/trunk/jdbc/project.xml
   incubator/directory/rms/trunk/jdbc/src/
   incubator/directory/rms/trunk/jdbc/src/docbook/
   incubator/directory/rms/trunk/jdbc/src/images/
   incubator/directory/rms/trunk/jdbc/src/java/
   incubator/directory/rms/trunk/jdbc/src/java/org/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcApplicationFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcPermFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcProfileFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcRms.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcRmsFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcRoleFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/JdbcUserFactory.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/oracle/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/oracle/GrantCalculations.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/oracle/PermissionConstraints.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/oracle/RawFunctions.java
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/utils/
   incubator/directory/rms/trunk/jdbc/src/java/org/apache/rms/jdbc/utils/PropertiesDataSource.java
   incubator/directory/rms/trunk/jdbc/src/sql/
   incubator/directory/rms/trunk/jdbc/src/sql/rms-oracle.sql
   incubator/directory/rms/trunk/jdbc/src/sql/rms-test-data.sql
   incubator/directory/rms/trunk/jdbc/src/test/
   incubator/directory/rms/trunk/jdbc/src/test/org/
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/rms/
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/rms/jdbc/
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/rms/jdbc/JdbcApplicationFactoryTest.java
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/rms/jdbc/JdbcPermFactoryTest.java
   incubator/directory/rms/trunk/jdbc/src/test/org/apache/rms/jdbc/JdbcRoleFactoryTest.java
   incubator/directory/rms/trunk/jdbc/xdocs/
   incubator/directory/rms/trunk/jdbc/xdocs/images/
   incubator/directory/rms/trunk/jdbc/xdocs/images/rms-database-schema.gif   (contents, props changed)
   incubator/directory/rms/trunk/jdbc/xdocs/index.xml
   incubator/directory/rms/trunk/jdbc/xdocs/navigation.xml
   incubator/directory/rms/trunk/jdbm/
   incubator/directory/rms/trunk/jdbm/jdbm.iml
   incubator/directory/rms/trunk/jdbm/src/
   incubator/directory/rms/trunk/jdbm/src/java/
   incubator/directory/rms/trunk/jdbm/src/java/org/
   incubator/directory/rms/trunk/jdbm/src/java/org/apache/
   incubator/directory/rms/trunk/jdbm/src/java/org/apache/rms/
   incubator/directory/rms/trunk/jdbm/src/java/org/apache/rms/jdbm/
   incubator/directory/rms/trunk/jdbm/xdocs/
   incubator/directory/rms/trunk/jdbm/xdocs/index.xml
   incubator/directory/rms/trunk/jdbm/xdocs/navigation.xml
   incubator/directory/rms/trunk/je/
   incubator/directory/rms/trunk/je/je.iml
   incubator/directory/rms/trunk/je/maven.xml
   incubator/directory/rms/trunk/je/project.properties
   incubator/directory/rms/trunk/je/project.xml
   incubator/directory/rms/trunk/je/src/
   incubator/directory/rms/trunk/je/src/java/
   incubator/directory/rms/trunk/je/src/java/org/
   incubator/directory/rms/trunk/je/src/java/org/apache/
   incubator/directory/rms/trunk/je/src/java/org/apache/rms/
   incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/
   incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/AbstractJeTest.java
   incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/JePermFactory.java
   incubator/directory/rms/trunk/je/src/java/org/apache/rms/je/PermMapTupleBinding.java
   incubator/directory/rms/trunk/je/src/test/
   incubator/directory/rms/trunk/je/src/test/org/
   incubator/directory/rms/trunk/je/src/test/org/apache/
   incubator/directory/rms/trunk/je/src/test/org/apache/rms/
   incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/
   incubator/directory/rms/trunk/je/src/test/org/apache/rms/je/PermMapTupleBindingTest.java
   incubator/directory/rms/trunk/je/xdocs/
   incubator/directory/rms/trunk/je/xdocs/index.xml
   incubator/directory/rms/trunk/je/xdocs/navigation.xml
   incubator/directory/rms/trunk/jndi/
   incubator/directory/rms/trunk/maven.xml
   incubator/directory/rms/trunk/project.properties
   incubator/directory/rms/trunk/project.xml
   incubator/directory/rms/trunk/rms-trunk.ipr
   incubator/directory/rms/trunk/rms-trunk.iws
   incubator/directory/rms/trunk/spi/
   incubator/directory/rms/trunk/spi/.classpath
   incubator/directory/rms/trunk/spi/.project
   incubator/directory/rms/trunk/spi/maven.log
   incubator/directory/rms/trunk/spi/maven.xml
   incubator/directory/rms/trunk/spi/project.properties
   incubator/directory/rms/trunk/spi/project.xml
   incubator/directory/rms/trunk/spi/spi.iml
   incubator/directory/rms/trunk/spi/src/
   incubator/directory/rms/trunk/spi/src/docbook/
   incubator/directory/rms/trunk/spi/src/images/
   incubator/directory/rms/trunk/spi/src/java/
   incubator/directory/rms/trunk/spi/src/java/org/
   incubator/directory/rms/trunk/spi/src/java/org/apache/
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ApplicationFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ApplicationFactoryMonitor.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ApplicationFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/CachingFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableApplication.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableBitPermission.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableProfile.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableRms.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableRole.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/MutableUser.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/PermissionFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/PermissionFactoryMonitor.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/PermissionFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ProfileFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ProfileFactoryMonitor.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/ProfileFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/RoleFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/RoleFactoryMonitor.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/RoleFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/UserFactory.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/UserFactoryMonitor.java
   incubator/directory/rms/trunk/spi/src/java/org/apache/rms/spi/UserFactoryMonitorAdapter.java
   incubator/directory/rms/trunk/spi/xdocs/
   incubator/directory/rms/trunk/spi/xdocs/images/
   incubator/directory/rms/trunk/spi/xdocs/images/application-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/application-spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/cache-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/default-bit-permission-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/default-role-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/permission-spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/profile-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/profile-spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/role-spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/user-api-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/images/user-spi-classes.gif   (contents, props changed)
   incubator/directory/rms/trunk/spi/xdocs/index.xml
   incubator/directory/rms/trunk/spi/xdocs/navigation.xml
   incubator/directory/rms/trunk/todo.txt
   incubator/directory/rms/trunk/xdocs/
Log:
Importing RMS

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

Added: incubator/directory/rms/trunk/api/api.iml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/api.iml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="commons-lang-2.0.jar" level="application" />
+    <orderEntry type="library" name="junit-3.8.1.jar" level="application" />
+  </component>
+</module>
+

Added: incubator/directory/rms/trunk/api/maven.log
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/maven.log	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,625 @@
+2004-04-07 21:12:51,559 INFO  org.apache.maven.plugin.PluginManager - Initializing Plugins!
+2004-04-07 21:12:51,590 INFO  org.apache.maven.plugin.PluginManager - Unpacking plugins from directory --> j:\apache\maven\maven-1.0-beta-10\plugins
+2004-04-07 21:12:51,684 INFO  org.apache.maven.plugin.PluginManager - Processing unpacked plugins in C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-07 21:12:51,684 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-deploy-plugin-1.1
+2004-04-07 21:12:51,856 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-plexus-plugin-0.2
+2004-04-07 21:12:51,887 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-runner-plugin-0.2
+2004-04-07 21:12:51,887 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-sea-plugin-1.0
+2004-04-07 21:12:51,887 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-vdoclet-plugin-1.0
+2004-04-07 21:12:51,903 INFO  org.apache.maven.plugin.PluginCacheManager - Saving caches to C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-07 21:12:51,950 INFO  org.apache.maven.plugin.PluginManager - Finished initializing Plugins!
+2004-04-07 21:12:55,512 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1ab11b0. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:55,512 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@302e67. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:55,528 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@14e113b. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:55,528 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@4d76b4. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:57,699 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:57,746 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:57,824 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:58,949 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)
+	at com.werken.werkz.jelly.AttainGoalTag.doTag(AttainGoalTag.java:134)
+	at org.apache.maven.jelly.tags.werkz.LazyAttainGoalTag.doTag(LazyAttainGoalTag.java:107)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:58,981 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)
+	at com.werken.werkz.jelly.AttainGoalTag.doTag(AttainGoalTag.java:134)
+	at org.apache.maven.jelly.tags.werkz.LazyAttainGoalTag.doTag(LazyAttainGoalTag.java:107)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-07 21:12:58,996 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fe315d. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)
+	at com.werken.werkz.jelly.AttainGoalTag.doTag(AttainGoalTag.java:134)
+	at org.apache.maven.jelly.tags.werkz.LazyAttainGoalTag.doTag(LazyAttainGoalTag.java:107)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)

Added: incubator/directory/rms/trunk/api/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/maven.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?> 
+  
+<project 
+  default="java:compile" 
+  xmlns:j="jelly:core" 
+  xmlns:u="jelly:util" 
+  xmlns:ant="jelly:ant" 
+  xmlns:maven="jelly:maven" 
+  xmlns:m="maven" 
+  xmlns:deploy="deploy"
+  >
+  
+  <preGoal name="site">
+    <attainGoal name="docbook:transform"/>
+  </preGoal>
+  
+  <postGoal name="site">
+    <attainGoal name="server:copy-images"/>
+    <attainGoal name="subproject:collectdocs"/>
+  </postGoal>
+
+  <goal name="subproject:collectdocs">
+    <ant:copy 
+      toDir="../target/docs/authorization/api">
+      
+      <ant:fileSet dir="${basedir}/target/docs">
+        <ant:include name="**"/>
+      </ant:fileSet>
+    </ant:copy>
+  </goal>
+
+  <goal name="server:copy-images">
+    <copy toDir="target/docs/images">
+      <fileSet dir="${basedir}/src/images">
+        <include name="*.gif"/>
+      </fileSet>
+    </copy>
+  </goal>
+</project>

Added: incubator/directory/rms/trunk/api/project.properties
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/project.properties	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,3 @@
+maven.javadoc.overview=src/java/org/apache/eve/schema/package.html
+maven.xdoc.jsl = file:/${basedir}/../src/etc/site.jsl
+maven.license.licenseFile = ../LICENSE.txt
\ No newline at end of file

Added: incubator/directory/rms/trunk/api/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/project.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+    <extend>${basedir}/../project.xml</extend>
+    <id>rms-api</id>
+    <name>RMS API</name>
+    <package>org.apache.rms</package>
+    <currentVersion>SNAPSHOT</currentVersion>
+    <inceptionYear>2004</inceptionYear>
+
+    <shortDescription>RMS API</shortDescription>
+    <description>
+      RMS exposes a standard API regardless of the various implementations
+      used under the hood.
+    </description>
+
+    <dependencies>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>3.8.1</version>
+        <url>http://junit.org</url>
+      </dependency>
+
+      <dependency>
+        <groupId>commons-codec</groupId>
+        <artifactId>commons-codec</artifactId>
+        <version>SNAPSHOT</version>
+        <url>http://jakarta.apache.org/commons/codec</url>
+      </dependency>
+
+      <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>SNAPSHOT</version>
+        <url>http://jakarta.apache.org/commons/lang</url>
+      </dependency>
+    </dependencies>
+
+  <reports>
+    <report>maven-changelog-plugin</report>
+    <report>maven-developer-activity-plugin</report>
+    <report>maven-file-activity-plugin</report>
+    <report>maven-license-plugin</report>
+    <report>maven-javadoc-plugin</report>
+    <report>maven-jdepend-plugin</report>
+    <report>maven-jxr-plugin</report>
+    <!-- report>maven-test-plugin</report -->
+    <report>maven-tasklist-plugin</report>
+  </reports>
+</project>
+
+

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/Application.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/Application.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,120 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Iterator ;
+
+
+/**
+ * An RMS managed application.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public interface Application
+{
+    /** 
+     * Gets the name uniquely identifying this Applicaiton.
+     * 
+     * @return the name String
+     */
+    String getName() ;
+    
+    /**
+     * Checks to see if a role has been defined for this Applicaiton. 
+     * 
+     * @param role the role to test for existance
+     * @return true if the Role is defined for this Application, false otherwise
+     */
+    boolean hasRole( Role role ) ;
+    
+    /**
+     * Checks to see if a role has been defined for this Applicaiton. 
+     * 
+     * @param role the role to test for existance
+     * @return true if the Role is defined for this Application, false otherwise
+     */
+    boolean hasRole( String role ) ;
+    
+    /**
+     * Gets a role defined for this Applicaiton by name. 
+     * 
+     * @param role the name of the Role to get
+     * @return the Role or null if it is not defined for this Application
+     */
+    Role getRole( String role ) ;
+    
+    /**
+     * Gets an iteration over the set of roles defined for this Application.
+     * 
+     * @return an Iterator over Role instances
+     */
+    Iterator getRoles() ;
+    
+    /**
+     * Checks to see if a Permission is defined at an index.
+     * 
+     * @param idx the index to test
+     * @return true if a permission is defined for the index, false otherwise
+     */
+    boolean hasPermission( int idx ) ;
+    
+    /**
+     * Checks to see if a Permission is defined for this Application.
+     * 
+     * @param permission the name of the permission to check for
+     * @return true if a permission is defined, false otherwise
+     */
+    boolean hasPermission( String permission ) ;
+    
+    /**
+     * Checks to see if a Permission is defined for this Application.
+     * 
+     * @param permission the permission to check for
+     * @return true if a permission is defined, false otherwise
+     */
+    boolean hasPermission( BitPermission permission ) ;
+    
+    /**
+     * Gets the BitPermission associated with an index if one was assigned for
+     * that position.
+     *  
+     * @param idx the index of the permission
+     * @return the BitPermission associated with the index or null if one was 
+     *      not assigned for that position
+     */
+    BitPermission getPermission( int idx ) ;
+    
+    /**
+     * Gets the BitPermission associated with an index if one was assigned for
+     * that position.
+     *  
+     * @param permission the name of the permission to check for
+     * @return the BitPermission corresponding to the name, or null if no perm
+     *      is assigned the name
+     */
+    BitPermission getPermission( String permission ) ;
+
+    /**
+     * Gets an iteration over the set of BitPermissions defined for this 
+     * Application.
+     * 
+     * @return an Iterator over BitPermission instances
+     */
+    Iterator getPermissions() ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermission.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermission.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,48 @@
+/*
+ *   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.rms ;
+
+
+/**
+ * An RMS application permission.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public interface BitPermission
+{
+    /**
+     * Gets the index this BitPermission is assigned to.
+     * 
+     * @return the bit index
+     */
+    int getIndex() ;
+    
+    /**
+     * Gets the name of this BitPermission.
+     * 
+     * @return the name
+     */
+    String getName() ;
+    
+    /**
+     * Gets the application name this BitPermission is defined for.
+     * 
+     * @return the name of the application.
+     */
+    String getApplication() ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermissionIterator.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitPermissionIterator.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,133 @@
+/*
+ *   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.rms ;
+
+
+import org.apache.rms.Application;
+import org.apache.rms.BitPermission;
+
+import java.util.Iterator ;
+
+
+/**
+ * Iterates through permissions within a bit vector: returns only those 
+ * permissions at indices where the bit value is set to zero or one depending
+ * on the constructor arguments used.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public class BitPermissionIterator implements Iterator
+{
+    private final int m_limit ;
+    private final byte[] m_perms ;
+    private final Application m_app ;
+    private final boolean m_ones ;
+
+    private int ii = 0 ;
+    
+    
+    /**
+     * Creates a BitPermissionIterator over a bit vector representation of a 
+     * BitPermission set.
+     * 
+     * @param app the application the role is defined for
+     * @param perms the permissions to iterator over
+     * @param ones flag used to determine if permissions of 0's or 1's are 
+     *      returned.  If true BitPermissions for indices with 1's are returned,
+     *      if false BitPermissions for indices with 0's are returned
+     */
+    BitPermissionIterator( Application app, byte[] perms, boolean ones )
+    {
+        m_app = app ;
+        m_ones = ones ;
+        m_perms = perms ;
+        m_limit = ( perms.length << 3 ) ;
+        
+        advance() ;
+    }
+    
+    
+    /**
+     * Creates a BitPermissionIterator over a bit vector representation of a 
+     * BitPermission set, where raised bits set to 1 are returned.
+     * 
+     * @param app the application the role is defined for
+     * @param perms the permissions to iterator over
+     */
+    BitPermissionIterator( Application app, byte[] perms )
+    {
+        this( app, perms, true ) ; 
+    }
+    
+    
+    /**
+     * Advance to the next permission to return.
+     */
+    private void advance()
+    {
+        // if 1's are returned then we skip over 0's
+        if ( m_ones )
+        {    
+            while( ! BitUtils.getBit( m_perms, ii ) && ii < m_limit )
+            {
+                ii++ ;
+            }
+        }
+        // if 0's are returned then we skip over 1's
+        else
+        {
+            while( BitUtils.getBit( m_perms, ii ) && ii < m_limit )
+            {
+                ii++ ;
+            }
+        }
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see java.util.Iterator#hasNext()
+     */
+    public boolean hasNext()
+    {
+        return ii < m_limit ;
+    }
+
+    
+    /*
+     * (non-Javadoc)
+     * @see java.util.Iterator#next()
+     */
+    public Object next()
+    {
+        BitPermission l_perm = m_app.getPermission( ii ) ;
+        ii++ ;
+        advance() ;
+        return l_perm ;
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see java.util.Iterator#remove()
+     */
+    public void remove()
+    {
+        throw new UnsupportedOperationException( "Removal is not supported!" ) ;
+    }
+}
\ No newline at end of file

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitUtils.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/BitUtils.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,315 @@
+/*
+ *   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.rms ;
+
+
+/**
+ * Bit manipulation tools.
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Directory Project Team</a>
+ * @version $Rev: 23 $
+ */
+public class BitUtils 
+{
+    /** bit masks for all 32 bits in a primitive int */
+    private final static int[] BIT_MASKS =
+    {
+        0x00000001, 0x00000002, 0x00000004, 0x00000008,
+        0x00000010, 0x00000020, 0x00000040, 0x00000080,
+        0x00000100, 0x00000200, 0x00000400, 0x00000800,
+        0x00001000, 0x00002000, 0x00004000, 0x00008000,
+        0x00010000, 0x00020000, 0x00040000, 0x00080000,
+        0x00100000, 0x00200000, 0x00400000, 0x00800000,
+        0x01000000, 0x02000000, 0x04000000, 0x08000000,
+        0x10000000, 0x20000000, 0x40000000, 0x80000000
+    };
+
+
+    /**
+     * Gets a mask used to get a bit at an index by AND'ing the mask with
+     * the int.
+     *
+     * @param index the index of the bit
+     * @return the bit's mask
+     */
+    public static final int getBitMask( int index )
+    {
+        return BIT_MASKS[index] ;
+    }
+
+
+    // ------------------------------------------------------------
+    // access to byte bits
+    // ------------------------------------------------------------
+
+
+    /**
+     * Gets the value of a bit within a primitive byte using a bit index.
+     *
+     * @param bits the byte containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-7]
+     */
+    public final static boolean getBit( byte bits, int index )
+    {
+        if ( index > 7 || index < 0 )
+        {
+            return false ;
+        }
+
+        return ( bits & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    /**
+     * Gets the value of a bit within a Byte using a bit index.
+     *
+     * @param bits the Byte containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-7],
+     * or the bits argument is null
+     */
+    public final static boolean getBit( Byte bits, int index )
+    {
+        if ( bits == null || index > 7 || index < 0 )
+        {
+            return false ;
+        }
+
+        return ( bits.byteValue() & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    // ------------------------------------------------------------
+    // access to int bits
+    // ------------------------------------------------------------
+
+
+    /**
+     * Gets the value of a bit within a primitive int using a bit index.
+     * If index value is out of index range a false is returned instead of
+     * throwing an exception.
+     *
+     * @param bits the int containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-31]
+     */
+    public static boolean getBit( int bits, int index )
+    {
+        if ( index > 31 || index < 0 )
+        {
+            return false ;
+        }
+
+        return ( bits & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    /**
+     * Gets the value of a bit within an Integer using a bit index.
+     *
+     * @param bits the Integer containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-31],
+     * or the bits argument is null
+     */
+    public static boolean getBit( Integer bits, int index )
+    {
+        if ( bits == null || index > 31 || index < 0 )
+        {
+            return false ;
+        }
+
+        return ( bits.intValue() & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    // ------------------------------------------------------------
+    // access to long bits
+    // ------------------------------------------------------------
+
+
+    /**
+     * Gets the value of a bit within a primitive long using a bit index.
+     *
+     * @param bits the long containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-63]
+     */
+    public static boolean getBit( long bits, int index )
+    {
+        if ( index > 63 || index < 0 )
+        {
+            return false ;
+        }
+
+        if ( index < 31 )
+        {
+            return ( bits & BIT_MASKS[index] ) == 0 ? false : true ;
+        }
+
+        index -= 32 ;
+        return ( ( bits >> 32 ) & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    /**
+     * Gets the value of a bit within a Long using a bit index.
+     *
+     * @param bits the int containing the bit to get
+     * @param index the zero based index of the bit to get
+     * @return true if the bit is 1 or false if it is 0 out of range [0-63],
+     * or the bits argument is null
+     */
+    public static boolean getBit( Long bits, int index )
+    {
+        if ( bits == null || index > 63 || index < 0 )
+        {
+            return false ;
+        }
+
+        if ( index < 31 )
+        {
+            return ( bits.longValue() & BIT_MASKS[index] ) == 0 ? false : true ;
+        }
+
+        index -= 32 ;
+        return ( ( bits.longValue() >> 32 ) & BIT_MASKS[index] ) == 0 ? false : true ;
+    }
+
+
+    /**
+     * Gets the value of a bit within an array of bytes using a bit index.  If
+     * the length of the array is exceeded while searching for the index then 
+     * false is returned.
+     * 
+     * @param bits binary bit vector as a byte array
+     * @param index the bit index into the binary bit vector NOT into the
+     *    array so index may be as larget as bits.length*8-1.
+     * @return the value of the bit as a boolean, true if it is 1, false if it 
+     *    is 0.
+     */
+    public static boolean getBit( byte[] bits, int index )
+    {
+        /*
+         *  Calculate the index into the array = index / 8 using a
+         *  bit shift and return false if this index is bigger than 
+         *  the array.
+         */
+        int ii = index >> 3 ;
+        if ( ii >= bits.length )
+        {
+            return false ;
+        }
+        
+        /*
+         * Calcualtes the byte offset of the bit searched for using bit shifts
+         * and subtraction.  Then returns true if the bit is set to 1.
+         */
+        int jj = index - ( ii << 3 ) ;
+        if ( ( bits[ii] & BIT_MASKS[jj] ) > 0 )
+        {
+            return true ;
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Sets a bit to a value in a binary at an index.  If the binary is not big 
+     * enough to set the bit at the specified index it is padded then the bit is
+     * set.
+     * 
+     * @param bits the binary of bytes
+     * @param index the index of the bit into the binary
+     * @param value the value to toggle the bit to as a boolean, true
+     *      corresponds to 1, and false corresponds to 0
+     * @return the given or reallocated binary
+     */
+    public static byte[] setBit( byte [] bits, int index, boolean value )
+    {
+        int ii = index >> 3 ;
+        
+        if ( ii >= bits.length )
+        {
+            bits = pad( bits, ii + 1 ) ;
+        }
+        
+        /*
+         * calculate the bit offset in the byte by subtracting the greatest 
+         * multiple of 8 less than the index (ii << 3), from the index
+         */ 
+        int offset = index - ( ii << 3 ) ;
+        
+        if ( value )
+        {    
+            bits[ii] |= BIT_MASKS[offset] ;
+        }
+        else
+        {
+            bits[ii] &= ( ~BIT_MASKS[offset] ) ;
+        }
+        
+        return bits ;
+    }
+
+
+    /**
+     * Pads an array by allocating a new array and copying over the old values
+     * from the smaller one.  If the size to padTo is less than or equal to the
+     * new length to pad to the original byte array is returned.
+     * 
+     * @param bites the byte array to pad
+     * @param padTo the new size of the array
+     * @return the newly padded array with existing values copied 
+     */
+    public static byte[] pad( byte[] bites, int padTo )
+    {
+        if ( bites.length >= padTo )
+        {    
+            return bites ;
+        }
+        
+        byte[] l_padded = new byte[ padTo ] ;
+        System.arraycopy( bites, 0, l_padded, 0, bites.length ) ;
+        return l_padded ;
+    }
+    
+    
+    /**
+     * Truncates an array of bytes by allocating a new shorter array and
+     * copying over the old values from the larger one upto the truncation 
+     * length.  If the size to the truncation length is greater than or 
+     * equal to the existing array length the original byte array is returned.  
+     * 
+     * @param bites the byte array to truncate
+     * @param length the length to truncate to
+     * @return the truncated array with existing values copied over
+     */
+    public static byte[] trunc( byte[] bites, int length )
+    {
+        if ( bites.length <= length )
+        {
+            return bites ;
+        }
+        
+        byte[] l_truncated = new byte[ length ] ;
+        System.arraycopy( bites, 0, l_truncated, 0, length ) ;
+        return l_truncated ;
+    }
+}
\ No newline at end of file

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEvent.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEvent.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,48 @@
+/*
+ *   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.rms ;
+
+
+import java.util.EventObject ;
+
+
+/**
+ * A CacheEvent represents a change to the RMS object Cache.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ * @see CacheEventType
+ */
+public class CacheEvent extends EventObject
+{
+    /** the type of this event */
+    private final CacheEventType m_type ;
+
+    /**
+     * Creates a CacheEvent of a particular type for a Cached object.
+     * 
+     * @param type the type of this CacheEvent
+     * @param obj the object this CacheEvent corresponds to
+     * @param source the source that fired this CacheEvent
+     * @see CacheEventType
+     */
+    public CacheEvent( CacheEventType type, Object obj, Object source )
+    {
+        super( source ) ;
+        m_type = type ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEventType.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheEventType.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,119 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Map ;
+import java.util.List ;
+
+import org.apache.commons.lang.enum.EnumUtils ;
+import org.apache.commons.lang.enum.ValuedEnum ;
+
+
+/**
+ * Type safe enum for an rms event type.  This can be take one of the following 
+ * three values: 
+ * <ul>
+ * <li>UPDATED</li>
+ * <li>CREATED</li>
+ * <li>DELETED</li>
+ * </ul>
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public class CacheEventType extends ValuedEnum
+{
+    /** the value of an updated event type */
+    public static final int UPDATED_VAL = 0 ;
+    /** the value of a deleted event type */
+    public static final int DELETED_VAL = 1 ;
+    /** the value of a created event type */
+    public static final int CREATED_VAL = 2 ;
+
+    /** the updated type save enum for a cached event */
+    public static final CacheEventType UPDATED = 
+        new CacheEventType( "updated", UPDATED_VAL ) ;
+    /** the delete type save enum for a cached event */
+    public static final CacheEventType DELETED = 
+        new CacheEventType( "deleted", DELETED_VAL ) ;
+    /** the created type save enum for a cached event */
+    public static final CacheEventType CREATED = 
+        new CacheEventType( "created", CREATED_VAL ) ;
+
+    
+    /**
+     * Private constructor so no other instances can be created other than the
+     * public static constants in this class.
+     *
+     * @param name a string name for the enumeration value.
+     * @param value the integer value of the enumeration.
+     */
+    private CacheEventType( final String name, final int value )
+    {
+        super( name, value ) ;
+    }
+    
+    
+    /**
+     * Gets the enumeration type for the type string regardless of case.
+     * 
+     * @param type the usage string
+     * @return the type enumeration type
+     */
+    public static CacheEventType getUsage( String type )
+    {
+        if ( type.equalsIgnoreCase( CacheEventType.UPDATED.getName() ) )
+        {
+            return CacheEventType.UPDATED ;
+        }
+        
+        if ( type.equalsIgnoreCase( CacheEventType.CREATED.getName() ) )
+        {
+            return CacheEventType.CREATED ;
+        }
+        
+        if ( type.equalsIgnoreCase( CacheEventType.DELETED.getName() ) )
+        {
+            return CacheEventType.DELETED ;
+        }
+
+        throw new IllegalArgumentException( "Unknown type string" + type ) ;
+    }
+    
+    
+    /**
+     * Gets a List of the enumerations for the event type.
+     * 
+     * @return the List of enumerations possible for event type
+     */
+    public static List list()
+    {
+        return EnumUtils.getEnumList( CacheEventType.class ) ;
+    }
+    
+    
+    /**
+     * Gets the Map of event objects by name using the EventType class.
+     * 
+     * @return the Map by name of EventTypes.
+     */
+    public static Map map()
+    {
+        return EnumUtils.getEnumMap( CacheEventType.class ) ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheListener.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/CacheListener.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,40 @@
+/*
+ *   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.rms ;
+
+
+import org.apache.rms.CacheEvent;
+
+import java.util.EventListener ;
+
+
+/**
+ * Listener interface used to notify interested parties of changes to cached 
+ * RMS objects.  Not all RMS providers will support this feature.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public interface CacheListener extends EventListener
+{
+    /**
+     * A change to the RMS object cache occured.
+     * 
+     * @param event the event representing the cache change.
+     */
+    void cacheChanged( CacheEvent event ) ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultApplication.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultApplication.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,468 @@
+/*
+ *   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.rms ;
+
+
+import java.io.Serializable ;
+
+import java.util.Map ;
+import java.util.List ;
+import java.util.HashMap ;
+import java.util.Iterator ;
+import java.util.Observer ;
+import java.util.Collection ;
+import java.util.Observable ;
+import java.util.Collections ;
+
+import org.apache.commons.lang.Validate ;
+
+
+/**
+ * A default Application bean.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public abstract class DefaultApplication extends Observable
+    implements Application, Observer, Serializable
+{
+    /** the name of this Application */
+    private String m_name ;
+    /** the Roles defined for this Application keyed by name */
+    private Map m_roles ;
+    /** a map of permission names to BitPermission objects */
+    private transient Map m_perms ;
+    /** a mapping of permissions to indices for fast index based lookups */
+    private List m_mapping ;
+    
+    
+    /**
+     * Creates a default Application.
+     * 
+     * @param name the name of the Application to create
+     */
+    protected DefaultApplication( String name )
+    {
+        m_name = name ;
+    }
+    
+    
+    /**
+     * Creates a populated default Application instance with Roles and 
+     * BitPermissions defined.
+     * 
+     * @param name the name of the Application to create
+     * @param roles a Map of the Roles ( where the key is the name string, and
+     *      the value is the Role instance) defined for this Application
+     * @param mapping the BitPermission to index mapping array - each 
+     *      BitPermission instance contained in the array is place at the index
+     *      it has been assigned to for fast index lookups
+     */
+    public DefaultApplication( String name, Map roles, List mapping )
+    {
+        m_name = name ;
+        setRoles( roles ) ;
+        m_mapping = mapping ;
+        setPermissions( mapping ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#hasRole(org.apache.rms.Role)
+     */
+    public boolean hasRole( Role role )
+    {
+        return m_roles.containsKey( role.getName() ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#hasRole(java.lang.String)
+     */
+    public boolean hasRole( String role )
+    {
+        return m_roles.containsKey( role ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getRole(java.lang.String)
+     */
+    public Role getRole( String role )
+    {
+        return ( Role ) m_roles.get( role ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getRoles()
+     */
+    public Iterator getRoles()
+    {
+        Collection l_values = null ;
+        l_values = Collections.unmodifiableCollection( m_roles.values() ) ; 
+        return l_values.iterator() ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#hasPermission(java.lang.String)
+     */
+    public boolean hasPermission( String permission )
+    {
+        return m_perms.containsKey( permission ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#hasPermission(org.apache.rms.BitPermission)
+     */
+    public boolean hasPermission( BitPermission permission )
+    {
+        return m_perms.containsKey( permission.getName() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getPermission(java.lang.String)
+     */
+    public BitPermission getPermission( String permission )
+    {
+        if ( ! m_perms.containsKey( permission ) )
+        {
+            return null ;
+        }
+        
+        return ( BitPermission ) m_perms.get( permission ) ;
+    }
+
+    
+    /**
+     * Gets the largest permission index for this application.
+     * 
+     * @return the largest permission index
+     */
+    public int getMaxPermissionIndex() 
+    {
+        for ( int ii = m_mapping.size() - 1; ii >= 0; ii-- )
+        {
+            BitPermission l_perm = ( BitPermission ) m_mapping.get( ii ) ;
+            if ( l_perm == null )
+            {
+                continue ;
+            }
+            else
+            {
+                return ii ;
+            }
+        }
+        
+        return 0 ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getPermissions()
+     */
+    public Iterator getPermissions()
+    {
+        return Collections
+            .unmodifiableCollection( m_perms.values() ).iterator() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#getPermission(int)
+     */
+    public BitPermission getPermission( int idx )
+    {
+        return ( BitPermission ) m_mapping.get( idx ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Application#hasPermission(int)
+     */
+    public boolean hasPermission( int idx )
+    {
+        return m_mapping.get( idx ) != null ;
+    }
+
+
+    /**
+     * Pretty prints out the Application with its Roles and Permissions.
+     * 
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        StringBuffer l_buf = new StringBuffer( "Application: " ) ;
+        l_buf.append( m_name ) ;
+        l_buf.append( "\n\t" ) ;
+        l_buf.append( m_name ) ;
+        l_buf.append( " Permissions:\n\t[\n" ) ;
+        
+        Iterator l_list = getPermissions() ;
+        while ( l_list.hasNext() ) 
+        {
+            l_buf.append( "\t\t" ) ;
+            l_buf.append( l_list.next() ) ;
+            l_buf.append( "\n" ) ;
+        }
+        l_buf.append( "\t]" ) ;
+        
+        l_buf.append( "\n\t" ) ;
+        l_buf.append( m_name ) ;
+        l_buf.append( " Roles:\n\t[\n" ) ;
+        l_list = getRoles() ;
+        while ( l_list.hasNext() ) 
+        {
+            l_buf.append( "\t\t" ) ;
+            l_buf.append( l_list.next() ) ;
+            l_buf.append( "\n" ) ;
+        }
+        l_buf.append( "\t]" ) ;
+        
+        return l_buf.toString() ;
+    }
+
+    
+    // ------------------------------------------------------------------------
+    // Protected Methods 
+    // ------------------------------------------------------------------------
+
+    
+    /**
+     * Sets the permissions for this Application building the tansient 
+     * permissions name hash for fast by name lookups of permissions.  Also 
+     * registers this Application for updates if Permissions are Observables.
+     * 
+     * @param mapping the BitPermission to index mapping array - each 
+     *      BitPermission instance contained in the array is place at the index
+     *      it has been assigned to for fast index lookups*/
+    protected void setPermissions( List mapping )
+    {
+        m_mapping = mapping ;
+        m_perms = new HashMap( m_mapping.size() ) ;
+        
+        for ( int ii = 0; ii < m_mapping.size(); ii++ )
+        {
+            BitPermission l_perm = ( BitPermission ) m_mapping.get( ii ) ;
+            
+            if ( l_perm == null )
+            {
+                continue ;
+            }
+            
+            if ( l_perm instanceof Observable )
+            {
+                ( ( Observable ) l_perm ).addObserver( this ) ;
+            }
+            
+            m_perms.put( l_perm.getName(), l_perm ) ;
+        }
+    }
+    
+    
+    /**
+     * Sets the Roles defined by this Application.    Also registers this 
+     * Application for updates if Roles are Observables.
+     * 
+     * @param roles a Map of the Roles ( where the key is the name string, and
+     *      the value is the Role instance) defined for this Application*/
+    protected void setRoles( Map roles )
+    {
+        Validate.notNull( roles ) ;
+        m_roles = roles ;
+        
+        Iterator list = roles.values().iterator() ;
+        while ( list.hasNext() )
+        {
+            Object o = list.next() ;
+            
+            if ( o instanceof Observable )
+            {
+                ( ( Observable ) o ).addObserver( this ) ;
+            }
+        }
+    }
+
+
+    /**
+     * Adds a BitPermission to this application.
+     * 
+     * @param perm the permission to add
+     * @return the added permission
+     */
+    protected BitPermission addPermission( BitPermission perm )
+    {
+        Validate.isTrue( perm.getApplication().equals( m_name ),
+                "Cannot add BitPermission " + perm.getName() 
+                + " owned by " + perm.getApplication() 
+                + " to " + m_name ) ;
+        
+        // do this to make the lazy list grow if it has to
+        m_mapping.get( perm.getIndex() ) ;
+        
+        m_mapping.set( perm.getIndex(), perm ) ;
+        m_perms.put( perm.getName(), perm ) ;
+
+        if ( perm instanceof Observable )
+        {
+            ( ( Observable ) perm ).addObserver( this ) ;
+        }
+        
+        setChanged() ;
+        notifyObservers( perm ) ;
+        
+        return perm ;
+    }
+    
+    
+    /**
+     * Removes a BitPermission from this application 
+     * 
+     * @param perm the permission to be removed
+     * @return the removed permission
+     */
+    protected BitPermission removePermission( BitPermission perm )
+    {
+        m_mapping.set( perm.getIndex(), null ) ;
+        m_perms.remove( perm.getName() ) ;
+
+        if ( perm instanceof Observable )
+        {
+            ( ( Observable ) perm ).deleteObserver( this ) ;
+        }
+
+        setChanged() ;
+        notifyObservers( perm ) ;
+        
+        return perm ;
+    }
+    
+    
+    /**
+     * Adds a Role to this Application.
+     * 
+     * @param role the Role to add
+     */
+    protected void addRole( Role role ) 
+    {
+        m_roles.put( role.getName(), role ) ;
+
+        if ( role instanceof Observable )
+        {
+            ( ( Observable ) role ).addObserver( this ) ;
+        }
+
+        setChanged() ;
+        notifyObservers( role ) ;
+    }
+    
+    
+    /**
+     * Removes a Role from this Application.
+     * 
+     * @param roleName the name of the Role to remove
+     */
+    protected void deleteRole( String roleName ) throws RmsException
+    {
+        Role role = ( Role ) m_roles.remove( roleName ) ;
+
+        if ( role instanceof Observable )
+        {
+            ( ( Observable ) role ).addObserver( this ) ;
+        }
+
+        setChanged() ;
+        notifyObservers( role ) ;
+    }
+    
+    
+    /**
+     * Renames this Application.
+     * 
+     * @param name the new name to rename this Application to
+     * @throws RmsException not really thrown but shuts up compiler
+     */
+    protected void rename( String name ) throws RmsException
+    {
+        String old = m_name ;
+        m_name = name ;
+        setChanged() ;
+        notifyObservers( old ) ;
+    }
+    
+    
+    /*
+     * Cleans up the maps of permissions when the names of Roles and 
+     * permissions change.  Basically the entries with the old names 
+     * as keys are removed and the new name is used to re-add the entry
+     * back to the map.
+     * 
+     * WARNING: It is automatically presumed that permission and role name 
+     * changes propagate updates using the old name as the argument.
+     * 
+     * (non-Javadoc)
+     * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+     */
+    public void update( Observable o, Object arg )
+    {
+        if ( o instanceof BitPermission )
+        {
+            BitPermission perm = ( BitPermission ) o ;
+            
+            // we have a permission name change
+            if ( arg instanceof String )                
+            {
+                String oldName = ( String ) arg ;
+
+                synchronized ( m_perms ) 
+                {
+                    m_perms.remove( oldName ) ;
+                    m_perms.put( perm.getName(), perm ) ;
+                }
+            }
+        }
+        else if ( o instanceof Role )
+        {
+            Role role = ( Role ) o ;
+            
+            // we have a permission name change
+            if ( arg instanceof String )                
+            {
+                String oldName = ( String ) arg ;
+                
+                synchronized ( m_roles ) 
+                {
+                    m_roles.remove( oldName ) ;
+                    m_roles.put( role.getName(), role ) ;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultBitPermission.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultBitPermission.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,158 @@
+/*
+ *   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.rms ;
+
+
+/**
+ * The default BitPermission implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 31 $
+ */
+public class DefaultBitPermission implements BitPermission
+{
+    /** the name of the perm */
+    private String m_name ;
+    /** the name of the application defining this BitPermission*/
+    private String m_appName ;
+    /** the index of the perm */
+    private int m_idx ;
+    
+    
+    /**
+     * Creates a default BitPermission.
+     * 
+     * @param name the name of the perm
+     * @param idx the index of the perm
+     * @param appName the name of the application defining this BitPermission
+     */
+    public DefaultBitPermission( String name, int idx, String appName )
+    {
+        m_idx = idx ;
+        m_name = name ;
+        m_appName = appName ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.BitPermission#getIndex()
+     */
+    public int getIndex()
+    {
+        return m_idx ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.BitPermission#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.BitPermission#getApplication()
+     */
+    public String getApplication()
+    {
+        return m_appName ;
+    }
+    
+    
+    /**
+     * Sets the name of this BitPermission.
+     * 
+     * @param permName the permission name to set
+     */
+    protected void setName( String permName )
+    {
+        m_name = permName ;
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        StringBuffer l_buf = new StringBuffer( "BitPermission( " ) ;
+        l_buf.append( m_name ) ;
+        l_buf.append( ", " ) ;
+        l_buf.append( m_appName ) ;
+        l_buf.append( ", " ) ;
+        l_buf.append( m_idx ) ;
+        l_buf.append( " )" ) ;
+        return l_buf.toString() ;
+    }
+
+
+    /**
+     * Tests for equality where the index, name and application name of
+     * both indices must be equal before returning true.
+     *
+     * @param o the object to compare this DefaultBitPermission to
+     * @return true if the bit permissions are equal irrespective of
+     * implementation, false if they are not
+     */
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true ;
+        }
+        if ( ! ( o instanceof BitPermission ) )
+        {
+            return false ;
+        }
+
+        final BitPermission defaultBitPermission = ( BitPermission ) o ;
+
+        if ( m_idx != defaultBitPermission.getIndex() )
+        {
+            return false ;
+        }
+        if ( ! m_appName.equals( defaultBitPermission.getApplication() ) )
+        {
+            return false ;
+        }
+        if ( ! m_name.equals( defaultBitPermission.getName() ) )
+        {
+            return false ;
+        }
+
+        return true ;
+    }
+
+
+    /**
+     * Calculates this DefaultBitPermission's hashCode by factoring into
+     * account the name, index and application name.
+     *
+     * @return the composite hash code
+     */
+    public int hashCode()
+    {
+        int result ;
+        result = m_name.hashCode() ;
+        result = 29 * result + m_appName.hashCode() ;
+        result = 29 * result + m_idx ;
+        return result ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultProfile.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultProfile.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,537 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Map ;
+import java.util.HashMap ;
+import java.util.Iterator ;
+import java.util.Observer ;
+import java.util.Observable ;
+import java.util.Collections ;
+
+import java.security.AccessControlException ;
+
+import org.apache.commons.lang.Validate ;
+
+
+/**
+ * A default User Profile bean implementation for an Application.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public abstract class DefaultProfile implements Profile, Observer
+{
+    /** the name of the User this Profile is for */
+    private final String m_userName ;
+    /** the application this Profile is for */
+    private final Application m_application ;
+    /** the roles assigned to this Profile */
+    private final Map m_roles ;
+    /** the permissions granted to this Profile */
+    private byte[] m_grants ;
+    /** the permissions denied by this Profile */
+    private byte[] m_denials ;
+    /** the effective calculated permissions for this Profile */
+    private byte[] m_permissions ;
+    
+
+    /**
+     * Creates a default User Profile for an Application. 
+     * 
+     * @param userName the name of the User this Profile is for
+     * @param application the application this Profile is for
+     * @param roles the roles assigned to this Profile
+     * @param grants the permissions granted to this Profile
+     * @param denials the permissions denied by this Profile
+     * @param permissions the effective calculated permissions for this Profile
+     */
+    public DefaultProfile( String userName, Application application, Map roles,
+                           byte[] grants, byte[] denials, byte[] permissions)
+    {
+        Validate.notNull( userName, 
+                "userName for DefaultProfile cannot be null" ) ;
+        m_userName = userName ;
+        
+        Validate.notNull( application, 
+                "application for DefaultProfile cannot be null" ) ;
+        m_application = application ;
+        
+        if ( roles != null )
+        {    
+            m_roles = roles ;
+        }
+        else
+        {
+            m_roles = new HashMap() ;
+        }
+        
+        // add myself as an observer of all roles that are added to me
+        Iterator list = m_roles.values().iterator() ;
+        while ( list.hasNext() )
+        {
+            Role role = ( Role ) list.next() ;
+            if ( role instanceof Observable )
+            {
+                Observable o = ( Observable ) role ;
+                o.addObserver( this ) ;
+            }
+        }
+        
+
+        if ( grants == null || grants.length == 0 )
+        {
+            m_grants = new byte[1] ;
+        }
+        else 
+        {
+            m_grants = grants ;
+        }
+        
+        if ( denials == null || denials.length == 0 )
+        {
+            m_denials = new byte[1] ;
+        }
+        else
+        {
+            m_denials = denials ;
+        }
+        
+        if ( permissions == null || permissions.length == 0 )
+        {
+            m_permissions = new byte[1] ;
+        }
+        else
+        {
+            m_permissions = permissions ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getUserName()
+     */
+    public String getUserName()
+    {
+        return m_userName ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getApplicationName()
+     */
+    public String getApplicationName()
+    {
+        return m_application.getName() ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getRoles()
+     */
+    public Iterator getRoles()
+    {
+        return m_roles.values().iterator() ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasRole(org.apache.rms.Role)
+     */
+    public boolean hasRole( Role role )
+    {
+        return m_roles.containsKey( role.getName() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasRole(java.lang.String)
+     */
+    public boolean hasRole( String role )
+    {
+        return m_roles.containsKey( role ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getGrants()
+     */
+    public Iterator getGrants()
+    {
+        return new BitPermissionIterator( m_application, m_grants ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasGrant(java.lang.String)
+     */
+    public boolean hasGrant( String permission )
+    {
+        BitPermission l_perm = m_application.getPermission( permission ) ;
+        return BitUtils.getBit( m_grants, l_perm.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasGrant(org.apache.rms.BitPermission)
+     */
+    public boolean hasGrant( BitPermission permission )
+    {
+        return BitUtils.getBit( m_grants, permission.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getDenials()
+     */
+    public Iterator getDenials()
+    {
+        return new BitPermissionIterator( m_application, m_denials ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasDenial(java.lang.String)
+     */
+    public boolean hasDenial( String permission )
+    {
+        BitPermission l_perm = m_application.getPermission( permission ) ;
+        return BitUtils.getBit( m_denials, l_perm.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasDenial(org.apache.rms.BitPermission)
+     */
+    public boolean hasDenial( BitPermission permission )
+    {
+        return BitUtils.getBit( m_denials, permission.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#getPermissions()
+     */
+    public Iterator getPermissions()
+    {
+        return new BitPermissionIterator( m_application, m_permissions ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasPermission(java.lang.String)
+     */
+    public boolean hasPermission( String permission )
+    {
+        BitPermission l_perm = m_application.getPermission( permission ) ;
+        return BitUtils.getBit( m_permissions, l_perm.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#hasPermission(org.apache.rms.BitPermission)
+     */
+    public boolean hasPermission( BitPermission permission )
+    {
+        return BitUtils.getBit( m_permissions, permission.getIndex() ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(org.apache.rms.BitPermission)
+     */
+    public void checkPermission( BitPermission permission )
+    {
+        if ( ! BitUtils.getBit( m_permissions, permission.getIndex() ) )
+        {
+            throw new AccessControlException( m_userName + " user in " 
+                    + m_application.getName() 
+                    + " application does not possess the " 
+                    + permission.getName() + " permission." ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(java.lang.String)
+     */
+    public void checkPermission( String permission )
+    {
+        BitPermission l_perm = m_application.getPermission( permission ) ;
+        checkPermission( l_perm ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(org.apache.rms.BitPermission,
+     * java.lang.String)
+     */
+    public void checkPermission( BitPermission permission, String message )
+    {
+        if ( ! BitUtils.getBit( m_permissions, permission.getIndex() ) )
+        {
+            throw new AccessControlException( message ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(java.lang.String,java.lang.String)
+     */
+    public void checkPermission( String permission, String message )
+    {
+        BitPermission l_perm = m_application.getPermission( permission ) ;
+        checkPermission( l_perm, message ) ;
+    }
+    
+    
+    // ------------------------------------------------------------------------
+    // protected methods used by subclass of the mutable type
+    // ------------------------------------------------------------------------
+    
+
+    /**
+     * Grants a permission to this Profile by adding the permission to the
+     * list of grants.
+     *  
+     * @param permission the permission to grant
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void grant( BitPermission permission ) throws RmsException
+    {
+        m_grants = BitUtils.setBit( m_grants, permission.getIndex(), true ) ;
+    }
+    
+    
+    /**
+     * Grants a permission to this Profile by adding the permission to the
+     * list of grants.
+     * 
+     * @param permName the name of the permission to grant
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void grant( String permName ) throws RmsException 
+    {
+        grant( m_application.getPermission( permName ) ) ;
+    }
+
+
+    /**
+     * Denies a permission for this Profile by adding the permission to the 
+     * list of denials.
+     * 
+     * @param permission the permission to deny
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void deny( BitPermission permission ) throws RmsException
+    {
+        m_denials = BitUtils.setBit( m_denials, permission.getIndex(), true ) ;
+    }
+    
+    
+    /**
+     * Denies a permission for this Profile by adding the permission to the 
+     * list of denials.
+     * 
+     * @param permName the name of the permission to deny
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void deny( String permName ) throws RmsException 
+    {
+        deny( m_application.getPermission( permName ) ) ;    
+    }
+
+
+    /**
+     * Revokes a granted permission by removing the permission from the list of
+     * grants.
+     * 
+     * @param permission the granted permission to revoke
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void revokeGrant( BitPermission permission ) throws RmsException
+    {
+        m_grants = BitUtils.setBit( m_grants, permission.getIndex(), false ) ;
+    }
+    
+
+    /**
+     * Revokes a granted permission by removing the permission from the list of
+     * grants.
+     * 
+     * @param permName the name of the granted permission to revoke
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void revokeGrant( String permName ) throws RmsException 
+    {
+        revokeGrant( m_application.getPermission( permName ) ) ;
+    }
+
+
+    /**
+     * Revokes a denied permission by removing the permission from the list of 
+     * denials.
+     * 
+     * @param permission the denied permission to revoke
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void revokeDenial( BitPermission permission ) throws RmsException
+    {
+        m_denials = BitUtils.setBit( m_denials, permission.getIndex(), false ) ;
+    }
+    
+
+    /**
+     * Revokes a denied permission by removing the permission from the list of 
+     * denials.
+     * 
+     * @param permName the name of the denied permission to revoke
+     * @throws RmsException not really thrown - shuts compiler up
+     */
+    protected void revokeDenial( String permName ) throws RmsException 
+    {
+        revokeDenial( m_application.getPermission( permName ) ) ;
+    }
+    
+    
+    /**
+     * Gets the grants bits as a byte array.
+     * 
+     * @return the grants bits
+     */
+    protected byte[] getGrantBits()
+    {
+        return m_grants ;
+    }
+    
+    
+    /**
+     * Gets the denials bits as a byte array.
+     * 
+     * @return the denials bits
+     */
+    protected byte[] getDenialBits()
+    {
+        return m_denials ;
+    }
+    
+    
+    /**
+     * Gets the effective permissions bits as a byte array.
+     * 
+     * @return the effective permissions bits
+     */
+    protected byte[] getEffectiveBits()
+    {
+        return m_permissions ;
+    }
+    
+    
+    /**
+     * Sets the effective permissions for this Profile.
+     * 
+     * @param permissions the effective permissions to set
+     */
+    protected void setEffectiveBits( byte[] permissions )
+    {
+        m_permissions = permissions ;
+    }
+    
+    
+    /**
+     * Adds a Role to this Profile.
+     * 
+     * @param role the Role to add to this Profile
+     * @throws RmsException if there is a problem accessing the backing store
+     */
+    protected void addRole( Role role ) throws RmsException 
+    {
+        Validate.isTrue( ! m_roles.containsKey( role.getName() ),
+                "Role already assigned to this profile!" ) ;
+        m_roles.put( role.getName(), role ) ;
+        
+        if ( role instanceof Observable )
+        {
+            ( ( Observable ) role ).addObserver( this ) ;
+        }
+    }
+
+    
+    /**
+     * Adds a Role to this Profile.
+     *  
+     * @param roleName the name of the Role to add to this Profile
+     * @throws RmsException if there is a problem accessing the backing store
+     */
+    protected void addRole( String roleName ) throws RmsException 
+    {
+        addRole( m_application.getRole( roleName ) ) ;
+    }
+
+    
+    /**
+     * Removes a Role from this Profile.
+     * 
+     * @param role the Role to remove from this Profile
+     * @throws RmsException if there is a problem accessing the backing store
+     */
+    protected void removeRole( Role role ) throws RmsException 
+    {
+        Validate.isTrue( m_roles.containsKey( role.getName() ),
+                "Role not assigned to this profile!" ) ;
+        m_roles.remove( role.getName() ) ;
+        
+        if ( role instanceof Observable )
+        {
+            ( ( Observable ) role ).deleteObserver( this ) ;
+        }
+    }
+
+    
+    /**
+     * Removes a Role from this Profile.
+     * 
+     * @param roleName the name of the Role to remove from this Profile
+     * @throws RmsException if there is a problem accessing the backing store
+     */
+    protected void removeRole( String roleName ) throws RmsException 
+    {
+        removeRole( m_application.getRole( roleName ) ) ;
+    }
+    
+    
+    /**
+     * Gets a map of role names to roles for this Profile.  The returned map
+     * is immutable.
+     * 
+     * @todo see if this should make its way into the Profile interface and
+     *      be public instead of only available to mutables.  One can't change
+     *      anything so long as we return unmodifiable wrappers of collections.
+     * @return the map of role names to roles for this Profile
+     */
+    protected Map getRolesMap()
+    {
+        return Collections.unmodifiableMap( m_roles ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+     */
+    public abstract void update( Observable o, Object arg ) ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultRole.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultRole.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,308 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Iterator ;
+import java.util.Observable ;
+import java.security.AccessControlException ;
+
+import org.apache.commons.lang.Validate ;
+import org.apache.commons.lang.ArrayUtils ;
+
+
+/**
+ * A default Role bean implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public abstract class DefaultRole extends Observable implements Role
+{
+    /** the name of this Role */
+    private String m_name ;
+    /** the application the Role is defined for */
+    private Application m_app ;
+    /** the permission grants for this Role */
+    private byte[] m_grants ;
+    
+
+    /**
+     * Creates a default Role instance.
+     * 
+     * @param name the name of the Role
+     * @param grants the granted binary permissions for the Role
+     * @param an_app the application the Role is defined for
+     */
+    public DefaultRole( String name, byte[] grants, Application an_app )
+    {
+        m_app = an_app ;
+        m_name = name ;
+        
+        if ( grants == null )
+        {
+            m_grants = ArrayUtils.EMPTY_BYTE_ARRAY ;
+        }
+        else 
+        {
+            m_grants = grants ;
+        }
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Role#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Role#getApplication()
+     */
+    public String getApplicationName()
+    {
+        return m_app.getName() ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Role#hasPermission(java.lang.String)
+     */
+    public boolean hasPermission( String permission )
+    {
+        BitPermission l_perm = m_app.getPermission( permission ) ;
+        return BitUtils.getBit( m_grants, l_perm.getIndex() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Role#hasPermission(org.apache.rms.BitPermission)
+     */
+    public boolean hasPermission( BitPermission permission )
+    {
+        return BitUtils.getBit( m_grants, permission.getIndex() ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(org.apache.rms.BitPermission)
+     */
+    public void checkPermission( BitPermission permission )
+    {
+        if ( ! BitUtils.getBit( m_grants, permission.getIndex() ) )
+        {
+            throw new AccessControlException( m_name + " role in " 
+                    + m_app.getName() + " application does not possess the " 
+                    + permission.getName() + " permission." ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(java.lang.String)
+     */
+    public void checkPermission( String permission )
+    {
+        BitPermission l_perm = m_app.getPermission( permission ) ;
+        checkPermission( l_perm ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(org.apache.rms.BitPermission,
+     * java.lang.String)
+     */
+    public void checkPermission( BitPermission permission, String message )
+    {
+        if ( ! BitUtils.getBit( m_grants, permission.getIndex() ) )
+        {
+            throw new AccessControlException( message ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Profile#checkPermission(java.lang.String, java.lang.String)
+     */
+    public void checkPermission( String permission, String message )
+    {
+        BitPermission l_perm = m_app.getPermission( permission ) ;
+        checkPermission( l_perm, message ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.Role#getGrants()
+     */
+    public Iterator getGrants()
+    {
+        return new BitPermissionIterator( m_app, m_grants ) ;
+    }
+    
+
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        StringBuffer l_buf = new StringBuffer( "Role: ( " ) ;
+        l_buf.append( m_name ) ;
+        l_buf.append( ", " ) ;
+        l_buf.append( m_app.getName() ) ;
+        l_buf.append( " )" ) ;
+        l_buf.append( "\n\t\tGrants:\n\t\t[\n" ) ;
+        
+        Iterator l_grants = getGrants() ;
+        while ( l_grants.hasNext() )
+        {
+            l_buf.append( "\t\t\t" ) ;
+            l_buf.append( l_grants.next() ) ;
+            l_buf.append( '\n' ) ;
+        }
+        
+        l_buf.append( "\t\t]" ) ;
+        return l_buf.toString() ;
+    }
+
+
+    // ------------------------------------------------------------------------
+    // protected methods for use by mutable implementations 
+    // ------------------------------------------------------------------------
+    
+    
+    /**
+     * Grants a permission to this Role.
+     * 
+     * Updates all Observers as a side-effect.
+     * 
+     * @param permission the permission to grant
+     */
+    protected void grant( BitPermission permission ) throws RmsException
+    {
+        Validate.isTrue( permission.getApplication().equals( getApplicationName() ),
+                "Cannot grant permission that is not defined for application " 
+                + getApplicationName() ) ;
+        m_grants = BitUtils.setBit( m_grants, permission.getIndex(), true ) ;
+        
+        super.setChanged() ;
+        super.notifyObservers( permission ) ;
+    }
+    
+    
+    /**
+     * Revokes a permission from this Role.  Ultimately this calls the other
+     * overload which sends an update signal to all Observers.
+     * 
+     * @param permName the name of the permission to revoke
+     */
+    protected void revoke( String permName ) throws RmsException
+    {
+        Validate.isTrue( hasPermission( permName ), 
+                "Permission " + permName + " has not been granted!") ;
+        revoke( m_app.getPermission( permName ) ) ;
+    }
+    
+    
+    /**
+     * Revokes a permission from this Role.  
+     * 
+     * Updates all Observers as a side-effect.
+     * 
+     * @param permission the permission to revoke
+     */
+    protected void revoke( BitPermission permission ) throws RmsException
+    {
+        Validate.isTrue( permission.getApplication().equals( getApplicationName() ),
+                "Cannot revoke permission that is not defined for application " 
+                + getApplicationName() ) ;
+        m_grants = BitUtils.setBit( m_grants, permission.getIndex(), false ) ;
+        
+        super.setChanged() ;
+        super.notifyObservers( permission ) ;
+    }
+
+    
+    /**
+     * Grants a permission to this Role.  Ultimately this calls the other over-
+     * load which sends an update signal to all Observers.
+     * 
+     * @param permName the name of the permission to grant
+     */
+    protected void grant( String permName ) throws RmsException
+    {
+        Validate.isTrue( ! hasPermission( permName ), 
+                "Permission " + permName + " has already been granted!") ;
+        grant( m_app.getPermission( permName ) ) ;
+    }
+    
+    
+    /**
+     * Gets the byte array for the permission grants of this Role.
+     * 
+     * @return the byte array containing bit permission grants
+     */
+    protected byte[] getGrantBits() 
+    {
+        return ( byte[] ) m_grants.clone() ;
+    }
+    
+    
+    /**
+     * Arbitrarily sets the grants bits for this Role also causing a 
+     * notification for all observers.
+     * 
+     * @param grants the new grants to set.
+     */
+    protected void setGrantsBits( byte[] grants)
+    {
+        m_grants = grants ;
+        
+        setChanged() ;
+        notifyObservers( grants ) ;
+    }
+    
+    
+    /**
+     * Renames this Role sending an update signal to all observers.
+     * 
+     * @param name the new name of this Role
+     * @throws RmsException shuts the compiler up - not really thrown
+     */
+    protected void rename( String name ) throws RmsException 
+    {
+        String old = m_name ;
+        m_name = name ;
+        
+        super.setChanged() ;
+        super.notifyObservers( old ) ;
+    }
+    
+    
+    /**
+     * Gets the Application this Role is defined for.
+     * 
+     * @return this Role's application 
+     */
+    protected Application getApplication()
+    {
+        return m_app ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultUser.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/DefaultUser.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,164 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Map ;
+import java.util.Iterator ;
+
+
+/**
+ * A default RMS User implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 11 $
+ */
+public class DefaultUser implements User
+{
+    /** map of app names to this User's Profiles object for them */
+    private final Map m_profiles ;
+    /** the unique name of this User */
+    private String m_name ;
+    
+
+    // ------------------------------------------------------------------------
+    // C O N S T R U C T O R S
+    // ------------------------------------------------------------------------
+    
+    
+    /**
+     * Creates a new default RMS User.
+     * 
+     * @param name the unique name of this User
+     * @param profiles a Map of application names to this User's Profiles 
+     *      object for those applications
+     */
+    public DefaultUser( String name, Map profiles )
+    {
+        m_name = name ;
+        m_profiles = profiles ;
+    }
+    
+
+    // ------------------------------------------------------------------------
+    // I N T E R F A C E   I M P L E M E N T A T I O N S
+    // ------------------------------------------------------------------------
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#getProfile(java.lang.String)
+     */
+    public Profile getProfile( String application )
+    {
+        return ( Profile ) m_profiles.get( application ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#getProfile(org.apache.rms.Application)
+     */
+    public Profile getProfile( Application application )
+    {
+        return ( Profile ) m_profiles.get( application.getName() ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#getProfiles()
+     */
+    public Iterator getProfiles()
+    {
+        return m_profiles.values().iterator() ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#hasProfile(java.lang.String)
+     */
+    public boolean hasProfile( String application )
+    {
+        return m_profiles.containsKey( application ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.User#hasProfile(org.apache.rms.Application)
+     */
+    public boolean hasProfile( Application application )
+    {
+        return m_profiles.containsKey( application.getName() ) ;
+    }
+    
+    
+    // ------------------------------------------------------------------------
+    // protected mutators
+    // ------------------------------------------------------------------------
+    
+    
+    /**
+     * Adds a profile to this user.
+     * 
+     * @param profile a new profile for this user
+     */
+    protected void add( Profile profile ) 
+    {
+        m_profiles.put( profile.getApplicationName(), profile ) ;
+    }
+    
+    
+    /**
+     * Removes a Profile form this User.
+     * 
+     * @param profile the Profile to remove
+     */
+    protected void remove( Profile profile )
+    {
+        m_profiles.remove( profile.getApplicationName() ) ;
+    }
+
+
+    /**
+     * Removes a Profile form this User.
+     * 
+     * @param appName the application name for which to remove the profile
+     */
+    protected void removeProfile( String appName )
+    {
+        m_profiles.remove( appName ) ;
+    }
+    
+    
+    /**
+     * Renames this User.
+     * 
+     * @param name the new name of this User 
+     * @throws RmsException not really thrown but need to shut compiler up
+     */
+    protected void rename( String name ) throws RmsException
+    {
+        m_name = name ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/Profile.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/Profile.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,247 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.rms ;
+
+
+import java.util.Iterator ;
+
+
+/**
+ * <p>
+ * An RMS user's application profile.  RMS manages users as well as 
+ * applications.  RMS Users are associated with RMS Applications via the 
+ * concept of an application specific profile for a user.  This class models
+ * that profile by associating the user with an application and allowing the
+ * assignment of roles to the profile hence the user.
+ * </p>  
+ * <p>
+ * The Profile also possesses three sets of BitPermissions used for handling 
+ * authorization policies.  The three BitPermission sets are: grants, denials
+ * and the effective calculated permissions.  Roles assigned to the Profile 
+ * cause the Profile to inherit Role grants.  Besides this means of inheriting
+ * grants, Profiles allow for fine tuning the total effective permissions for 
+ * the profile by allow for Profile grants and denials.  The grants set contains
+ * extra BitPermissions added which may not be granted by assigned Roles.  The
+ * denials set contains BitPermissions that are denied whether they are granted
+ * by Roles or within the grants BitPermissions.  This way denials take 
+ * precedence.  For more information take a look at the documentation here:
+ * </p>
+ * <ul>
+ *   <li><a href="http://openrms.sf.net">RMS User Guide</a></li>
+ *   <li><a href="http://openrms.sf.net">RMS Developers Guide</a></li>
+ * </ul> 
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public interface Profile
+{
+    /**
+     * Gets the name of the User this Profile is associated with.
+     * 
+     * @return the name of this Profile's User
+     */
+    String getUserName() ;
+    
+    /**
+     * Gets the name of the Application this Profile is associated with.
+     * 
+     * @return the name of this Profile's Application
+     */
+    String getApplicationName() ;
+
+    /**
+     * Gets an iteration over the set of Roles the User is associated with 
+     * according to this Profile.
+     * 
+     * @return an Iterator over the set of Role objects the User is assigned
+     */
+    Iterator getRoles() ;
+    
+    /**
+     * Checks to see if this Profile assigns a Role to its User.
+     * 
+     * @param role the Role to test assignment to
+     * @return true if the User's Profile assigns the Role, false otherwise
+     */
+    boolean hasRole( Role role ) ;
+
+    /**
+     * Checks to see if this Profile assigns a Role to its User.
+     * 
+     * @param role the name of the Role to test assignment to
+     * @return true if the User's Profile assigns the Role, false otherwise
+     */
+    boolean hasRole( String role ) ;
+
+    /**
+     * Gets an iteration over the set of BitPermission objects granted to this
+     * Profile.
+     * 
+     * @return an Iterator of granted BitPermissions
+     */
+    Iterator getGrants() ;
+
+    /**
+     * Checks to see if a BitPermission has been granted to this Profile.
+     * 
+     * @param permission the name of the BitPermission to test for
+     * @return true if the BitPermission is granted, false otherwise even if the
+     *      name of the BitPermission is unrecognized
+     */
+    boolean hasGrant( String permission ) ;
+
+    /**
+     * Checks to see if a BitPermission has been granted to this Profile.
+     * 
+     * @param permission the BitPermission to test for
+     * @return true if the BitPermission is granted, false otherwise
+     */
+    boolean hasGrant( BitPermission permission ) ;
+    
+    /**
+     * Gets an iteration over the set of BitPermission objects explicitly 
+     * denied by this Profile.  This is the only time and place where negative
+     * permissions will ever be found.
+     * 
+     * @return an Iterator of denied BitPermissions
+     */
+    Iterator getDenials() ;
+    
+    /**
+     * Checks to see if a BitPermission has been denied by this Profile.
+     * 
+     * @param permission the name of the BitPermission to test for
+     * @return true if the BitPermission is denied, false otherwise even if the
+     *      name of the BitPermission is unrecognized
+     */
+    boolean hasDenial( String permission ) ;
+    
+    /**
+     * Checks to see if a BitPermission has been denied by this Profile.
+     * 
+     * @param permission the BitPermission to test for
+     * @return true if the BitPermission is denied, false otherwise
+     */
+    boolean hasDenial( BitPermission permission ) ;
+    
+    /**
+     * Gets an iteration over the set of effective (net calculated) permission 
+     * for the User associated with this Profile.  An effective permission is 
+     * calculated from the assigned Roles, BitPermission grants and denials of 
+     * this Profile.
+     * 
+     * @return an Iterator of BitPermission granted to this Profile
+     */
+    Iterator getPermissions() ;
+    
+    /**
+     * Checks to see if the User associated with this Profile effectively has 
+     * the BitPermission.  An effective permission is calculated from the 
+     * assigned Roles, BitPermission grants and denials of this Profile.
+     * 
+     * @param permission the name of the BitPermission to test for
+     * @return true if the BitPermission is effectively granted, false 
+     *      otherwise even if the name of the BitPermission is unrecognized
+     */
+    boolean hasPermission( String permission ) ;
+
+    /**
+     * Checks to see if the User associated with this Profile effectively has 
+     * the BitPermission.  An effective permission is calculated from the 
+     * assigned Roles, BitPermission grants and denials of this Profile.
+     * 
+     * @param permission the BitPermission to test for
+     * @return true if the BitPermission is effectively granted, false otherwise
+     */
+    boolean hasPermission( BitPermission permission ) ;
+    
+    /**
+     * Assertive permission check to test if this Profile has the effective 
+     * permission.
+     * 
+     * @param permission the permission name to check for
+     * @throws java.security.AccessControlException if the permission is not granted or
+     *      inherited from an assigned Role
+     */
+    void checkPermission( String permission ) ;
+    
+    /**
+     * Assertive permission check to test if this Profile has the effective 
+     * permission.
+     * 
+     * @param permission the permission to check for
+     * @throws java.security.AccessControlException if the permission is not granted or
+     *      inherited from an assigned Role
+     */
+    void checkPermission( BitPermission permission ) ;
+
+    /**
+     * Assertive permission check to test if this Profile has the effective 
+     * permission.
+     * 
+     * @param permission the permission name to check for
+     * @param message to use for AccessControlException if it is thrown
+     * @throws java.security.AccessControlException if the permission is not granted or
+     *      inherited from an assigned Role
+     */
+    void checkPermission( String permission, String message ) ;
+    
+    /**
+     * Assertive permission check to test if this Profile has the effective 
+     * permission.
+     * 
+     * @param permission the permission to check for
+     * @param message to use for AccessControlException if it is thrown
+     * @throws java.security.AccessControlException if the permission is not granted or
+     *      inherited from an assigned Role
+     */
+    void checkPermission( BitPermission permission, String message ) ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/Rms.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/Rms.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,268 @@
+/*
+ *   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.rms ;
+
+
+import java.util.Iterator ;
+import java.util.Properties ;
+
+import org.apache.commons.lang.Validate ;
+import org.apache.commons.lang.NotImplementedException ;
+
+
+/**
+ * Top level Realm Management System facade.  Serves as the public factory
+ * for managing top level components.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public abstract class Rms
+{
+    /** Property key 'rms.factory.provider' used to lookup the RMS provider */
+    public static final String RMS_FACTORY_PROP = "rms.factory.provider" ;
+    
+    /** Cached Rms singleton */
+    private static Rms s_singleton ;
+    
+    
+    /**
+     * Gets the prviously initialized singleton instance.  If one has not been 
+     * initialized a discovery sequence is used to find the default provider 
+     * and instantiate the singleton.
+     * 
+     * @return the singleton instance
+     * @throws RmsException if there is an error getting the singleton instance
+     */
+    public final static Rms getInstance() 
+        throws RmsException
+    {
+        if ( s_singleton != null )
+        {
+            return s_singleton ;
+        }
+
+        throw new NotImplementedException( 
+                "Need to implement a default properties discovery perhaps"
+                + "\nusing the commons discovery code" ) ;
+    }
+    
+    
+    /**
+     * Initializes a specific provider specified through properties used to
+     * locate and instantiate that provider.  As a side effect the singleton
+     * is set to the returned value and this method cannot be called again
+     * for this class without incurring an exception stating the singleton
+     * has already been initialized.
+     * 
+     * @param props properties used to locate and instantiate that provider
+     * @return the provider instance
+     * @throws RmsException if there is an error initializing the instance
+     */
+    public final static Rms getInstance( Properties props )
+        throws RmsException
+    {
+        RmsFactory l_factory = null ;
+        String l_factoryName = props.getProperty( RMS_FACTORY_PROP ) ; 
+
+        if ( s_singleton != null )
+        {
+            throw new RmsException( "Rms singleton already exists!" ) ;
+        }
+        
+        Validate.notNull( l_factoryName ) ;
+        try
+        {
+            ClassLoader l_cl = Thread.currentThread().getContextClassLoader() ;
+            Class l_clazz = l_cl.loadClass( l_factoryName ) ;
+            l_factory = ( RmsFactory ) l_clazz.newInstance() ;
+            
+        }
+        catch( ClassNotFoundException e ) 
+        {
+            throw new RmsException( 
+                    "Could not load RMS provider factory class: " 
+                    + l_factoryName, e ) ;
+        }
+        catch( InstantiationException e )
+        {
+            throw new RmsException( "Failed within default constructor of Rms "
+                    + "provider factory class: " + l_factoryName ) ;
+        }
+        catch( IllegalAccessException e )
+        {
+            throw new RmsException( "Default constructor of Rms provider "
+                    + "factory class is not publicly accessible: " 
+                    + l_factoryName ) ;
+        }
+        
+        s_singleton = l_factory.newInstance( props ) ;
+        return s_singleton ;
+    }
+    
+    
+    /**
+     * Gets an Application by name.
+     * 
+     * @param name the name of the Application 
+     * @return the Application instance
+     * @throws RmsException if there is an error getting the Application
+     */
+    public abstract Application getApplication( String name )
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the Applications defined.
+     * 
+     * @return an Iterator over Application objects
+     * @throws RmsException if there is an error getting the Applications
+     */
+    public abstract Iterator getApplications() 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the names of Applications defined.
+     * 
+     * @return an Iterator over Strings of Application names
+     * @throws RmsException if there is an error getting the names
+     */
+    public abstract Iterator getApplicationNames() 
+        throws RmsException ;
+    
+    /**
+     * Gets a User by name.
+     * 
+     * @param name the name of the User 
+     * @return the User instance
+     * @throws RmsException if there is an error getting the User
+     */
+    public abstract User getUser( String name ) 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the Users defined.
+     * 
+     * @return an Iterator over User objects
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUsers() 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the Users with a profile for an application.
+     * 
+     * @param appName the name of the application
+     * @return an Iterator over User objects
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUsers( String appName ) 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the Users with a profile for an application in
+     * the specified role.
+     * 
+     * @param appName the name of the application
+     * @param roleName the name of the role
+     * @return an Iterator over User's in the role
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUsers( String appName, String roleName )
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the User names defined.
+     * 
+     * @return an Iterator over User objects
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUserNames() 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the User names with a profile for an application.
+     * 
+     * @param appName the name of the application
+     * @return an Iterator over User objects
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUserNames( String appName ) 
+        throws RmsException ;
+    
+    /**
+     * Gets iteration of all the User names with a profile for an application in
+     * the specified role.
+     * 
+     * @param appName the name of the application
+     * @param roleName the name of the role
+     * @return an Iterator over User's in the role
+     * @throws RmsException if there is an error getting the Users
+     */
+    public abstract Iterator getUserNames( String appName, String roleName )
+        throws RmsException ;
+
+    /**
+     * Adds a CacheListener for all cache events on all objects.
+     *  
+     * @param listener the listener to register
+     */
+    public abstract void addCacheListener( CacheListener listener ) ;
+    
+    /**
+     * Removes a CacheListener from recieving any events.
+     *  
+     * @param listener the listener to unsubscribe
+     */
+    public abstract void removeCacheListener( CacheListener listener ) ;
+    
+    /**
+     * Adds a CacheListener for cached objects of a specific class.
+     *  
+     * @param listener the listener to register
+     * @param type the Class of cached objects to monitor
+     */
+    public abstract void addCacheListener( CacheListener listener, 
+                                           Class type ) ; 
+
+    /**
+     * Removes a CacheListener for cached objects of a specific class.
+     *  
+     * @param listener the listener to unsubscribe
+     * @param type the Class of cached objects 
+     */
+    public abstract void removeCacheListener( CacheListener listener, 
+											  Class type ) ; 
+
+    /**
+     * Adds a CacheListener for a specific cached object.
+     *  
+     * @param listener the listener to register
+     * @param object the cached object to monitor
+     */
+    public abstract void addCacheListener( CacheListener listener, 
+                                           Object object ) ; 
+
+    /**
+     * Removes a CacheListener for a cached object.
+     *  
+     * @param listener the listener to unsubscribe
+     * @param object the cached object to stop monitoring
+     */
+    public abstract void removeCacheListener( CacheListener listener, 
+                                              Object object ) ; 
+
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsException.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsException.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,111 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.rms ;
+
+
+import org.apache.commons.lang.exception.NestableException ;
+
+
+/**
+ * A nestable RMS exception.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public class RmsException extends NestableException
+{
+
+    // ------------------------------------------------------------------------
+    // C O N S T R U C T O R S
+    // ------------------------------------------------------------------------
+    
+    
+    /**
+     * Creates a simple exception with no message.
+     */
+    public RmsException()
+    {
+        super() ;
+    }
+    
+
+    /**
+     * Creates a an exception with a message.
+     * 
+     * @param message a message String indicating the problem
+     */
+    public RmsException( String message )
+    {
+        super( message ) ;
+    }
+
+    
+    /**
+     * Creates a nested exception wrapping another throwable.
+     *  
+     * @param nested the throwable wrapped by this RmsException.
+     */
+    public RmsException( Throwable nested )
+    {
+        super( nested ) ;
+    }
+
+    
+    /**
+     * Creates a nested exception wrapping another throwable with a message.
+     * 
+     * @param message a message String indicating the problem
+     * @param nested the throwable wrapped by this RmsException.
+     */
+    public RmsException( String message, Throwable nested )
+    {
+        super( message, nested ) ;
+    }
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsFactory.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/RmsFactory.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,71 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.rms ;
+
+
+import java.util.Properties ;
+
+
+/**
+ * A factory that creates an Rms instance.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public interface RmsFactory
+{
+    /**
+     * Creates a new instance of an Rms provider.
+     * 
+     * @param props the properties for the specific RMS provider
+     * @return the RMS instance
+     */
+    Rms newInstance( Properties props ) throws RmsException ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/Role.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/Role.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,142 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.rms ;
+
+
+import java.util.Iterator ;
+
+
+/**
+ * An RMS application Role.  Roles are application specific and contain a set
+ * of permission grants.  Users assigned to these Roles inherit the set of 
+ * permission grants from their roles.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public interface Role
+{
+    /**
+     * Gets the name of this Role.
+     * 
+     * @return the name of this Role
+     */
+    String getName() ;
+    
+    /**
+     * Gets the application name this Role is defined for.
+     *  
+     * @return the name of the application this Role is defined for.
+     */
+    String getApplicationName() ;
+    
+    /**
+     * Checks to see if the Role was granted a permission.
+     * 
+     * @param permission the permission to check for
+     * @return true if the permission is granted to this Role, false if the 
+     *      permission is not recognised or if it is not granted
+     */
+    boolean hasPermission( String permission ) ;
+    
+    /**
+     * Checks to see if the Role was granted a permission.
+     * 
+     * @param permission the permission to check for
+     * @return true if the permission is granted to this Role, false if it is 
+     *      not granted
+     */
+    boolean hasPermission( BitPermission permission ) ;
+    
+    /**
+     * Assertive permission check to test if this Role has the effective 
+     * permission.
+     * 
+     * @param permission the permission name to check for
+     * @throws java.security.AccessControlException if the permission is not granted
+     */
+    void checkPermission( String permission ) ;
+    
+    /**
+     * Assertive permission check to test if this Role has the effective 
+     * permission.
+     * 
+     * @param permission the permission to check for
+     * @throws java.security.AccessControlException if the permission is not granted
+     */
+    void checkPermission( BitPermission permission ) ;
+
+    /**
+     * Assertive permission check to test if this Role has the effective 
+     * permission.
+     * 
+     * @param permission the permission name to check for
+     * @param message to use for AccessControlException if it is thrown
+     * @throws java.security.AccessControlException if the permission is not granted
+     */
+    void checkPermission( String permission, String message ) ;
+    
+    /**
+     * Assertive permission check to test if this Role has the effective 
+     * permission.
+     * 
+     * @param permission the permission to check for
+     * @param message to use for AccessControlException if it is thrown
+     * @throws java.security.AccessControlException if the permission is not granted
+     */
+    void checkPermission( BitPermission permission, String message ) ;
+
+    /**
+     * Gets an iteration of BitPermissions granted to this Role.
+     * 
+     * @return an Iterator of BitPermissions instances granted to this Role
+     */
+    Iterator getGrants() ;
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/User.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/User.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,122 @@
+/*
+
+ ============================================================================
+                   The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of  source code must  retain the above copyright  notice,
+    this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+    include  the following  acknowledgment:  "This product includes  software
+    developed  by the  Apache Software Foundation  (http://www.apache.org/)."
+    Alternately, this  acknowledgment may  appear in the software itself,  if
+    and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve" 
+    and "Apache Software Foundation"  must not be used to endorse or promote
+    products derived  from this  software without  prior written
+    permission. For written permission, please contact apache@apache.org.
+
+ 5. Products  derived from this software may not  be called "Apache", nor may
+    "Apache" appear  in their name,  without prior written permission  of the
+    Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
+ APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
+ ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
+ (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software  consists of voluntary contributions made  by many individuals
+ on  behalf of the Apache Software  Foundation. For more  information on the
+ Apache Software Foundation, please see <http://www.apache.org/>.
+
+*/
+package org.apache.rms ;
+
+
+import org.apache.rms.Application;
+import org.apache.rms.Profile;
+
+import java.util.Iterator ;
+
+
+/**
+ * An RMS user.  RMS Users have zero or more Application specific Profiles 
+ * containing information pertinant to the respective Application.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 25 $
+ */
+public interface User
+{
+    /**
+     * Gets the name of this User.
+     * 
+     * @return the name of this User
+     */
+    String getName() ;
+    
+    /**
+     * Gets this User's Profile for an application.
+     * 
+     * @param an_application the name of the application to get the Profile for
+     * @return the Profile for the application or null if no profile exists for
+     *      the specified application
+     */
+    Profile getProfile( String an_application ) ;
+    
+    /**
+     * Gets this User's Profile for an application.
+     * 
+     * @param an_application the Application to get the Profile for
+     * @return the Profile for the application or null if no profile exists for
+     *      the specified application
+     */
+    Profile getProfile( Application an_application ) ;
+
+    /**
+     * Gets an Iterator over the set of Profiles for this User.
+     * 
+     * @return an iterator over Profile objects
+     */
+    Iterator getProfiles() ;
+    
+    /**
+     * Checks to see if a User has a Profile for an application.
+     * 
+     * @param an_application the name of the application to test for a Profile
+     * @return true if a Profile exists, false if one does not exist or the
+     *      application name does not exist
+     */
+    boolean hasProfile( String an_application ) ;
+    
+    /**
+     * Checks to see if a User has a Profile for an application.
+     * 
+     * @param an_application the Application to test for a Profile
+     * @return true if a Profile exists, false if one does not exist 
+     */
+    boolean hasProfile( Application an_application ) ;
+
+    /**
+     * @link aggregation
+     * @label User Profiles 
+     */
+    /*# Profile lnkProfile; */
+}

Added: incubator/directory/rms/trunk/api/src/java/org/apache/rms/package.html
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/java/org/apache/rms/package.html	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,17 @@
+<p>
+  The RMS Role Based Access Control (RBAC) package is designed to manage
+  Application and User permissions within an operational environment using
+  Roles.  This common API provides the baseline framework for accessing RMS 
+  managed authorization policies.
+</p>
+
+<p>
+  The above is acheived using binary permissions defined for Applications and
+  granted to Roles.  Roles are defined specifically for Applications.  Roles 
+  are then assigned to the Profiles of Users.  Users can have a Profile for each 
+  Application defined within the system.
+</p>
+
+<p>
+  More later ...
+</p>

Added: incubator/directory/rms/trunk/api/src/test/org/apache/rms/BitUtilsTest.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/src/test/org/apache/rms/BitUtilsTest.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,77 @@
+/*
+ *   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.rms ;
+
+
+import junit.framework.TestCase ;
+
+
+/**
+ * TestCase for BitUtils.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class BitUtilsTest extends TestCase
+{
+    /*
+     * @see TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp() ;
+    }
+
+    
+    /*
+     * @see TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception
+    {
+        super.tearDown() ;
+    }
+
+    
+    /*
+     * @see rms.rbac.BitUtils.getBit(byte[],int)
+     */
+    public void testGetBit()
+    {
+        byte [] bites = new byte[4] ;
+        
+        bites[0] = 1 ;
+        bites[1] = 1 ;
+        bites[2] = 1 ;
+        bites[3] = 1 ;
+        
+        StringBuffer l_buf = new StringBuffer() ;
+        
+        for( int ii = 0 ; ii < 32; ii++ )
+        {
+            if ( BitUtils.getBit( bites, ii ) )
+            {    
+                l_buf.append( '1' ) ;
+            }
+            else
+            {
+                l_buf.append( '0' ) ;
+            }
+        }
+        
+        System.out.println( l_buf.toString() ) ;
+    }
+}

Added: incubator/directory/rms/trunk/api/xdocs/images/cache-classes-color.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/api/xdocs/images/interface-aggregation-color.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/api/xdocs/images/interface-aggregation.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/api/xdocs/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/xdocs/index.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Role Based Access Control API</title>
+  </properties>
+  <body>
+
+    <section name="Introduction">
+      <p>
+        RMS centralizes the access and management of authorization policies
+        within the operational environment using simple role and permission 
+        assignment scheme to user profiles.
+      </p>
+      
+      <center>
+        <img src="./images/interface-aggregation-color.gif"/>
+      </center>
+
+      <p>
+        The UML diagram above models the aggregate relationships between RMS 
+        entity interfaces.  User and Application interfaces exist to model their
+        respective real world entities.  Applications have permissions and 
+        roles defined specifically for them: they aggregate instances of
+        Permissions and Roles and are modeled in red.  Roles contain a set of 
+        application permissions called grants.  Grants represent the operations 
+        given to those users acting in the role.  Users are associated with 
+        applications via profiles and are modeled in blue.  A user's profile 
+        has roles assigned to it to have the profile inherit the application 
+        permissions granted to the role.  
+      </p>
+      
+      <p>
+        Besides permission inheritance from roles, user profiles can have 
+        additional permissions granted specifically for the profile 
+        or even have permissions denied to cancel grants inherited from role 
+        assignments.  These permission tweaks exist for the fine tuning of
+        a profile's effective permissions without having to resort to the 
+        creation of roles to handle exceptional users.
+      </p>
+    </section>
+      
+    <section name="API Usage">
+      <p>
+        This section describes how to use RMS APIs.  For provider specific 
+        information you might want to look at the provider usage guides for
+        the respective provider's here:
+      </p>
+      
+      <ul>
+        <li><a href="../jdbc-impl/index.html">JDBC based RMS provider</a></li>
+        <li><a href="../jndi-impl/index.html">JNDI based RMS provider</a></li>
+      </ul>
+      
+      <subsection name="Initializing RMS">
+        <p>
+          RMS uses a top level abstract factory class, <a href=
+          "./apidocs/rms/rbac/Rms.html">org.apache.rms.Rms</a>.  The factory contains
+          static classes used to create and access singleton instances of the 
+          Rms class.  These static methods and their use are explained below:
+        </p>
+        
+        <table>
+          <tr><th>Method</th><th>Description</th></tr>
+          <tr>
+            <td><a href=
+              "./apidocs/rms/rbac/Rms.html#getInstance()">getInstance()</a>
+            </td>
+            <td>
+              <p>
+              Used to access the existing singleton provider that was previously
+              initialized or to initialize and return the default Rms provider.
+              The default provider is loaded using a discovery sequence to find
+              the needed properties.  
+              </p>
+              <p>
+              Calling this method will never complain about an attempt to 
+              reinitialize the singleton.  This method rather than the other
+              overload should be used to repeatedly access the singleton after
+              initialization has successfully occurred.
+              </p>
+            </td>
+          </tr>
+          <tr>
+            <td><a href=
+              "./apidocs/rms/rbac/Rms.html#getInstance(java.util.Properties)">
+              getInstance(java.util.Properties)</a>
+            </td>
+            <td>
+              <p>
+              Used to initialize the Rms provider.  The method should only be
+              successfully called at most once.  If called again after the 
+              successful initialization of the system an RmsException will
+              be thrown to complain about attempts to create other instances
+              of a singleton object.
+              </p>
+              <p>
+              The properties argument holds Rms provider specific properties 
+              as well as a value for the provider's RmsFactory implementation.
+              The <a href="./apidocs/rms/rbac/Rms.html#RMS_FACTORY_PROP">
+              Rms.RMS_FACTORY_PROP</a> property is used to hold the fully
+              qualified class name of the provider's RmsFactory implementation.
+              </p>
+              <p>
+              Calling this method will complain about repeated attempts to 
+              reinitialize the singleton.  This other no argument overload 
+              should be used to repeatedly access the singleton after 
+              initialization has successfully occurred.
+              </p>
+            </td>
+          </tr>
+        </table>
+      </subsection>
+
+      <subsection name="Application Interfaces">
+        <p>
+          Once an Rms provider instance is initialized it can be used to access
+          application permissions and roles.  Below we have code to test of the
+          admin role of a petstore application is granted the CancelPurchase
+          permission:
+        </p>
+        
+        <source>
+Rms rms = Rms.getInstance() ;
+Application petstore = rms.getApplication( "petstore" ) ;
+Role admin = petstore.getRole( "admin" ) ;
+if ( admin.hasPermission( "CancelPurchase" ) )
+{
+  ...
+}
+        </source>
+        
+        <p>
+          Applications may on startup want to cache permissions for use 
+          throughout the run of the application.  This may be used to determine
+          if permission checks are valid and exist for the application in 
+          the first place.  An Iterator to the petstore application's defined 
+          BitPermissions can be accessed like so:
+        </p>
+        
+        <source>
+Rms rms = Rms.getInstance() ;
+Application petstore = rms.getApplication( "petstore" ) ;
+Iterator perms = petstore.getPermissions() ;
+while ( perms.hasNext() )
+{
+  ...
+}
+        </source>
+      </subsection>
+
+      <subsection name="User Interfaces">
+        <p>
+          The primary reason for an authorization API in the first place is to
+          determine whether or not a user has access to a particular resource
+          or operation.  This is programmatically simple using the Rms User 
+          interfaces and is similar to the way we tested to see if a Role has
+          a permission.  Below we test to see if User akarasulu has the 
+          permission to AccessBillingInformation within the petstore 
+          Application:
+        </p>
+        
+        <source>
+Rms rms = Rms.getInstance() ;
+User akarasulu = rms.getUser( "akarasulu" ) ;
+Profile profile = akarasulu.getProfile( "petstore" ) ;
+if ( profile.hasPermission( "AccessBillingInformation" ) )
+{
+  // Allow access to billing info here:
+  ...
+}
+        </source>
+        
+        <p>
+          Sometimes its more convenient to determine whether or not a user is 
+          denied access to a resouce.  Because permission denials take 
+          precedence over grants, the <code>hasDenial()</code> method can be 
+          used to check for the opposite case.  Barrowing from the above 
+          example we could invert the situation to deny access like so:
+        </p>
+        
+        <source>
+if ( profile.hasDenial( "AccessBillingInformation" ) )
+{
+  // Disallow access to billing info here:
+  throw new AccessControlException( "Access to billing info denied" ) ;
+}
+        </source>
+        
+        <p>
+          Assertive checks can be used to handle these kinds of code blocks 
+          in one simple line.  Here's an example of the above authorization 
+          check block using an assertion:
+        </p>
+        
+        <source>
+profile.checkPermission( "AccessBillingInformation", 
+    "Access to billing info denied" ) ;
+        </source>
+        
+        <p>
+          If the AccessBillingInformation permission has not been granted to or
+          inherited by the akarasulu user profile for the petstore application
+          then an AccessControlException which is a RuntimeException is thrown.
+          If the message parameter is not provided for use as the message of 
+          the thrown AccessControlException one is constructed.  Assertive
+          permission checks are also available on Application Roles.  This 
+          single line assertion construct makes it easier to read application 
+          code enforcing access control policies.
+        </p>
+      </subsection>
+
+      <subsection name="Change Notification">
+        <p>
+          RMS implementations may cache RMS value objects for performance.  
+          However when these objects change in the backing store notifications
+          are recieved and updated if the RMS provider supports caching.
+       </p>
+       
+       <center>
+         <img src="./images/cache-classes-color.gif"/>
+       </center>
+       
+       <p>
+          Applications that want to be notified of changes to the RMS cache
+          create CacheListeners and register them for cache change events.  
+          Methods on the Rms class are provided for adding and removing 
+          listeners.  Here's an example of an RMS CacheListener implementation
+          being added to the Rms provider:
+        </p>
+        
+        <source>
+Rms rms = Rms.getInstance() ;
+rms.addCacheListener( new CacheListener() 
+{
+    public void cacheChanged( CacheEvent event )
+    {
+        // Do something about it
+    }
+}) ;
+        </source>
+          
+        <p>
+          Here all cache events will be delivered.  Other overloads can be used
+          to restrict the noise from the cache by only registering for cache
+          events on a particular class of cached Rms object, or to add and 
+          remove listeners on individual cache objects.
+        </p>
+        
+        <p>
+          Rms providers for production systems all implement cache event 
+          notification.  These providers also recycle cached objects rather than
+          invalidating and recreating them.  This saves on object creation 
+          overheads when massive changes occur making the implementation much
+          more efficient.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>

Added: incubator/directory/rms/trunk/api/xdocs/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/api/xdocs/navigation.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Realm Management System</title>
+
+ <body>
+
+    <links>
+      <item name="Home" href="../../index.html"/>
+      <item name="Project" href="http://sourceforge.net/projects/openrms"/>
+    </links>
+
+    <menu name="About RMS">
+      <item name="Overview" href="../../index.html"/>
+      <item name="Admin GUI" href="../../admin/index.html"/>
+      <item name="Reference" href="../../reference/index.html"/>
+      <item name="Development Log" href="../../log.html"/>
+      <item name="Authentication" href="../index.html"/>
+      <item name="Authorization" href="../index.html">
+        <item name="API" href="/index.html"/>
+        <item name="SPI" href="../spi/index.html"/>
+        <item name="JDBC Provider" href="../jdbc-impl/index.html"/>
+        <item name="JNDI Provider" href="../jndi-impl/index.html"/>
+      </item>
+      <item name="Preferences" href="../../preferences/index.html"/>
+      <item name="ResourceBundles" href="../../resource-bundles/index.html"/>
+    </menu>
+ </body>
+</project>

Added: incubator/directory/rms/trunk/gui/main/.classpath
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/.classpath	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+    <classpathentry excluding="rms/ui/images/" kind="src" path="src/java"/>
+    <classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
+    <classpathentry kind="var" path="MAVEN_REPO/avalon-framework/jars/avalon-framework-4.1.5.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.0.jar"/>
+    <classpathentry kind="src" path="/rms-rbac-api"/>
+    <classpathentry kind="src" path="/rms-rbac-jdbc-impl"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-api"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-impl"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-spi"/>
+    <classpathentry kind="src" path="/rms-gui-navtree"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.jar"/>
+    <classpathentry kind="src" path="/rms-rbac-spi"/>
+    <classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/directory/rms/trunk/gui/main/.project
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/.project	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>rms-gui-main</name>
+	<comment>The RMS Management Console or RMC is used to manage the entities within a realm. Applications, users, profiles, permissions, roles et. cetera. are managed by environment operators using this console application which directly alters the authoritative RMS datastore.</comment>
+	<projects>
+		<project>rms-gui-navtree</project>
+		<project>rms-gui-ocmm-api</project>
+		<project>rms-gui-ocmm-impl</project>
+		<project>rms-gui-ocmm-spi</project>
+		<project>rms-rbac-api</project>
+		<project>rms-rbac-jdbc-impl</project>
+		<project>rms-rbac-spi</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: incubator/directory/rms/trunk/gui/main/conf/block.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/conf/block.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,33 @@
+
+<!-- definition of an embedded block -->
+
+<container name="rmc">
+   <classloader>
+     <classpath>
+       <repository>
+         <resource id="commons-logging:commons-logging" version="1.0.3"/>
+         <resource id="commons-codec:commons-codec" version="SNAPSHOT"/>
+         <resource id="commons-lang:commons-lang" version="2.0"/>
+         <resource id="commons-collections:commons-collections" version="3.0"/>
+         <resource id="commons-beanutils:commons-beanutils" version="1.6"/>
+         <resource id="incubator-directory:rms-api" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-spi" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-jdbc-provider" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-gui-navtree" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-gui-ocmm-api" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-gui-ocmm-spi" version="SNAPSHOT"/>
+         <resource id="incubator-directory:rms-gui-ocmm-impl" version="SNAPSHOT"/>
+         <resource id="oracle:jdbc-thin-driver" version="9.2.0.1"/>
+       </repository>
+     </classpath>
+   </classloader>
+
+   <component name="ocmm-factory" 
+       class="org.apache.rms.ui.ocmm.impl.MerlinOcmmFactory">
+   </component>
+   
+   <component name="rms-management-console" 
+       class="org.apache.rms.ui.RmsManagementConsole">
+   </component>
+
+</container>

Added: incubator/directory/rms/trunk/gui/main/conf/config.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/conf/config.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<targets>
+
+  <target path="/rmc/rms-management-console">
+    <categories priority="DEBUG"/>
+  </target>
+
+  <target path="/rmc/ocmm-factory">
+    <categories priority="DEBUG"/>
+  </target>
+
+</targets>

Added: incubator/directory/rms/trunk/gui/main/gui-main.iml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/gui-main.iml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="junit-3.8.1.jar" level="application" />
+    <orderEntry type="library" name="merlin-unit-3.2.10.jar" level="application" />
+    <orderEntry type="library" name="avalon-framework-api-4.1.5.jar" level="application" />
+    <orderEntry type="library" name="commons-beanutils-1.6.jar" level="application" />
+    <orderEntry type="library" name="clover-idea4.jar" level="application" />
+    <orderEntry type="library" name="commons-codec-SNAPSHOT.jar" level="application" />
+    <orderEntry type="library" name="commons-collections-3.0.jar" level="application" />
+    <orderEntry type="library" name="commons-lang-2.0.jar" level="application" />
+    <orderEntry type="library" name="commons-primitives-1.1-dev.jar" level="application" />
+    <orderEntry type="module" module-name="navtree" />
+    <orderEntry type="module" module-name="ocmm-api" />
+    <orderEntry type="module" module-name="ocmm-impl" />
+    <orderEntry type="module" module-name="ocmm-spi" />
+    <orderEntry type="module" module-name="api" />
+    <orderEntry type="module" module-name="jdbc" />
+    <orderEntry type="module" module-name="spi" />
+  </component>
+</module>
+

Added: incubator/directory/rms/trunk/gui/main/maven.log
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/maven.log	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,322 @@
+2004-04-06 23:37:53,862 INFO  org.apache.maven.plugin.PluginManager - Initializing Plugins!
+2004-04-06 23:37:53,893 INFO  org.apache.maven.plugin.PluginManager - Unpacking plugins from directory --> j:\apache\maven\maven-1.0-beta-10\plugins
+2004-04-06 23:37:54,003 INFO  org.apache.maven.plugin.PluginManager - Processing unpacked plugins in C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:37:54,003 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-deploy-plugin-1.1
+2004-04-06 23:37:54,174 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-plexus-plugin-0.2
+2004-04-06 23:37:54,206 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-runner-plugin-0.2
+2004-04-06 23:37:54,206 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-sea-plugin-1.0
+2004-04-06 23:37:54,206 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-vdoclet-plugin-1.0
+2004-04-06 23:37:54,221 INFO  org.apache.maven.plugin.PluginCacheManager - Saving caches to C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:37:54,268 INFO  org.apache.maven.plugin.PluginManager - Finished initializing Plugins!
+2004-04-06 23:37:57,799 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1684706. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:37:57,799 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1c8ef56. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:37:57,815 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@302e67. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:37:57,815 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@136a1a1. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:38:02,251 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1b17d49. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:38:02,704 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1b17d49. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)

Added: incubator/directory/rms/trunk/gui/main/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/maven.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,7 @@
+<project default="jar:install">
+
+  <preGoal name="java:compile">
+    <attainGoal name="avalon:meta"/>
+  </preGoal>
+
+</project>

Added: incubator/directory/rms/trunk/gui/main/project.properties
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/project.properties	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,2 @@
+merlin.config=conf/config.xml
+merlin.debug=true

Added: incubator/directory/rms/trunk/gui/main/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/project.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+    <extend>${basedir}/../../project.xml</extend>
+    <id>rms-gui-main</id>
+    <name>RMS Management Console</name>
+    <currentVersion>SNAPSHOT</currentVersion>
+    <package>org.apache.rms.ui</package>
+    <shortDescription>RMS Management Console</shortDescription>
+    <description>
+        The RMS Management Console or RMC is used to manage the entities within
+        a realm.  Applications, users, profiles, permissions, roles et. cetera.
+        are managed by environment operators using this console application 
+        which directly alters the authoritative RMS datastore.
+    </description>
+    
+    <dependencies>
+      <dependency>
+        <groupId>avalon-framework</groupId>
+        <artifactId>avalon-framework</artifactId>
+        <version>4.1.5</version>
+        <url>http://avalon.apache.com/framework</url>
+      </dependency>
+      
+      <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.0</version>
+        <url>http://jakarta.apache.com/commons/lang</url>
+      </dependency>
+      
+      <dependency>
+        <groupId>commons-codec</groupId>
+        <artifactId>commons-codec</artifactId>
+        <version>SNAPSHOT</version>
+        <url>http://jakarta.apache.com/commons/codec</url>
+      </dependency>
+      
+      <dependency>
+        <groupId>commons-collections</groupId>
+        <artifactId>commons-collections</artifactId>
+        <version>3.0</version>
+        <url>http://jakarta.apache.com/commons/collections</url>
+      </dependency>
+      
+      <dependency>
+        <groupId>commons-beanutils</groupId>
+        <artifactId>commons-beanutils</artifactId>
+        <version>1.6</version>
+        <url>http://jakarta.apache.com/commons/beanutils</url>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-api</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-spi</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-jdbc-provider</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-gui-ocmm-api</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-gui-ocmm-spi</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-gui-ocmm-impl</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-gui-navtree</artifactId>
+        <version>SNAPSHOT</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>oracle</groupId>
+        <artifactId>jdbc-thin-driver</artifactId>
+        <version>9.2.0.1</version>
+        <url>
+          http://otn.oracle.com/software/tech/java/sqlj_jdbc/index.html
+        </url>
+      </dependency>
+        
+    </dependencies>
+    
+</project>
+
+

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+images

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/AboutBox.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/AboutBox.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,86 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.awt.Insets ;
+import java.awt.GridBagLayout ;
+import java.awt.GridBagConstraints ;
+
+import javax.swing.JPanel ;
+import javax.swing.JLabel ;
+import javax.swing.border.Border ;
+import javax.swing.BorderFactory ;
+
+
+/**
+ * The about dialog box in the RMS Management Console.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class AboutBox extends JPanel 
+{
+    private JLabel m_labelTitle = new JLabel() ;
+    private JLabel m_labelAuthor = new JLabel() ;
+    private GridBagLayout m_layoutMain = new GridBagLayout() ;
+    private Border m_border = BorderFactory.createEtchedBorder() ;
+
+    /**
+     * Creates the about box.
+     */
+    public AboutBox()
+    {
+        try
+        {
+            init() ; 
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace() ;
+        }
+    }
+
+    
+    /**
+     * Initializes this component.
+     * 
+     * @throws Exception on errors
+     */
+    private void init() throws Exception
+    {
+        Insets l_insets = null ;
+        GridBagConstraints l_constraints = null ;
+        
+        this.setLayout( m_layoutMain ) ;
+        this.setBorder( m_border ) ;
+        m_labelTitle.setText( "Rms Management Console " ) ;
+        m_labelAuthor.setText( "By Alex Karasulu" ) ;
+        
+        l_insets = new Insets( 5, 15, 0, 15 ) ;
+        l_constraints = new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0, 
+                GridBagConstraints.WEST, GridBagConstraints.NONE, 
+                l_insets, 0, 0 ) ;
+        this.add( m_labelTitle, l_constraints ) ;
+        
+        l_insets = new Insets( 0, 15, 0, 15 ) ;
+        l_constraints = new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, 
+                GridBagConstraints.WEST, GridBagConstraints.NONE, 
+                l_insets, 0, 0 ) ;
+        this.add(m_labelAuthor, l_constraints ) ;
+    }
+}
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/ActionMenuManager.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/ActionMenuManager.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,442 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.awt.event.ActionEvent ;
+import java.awt.event.ActionListener ;
+
+import java.util.HashMap ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu ;
+import javax.swing.tree.TreePath ;
+import javax.swing.tree.DefaultTreeModel ;
+import javax.swing.event.TreeSelectionEvent ;
+import javax.swing.event.TreeSelectionListener ;
+
+import org.apache.commons.lang.StringUtils ;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled ;
+
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.actions.CreateUserHandler ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+import org.apache.rms.ui.actions.MenuHandler ;
+import org.apache.rms.ui.actions.RefreshHandler ;
+import org.apache.rms.ui.actions.SubMenuHandler ;
+import org.apache.rms.ui.actions.MenuItemHandler ;
+import org.apache.rms.ui.actions.RenameRoleHandler ;
+import org.apache.rms.ui.actions.RenameUserHandler ;
+import org.apache.rms.ui.actions.DeleteUserHandler ;
+import org.apache.rms.ui.actions.AddRoleToProfileHandler ;
+import org.apache.rms.ui.actions.RenamePermissionHandler ;
+import org.apache.rms.ui.actions.RenameApplicationHandler ;
+import org.apache.rms.ui.actions.DeleteApplicationHandler ;
+import org.apache.rms.ui.actions.CreateApplicationHandler ;
+import org.apache.rms.ui.actions.CreateProfileForUserHandler ;
+import org.apache.rms.ui.actions.GrantPermissionToRoleHandler ;
+import org.apache.rms.ui.actions.RemoveRoleFromProfileHandler ;
+import org.apache.rms.ui.actions.DeleteProfileFromUserHandler ;
+import org.apache.rms.ui.actions.RevokeGrantFromProfileHandler ;
+import org.apache.rms.ui.actions.RevokeDenialFromProfileHandler ;
+import org.apache.rms.ui.actions.DenyPermissionForProfileHandler ;
+import org.apache.rms.ui.actions.GrantPermissionToProfileHandler ;
+import org.apache.rms.ui.actions.CreateRoleForApplicationHandler ;
+import org.apache.rms.ui.actions.RevokePermissionFromRoleHandler ;
+import org.apache.rms.ui.actions.DeleteRoleFromApplicationHandler ;
+import org.apache.rms.ui.actions.AddPermissionToApplicationHandler ;
+import org.apache.rms.ui.actions.DeletePermissionFromApplicationHandler ;
+
+
+/**
+ * Construction of Action menus and popups based on tree navigation selection
+ * events and responds to ActionEvents on the selection of these menus.
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class ActionMenuManager extends AbstractLogEnabled
+    implements 
+        ActionListener,
+        TreeSelectionListener
+{
+    /** the action menu to populate */
+    private final JMenu m_menu ;
+    /** the action popup menu to populate */
+    private final JPopupMenu m_popup ;
+    /** the main management console */
+    private final RmsManagementConsole m_console ; 
+    /** the last selected path */
+    private TreePath m_path = null ;
+    /** the last selected containment tree node */
+    private ContainmentTreeNode m_node = null ;
+    /** the set of menu ActionEvent handlers */
+    private HashMap m_handlers = new HashMap() ;
+    
+    
+    /**
+     * Creates an action menu manager.
+     * 
+     * @param a_menu the action menu to populate
+     * @param a_popup the action popup menu to populate
+     */
+    public ActionMenuManager( JMenu a_menu, JPopupMenu a_popup, 
+                              RmsManagementConsole a_console )
+    {
+        m_menu = a_menu ;
+        m_popup = a_popup ;
+        m_console = a_console ;
+        
+        m_handlers.put( AddPermissionToApplicationHandler.ACTION_COMMAND,
+                new AddPermissionToApplicationHandler( this ) ) ;
+        m_handlers.put( DeletePermissionFromApplicationHandler.ACTION_COMMAND,
+                new DeletePermissionFromApplicationHandler( this ) ) ;
+        m_handlers.put( RenamePermissionHandler.ACTION_COMMAND,
+                new RenamePermissionHandler( this ) ) ;
+        m_handlers.put( CreateUserHandler.ACTION_COMMAND,
+                new CreateUserHandler( this ) ) ;
+        m_handlers.put( CreateApplicationHandler.ACTION_COMMAND,
+                new CreateApplicationHandler( this ) ) ;
+        m_handlers.put( CreateRoleForApplicationHandler.ACTION_COMMAND,
+                new CreateRoleForApplicationHandler( this ) ) ;
+        m_handlers.put( CreateProfileForUserHandler.ACTION_COMMAND,
+                new CreateProfileForUserHandler( this ) ) ;
+        m_handlers.put( GrantPermissionToRoleHandler.ACTION_COMMAND,
+                new GrantPermissionToRoleHandler( this ) ) ;
+        m_handlers.put( RevokePermissionFromRoleHandler.ACTION_COMMAND,
+                new RevokePermissionFromRoleHandler( this ) ) ;
+        m_handlers.put( GrantPermissionToProfileHandler.ACTION_COMMAND,
+                new GrantPermissionToProfileHandler( this ) ) ;
+        m_handlers.put( RevokeGrantFromProfileHandler.ACTION_COMMAND,
+                new RevokeGrantFromProfileHandler( this ) ) ;
+        m_handlers.put( DenyPermissionForProfileHandler.ACTION_COMMAND,
+                new DenyPermissionForProfileHandler( this ) ) ;
+        m_handlers.put( RevokeDenialFromProfileHandler.ACTION_COMMAND,
+                new RevokeDenialFromProfileHandler( this ) ) ;
+        m_handlers.put( AddRoleToProfileHandler.ACTION_COMMAND, 
+                new AddRoleToProfileHandler( this ) ) ;
+        m_handlers.put( RemoveRoleFromProfileHandler.ACTION_COMMAND,
+                new RemoveRoleFromProfileHandler( this ) ) ;
+        m_handlers.put( DeleteUserHandler.ACTION_COMMAND,
+                new DeleteUserHandler( this ) ) ;
+        m_handlers.put( DeleteApplicationHandler.ACTION_COMMAND,
+                new DeleteApplicationHandler( this ) ) ;
+        m_handlers.put( DeleteRoleFromApplicationHandler.ACTION_COMMAND,
+                new DeleteRoleFromApplicationHandler( this ) ) ;
+        m_handlers.put( DeleteProfileFromUserHandler.ACTION_COMMAND,
+                new DeleteProfileFromUserHandler( this ) ) ;
+        m_handlers.put( RenameUserHandler.ACTION_COMMAND,
+                new RenameUserHandler( this ) ) ;
+        m_handlers.put( RenameApplicationHandler.ACTION_COMMAND,
+                new RenameApplicationHandler( this ) ) ;
+        m_handlers.put( RenameRoleHandler.ACTION_COMMAND,
+                new RenameRoleHandler( this ) ) ;
+        m_handlers.put( RefreshHandler.ACTION_COMMAND, 
+                new RefreshHandler( this ) ) ;
+    }
+
+    
+    /**
+     * Gets the main frame for this menu manager.
+     * 
+     * @return the main frame for this menu manager
+     */
+    public RmcMainFrame getMainFrame()
+    {
+        return m_console.getMainFrame() ;
+    }
+    
+    
+    /**
+     * Gets the tree model that this menu manager works with.
+     * 
+     * @return the tree model that this menu manager works with
+     */
+    public DefaultTreeModel getTreeModel()
+    {
+        return m_console.getMainFrame().getTreeModel() ;
+    }
+    
+    
+    /**
+     * Gets the containment model that this menu manager works with.
+     * 
+     * @return the containment model
+     */
+    public ContainmentModel getContainmentModel()
+    {
+        return m_console.getContainmentModel() ;
+    }
+    
+    
+    /**
+     * Gets the last bean node in the selection path.
+     * 
+     * @return the last bean in the selection path
+     */
+    public BeanTreeNode getLastBean()
+    {
+        if ( m_node instanceof ContainerTreeNode )
+        {
+            return ( BeanTreeNode ) m_node.getParent() ;
+        }
+        else
+        {
+            return ( BeanTreeNode ) m_node ;
+        }
+    }
+    
+
+    /**
+     * Gets the last container node in the selection path.
+     * 
+     * @return the last container node in the selection path
+     */
+    public ContainerTreeNode getLastContainer()
+    {
+        if ( m_node instanceof ContainerTreeNode )
+        {
+            return ( ContainerTreeNode ) m_node ;
+        }
+        else
+        {
+            return ( ContainerTreeNode ) m_node.getParent() ;
+        }
+    }
+    
+    
+    /**
+     * Gets the last selected path.
+     * 
+     * @return the last selected path
+     */
+    public TreePath getSelectedPath()
+    {
+        return m_path ;
+    }
+    
+
+    /**
+     * Gets the last container node on the selection path.
+     * 
+     * @return the last container node on the selection path
+     */
+    public TreePath getLastContainerPath()
+    {
+        if ( m_node instanceof ContainerTreeNode )
+        {
+            return m_path ;
+        }
+        else
+        {
+            return m_path.pathByAddingChild( m_node.getParent() ) ;
+        }
+    }
+    
+    
+    /**
+     * Sets the selected path.
+     * 
+     * @param a_path the path to the object to select
+     */
+    public void setSelected( TreePath a_path )
+    {
+        m_console.getMainFrame().setSelected( a_path ) ;
+    }
+    
+
+    /*
+     * (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent a_event )
+    {
+        String l_cmd = a_event.getActionCommand() ;
+        getLogger().debug( "Got action event to " + l_cmd ) ;
+        
+        if ( m_path == null || m_node == null )
+        {
+            return ;
+        }
+            
+        if ( m_handlers.containsKey( l_cmd ) )
+        {    
+            ActionListener l_handler = 
+                ( ActionListener ) m_handlers.get( l_cmd ) ;
+            l_handler.actionPerformed( a_event ) ;
+            return ;
+        }
+        
+        String[] comps = StringUtils.split( l_cmd, '|' ) ;
+        if ( m_handlers.containsKey( comps[0] ) )
+        {    
+            ActionListener l_handler = 
+                ( ActionListener ) m_handlers.get( comps[0] ) ;
+            l_handler.actionPerformed( a_event ) ;
+            return ;
+        }
+        
+        String msg = "The action with command " + a_event.getActionCommand()
+            + " on source " + a_event.getSource() + " is unrecognized!" ;
+        JOptionPane.showMessageDialog( m_console.getMainFrame(), 
+                msg, "Unknown Action!", JOptionPane.ERROR_MESSAGE ) ;
+    }
+    
+    
+    /**
+     * Builds the popup and regular menus for actions.
+     */
+    public void buildMenus()
+    {
+        Action[] l_actions = null ;
+        ContainmentMetadata l_meta = null ;
+
+        if ( m_node == null ) 
+        {
+            return ;
+        }
+
+        l_meta = m_node.getContainmentMetadata() ;
+        if ( m_node instanceof ContainerTreeNode )
+        {
+            ContainerTreeNode l_ctn = ( ContainerTreeNode ) m_node ;
+            l_actions = l_ctn.getContainer().getActions() ;
+        }
+        else
+        {    
+            l_actions = l_meta.getActions() ;
+        }
+        
+        m_menu.removeAll() ;
+        m_popup.removeAll() ;
+        for ( int ii = 0; ii < l_actions.length; ii++ )
+        {
+            if ( ! TreePathUtils.isContextAllowed( m_path, 
+                            l_actions[ii].getContexts() ) )
+            {
+                continue ;
+            }
+            
+            MenuHandler l_handler = getHandler( l_actions[ii].getCommand() ) ;
+            if ( l_handler == null )
+            {
+                JMenuItem l_item = new JMenuItem( l_actions[ii].getName() ) ;
+                l_item.setActionCommand( l_actions[ii].getCommand() ) ;
+                l_item.setToolTipText( l_actions[ii].getDescription() ) ;
+                l_item.addActionListener( this ) ;
+                l_item.setIcon( Images.load( l_actions[ii].getIcon() ) ) ;
+                m_popup.add( l_item ) ;
+
+                l_item = new JMenuItem( l_actions[ii].getName() ) ;
+                l_item.setActionCommand( l_actions[ii].getCommand() ) ;
+                l_item.setToolTipText( l_actions[ii].getDescription() ) ;
+                l_item.addActionListener( this ) ;
+                l_item.setIcon( Images.load( l_actions[ii].getIcon() ) ) ;
+                m_menu.add( l_item ) ;
+            }
+            else if ( l_handler.isForItem() )
+            {
+                m_popup.add( ( ( MenuItemHandler ) l_handler )
+                        .getMenuItem( m_path, l_actions[ii] ) ) ;
+                m_menu.add( ( ( MenuItemHandler ) l_handler )
+                        .getMenuItem( m_path, l_actions[ii] ) ) ;
+            }
+            else
+            {
+                m_popup.add( ( ( SubMenuHandler ) l_handler )
+                        .getSubMenu( m_path, l_actions[ii] ) ) ;
+                m_menu.add( ( ( SubMenuHandler ) l_handler )
+                        .getSubMenu( m_path, l_actions[ii] ) ) ;
+            }
+        }
+        
+        JMenuItem l_item = new JMenuItem( "Refresh" ) ;
+        l_item.setActionCommand( "Refresh" ) ;
+        l_item.setToolTipText( "Refresh the node" ) ;
+        l_item.addActionListener( this ) ;
+        m_popup.add( l_item ) ;
+
+        l_item = new JMenuItem( "Refresh" ) ;
+        l_item.setActionCommand( "Refresh" ) ;
+        l_item.setToolTipText( "Refresh the node" ) ;
+        l_item.addActionListener( this ) ;
+        m_menu.add( l_item ) ;
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see javax.swing.event.ListSelectionListener#
+     * valueChanged(javax.swing.event.ListSelectionEvent)
+     */
+    public void valueChanged( TreeSelectionEvent a_event )
+    {
+        m_path = ( TreePath ) a_event.getPath() ;
+        m_node = ( ContainmentTreeNode ) m_path.getLastPathComponent() ; 
+        
+        if ( ! a_event.isAddedPath() )
+        {
+            return ;
+        }
+        
+        buildMenus() ;
+    }
+    
+    
+    /**
+     * Gets a menu handler by command also breaking up prefixes and using those
+     * if necessary.
+     * 
+     * @param cmd the simple or composite command with '|' separators
+     * @return the handler for the command
+     */
+    public MenuHandler getHandler( String cmd )
+    {
+        if ( m_handlers.containsKey( cmd ) )
+        {    
+            return ( MenuHandler ) m_handlers.get( cmd ) ;
+        }
+        
+        String l_prefix = StringUtils.split( cmd, '|' )[0] ;
+        return ( MenuHandler ) m_handlers.get( l_prefix ) ;
+    }
+    
+    
+    /**
+     * Creates and fires an action command as if it occurred via user input
+     * on one of the menus.  This call synchronously delivers events to 
+     * listeners.
+     * 
+     * @param the 
+     * @param cmd the command to execute
+     */
+    public void fireActionCommand( String cmd )
+    {
+        ActionEvent l_event = new ActionEvent( this, 0, cmd, 
+                System.currentTimeMillis(), ActionEvent.ACTION_PERFORMED ) ;
+        actionPerformed( l_event ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/DetailTableManager.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/DetailTableManager.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,91 @@
+/*
+ *   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.rms.ui ;
+
+
+import javax.swing.JTable ;
+import javax.swing.tree.TreePath ;
+import javax.swing.event.TreeSelectionEvent ;
+import javax.swing.event.TreeSelectionListener ;
+import javax.swing.tree.DefaultMutableTreeNode ;
+
+import org.apache.avalon.framework.logger.Logger ;
+import org.apache.avalon.framework.logger.LogEnabled ;
+
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Manages the contents of the detail table as we make selections on the
+ * navigation tree.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DetailTableManager implements TreeSelectionListener, LogEnabled
+{
+    /** table that is altered to display the details of selected nav nodes */
+    private final JTable m_table ;
+    /** the logger used by this abstract loggable */
+    private Logger m_logger ;
+    /** the menu manager we cause events to fire to */
+    private final ActionMenuManager m_menuManager ;
+    
+    /** the models we already created for some nodes */
+    //private final HashMap m_models = new HashMap( 100 ) ;
+
+    /**
+     * Creates a detail table manager.
+     * 
+     * @param table the table being managed
+     */
+    public DetailTableManager( JTable table, ActionMenuManager menuManager )
+    {
+        m_table = table ;
+        m_menuManager = menuManager ;
+    }
+
+    
+    /*
+     * (non-Javadoc)
+     * @see org.apache.avalon.framework.logger.LogEnabled#
+     * enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_logger = logger ;
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see javax.swing.event.TreeSelectionListener#valueChanged(
+     * javax.swing.event.TreeSelectionEvent)
+     */
+    public void valueChanged( TreeSelectionEvent a_event )
+    {
+        TreePath l_path = ( TreePath ) a_event.getPath() ;
+        ContainmentTreeNode l_node = ( ContainmentTreeNode ) 
+            l_path.getLastPathComponent() ;
+
+        if ( l_node == null ) return ;
+        
+        TreePath path = new TreePath( ( ( DefaultMutableTreeNode ) 
+                        l_node ).getPath() ) ;
+        new RmcTableModel( m_table, path, m_menuManager ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/Images.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/Images.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,102 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.net.URL ;
+import java.util.HashMap ;
+
+import javax.swing.ImageIcon ;
+
+import org.apache.rms.ui.ocmm.IconUsage ;
+
+
+/**
+ * Stores and manages all the images for the application.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class Images
+{
+    /** hash of images by path */
+    private static final HashMap m_images = new HashMap() ;
+    
+    
+    /**
+     * Loads an image and caches it for later use.
+     * 
+     * @param path the path to the image
+     * @return the ImageIcon for the image path
+     */
+    public static ImageIcon load( String path )
+    {
+        if ( path == null )
+        {
+            return null ;
+        }
+        
+        ImageIcon l_image = ( ImageIcon ) m_images.get( path ) ;
+        if ( l_image == null )
+        {
+            URL l_url = Images.class.getResource( path ) ;
+            
+            if ( l_url == null )
+            {
+                System.err.println( "Could not find " + path ) ;
+                return null ;
+            }
+            
+            l_image = new ImageIcon( l_url ) ;
+            m_images.put( path, l_image ) ;
+        }
+        
+        return l_image ;
+    }
+
+
+    /**
+     * Loads an image and caches it for later use.
+     * 
+     * @param icon the Icon descriptor for the image
+     * @return the ImageIcon for the descriptor
+     */
+    public static ImageIcon load( IconUsage icon )
+    {
+        if ( icon == null )
+        {
+            return null ;
+        }
+        
+        ImageIcon l_image = ( ImageIcon ) m_images.get( icon.getIconPath() ) ;
+        if ( l_image == null )
+        {
+            URL l_url = Images.class.getResource( icon.getIconPath() ) ;
+            
+            if ( l_url == null )
+            {
+                System.err.println( "Could not find " + icon.getIconPath() ) ;
+                return null ;
+            }
+            
+            l_image = new ImageIcon( l_url ) ;
+            m_images.put( icon.getIconPath(), l_image ) ;
+        }
+        
+        return l_image ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcMainFrame.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcMainFrame.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,306 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.awt.Component ;
+import java.awt.Dimension ;
+import java.awt.BorderLayout ;
+import java.awt.event.MouseEvent ;
+import java.awt.event.ActionEvent ;
+import java.awt.event.MouseAdapter ;
+import java.awt.event.MouseListener ;
+import java.awt.event.ActionListener ;
+
+import javax.swing.JMenu ;
+import javax.swing.JTree ;
+import javax.swing.JPanel ;
+import javax.swing.JTable ;
+import javax.swing.JFrame ;
+import javax.swing.JLabel ;
+import javax.swing.JButton ;
+import javax.swing.JToolBar ;
+import javax.swing.JMenuBar ;
+import javax.swing.ImageIcon ;
+import javax.swing.JMenuItem ;
+import javax.swing.JPopupMenu ;
+import javax.swing.JSplitPane ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+import javax.swing.ListSelectionModel ;
+import javax.swing.tree.DefaultTreeModel ;
+import javax.swing.tree.TreeSelectionModel ;
+import javax.swing.tree.DefaultTreeSelectionModel ;
+
+import org.apache.commons.lang.NotImplementedException ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+
+
+/**
+ * The main frame in the RMC application.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmcMainFrame extends JFrame 
+{
+    private RmsManagementConsole m_console ;
+    
+    private ImageIcon m_imageHelp = 
+        new ImageIcon( RmcMainFrame.class.getResource( "help.gif" ) ) ;
+    private ImageIcon m_imageClose = 
+        new ImageIcon( RmcMainFrame.class.getResource( "closefile.gif" ) ) ;
+    private ImageIcon m_imageOpen =
+        new ImageIcon( RmcMainFrame.class.getResource( "openfile.gif" ) ) ;
+
+    private JButton m_buttonHelp = new JButton() ;
+    private JButton m_buttonClose = new JButton() ;
+    private JButton m_buttonOpen = new JButton() ;
+    private JToolBar m_toolBar = new JToolBar() ;
+    private JLabel m_statusBar = new JLabel() ;
+    private JMenuItem m_menuHelpAbout = new JMenuItem() ;
+    private JMenu m_menuHelp = new JMenu() ;
+    private JMenuItem m_menuFileExit = new JMenuItem() ;
+    private JMenu m_menuFile = new JMenu() ;
+    private JMenuBar m_menuBar = new JMenuBar() ;
+    private JPanel m_panelCenter = new JPanel() ;
+    private BorderLayout m_layoutMain = new BorderLayout() ;
+    private JSplitPane m_splitPane = new JSplitPane() ;
+    private JScrollPane m_tableScrollPane = new JScrollPane() ;
+    private JScrollPane m_treeScrollPane = new JScrollPane() ;
+    private JTree m_tree = null ;
+    private JTable m_table = new JTable() ;
+    private JMenu m_menuAction = new JMenu() ;
+    private JPopupMenu m_popupMenu = new JPopupMenu() ;
+
+    private DefaultTreeModel m_treeModel = null ;
+    
+    
+    /**
+     * Creates the main frame of the RMC application.
+     */
+    public RmcMainFrame( RmsManagementConsole a_console )
+    {
+        m_console = a_console ;
+        
+        try
+        {
+            init() ;
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace() ;
+        }
+    }
+
+
+    /**
+     * Initializes the main frame of the RMC application.
+     * 
+     * @throws Exception on error
+     */
+    private void init() throws Exception
+    {
+        m_menuAction.setText( "Action" ) ;
+        m_menuAction.setActionCommand( "Action" ) ;
+        
+        this.setJMenuBar( m_menuBar ) ;
+        this.getContentPane().setLayout( m_layoutMain ) ;
+        this.setSize( new Dimension( 800, 600 ) ) ;
+        this.setTitle( "RMS Management Console" ) ;
+        
+        m_menuFile.setText( "File" ) ;
+        m_menuFileExit.setText( "Exit" ) ;
+        m_menuFileExit.addActionListener( new ActionListener()
+        {
+            public void actionPerformed( ActionEvent ae )
+            {
+                fileExitOccured( ae ) ;
+            }
+        } ) ;
+        
+        m_menuHelp.setText( "Help" ) ;
+        m_menuHelpAbout.setText( "About" ) ;
+        m_menuHelpAbout.addActionListener( new ActionListener()
+        {
+            public void actionPerformed( ActionEvent ae )
+            {
+                helpAboutOccured( ae ) ;
+            }
+        } ) ;
+        
+        m_statusBar.setText( "All is well" ) ;
+        m_buttonOpen.setToolTipText( "Open File" ) ;
+        m_buttonOpen.setIcon( m_imageOpen ) ;
+        m_buttonClose.setToolTipText( "Close File" ) ;
+        m_buttonClose.setIcon( m_imageClose ) ;
+        m_buttonHelp.setToolTipText( "About" ) ;
+        m_buttonHelp.setIcon( m_imageHelp ) ;
+        m_menuFile.add( m_menuFileExit ) ;
+        m_menuHelp.add( m_menuHelpAbout ) ;
+        m_menuBar.add( m_menuFile ) ;
+        m_menuBar.add( m_menuAction ) ;
+        m_menuBar.add( m_menuHelp ) ;
+        this.getContentPane().add( m_statusBar, BorderLayout.SOUTH ) ;
+        m_toolBar.add( m_buttonOpen ) ;
+        m_toolBar.add( m_buttonClose ) ;
+        m_toolBar.add( m_buttonHelp ) ;
+        this.getContentPane().add( m_toolBar, BorderLayout.NORTH ) ;
+        this.getContentPane().add( m_panelCenter, BorderLayout.CENTER ) ;
+        m_panelCenter.setLayout( new java.awt.BorderLayout() ) ;
+        m_panelCenter.add( m_splitPane, java.awt.BorderLayout.CENTER ) ;
+        m_splitPane.setDividerLocation( 255 ) ;
+        m_splitPane.add( m_tableScrollPane, javax.swing.JSplitPane.RIGHT ) ;
+        m_splitPane.add( m_treeScrollPane, javax.swing.JSplitPane.LEFT ) ;
+        
+        initNavTree() ;
+        
+        m_tableScrollPane.getViewport().add( m_table ) ;
+        m_treeScrollPane.getViewport().add( m_tree ) ;
+
+        m_table.setBounds( new java.awt.Rectangle( 227,169,32,32 ) ) ;
+        m_table.getSelectionModel().setSelectionMode( 
+                ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ) ;
+        m_table.setCellSelectionEnabled( true ) ;
+        //m_table.setDefaultRenderer( BeanTreeNode.class, 
+        //        new RmcTableCellRenderer() ) ;
+        // m_table.setCellEditor( new RmcTableCellEditor() ) ;
+        /* m_table.setCellEditor( new DefaultCellEditor() 
+        {
+            public Component getTableCellRendererComponent( JTable a_table,
+                Object a_value, boolean a_isSelected, int a_row, int a_col )
+            {
+                return getCellEditor( a_value, 
+                    a_isSelected, a_row, a_col ) ;
+            }
+
+            
+            
+        }) ;
+        */
+        
+        // Add listener to components that can bring up popup menus.
+        MouseListener l_popupListener = new PopupListener() ;
+        m_menuBar.addMouseListener( l_popupListener ) ;
+        m_tree.addMouseListener( l_popupListener ) ;
+        m_table.addMouseListener( l_popupListener ) ;
+    }
+
+    
+    /**
+     * Listens for popup events to show popup menu. 
+     */
+    class PopupListener extends MouseAdapter 
+    {
+        public void mousePressed( MouseEvent e ) 
+        {
+            maybeShowPopup( e ) ;
+        }
+
+        public void mouseReleased( MouseEvent e) 
+        {
+            maybeShowPopup( e ) ;
+        }
+
+        private void maybeShowPopup( MouseEvent e ) 
+        {
+            if ( e.isPopupTrigger() ) 
+            {
+                m_popupMenu.show( e.getComponent(), e.getX(), e.getY() ) ;
+            }
+        }
+    }
+
+    
+    /**
+     * Sets up the containment navigation tree by registering a selection 
+     * listener with it that shows properties in the table to the right which
+     * is the scalar property sheet editor.
+     */
+    private void initNavTree()
+    { 
+        Rms l_rms = m_console.getRmsInstance() ;
+        ContainmentModel l_model = m_console.getContainmentModel() ;
+        
+        m_treeModel = new DefaultTreeModel( 
+                new BeanTreeNode( l_rms, l_model ), true ) ;
+        m_tree = new JTree( m_treeModel ) ;
+        m_tree.setCellRenderer( new RmcTreeCellRenderer() ) ;
+        
+        TreeSelectionModel l_selection = new DefaultTreeSelectionModel() ;
+        l_selection.setSelectionMode( 
+                TreeSelectionModel.SINGLE_TREE_SELECTION ) ;
+        
+        ActionMenuManager l_menuMan = null ;
+        l_menuMan = new ActionMenuManager( m_menuAction, m_popupMenu, 
+                m_console ) ;
+        l_menuMan.enableLogging( m_console.log() ) ;
+        l_selection.addTreeSelectionListener( l_menuMan ) ;
+        
+        DetailTableManager l_tableMan = null ;
+        l_tableMan = new DetailTableManager( m_table, l_menuMan ) ;
+        l_tableMan.enableLogging( m_console.log() ) ;
+        l_selection.addTreeSelectionListener( l_tableMan ) ;
+        
+        m_tree.setSelectionModel( l_selection ) ;
+        m_tree.invalidate() ;
+    }
+    
+    
+    /**
+     * Set's the selection path in the tree.
+     * 
+     * @param path the path to selected component
+     */
+    public void setSelected( TreePath path )
+    {
+        m_tree.setSelectionPath( path ) ;
+        m_tree.invalidate() ;
+        m_tree.repaint() ;
+        m_tree.scrollPathToVisible( path ) ;
+    }
+    
+    
+    public DefaultTreeModel getTreeModel()
+    {
+        return m_treeModel ;
+    }
+    
+    
+    Component getCellEditor( Object a_value, boolean a_isSelected, 
+        int a_row, int a_col )
+    {
+        throw new NotImplementedException( "" ) ;
+    }    
+
+
+    void fileExitOccured( ActionEvent e )
+    {
+        System.exit( 0 ) ;
+    }
+
+    
+    void helpAboutOccured( ActionEvent e )
+    {
+        JOptionPane.showMessageDialog( this, new AboutBox(), "About", 
+                JOptionPane.PLAIN_MESSAGE ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellEditor.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellEditor.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +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.rms.ui ;
+
+
+import java.awt.Color ; 
+import java.awt.Component ;
+import java.util.EventObject ;
+
+import javax.swing.JTable ;
+import javax.swing.JCheckBox ;
+import javax.swing.table.TableCellEditor ;
+import javax.swing.event.CellEditorListener ;
+
+
+/**
+ * A special cell renderer for the table on the RHS.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmcTableCellEditor implements TableCellEditor
+{
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableCellRenderer#
+     * getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, 
+     * boolean, boolean, int, int)
+     */
+    public Component 
+        getTableCellRendererComponent( JTable table, Object value, 
+                                       boolean isSelected, boolean hasFocus,
+									   int row, int column )
+    {
+        JCheckBox checkBox = new JCheckBox() ;
+        checkBox.setEnabled( true ) ;
+        checkBox.setSelected( true ) ;
+        checkBox.setBackground( Color.WHITE ) ;
+        checkBox.setForeground( Color.BLACK ) ;
+        return checkBox ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(
+     * javax.swing.JTable, java.lang.Object, boolean, int, int)
+     */
+    public Component getTableCellEditorComponent(
+        JTable table,
+        Object value,
+        boolean isSelected,
+        int row,
+        int column)
+    {
+        return null ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#addCellEditorListener(javax.swing.event.CellEditorListener)
+     */
+    public void addCellEditorListener(CellEditorListener l)
+    {
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#cancelCellEditing()
+     */
+    public void cancelCellEditing()
+    {
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#getCellEditorValue()
+     */
+    public Object getCellEditorValue()
+    {
+        return null ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#isCellEditable(java.util.EventObject)
+     */
+    public boolean isCellEditable( EventObject anEvent )
+    {
+        return false ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#removeCellEditorListener(javax.swing.event.CellEditorListener)
+     */
+    public void removeCellEditorListener(CellEditorListener l)
+    {
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#shouldSelectCell(java.util.EventObject)
+     */
+    public boolean shouldSelectCell( EventObject anEvent )
+    {
+        return false ;
+    }
+
+
+    /* (non-Javadoc)
+     * @see javax.swing.CellEditor#stopCellEditing()
+     */
+    public boolean stopCellEditing()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellRenderer.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableCellRenderer.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,53 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.awt.Color;
+import java.awt.Component ;
+
+import javax.swing.JTable ;
+import javax.swing.JCheckBox ;
+import javax.swing.table.DefaultTableCellRenderer ;
+
+
+/**
+ * A special cell renderer for the table on the RHS.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmcTableCellRenderer extends DefaultTableCellRenderer
+{
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableCellRenderer#
+     * getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, 
+     * boolean, boolean, int, int)
+     */
+    public Component 
+        getTableCellEditorComponent( JTable table, Object value, 
+                                       boolean isSelected, boolean hasFocus,
+									   int row, int column )
+    {
+        JCheckBox checkBox = new JCheckBox() ;
+        checkBox.setEnabled( true ) ;
+        checkBox.setSelected( true ) ;
+        checkBox.setBackground( Color.WHITE ) ;
+        checkBox.setForeground( Color.BLACK ) ;
+        return checkBox ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableModel.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTableModel.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,788 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.util.Vector ;
+import java.util.ArrayList ;
+
+import javax.swing.JTable ;
+import javax.swing.tree.TreePath ;
+import javax.swing.table.DefaultTableModel ;
+
+import org.apache.commons.beanutils.BeanUtils ;
+
+import org.apache.rms.Role ;
+import org.apache.rms.User ;
+import org.apache.rms.Profile ;
+import org.apache.rms.Application ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+import org.apache.rms.ui.ocmm.ContextUtils;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * A special table model implementation for the RMC GUI.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmcTableModel extends DefaultTableModel
+{
+    private final boolean m_isCheckBoxed ;
+    private final JTable m_table ;
+    private final TreePath m_path ;
+    private final ContainmentTreeNode m_node ;
+    private final ArrayList m_nodes = new ArrayList() ;
+    private final ArrayList m_data = new ArrayList() ;
+    private final ActionMenuManager m_menuManager ;
+    private String [] m_cols ;
+    
+    
+    /**
+     * Create a table model for a containment tree node. 
+     */
+    public RmcTableModel( JTable table, TreePath path, 
+                          ActionMenuManager menuManager )
+    {
+        super() ;
+        m_node = ( ContainmentTreeNode ) path.getLastPathComponent() ;
+        m_path = path ;
+        m_table = table ;
+        m_isCheckBoxed = isCheckBoxed( m_node ) ;
+        m_menuManager = menuManager ;
+        
+        init() ;
+    }
+    
+    
+    /**
+     * If this is not a checkboxed node then all the properties are displayed 
+     * for the bean or container.
+     * 
+     * Initializes the model by loading all the children with checkboxes set to
+     * the checked position and all option
+     *
+     */
+    public void init()
+    {
+        ContainmentMetadata meta = m_node.getContainmentMetadata() ;
+        String[] props = meta.getScalarProperties() ;
+        
+        if ( m_isCheckBoxed )
+        {
+            m_cols = new String[ props.length+1 ] ;
+            System.arraycopy( props, 0, m_cols, 1, props.length ) ;
+            m_cols[0] = "" ;
+        }
+        else
+        {
+            m_cols = props ;
+        }
+        
+        setColumnIdentifiers( m_cols ) ;
+
+        if ( m_node instanceof ContainerTreeNode )
+        {    
+            for ( int ii = 0; ii < m_node.getChildCount(); ii++ )
+            {
+                addRow( ( ContainmentTreeNode ) m_node.getChildAt( ii ) ) ;
+            }
+            
+            addOptionalNodes() ;
+        }
+        else
+        {
+            addRow( m_node ) ;
+        }
+        
+        m_table.setModel( this ) ;
+        
+        if ( m_isCheckBoxed )
+        {    
+            m_table.getTableHeader().getColumnModel()
+                .getColumn( 0 ).setMaxWidth( 22 ) ;
+        }
+        m_table.revalidate() ;
+    }
+
+    
+    public boolean isCheckBoxed()
+    {
+        return m_isCheckBoxed ;
+    }
+    
+    
+    /**
+     * Adds other nodes that are not children of this model's node.  These nodes
+     * will be used as optional nodes and are introspected upon.  When a 
+     * checkbox is checked the user object in these nodes is used to build a
+     * new child node which is ultimately added to the tree.
+     */
+    private void addOptionalNodes()
+    {
+        if ( m_node instanceof BeanTreeNode )
+        {
+            return ;
+        }
+            
+        ContainerTreeNode node = ( ContainerTreeNode ) m_node ;
+        BeanTreeNode parent = ( BeanTreeNode ) node.getParent() ; 
+        BeanTreeNode root = ( BeanTreeNode ) m_path.getPathComponent( 0 ) ;
+        
+        /* --------------------------------------------------------------------
+           1). Find the container node with the superset of object nodes
+           2). Find the difference superset - current set and add these 
+           ------------------------------------------------------------------ */
+        
+        if ( node.getContainer().getName().equals( "Profiles" ) )
+        {
+            /*
+             * This can only be the following path:
+             * 
+             * root/Users/bean/Profiles
+             * 
+             * 1). We need to get the Applications container to list all apps
+             * 2). Add applications contained which the user does not have a 
+             *     profile for.  So this means we need the user bean.
+             */
+            BeanTreeNode userNode = parent ;
+            User user = ( User ) userNode.getUserObject() ;
+            ContainerTreeNode apps = root.getContainerChild( "Applications" ) ;
+            
+            for ( int ii = 0; ii < apps.getChildCount(); ii++ )
+            {
+                BeanTreeNode appNode = ( BeanTreeNode ) apps.getChildAt( ii ) ;
+                Application app = ( Application ) appNode.getUserObject() ;
+                if ( ! user.hasProfile( app ) ) 
+                {
+                    addRow( appNode ) ;
+                }
+            }
+            
+            return ;
+        }
+        
+        
+        if ( node.getContainer().getName().equals( "Denials" ) )
+        {
+            /*
+             * This can only be the following path
+             * 
+             * root/Users/bean/Profiles/bean/Denials
+             * 
+             * 1). We need to get the users profile to check the denials
+             * 2). We need to get the application associated with the profile
+             * 3). We need to add the permissions for applications that are not
+             *     present within the set of denials.
+             */
+            BeanTreeNode profNode = parent ;
+            Profile profile = ( Profile ) profNode.getUserObject() ;
+            ContainerTreeNode apps = root.getContainerChild( "Applications" ) ;
+            
+            BeanTreeNode appNode = null ;
+            ContainerTreeNode perms = null ;
+            
+            // get the app and appNode by finding matching app to profile's app
+            for ( int ii = 0; ii < apps.getChildCount(); ii++ )
+            {
+                BeanTreeNode tmpNode = ( BeanTreeNode ) apps.getChildAt( ii ) ;
+                Application tmp = ( Application ) tmpNode.getUserObject() ;
+                if ( tmp.getName().equals( profile.getApplicationName() ) ) 
+                {
+                    appNode = tmpNode ;
+                    break ;
+                }
+            }
+            
+            perms = appNode.getContainerChild( "Permissions" ) ;
+            for ( int ii = 0; ii < perms.getChildCount(); ii++ )
+            {
+                BeanTreeNode permNode = (BeanTreeNode) perms.getChildAt(ii) ;
+                BitPermission perm = (BitPermission) permNode.getUserObject() ;
+                
+                if ( ! profile.hasDenial( perm ) )
+                {
+                    addRow( permNode ) ;
+                }
+            }
+            
+            return ;
+        }
+        
+        
+        if ( node.getContainer().getName().equals( "Roles" ) && 
+             ( parent.getUserObject() instanceof Profile ) )
+        {         
+            /*
+             * There are two paths in which containers with the name 'Roles'
+             * can be encountered:
+             * 
+             * root/Applications/bean/Roles
+             * root/Users/bean/Profiles/bean/Roles
+             * 
+             * Here we are interested in the second path - the first does not
+             * offer up checkbox options since there perms you either create or
+             * delete and there is no superset to pick options from.
+             * 
+             * 1). get the profile of the user
+             * 2). get the application and appNode associated with the profile
+             * 3). add the app roles that the profile does not have
+             */
+            BeanTreeNode profNode = parent ;
+            Profile profile = ( Profile ) profNode.getUserObject() ;
+            ContainerTreeNode apps = root.getContainerChild( "Applications" ) ;
+            
+            BeanTreeNode appNode = null ;
+            ContainerTreeNode roles = null ;
+            
+            // get the app and appNode by finding matching app to profile's app
+            for ( int ii = 0; ii < apps.getChildCount(); ii++ )
+            {
+                BeanTreeNode tmpNode = ( BeanTreeNode ) apps.getChildAt( ii ) ;
+                Application tmp = ( Application ) tmpNode.getUserObject() ;
+                if ( tmp.getName().equals( profile.getApplicationName() ) ) 
+                {
+                    appNode = tmpNode ;
+                    break ;
+                }
+            }
+            
+            roles = appNode.getContainerChild( "Roles" ) ;
+            for ( int ii = 0; ii < roles.getChildCount(); ii++ )
+            {
+                BeanTreeNode roleNode = (BeanTreeNode) roles.getChildAt(ii) ;
+                Role role = (Role) roleNode.getUserObject() ;
+                
+                if ( ! profile.hasRole( role ) )
+                {
+                    addRow( roleNode ) ;
+                }
+            }
+            
+            return ;
+        }
+
+        if ( node.getContainer().getName().equals( "Grants" ) && 
+             ( parent.getUserObject() instanceof Profile ) )
+        {         
+            /*
+             * There are three paths in which containers with the name 'Grants'
+             * can be encountered:
+             * 
+             * root/Applications/bean/Roles/bean/Grants
+             * root/Users/bean/Profiles/bean/Roles/bean/Grants
+             * root/Users/bean/Profiles/bean/Grants
+             * 
+             * Here we are interested in the third path - the first is a 
+             * separate concern.  The second is a copy of the first in a 
+             * different position which is immutable - changes to these 
+             * objects can only occur from the first position.  To get the 
+             * options for position 3 we need to do the following:
+             * 
+             * 1). get the profile of the user
+             * 2). get the application and appNode associated with the profile
+             * 3). add the app perms that the profile does not have in the 
+             * grants set
+             */
+            BeanTreeNode profNode = parent ;
+            Profile profile = ( Profile ) profNode.getUserObject() ;
+            ContainerTreeNode apps = root.getContainerChild( "Applications" ) ;
+            
+            BeanTreeNode appNode = null ;
+            ContainerTreeNode perms = null ;
+            
+            // get the app and appNode by finding matching app to profile's app
+            for ( int ii = 0; ii < apps.getChildCount(); ii++ )
+            {
+                BeanTreeNode tmpNode = ( BeanTreeNode ) apps.getChildAt( ii ) ;
+                Application tmp = ( Application ) tmpNode.getUserObject() ;
+                if ( tmp.getName().equals( profile.getApplicationName() ) ) 
+                {
+                    appNode = tmpNode ;
+                    break ;
+                }
+            }
+            
+            perms = appNode.getContainerChild( "Permissions" ) ;
+            for ( int ii = 0; ii < perms.getChildCount(); ii++ )
+            {
+                BeanTreeNode permNode = (BeanTreeNode) perms.getChildAt(ii) ;
+                BitPermission perm = (BitPermission) permNode.getUserObject() ;
+                
+                if ( ! profile.hasGrant( perm ) )
+                {
+                    addRow( permNode ) ;
+                }
+            }
+            
+            return ;
+        }
+
+        
+        /*
+         * There are three paths in which containers with the name 'Grants'
+         * can be encountered:
+         * 
+         * root/Applications/bean/Roles/bean/Grants
+         * [0] / [1]        / [2]/ [3] / [4]/ [5] levels
+         * 
+         * root/Users/bean/Profiles/bean/Roles/bean/Grants
+         * root/Users/bean/Profiles/bean/Grants
+         * 
+         * Here we are interested in the first path.  The second is a copy of 
+         * the first in a different position which is immutable - changes to 
+         * these objects can only occur from the first position.
+         * 
+         * 1). get the role bean
+         * 2). get the application and appNode associated with the node
+         * 3). add the app perms that the role does not have in the grants set
+         */
+        if ( node.getContainer().getName().equals( "Grants" ) && 
+             ( parent.getUserObject() instanceof Role ) && 
+                parent.getLevel() < 6 )
+        {
+            BeanTreeNode roleNode = parent ;
+            Role role = ( Role ) roleNode.getUserObject() ;
+            BeanTreeNode appNode = ( BeanTreeNode ) roleNode
+                .getParent().getParent() ;
+            ContainerTreeNode perms = 
+                appNode.getContainerChild( "Permissions" ) ;
+
+            for ( int ii = 0; ii < perms.getChildCount(); ii++ )
+            {
+                BeanTreeNode permNode = (BeanTreeNode) perms.getChildAt(ii) ;
+                BitPermission perm = (BitPermission) permNode.getUserObject() ;
+                if ( ! role.hasPermission( perm ) )
+                {
+                    addRow( permNode ) ;
+                }
+            }
+            
+            return ;
+        }
+    }
+    
+
+    /**
+     * Determines whether or not a left most checkBox column is included for 
+     * this container node.  The checkbox is used to display and enable the
+     * selection of options within the table.
+     * 
+     * @param node the node to test
+     * @return true if the node requires a checkbox column in the table
+     */
+    private static boolean isCheckBoxed( ContainmentTreeNode node )
+    {
+        if ( node instanceof BeanTreeNode )
+        {
+            return false ;
+        }
+            
+        ContainerTreeNode cnode = ( ContainerTreeNode ) node ;
+        boolean isCheckBoxed = 
+            cnode.getContainer().getName().equals( "Denials" ) ||
+            cnode.getContainer().getName().equals( "Profiles" ) ;
+        
+        if ( isCheckBoxed )
+        {
+            return true ;
+        }
+            
+        BeanTreeNode parent = ( BeanTreeNode ) node.getParent() ;
+        
+        if ( cnode.getContainer().getName().equals( "Roles" ) &&
+             ( parent.getUserObject() instanceof Profile ) )
+        {         
+            return true ;
+        }
+
+        if ( cnode.getContainer().getName().equals( "Grants" ) &&
+             ( parent.getUserObject() instanceof Profile ) )
+        {         
+            return true ;
+        }
+
+        if ( cnode.getContainer().getName().equals( "Grants" ) &&
+             ( parent.getUserObject() instanceof Role ) && 
+                parent.getLevel() < 6 )
+        {
+            return true ;
+        }
+
+        return false ;
+    }
+    
+
+    /**
+     * Gets a set of property values of a bean.
+     * 
+     * @param a_bean the bean to get properties from
+     * @return the property values
+     */
+    Object[] getBeanProperties( Object a_bean )
+    {
+        Object[] l_values = new Object[ m_cols.length ] ;
+            
+        for ( int ii = 0; ii < m_cols.length; ii++ )
+        {
+            // ignore first property if it is the checkboxed column property
+            if ( m_cols[ii] == null || m_cols[ii].trim().equals( "" ) )
+            {
+                continue ;
+            }
+            
+            try
+            {
+                l_values[ii] = BeanUtils
+                    .getProperty( a_bean, m_cols[ii] ) ;
+            }
+            catch( Throwable e )
+            {
+                l_values[ii] = reflectionFault( m_cols[ii], a_bean, e ) ; 
+            }
+        }
+        
+        return l_values ;
+    }
+    
+    
+    /**
+     * Handler for reflection failures.
+     * 
+     * @param a_prop the property queried
+     * @param a_bean the bean reflection was attempted upon
+     * @param a_fault the thrown fault
+     * @return the error message
+     */
+    String reflectionFault( String a_prop, Object a_bean, 
+                                 Throwable a_fault )
+    {
+        String l_msg = "FAILURE: " + a_prop + " lookup on bean " + a_bean ;
+        // m_console.log().error( l_msg, a_fault ) ;
+        return l_msg ;
+    }
+    
+    
+    /*
+     * This method returns the Class object of the first cell in specified 
+     * column in the table model.  Unless this method is overridden, all values 
+     * are assumed to be the type Object.
+     * 
+     * (non-Javadoc)
+     * @see javax.swing.table.TableModel#getColumnClass(int)
+     */
+    public Class getColumnClass( int mColIndex ) 
+    {
+        int rowIndex = 0 ;
+        Object o = getValueAt( rowIndex, mColIndex ) ;
+                
+        if ( o == null ) 
+        {
+            return Object.class ;
+        } 
+        else 
+        {
+            return o.getClass() ;
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableModel#getValueAt(int, int)
+     */
+    public Object getValueAt( int row, int column )
+    {
+        return ( ( Object[] ) m_data.get( row ) ) [column] ;
+    }
+    
+    
+    Object getValueAt( int row, String colName ) 
+    {
+        int index = 0 ;
+        for ( ; index < m_cols.length; index++ )
+        {
+            if ( ( ( String ) m_cols[index] ).equals( colName ) )
+            {
+                Object[] rowData = ( Object[] ) m_data.get( row ) ;
+                return rowData[index] ;
+            }
+        }
+
+        throw new IllegalArgumentException( "Unrecognized column name " 
+            + colName + " for model with following columns: " + m_cols ) ;           
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableModel#setValueAt(java.lang.Object, 
+     * int, int)
+     */
+    public void setValueAt( Object value, int row, int column )
+    {
+        Object[] rec = ( Object[] ) m_data.get( row ) ;
+
+        if ( m_isCheckBoxed && column == 0 )
+        {
+            rec[column] = value ;
+            
+            /*
+             * 1). find the node that we are attempting to add or remove
+             * 2). fire off a menu event as if the user used the menu
+             */
+            
+            String path = TreePathUtils.getContext( 
+                    m_menuManager.getSelectedPath() ) ;
+            
+            if ( ContextUtils.matches( path, 
+                            "root/Applications/bean/Roles/bean/Grants" ) )
+            {
+                StringBuffer cmd = new StringBuffer() ;
+                String permName = ( String ) getValueAt( row, "name" ) ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() )
+                {    
+                    cmd.append( "GrantPermissionToRole" ) ;
+                }
+                else
+                {
+                    cmd.append( "RevokePermissionFromRole" ) ;
+                }
+                
+                cmd.append( '|' ) ;
+                cmd.append( permName ) ;
+                m_menuManager.fireActionCommand( cmd.toString() ) ;
+            }
+            else if ( ContextUtils.matches( path, 
+                                "root/Users/bean/Profiles" ) )
+            {
+                StringBuffer cmd = new StringBuffer() ;
+                String appName = (String) getValueAt( row, "applicationName" ) ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() )
+                {    
+                    cmd.append( "CreateProfileForUser" ) ;
+                    
+                    /**
+                     * @todo don't need two lines below after we make the
+                     * handler into a proper submenu handler for this action.
+                     */
+                    cmd.append( '|' ) ;
+                    cmd.append( appName ) ;
+                }
+                else
+                {
+                    cmd.append( "DeleteProfileFromUser" ) ;
+                }
+                
+                /*
+                 * Add this back after making it a submenu handler 
+                 *
+                cmd.append( '|' ) ;
+                cmd.append( appName ) ;
+                */
+
+                /**
+                 * Currently the profile deletion action is a single item
+                 * command without options it seems when it should be multi
+                 * selection using a submenu instead of a single item.
+                 * 
+                 * @todo make DeleteProfileFromUserHandler a submenu handler
+                 *      and fix this stuff here - basically remove it.
+                 */
+                ContainerTreeNode container = m_menuManager.getLastContainer() ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() == false )
+                {    
+                    for ( int ii = 0; ii < container.getChildCount(); ii++ )
+                    {
+                        BeanTreeNode child = ( BeanTreeNode ) 
+                            container.getChildAt( ii ) ;
+                        
+                        if ( ( ( Profile ) child.getUserObject() )
+                                .getApplicationName().equals( appName ) )
+                        {
+                            TreePath selected = new TreePath( container.getPath() );
+                            m_menuManager.setSelected( selected
+                                    .pathByAddingChild( child ) ) ;
+                        }
+                    }
+                }
+
+                m_menuManager.fireActionCommand( cmd.toString() ) ;
+                
+                /** 
+                 * @todo don't need this line below after we make the handler
+                 * into a proper submenu handler for this action.
+                 */
+                m_menuManager.setSelected(new TreePath( container.getPath() )) ;
+            }
+            else if ( ContextUtils.matches( path, 
+                                "root/Users/bean/Profiles/bean/Grants" ) )
+            {
+                StringBuffer cmd = new StringBuffer() ;
+                String permName = ( String ) getValueAt( row, "name" ) ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() )
+                {    
+                    cmd.append( "GrantPermissionToProfile" ) ;
+                }
+                else
+                {
+                    cmd.append( "RevokeGrantFromProfile" ) ;
+                }
+                
+                cmd.append( '|' ) ;
+                cmd.append( permName ) ;
+                m_menuManager.fireActionCommand( cmd.toString() ) ;
+            }
+            else if ( ContextUtils.matches( path, 
+                                "root/Users/bean/Profiles/bean/Denials" ) )
+            {
+                StringBuffer cmd = new StringBuffer() ;
+                String permName = ( String ) getValueAt( row, "name" ) ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() )
+                {    
+                    cmd.append( "DenyPermissionForProfile" ) ;
+                }
+                else
+                {
+                    cmd.append( "RevokeDenialFromProfile" ) ;
+                }
+                
+                cmd.append( '|' ) ;
+                cmd.append( permName ) ;
+                m_menuManager.fireActionCommand( cmd.toString() ) ;
+            }
+            else if ( ContextUtils.matches( path, 
+                                "root/Users/bean/Profiles/bean/Roles" ) )
+            {
+                StringBuffer cmd = new StringBuffer() ;
+                String roleName = ( String ) getValueAt( row, "name" ) ;
+                
+                if ( ( ( Boolean ) value ).booleanValue() )
+                {    
+                    cmd.append( "AddRoleToProfile" ) ;
+                }
+                else
+                {
+                    cmd.append( "RemoveRoleFromProfile" ) ;
+                }
+                
+                cmd.append( '|' ) ;
+                cmd.append( roleName ) ;
+                m_menuManager.fireActionCommand( cmd.toString() ) ;
+            }
+            else
+            {
+                throw new IllegalArgumentException( "Don't recognize path " 
+                    + path.toString() ) ;
+            }
+        }
+    }
+    
+
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableModel#getRowCount()
+     */
+    public int getRowCount()
+    {
+        if ( m_nodes == null )
+        {
+            return 0 ;
+        }
+        
+        return m_nodes.size() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableModel#addRow(java.lang.Object[])
+     */
+    public void addRow( Object[] rowData )
+    {
+        throw new UnsupportedOperationException( 
+                "Use addRow(ContainmentTreeNode) instead" ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see javax.swing.table.DefaultTableModel#addRow(java.util.Vector)
+     */
+    public void addRow( Vector rowData )
+    {
+        throw new UnsupportedOperationException( 
+                "Use addRow(ContainmentTreeNode) instead" ) ;
+    }
+    
+    
+    /**
+     * Adds a node to this view.  If it's parent is this model's node then
+     * the checkbox is checked to mark inclusion otherwise the check is not
+     * marked. 
+     */
+    public void addRow( ContainmentTreeNode child )
+    {
+        Object[] row = null ;
+        Class childClass = child.getContainmentMetadata().getTypeClass() ;
+        Class parentClass = m_node.getContainmentMetadata().getTypeClass() ;
+        
+        // ahhwww here is some really stinky hard coded crap handling a flaw 
+        // in the design.  Basically app nodes are added where profile nodes
+        // are expected and he reflection bombs out.  We catch this special 
+        // case and have hard code the setting of valuees.
+        if ( ! childClass.isAssignableFrom( parentClass ) )
+        {
+            if ( childClass.isAssignableFrom( Application.class ) && 
+                 parentClass.isAssignableFrom( Profile.class ) )
+            {
+                row = new Object[3] ;
+                System.out.println( 
+                        "Caught ugly missmatch of app node for profile node!") ;
+                BeanTreeNode userNode = ( BeanTreeNode ) m_node.getParent() ;
+                Application app = ( Application ) child.getUserObject() ;
+                User user = ( User ) userNode.getUserObject() ;
+                row[0] = Boolean.FALSE ;
+                row[1] = user.getName() ;
+                row[2] = app.getName() ;
+            }
+        }
+        else
+        {
+            row = getBeanProperties( child.getUserObject() ) ;
+        }
+
+        m_nodes.add( child ) ;
+        m_data.add( row ) ;
+        
+        if ( m_isCheckBoxed )
+        {    
+            if ( m_node == child.getParent() )
+            {
+                row[0] = Boolean.TRUE ;
+            }
+            else
+            {
+                row[0] = Boolean.FALSE ;
+            }
+        }
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTreeCellRenderer.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmcTreeCellRenderer.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,120 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.awt.Component ;
+
+import javax.swing.JTree ;
+import javax.swing.ImageIcon ;
+import javax.swing.tree.TreeNode ;
+import javax.swing.tree.TreePath ;
+import javax.swing.tree.DefaultTreeModel ;
+import javax.swing.tree.DefaultTreeCellRenderer ;
+
+import org.apache.rms.ui.ocmm.IconUsage ;
+import org.apache.rms.ui.ocmm.Container ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * A special cell render for the RMS management console.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmcTreeCellRenderer extends DefaultTreeCellRenderer
+{
+    /*
+     * (non-Javadoc)
+     * @see javax.swing.tree.TreeCellRenderer#getTreeCellRendererComponent(
+     * javax.swing.JTree, java.lang.Object, boolean, boolean, boolean, int, 
+     * boolean)
+     */
+    public Component 
+        getTreeCellRendererComponent( JTree tree, Object value,
+									  boolean sel, boolean expanded,
+									  boolean leaf, int row, boolean hasFocus ) 
+    {
+        super.getTreeCellRendererComponent( tree, value, sel, expanded, leaf, 
+                row, hasFocus ) ;
+        
+        ContainmentTreeNode l_node = ( ContainmentTreeNode ) value ;
+        ImageIcon l_image = 
+            loadImage( tree, l_node, sel, expanded, leaf, hasFocus ) ;
+        
+        if ( l_image != null )
+        {    
+            setIcon( l_image ) ;
+        }
+            
+        // setToolTipText( l_node.getContainmentMetadata().getToolTipText() ) ;
+
+        return this ;
+    }
+
+
+    /**
+     * 
+     * @param tree
+     * @param node
+     * @param isSelected
+     * @param isExpanded
+     * @param isLeaf
+     * @param hasFocus
+     * @return
+     */
+    protected ImageIcon loadImage( JTree tree, ContainmentTreeNode node, 
+                                   boolean isSelected, boolean isExpanded,
+                                   boolean isLeaf, boolean hasFocus ) 
+    {
+        DefaultTreeModel l_model = ( DefaultTreeModel ) tree.getModel() ;
+        TreeNode[] l_nodes = l_model.getPathToRoot( node ) ;
+        TreePath l_path = new TreePath( l_nodes ) ;
+        ContainmentMetadata l_meta = null ;
+        IconUsage l_icon = null ;
+        
+        if ( node.isBeanNode() )
+        {
+            l_meta = node.getContainmentMetadata() ;
+            IconUsage[] l_icons = l_meta.getIcons() ;
+            
+            for ( int ii = 0; ii < l_icons.length; ii++ )
+            {
+                String[] l_contexts = l_icons[ii].getContexts() ;
+                if ( TreePathUtils.isContextAllowed( l_path, l_contexts ) )
+                {
+                    l_icon = l_icons[ii] ;
+                }
+            }
+        }
+        else
+        {
+            Container l_container = ( (ContainerTreeNode) node ).getContainer();
+            l_icon = l_container.getIcon() ;
+        }
+        
+        if ( l_icon == null )
+        {
+            return null ;
+        }
+        
+        return Images.load( l_icon ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmsManagementConsole.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/RmsManagementConsole.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,158 @@
+/*
+ *   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.rms.ui ;
+
+
+import java.io.File ;
+import java.io.FileInputStream ;
+
+import java.util.Properties ;
+
+import java.awt.Toolkit ;
+import java.awt.Dimension ;
+import javax.swing.UIManager ;
+import java.awt.event.WindowEvent ;
+import java.awt.event.WindowAdapter ;
+
+import org.apache.avalon.framework.activity.Executable ;
+import org.apache.avalon.framework.service.Serviceable ;
+import org.apache.avalon.framework.activity.Initializable ;
+import org.apache.avalon.framework.service.ServiceManager ;
+import org.apache.avalon.framework.service.ServiceException ;
+import org.apache.avalon.framework.logger.AbstractLogEnabled ;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.spi.ContainmentModelFactory ;
+
+
+/**
+ * RMC main launcher.
+ *
+ * @avalon.component name="rms-management-console" lifestyle="singleton"
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RmsManagementConsole extends AbstractLogEnabled
+    implements Initializable, Executable, Serviceable
+{
+    /** the main frame for this app */
+    private RmcMainFrame m_frame = null ;
+    private ContainmentModel m_model = null ;
+    private Rms m_rms = null ;
+
+    
+    public void initialize() throws Exception
+    {
+        Properties l_props = new Properties() ;
+        File l_file = new File( System.getProperty( "user.home" ), 
+                "build.properties" ) ;
+        l_props.load( new FileInputStream( l_file ) ) ;
+        m_rms = Rms.getInstance( l_props ) ;
+    }
+
+    
+    public void execute() throws Exception
+    {
+        m_frame = new RmcMainFrame( this ) ;
+        Dimension m_screenSize = Toolkit.getDefaultToolkit().getScreenSize() ;
+        Dimension m_frameSize = m_frame.getSize() ;
+        
+        if ( m_frameSize.height > m_screenSize.height )
+        {
+            m_frameSize.height = m_screenSize.height ;
+        }
+        
+        if ( m_frameSize.width > m_screenSize.width )
+        {
+            m_frameSize.width = m_screenSize.width ;
+        }
+        
+        m_frame.setLocation( ( m_screenSize.width - m_frameSize.width ) / 2, 
+                ( m_screenSize.height - m_frameSize.height ) / 2 ) ;
+        m_frame.addWindowListener( new WindowAdapter()
+            {
+                public void windowClosing( WindowEvent e )
+                {
+                    System.exit( 0 ) ;
+                }
+            } ) ;
+        m_frame.setVisible( true ) ;
+    }
+
+    
+    /**
+     * @avalon.dependency type="org.apache.rms.ui.ocmm.spi.ContainmentModelFactory"
+     *         key="ocmm-factory" version="1.0"
+     * 
+     * @see org.apache.avalon.framework.service.Serviceable#service(
+     * org.apache.avalon.framework.service.ServiceManager)
+     */
+    public void service( ServiceManager a_manager ) throws ServiceException
+    {
+        ContainmentModelFactory l_factory = 
+            ( ContainmentModelFactory ) a_manager.lookup( "ocmm-factory" ) ;
+        m_model = l_factory.getContainmentModel() ; 
+    }
+    
+    
+    public Rms getRmsInstance()
+    {
+        return m_rms ;
+    }
+    
+    
+    public ContainmentModel getContainmentModel()
+    {
+        return m_model ;
+    }
+    
+    
+    public Logger log()
+    {
+        return super.getLogger() ;
+    }
+    
+    
+    public RmcMainFrame getMainFrame()
+    {
+        return m_frame ;
+    }
+    
+    
+    /**
+     * Main for RMC.
+     * 
+     * @param args not really used yet
+     */
+    public static void main( String[] args )
+    {
+        try
+        {
+            UIManager.setLookAndFeel( 
+                    UIManager.getSystemLookAndFeelClassName() ) ;
+            RmsManagementConsole l_rmc = new RmsManagementConsole() ;
+            l_rmc.execute() ;
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace() ;
+        }
+    }
+}
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/TreePathUtils.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/TreePathUtils.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,135 @@
+/*
+ *   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.rms.ui ;
+
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath ;
+
+import org.apache.rms.ui.ocmm.ContextUtils ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode;
+
+
+/**
+ * Utility methods for dealing with trees and paths.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class TreePathUtils
+{
+    public static String getContext( TreeNode[] path )
+    {
+        StringBuffer buf = new StringBuffer() ;
+        
+        for ( int ii = 0; ii < path.length; ii++ )
+        {
+            Object l_comp = path[ii] ;
+            
+            if ( l_comp instanceof BeanTreeNode )
+            {
+                buf.append( "bean" ) ;
+                buf.append( '/' ) ;
+            }
+            else if ( l_comp instanceof ContainerTreeNode ) 
+            {
+                ContainerTreeNode l_ctn = ( ContainerTreeNode ) l_comp ;
+                buf.append( l_ctn.getContainer().getName() ) ;
+                buf.append( '/' ) ;
+            }
+            else
+            {
+                throw new IllegalArgumentException(
+                        "This method was only intended for trees with nodes " 
+                        + "composed of BeanTreeNodes and ContainerTreeNodes" ) ;
+            }
+        }
+        
+        return buf.toString() ;
+    }
+    
+    
+    /**
+     * Constructs the context, also known as the generalized path to a tree 
+     * node.
+     * 
+     * @param path the exact path to the tree node
+     * @return the context associated with a tree node
+     */
+    public static String getContext( TreePath path )
+    {
+        StringBuffer buf = new StringBuffer() ;
+        
+        for ( int ii = 0; ii < path.getPathCount(); ii++ )
+        {
+            Object l_comp = path.getPathComponent( ii ) ;
+            
+            if ( l_comp instanceof BeanTreeNode )
+            {
+                buf.append( "bean" ) ;
+                buf.append( '/' ) ;
+            }
+            else if ( l_comp instanceof ContainerTreeNode ) 
+            {
+                ContainerTreeNode l_ctn = ( ContainerTreeNode ) l_comp ;
+                buf.append( l_ctn.getContainer().getName() ) ;
+                buf.append( '/' ) ;
+            }
+            else
+            {
+                throw new IllegalArgumentException(
+                        "This method was only intended for trees with nodes " 
+                        + "composed of BeanTreeNodes and ContainerTreeNodes" ) ;
+            }
+        }
+
+        return buf.toString() ;
+    }
+
+    
+    /**
+     * Checks to see if a tree node matches a context path.
+     * 
+     * @param node the node to test
+     * @param path the context or generalized path
+     * @return true if the node matches the path, false otherwise
+     */
+    public static boolean matches( ContainmentTreeNode node, String path )
+    {
+        TreePath tpath = new TreePath( ( ( DefaultMutableTreeNode ) 
+                        node ).getPath() ) ;
+        return ContextUtils.matches( path, getContext( tpath ) ) ;
+    }
+    
+    
+    /**
+     * Tests to see if a tree path is accepted by a context.
+     * 
+     * @param a_path the Tree Navigation's selected TreePath
+     * @param a_contexts the contexts of applicability
+     * @return true if the path falls under the specified contexts, false
+     *      if it does not
+     */
+    public static boolean isContextAllowed( TreePath a_path, 
+                                            String[] a_contexts )
+    {
+        return ContextUtils.matches( getContext( a_path), a_contexts ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+HandlerTemplate.java

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddPermissionToApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddPermissionToApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,109 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.event.ActionEvent ;
+
+import javax.swing.tree.TreePath ;
+
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableApplication ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Action handler for 'AddPermissionToApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class AddPermissionToApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "AddPermissionToApplication" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'AddPermissionToApplication' action commands. 
+     */
+    public AddPermissionToApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            BeanTreeNode l_beanNode = m_manager.getLastBean() ;
+            MutableApplication l_app = 
+                ( MutableApplication ) l_beanNode.getUserObject() ;
+            ContainerTreeNode l_parent = 
+                l_beanNode.getContainerChild( "Permissions" ) ;
+            TreePath l_parentPath = m_manager.getLastContainerPath() ;            
+            
+            CreatePermissionDialog l_permDialog = 
+                new CreatePermissionDialog( null, true, l_app ) ;
+            l_permDialog.setVisible( true ) ;
+            
+            if ( l_permDialog.hasCanceled() )
+            {
+                return ;
+            }
+            
+            BitPermission l_perm = null ;
+            try 
+            {
+                l_perm = l_app.createPermission( 
+                        l_permDialog.getPermissionName() ) ;
+            }
+            catch ( RmsException ex )
+            {
+                ex.printStackTrace() ;
+            }
+            
+            if ( l_perm == null )
+            {
+                return ;
+            }
+            
+            BeanTreeNode l_permNode = new BeanTreeNode( l_perm,
+                    m_manager.getContainmentModel() ) ;
+            m_manager.getTreeModel().insertNodeInto( l_permNode, l_parent, 0 ) ;
+            m_manager.setSelected( l_parentPath ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddRoleToProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/AddRoleToProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,299 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRole ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.Images ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'AddRoleToProfile' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class AddRoleToProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "AddRoleToProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'AddRoleToProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public AddRoleToProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the Profile node associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the profile node
+     */
+    private BeanTreeNode getProfileNode( TreePath a_path )
+    {
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return ( BeanTreeNode ) l_last.getParent() ;
+        }
+        else
+        {
+            return ( BeanTreeNode ) l_last ;
+        }
+    }
+    
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    private MutableApplication getApplication( String appName )
+    {
+        MutableApplication l_app = null ;
+        BeanTreeNode l_root = ( BeanTreeNode ) m_manager
+            .getSelectedPath().getPath()[0] ;
+        ContainerTreeNode l_apps = l_root.getContainerChild( "Applications" ) ;
+        
+        for ( int ii = 0; ii < l_apps.getChildCount(); ii++ )
+        {
+            BeanTreeNode l_child = ( BeanTreeNode ) l_apps.getChildAt( ii ) ;
+            l_app = ( MutableApplication ) l_child.getUserObject() ;
+            
+            if ( ( l_app ).getName().equals( appName ) )
+            {
+                return l_app ;
+            }
+        }
+        
+        return null ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_roleName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = getProfile( l_path ) ;
+            ContainerTreeNode l_roles = null ;
+            
+            if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+            {
+                // we selected a profile node so we need to get the child roles
+                l_roles = ( ( BeanTreeNode ) l_path.getLastPathComponent() )
+                    .getContainerChild( "Roles" ) ;
+            }
+            else
+            {   
+                // we selected the roles node so we just get the last container
+                l_roles = m_manager.getLastContainer() ;
+            }
+            
+            MutableApplication l_app = getApplication( 
+                    l_profile.getApplicationName() ) ;
+            MutableRole l_role = ( MutableRole ) l_app.getRole( l_roleName ) ;
+            BeanTreeNode l_roleNode = new BeanTreeNode( l_role,
+                    m_manager.getContainmentModel() ) ;
+            
+            try
+            {
+                l_profile.addRole( l_role ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to add role " 
+                    + l_roleName + " to user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Add Role to Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            m_manager.getTreeModel().insertNodeInto( l_roleNode, l_roles, 0 ) ;
+            
+            BeanTreeNode l_profileNode = getProfileNode( l_path ) ;
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        
+        MutableProfile l_profile = getProfile( a_path ) ;
+        MutableApplication l_app = getApplication( 
+                l_profile.getApplicationName() ) ;
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_app.getRoles() ;
+
+        l_menu.setToolTipText( "Add a role to a user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+
+        while ( l_list.hasNext() )
+        {
+            MutableRole l_role = ( MutableRole ) l_list.next() ;
+            l_items.add( l_role.getName() ) ;
+        }
+
+        l_list = l_profile.getRoles() ;
+        while ( l_list.hasNext() )
+        {
+            MutableRole l_role = ( MutableRole ) l_list.next() ;
+            l_items.remove( l_role.getName() ) ;
+        }
+        
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            String l_item = ( String ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Add role " + l_item 
+                    + " to user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/BaseMenuItemHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/BaseMenuItemHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,66 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import javax.swing.JMenuItem ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+
+
+/**
+ * Abstract menu item used as a baseline.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public abstract class BaseMenuItemHandler implements MenuItemHandler
+{
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuItemHandler#getMenuItem(
+     * javax.swing.tree.TreePath, org.apache.rms.ui.ocmm.Action)
+     */
+    public final JMenuItem getMenuItem( TreePath a_path, Action a_action )
+    {
+        JMenuItem l_item = new JMenuItem( a_action.getName() ) ;
+        l_item.setActionCommand( a_action.getCommand() ) ;
+        l_item.setToolTipText( a_action.getDescription() ) ;
+        l_item.addActionListener( this ) ;
+        l_item.setIcon( Images.load( a_action.getIcon() ) ) ;
+        return l_item ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public final boolean handles( Action action )
+    {
+        return action.getCommand().equals( getCommand() ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public final boolean isForItem()
+    {
+        return true ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,128 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Application ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRms ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Handler for 'CreateApplication' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class CreateApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "CreateApplication" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'CreateApplication' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public CreateApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) )
+        {
+            BeanTreeNode l_btn = m_manager.getLastBean() ;
+            MutableRms l_rms = ( MutableRms ) l_btn.getUserObject() ;
+            ContainerTreeNode l_apps = 
+                l_btn.getContainerChild( "Applications" ) ;
+            
+            String l_appName = JOptionPane.showInputDialog( 
+                    m_manager.getMainFrame(), 
+                    "What's the application's name?", 
+                    "Create New Application", JOptionPane.QUESTION_MESSAGE ) ;
+            
+            if ( l_appName == null )
+            {
+                return ;
+            }
+            else if ( l_appName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "A valid name is required to create a new user.", 
+                        "Valid Name Required!", JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+
+            l_appName = l_appName.trim() ;
+            Application l_app = null ;
+            try
+            {
+                l_app = l_rms.createApplication( l_appName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "We failed to create the new application " 
+                    + l_appName + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Create New Application: " + l_appName, 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            BeanTreeNode l_appNode = new BeanTreeNode( l_app,
+                    m_manager.getContainmentModel() ) ;
+            m_manager.getTreeModel().insertNodeInto( l_appNode, l_apps, 0 ) ;
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreatePermissionDialog.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreatePermissionDialog.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,285 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Font ;
+import java.awt.Frame ;
+import java.awt.Color ;
+import java.awt.Insets ;
+import java.awt.Toolkit ;
+import java.awt.Dimension ;
+import java.awt.FlowLayout ;
+import java.awt.GridBagLayout ;
+import java.awt.event.ActionEvent ;
+import java.awt.event.WindowEvent ;
+import java.awt.GridBagConstraints ;
+import java.awt.event.ActionListener ;
+
+import javax.swing.JPanel ;
+import javax.swing.JLabel ;
+import javax.swing.JButton ;
+import javax.swing.JDialog ;
+import javax.swing.JTextField ;
+import javax.swing.JOptionPane ;
+import javax.swing.BorderFactory ;
+import javax.swing.border.TitledBorder ;
+
+import org.apache.rms.Application ;
+
+
+/**
+ * A modal dialog for creating permissions.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class CreatePermissionDialog 
+    extends JDialog implements ActionListener
+{
+    private static final String TITLE_BASE = 
+        "Create New Application Permission For " ;
+    private static final String PRESS_TO_CANCEL_TOP = 
+        "Press to cancel creation of permission" ;
+    private static final String PRESS_TO_CREATE_TIP = 
+        "Press to create new application permission" ;
+    
+    private boolean m_hasCanceled = true ;
+    private final Application m_application ;
+    
+    private JPanel m_mainPanel = new JPanel() ;
+    private JPanel m_infoPanel = new JPanel() ;
+    private JPanel m_buttonPanel = new JPanel() ;
+    private JPanel m_appPanel = new JPanel() ;
+    private JLabel m_appNameLabel = new JLabel() ;
+    private JButton m_cancelButton = new JButton() ;
+    private JButton m_createButton = new JButton() ;
+    private JPanel m_permPanel = new JPanel() ;
+    private JLabel m_permNameLabel = new JLabel() ;
+    private JTextField m_permNameText = new JTextField() ;
+    private JLabel m_appName = new JLabel() ;
+    
+    
+    /**
+     * Creates new form JDialog
+     * 
+     * @param parent  
+     * @param modal
+     */
+    public CreatePermissionDialog( Frame parent, boolean modal, 
+                                   Application app )
+    {
+        super( parent, modal ) ;
+        m_application = app ;
+        initGUI() ;
+        
+        Dimension m_screenSize = Toolkit.getDefaultToolkit().getScreenSize() ;
+        Dimension m_frameSize = getSize() ;
+        
+        if ( m_frameSize.height > m_screenSize.height )
+        {
+            m_frameSize.height = m_screenSize.height ;
+        }
+        
+        if ( m_frameSize.width > m_screenSize.width )
+        {
+            m_frameSize.width = m_screenSize.width ;
+        }
+        
+        setLocation( ( m_screenSize.width - m_frameSize.width ) / 2, 
+                ( m_screenSize.height - m_frameSize.height ) / 2 ) ;
+    }
+
+    
+    /** 
+     * Called from within the constructor to initialize the form.
+     */
+    private void initGUI()
+    {
+        addWindowListener( new java.awt.event.WindowAdapter()
+        {
+                public void windowClosing( java.awt.event.WindowEvent evt )
+                {
+                    closeDialog(evt);
+                }
+        });
+        pack();
+        setBounds( new java.awt.Rectangle( 0, 0, 455, 220 ) ) ;
+        setTitle( TITLE_BASE + m_application.getName() ) ;
+        setModal( true ) ;
+        getContentPane().setLayout( new java.awt.BorderLayout() ) ;
+        getContentPane().add( m_mainPanel, java.awt.BorderLayout.CENTER ) ;
+        m_mainPanel.setLayout( new java.awt.GridBagLayout() ) ;
+        m_mainPanel.setBorder( null ) ;
+
+        m_mainPanel.add( m_infoPanel, new GridBagConstraints( 0, 0, 1, 1, 
+                        1.0, 0.8, GridBagConstraints.NORTH, 
+                        GridBagConstraints.BOTH, new Insets( 0, 5, 5, 5 ), 
+                        0, 0 ) ) ;
+
+        m_mainPanel.add( m_buttonPanel, 
+                new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, 
+                        GridBagConstraints.EAST, 
+                        GridBagConstraints.BOTH, 
+                        new Insets( 10, 5, 10, 5 ), 0, 0 ) ) ;
+
+        m_infoPanel.setBorder( BorderFactory.createTitledBorder(
+                        BorderFactory.createLineBorder( new Color( 
+                                        153, 153, 153 ), 1 ), "New Permission",
+                        TitledBorder.LEADING, TitledBorder.TOP,
+                        new Font( "Comic Sans MS", 0, 14 ),
+                        new Color( 60, 60, 60 ) ) ) ;
+
+        m_infoPanel.setLayout( new GridBagLayout() ) ;
+
+        m_infoPanel.add( m_appPanel, new GridBagConstraints( 0, 0, 1, 1, 1.0, 
+                        1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH,
+                        new Insets( 0, 0, 0, 0 ), 0, 0 ) ) ;
+
+        m_infoPanel.add( m_permPanel, new GridBagConstraints( 0, 1, 1, 1, 1.0, 
+                        1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                        new Insets( 0, 0, 5, 0 ), 0, 0 ) ) ;
+
+        m_appNameLabel.setText( "Application Name:" ) ;
+        m_appNameLabel.setToolTipText( "Application Name" ) ;
+        m_appPanel.setLayout( new GridBagLayout() ) ;
+        m_appPanel.setAlignmentX( 0.0f ) ;
+        m_appPanel.setAlignmentY( 0.0f ) ;
+
+        m_appPanel.add( m_appNameLabel, new GridBagConstraints( 0, 0, 1, 1, 0.0,
+                        0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.NONE, 
+                        new Insets( 0, 10, 0, 10 ), 0, 0 ) );
+
+        m_appPanel.add( m_appName, new GridBagConstraints( 1, 0, 4, 1, 1.0, 0.0,
+                        GridBagConstraints.WEST,
+                        GridBagConstraints.HORIZONTAL,
+                        new Insets( 0, 0, 0, 0 ), 0, 0 ) ) ;
+
+        m_cancelButton.setText( "Cancel" ) ;
+        m_cancelButton.setActionCommand( "Cancel" ) ;
+        m_cancelButton.addActionListener( this ) ;
+        m_cancelButton.setToolTipText( PRESS_TO_CANCEL_TOP ) ;
+        m_cancelButton.setSelected( true ) ;
+        m_buttonPanel.setLayout( new FlowLayout( FlowLayout.RIGHT, 10, 5 ) ) ;
+        m_buttonPanel.setBorder( BorderFactory.createTitledBorder(
+            BorderFactory.createLineBorder( new Color( 153, 153, 153 ), 1 ), "",
+            TitledBorder.LEADING, TitledBorder.TOP,
+            new Font( "Comic Sans MS", 0, 14 ), new Color( 60, 60, 60 ) ) ) ;
+        m_buttonPanel.add( m_cancelButton ) ;
+        m_buttonPanel.add( m_createButton ) ;
+        m_createButton.setText( "Create" ) ;
+        m_createButton.setActionCommand( "Create" ) ;
+        m_createButton.addActionListener( this ) ;
+        m_createButton.setToolTipText( PRESS_TO_CREATE_TIP ) ;
+        m_permNameLabel.setText( "Permission Name:" ) ;
+        m_permNameLabel.setVerifyInputWhenFocusTarget( false ) ;
+        m_permNameLabel.setToolTipText( "Permission Name" ) ;
+        m_permPanel.setLayout( new GridBagLayout() ) ;
+
+        m_permPanel.add(m_permNameLabel, new GridBagConstraints( 0, 0, 1, 1, 
+                        0.29, 0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.HORIZONTAL, 
+                        new Insets( 0, 10, 0, 0 ), 0, 0 ) ) ;
+
+        m_permPanel.add( m_permNameText, new GridBagConstraints( 1, 0, 1, 1, 
+                        70.0, 0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.HORIZONTAL, 
+                        new Insets( 0, 10, 0, 10 ), 0, 0 ) ) ;
+
+        m_appName.setText( m_application.getName() ) ;
+        m_appName.setToolTipText( 
+                "The name of the application to add a permission to" ) ;
+    }
+
+    
+    /**
+     *  Closes the dialog 
+     * 
+     * @param evt
+     */
+    private void closeDialog( WindowEvent evt )
+    {
+        evt.getWindow() ;
+        setVisible( false ) ;
+        dispose() ;
+    }
+    
+    
+    /**
+     * Gets the permission name.
+     * 
+     * @return the name of the new permission to create
+     */
+    public String getPermissionName()
+    {
+        return m_permNameText.getText() ;
+    }
+    
+    
+    /**
+     * Gets if this dialog's action was canceled.
+     * 
+     * @return true if canceled false otherwise
+     */
+    public boolean hasCanceled()
+    {
+        return m_hasCanceled ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( "Cancel" ) )
+        {
+            m_hasCanceled = true ;
+        }
+        else if ( e.getActionCommand().equals( "Create" ) )
+        {
+            if ( m_permNameText.getText() == null || 
+                 m_permNameText.getText().trim().equals( "" ) ) 
+            {
+                JOptionPane.showMessageDialog( this, 
+                        "Cannot create permission with empty label!",
+                        "Cannot create: no permission name!",
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            String l_permName = m_permNameText.getText().trim() ;
+            if ( m_application.hasPermission( l_permName ) )
+            {
+                JOptionPane.showMessageDialog( this, 
+                        "Permission " + l_permName 
+                        + " already exists for Application!",
+                        "Permission exists for Application!",
+                        JOptionPane.ERROR_MESSAGE ) ;
+                m_permNameText.setText( "" ) ;
+                return ;
+            }
+            
+            m_hasCanceled = false ;
+        }
+
+        setVisible( false ) ;
+        dispose() ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateProfileForUserHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateProfileForUserHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,237 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JMenu ;
+import javax.swing.JTextArea ;
+import javax.swing.JMenuItem ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.User ;
+import org.apache.rms.ui.Images ;
+import org.apache.rms.Profile ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableUser ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'CreateProfileForUser' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class CreateProfileForUserHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "CreateProfileForUser" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'CreateProfileForUser' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public CreateProfileForUserHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        System.out.println( "Got action command: " + e.getActionCommand() ) ;
+
+        if ( e.getActionCommand().startsWith( ACTION_COMMAND ) )
+        {
+            String[] l_cmd = StringUtils.split( e.getActionCommand(), '|' ) ;
+            BeanTreeNode l_root = 
+                ( BeanTreeNode ) m_manager.getTreeModel().getRoot() ;
+            ContainerTreeNode l_appNodes = 
+                l_root.getContainerChild( "Applications" ) ;
+            MutableUser l_user =
+                ( MutableUser ) m_manager.getLastBean().getUserObject() ;
+            
+            MutableApplication l_app = null ;
+            for ( int ii = 0; ii < l_appNodes.getChildCount(); ii++ )
+            {
+                BeanTreeNode l_appNode = 
+                    ( BeanTreeNode ) l_appNodes.getChildAt( ii ) ;
+                MutableApplication l_tmp = ( MutableApplication ) 
+                    l_appNode.getUserObject() ;
+                
+                if ( l_tmp.getName().equals( l_cmd[1] ) )
+                {
+                    l_app = l_tmp ;
+                    break ;
+                }
+            }
+            
+            if ( l_app == null )
+            {
+                return ;
+            }
+            
+            MutableProfile l_profile = null ;
+            try
+            {
+                l_profile = l_user.createProfile( l_app ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = 
+                    "We failed to create the profile for user " 
+                    + l_user.getName() + " on application " + l_app.getName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Create New Application: " + l_app.getName(), 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            ContainerTreeNode l_parent =
+                m_manager.getLastBean().getContainerChild( "Profiles" ) ;
+            BeanTreeNode l_profileNode = new BeanTreeNode( l_profile,
+                    m_manager.getContainmentModel() ) ;
+            m_manager.getTreeModel()
+                .insertNodeInto( l_profileNode, l_parent, 0 ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        User l_user = null ;
+            
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        if ( l_last instanceof ContainerTreeNode )
+        {
+            l_user = ( User ) 
+                ( ( BeanTreeNode ) l_last.getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_user = ( User ) l_last.getUserObject() ;
+        }
+
+        l_menu.setToolTipText( "Create profile for user " + l_user.getName() ) ;
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = null ;
+
+        try
+        {
+            l_list = Rms.getInstance().getApplicationNames() ;
+            while ( l_list.hasNext() )
+            {
+                l_items.add( l_list.next() ) ;
+            }
+        }
+        catch( RmsException e )
+        {
+            e.printStackTrace() ;
+        }
+
+            
+        l_list = l_user.getProfiles() ;
+        while ( l_list.hasNext() )
+        {
+            Profile l_profile = ( Profile ) l_list.next() ;
+            l_items.remove( l_profile.getApplicationName() ) ;
+        }
+            
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            String l_item = ( String ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Create profile for " + l_item ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateRoleForApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateRoleForApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,128 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Role ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Handler for 'CreateRoleForApplication' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class CreateRoleForApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "CreateRoleForApplication" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'CreateRoleForApplication' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public CreateRoleForApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) )
+        {
+            BeanTreeNode l_btn = m_manager.getLastBean() ;
+            ContainerTreeNode l_roles = l_btn.getContainerChild( "Roles" ) ;
+            MutableApplication l_app = 
+                ( MutableApplication ) l_btn.getUserObject() ;
+            
+            
+            String l_roleName = JOptionPane.showInputDialog( 
+                    m_manager.getMainFrame(), "What's the role's name?", 
+                    "Create New Role", JOptionPane.QUESTION_MESSAGE ) ;
+
+            if ( l_roleName == null )
+            {
+                return ;
+            }
+            else if ( l_roleName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "A valid name is required to create a new role.", 
+                        "Valid Name Required!", JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+
+            l_roleName = l_roleName.trim() ;
+            Role l_role = null ;
+            try
+            {
+                l_role = l_app.createRole( l_roleName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "We failed to create the new role " + l_roleName 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Create New Role: " + l_roleName, 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            BeanTreeNode l_roleNode = new BeanTreeNode( l_role,
+                    m_manager.getContainmentModel() ) ;
+            m_manager.getTreeModel().insertNodeInto( l_roleNode, l_roles, 0 ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateUserHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/CreateUserHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,127 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.User ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRms ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Handler for 'CreateUser' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class CreateUserHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "CreateUser" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'CreateUser' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public CreateUserHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) )
+        {
+            BeanTreeNode l_btn = m_manager.getLastBean() ;
+            ContainerTreeNode l_users = l_btn.getContainerChild( "Users" ) ;
+            MutableRms l_rms = ( MutableRms ) l_btn.getUserObject() ;
+            
+            
+            String l_userName = JOptionPane.showInputDialog( 
+                    m_manager.getMainFrame(), "What's the user's name?", 
+                    "Create New User", JOptionPane.QUESTION_MESSAGE ) ;
+
+            if ( l_userName == null )
+            {
+                return ;
+            }
+            else if ( l_userName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "A valid name is required to create a new user.", 
+                        "Valid Name Required!", JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+
+            l_userName = l_userName.trim() ;
+            User l_user = null ;
+            try
+            {
+                l_user = l_rms.createUser( l_userName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "We failed to create the new user " + l_userName 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Create New User: " + l_userName, 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            BeanTreeNode l_userNode = new BeanTreeNode( l_user,
+                    m_manager.getContainmentModel() ) ;
+            m_manager.getTreeModel().insertNodeInto( l_userNode, l_users, 0 ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,170 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.DefaultTreeModel ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.User ;
+import org.apache.rms.Application ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRms ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+
+
+/**
+ * Handler for 'DeleteApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DeleteApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "DeleteApplication" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'DeleteApplication' action commands. 
+     */
+    public DeleteApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            DefaultTreeModel l_model = m_manager.getTreeModel() ;
+            BeanTreeNode l_appNode = m_manager.getLastBean() ;
+            Application l_app = 
+                ( Application ) l_appNode.getUserObject() ;
+            
+            // Checking for roles with a permission
+            Iterator l_list = l_app.getRoles() ;
+            ArrayList l_rolesForApp = new ArrayList() ;
+            while( l_list.hasNext() ) 
+            {
+                l_rolesForApp.add( l_list.next() ) ;
+            }
+
+            l_list = l_app.getPermissions() ;
+            ArrayList l_permissionsForApp = new ArrayList() ;
+            while( l_list.hasNext() ) 
+            {
+                l_rolesForApp.add( l_list.next() ) ;
+            }
+            
+            // Checking for user's who have profiles for the application
+            l_list = null ;
+            try
+            {
+                l_list = Rms.getInstance().getUsers( l_app.getName() ) ; 
+            }
+            catch( Exception ex ) 
+            {
+                ex.printStackTrace() ;
+            }
+            
+            ArrayList l_profilesForApp = new ArrayList() ;
+            while( l_list.hasNext() )
+            {
+                User l_user = ( User ) l_list.next() ;
+                l_profilesForApp.add( l_user.getName() ) ;
+            }
+            
+            
+            if ( l_rolesForApp.size() > 0 
+                    || l_profilesForApp.size() > 0 
+                    || l_permissionsForApp.size() > 0 )
+            {
+                String l_msg = 
+                    "The application " + l_app.getName() + " is referenced by "
+                    + "several roles:\n" + l_rolesForApp + "\n\n"
+                    + "Several users have profiles for application " 
+                    + l_app.getName() + ":\n" + l_profilesForApp ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Application in use!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            try
+            {
+                MutableRms l_rms = ( MutableRms ) Rms.getInstance() ;
+                l_rms.deleteApplication( l_app.getName() ) ;
+                l_model.removeNodeFromParent( l_appNode ) ;
+            }
+            catch ( RmsException ex )
+            {
+                String l_msg = "Failed to delete application " + l_app.getName()
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Delete Application!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeletePermissionFromApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeletePermissionFromApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,179 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.DefaultTreeModel ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.Role ;
+import org.apache.rms.User ;
+import org.apache.rms.Profile ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableApplication ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+
+
+/**
+ * Handler for 'DeletePermissionFromApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DeletePermissionFromApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = 
+        "DeletePermissionFromApplication" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'AddPermissionToApplication' action commands. 
+     */
+    public DeletePermissionFromApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            DefaultTreeModel l_model = m_manager.getTreeModel() ;
+            BeanTreeNode l_permNode = m_manager.getLastBean() ;
+            BitPermission l_perm = 
+                ( BitPermission ) l_permNode.getUserObject() ;
+            BeanTreeNode l_appNode = 
+                ( BeanTreeNode ) l_permNode.getParent().getParent() ;
+            MutableApplication l_app = 
+                ( MutableApplication ) l_appNode.getUserObject() ;
+
+            // Checking for roles with a permission
+            Iterator l_roles = l_app.getRoles() ;
+            ArrayList l_rolesWithPerm = new ArrayList() ;
+            while( l_roles.hasNext() ) 
+            {
+                Role l_role = ( Role ) l_roles.next() ;
+                if ( l_role.hasPermission( l_perm ) )
+                {
+                    l_rolesWithPerm.add( l_role.getName() ) ;
+                }
+            }
+            
+            // Checking for profiles with a permission
+            Iterator l_users = null ;
+            try
+            {
+                l_users = Rms.getInstance().getUsers( l_perm.getApplication() ); 
+            }
+            catch( Exception ex ) 
+            {
+                ex.printStackTrace() ;
+            }
+            ArrayList l_profilesWithPerm = new ArrayList() ;
+            while( l_users.hasNext() )
+            {
+                User l_user = ( User ) l_users.next() ;
+                Profile l_profile = 
+                    l_user.getProfile( l_perm.getApplication() ) ;
+                boolean dependsOnPerm = l_profile.hasDenial( l_perm ) ||
+                    l_profile.hasGrant( l_perm ) || 
+                    l_profile.hasPermission( l_perm ) ;
+                if ( dependsOnPerm )
+                {
+                    l_profilesWithPerm.add( l_profile.getUserName() ) ;
+                }
+            }
+            
+            
+            if ( l_rolesWithPerm.size() > 0 || l_profilesWithPerm.size() > 0 )
+            {
+                String l_msg = 
+                    "The following roles use permission "
+                    + l_perm.getName() + ":\n" + l_rolesWithPerm 
+                    + "\nThe following user profiles reference " 
+                    + l_perm.getName() + " as well:\n" + l_profilesWithPerm ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Permission in use!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            try
+            {
+                l_app.deletePermission( l_perm ) ;
+                l_model.removeNodeFromParent( l_permNode ) ;
+            }
+            catch ( RmsException ex )
+            {
+                String l_msg = "Failed to delete permission " + l_perm.getName()
+                    + " from application " + l_app.getName() 
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to delete permission!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteProfileFromUserHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteProfileFromUserHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,148 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.DefaultTreeModel ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Role ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableUser ;
+import org.apache.rms.spi.MutableProfile ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+
+
+/**
+ * Handler for 'DeleteProfileFromUser' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DeleteProfileFromUserHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "DeleteProfileFromUser" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'DeleteProfileFromUser' action commands. 
+     */
+    public DeleteProfileFromUserHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            DefaultTreeModel l_model = m_manager.getTreeModel() ;
+            BeanTreeNode l_profileNode = m_manager.getLastBean() ;
+            MutableProfile l_profile = 
+                ( MutableProfile ) l_profileNode.getUserObject() ;
+            BeanTreeNode l_userNode = 
+                ( BeanTreeNode ) l_profileNode.getParent().getParent() ;
+            MutableUser l_user = 
+                ( MutableUser ) l_userNode.getUserObject() ;
+
+            // Checking for roles associated with the profile
+            Iterator l_list = l_profile.getRoles() ;
+            ArrayList l_rolesForProfile = new ArrayList() ;
+            while( l_list.hasNext() ) 
+            {
+                Role l_role = ( Role ) l_list.next() ;
+                l_rolesForProfile.add( l_role.getName() ) ;
+            }
+            
+            if ( l_rolesForProfile.size() > 0 )
+            {
+                String l_msg = 
+                    "The following roles have been added to user "
+                    + l_user.getName() + "'s profile for application " 
+                    + l_profile.getApplicationName() + ":\n" 
+                    + l_rolesForProfile 
+                    + "\n\nThe must be removed before deletion can occur!"; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Profile Associated With Roles!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            try
+            {
+                l_user.deleteProfile( l_profile ) ;
+                l_model.removeNodeFromParent( l_profileNode ) ;
+            }
+            catch ( RmsException ex )
+            {
+                String l_msg = "Failed to delete user " + l_user.getName()
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() 
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Delete Profile!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteRoleFromApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteRoleFromApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,154 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.DefaultTreeModel ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.User ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRole ;
+import org.apache.rms.spi.MutableApplication ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+
+
+/**
+ * Handler for 'DeleteRoleFromApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DeleteRoleFromApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "DeleteRoleFromApplication" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'DeleteRoleFromApplication' action commands. 
+     */
+    public DeleteRoleFromApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            DefaultTreeModel l_model = m_manager.getTreeModel() ;
+            BeanTreeNode l_roleNode = m_manager.getLastBean() ;
+            MutableRole l_role = ( MutableRole ) l_roleNode.getUserObject() ;
+            BeanTreeNode l_appNode = 
+                ( BeanTreeNode ) l_roleNode.getParent().getParent() ;
+            MutableApplication l_app = 
+                ( MutableApplication ) l_appNode.getUserObject() ;
+
+            // Checking for users in the role
+            Iterator l_list = null ;
+            ArrayList l_usersInRole = new ArrayList() ;
+            try 
+            {
+                l_list = Rms.getInstance().getUsers( 
+                        l_app.getName(), l_role.getName() ) ;
+            }
+            catch( RmsException ex )
+            {
+                ex.printStackTrace() ;
+            }
+            
+            while( l_list.hasNext() ) 
+            {
+                User l_user = ( User ) l_list.next() ;
+                l_usersInRole.add( l_user.getName() ) ;
+            }
+            
+            if ( l_usersInRole.size() > 0 )
+            {
+                String l_msg = 
+                    "The following users are in the role "
+                    + l_role.getName() + ":\n" + l_usersInRole ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Role Referenced by Users!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            try
+            {
+                l_app.deleteRole( l_role ) ;
+                l_model.removeNodeFromParent( l_roleNode ) ;
+            }
+            catch ( RmsException ex )
+            {
+                String l_msg = "Failed to delete role " + l_role.getName()
+                    + " from application " + l_app.getName() 
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Delete Role!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteUserHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DeleteUserHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,141 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.DefaultTreeModel ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.User ;
+import org.apache.rms.Profile ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRms ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+
+
+/**
+ * Handler for 'DeleteUser' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DeleteUserHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "DeleteUser" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'DeleteUser' action commands. 
+     */
+    public DeleteUserHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            DefaultTreeModel l_model = m_manager.getTreeModel() ;
+            BeanTreeNode l_userNode = m_manager.getLastBean() ;
+            User l_user = ( User ) l_userNode.getUserObject() ;
+
+            // Checking for profiles for this user
+            Iterator l_list = l_user.getProfiles() ;
+            ArrayList l_userProfiles = new ArrayList() ;
+            while( l_list.hasNext() ) 
+            {
+                Profile l_profile = ( Profile ) l_list.next() ;
+                l_userProfiles.add( l_profile ) ;
+            }
+            
+            if ( l_userProfiles.size() > 0 )
+            {
+                String l_msg = 
+                    "The user " + l_user.getName() 
+                    + " has the following profiles that depend on it:\n"
+                    + l_userProfiles ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "User is Referenced by Profiles!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            try
+            {
+                MutableRms l_rms = ( MutableRms ) Rms.getInstance() ;
+                l_rms.deleteUser( l_user.getName() ) ;
+                l_model.removeNodeFromParent( l_userNode ) ;
+            }
+            catch ( RmsException ex )
+            {
+                String l_msg = "Failed to delete user " + l_user.getName()
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Delete User!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DenyPermissionForProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/DenyPermissionForProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,299 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'DenyPermissionForProfile' ActionEvent commands which occur
+ * when a profile or the 'Denials' container under a profile is selected and
+ * a grant menu item is pressed.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DenyPermissionForProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "DenyPermissionForProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'DenyPermissionForProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public DenyPermissionForProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the Profile node associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the profile node
+     */
+    private BeanTreeNode getProfileNode( TreePath a_path )
+    {
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return ( BeanTreeNode ) l_last.getParent() ;
+        }
+        else
+        {
+            return ( BeanTreeNode ) l_last ;
+        }
+    }
+    
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    private MutableApplication getApplication( String appName )
+    {
+        MutableApplication l_app = null ;
+        BeanTreeNode l_root = ( BeanTreeNode ) m_manager
+            .getSelectedPath().getPath()[0] ;
+        ContainerTreeNode l_apps = l_root.getContainerChild( "Applications" ) ;
+        
+        for ( int ii = 0; ii < l_apps.getChildCount(); ii++ )
+        {
+            BeanTreeNode l_child = ( BeanTreeNode ) l_apps.getChildAt( ii ) ;
+            l_app = ( MutableApplication ) l_child.getUserObject() ;
+            
+            if ( ( l_app ).getName().equals( appName ) )
+            {
+                return l_app ;
+            }
+        }
+        
+        return null ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = getProfile( l_path ) ;
+            ContainerTreeNode l_grants = null ;
+            
+            if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+            {
+                // we selected a role node so we need to get the child grants
+                l_grants = ( ( BeanTreeNode ) l_path.getLastPathComponent() )
+                    .getContainerChild( "Denials" ) ;
+            }
+            else
+            {   
+                // we selected the grants node so we just get the last container
+                l_grants = m_manager.getLastContainer() ;
+            }
+            
+            MutableApplication l_app = getApplication( 
+                    l_profile.getApplicationName() ) ;
+            BitPermission l_perm = l_app.getPermission( l_permName ) ;
+            BeanTreeNode l_permNode = new BeanTreeNode( l_perm,
+                    m_manager.getContainmentModel() ) ;
+            
+            try
+            {
+                l_profile.deny( l_permName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to deny the permission " 
+                    + l_permName + " for user " + l_profile.getUserName()
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName()
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Deny Permission to Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+                
+            m_manager.getTreeModel().insertNodeInto( l_permNode, l_grants, 0 ) ;
+            
+            BeanTreeNode l_profileNode = getProfileNode( l_path ) ;
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableProfile l_profile = getProfile( a_path ) ;
+        MutableApplication l_app = getApplication( 
+                l_profile.getApplicationName() ) ;
+            
+        l_menu.setToolTipText( "Deny a permission for user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_app.getPermissions() ;
+
+        while ( l_list.hasNext() )
+        {
+            BitPermission l_perm = ( BitPermission ) l_list.next() ;
+            l_items.add( l_perm.getName() ) ;
+        }
+
+        l_list = l_profile.getDenials() ;
+        while ( l_list.hasNext() )
+        {
+            BitPermission l_perm = ( BitPermission ) l_list.next() ;
+            l_items.remove( l_perm.getName() ) ;
+        }
+        
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            String l_item = ( String ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Deny permission " + l_item 
+                    + " to user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,310 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableBitPermission;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'GrantPermissionToProfile' ActionEvent commands which occur
+ * when a profile or the 'Grants' container under a profile is selected and
+ * a grant menu item is pressed.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class GrantPermissionToProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "GrantPermissionToProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'GrantPermissionToProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public GrantPermissionToProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the Profile node associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the profile node
+     */
+    private BeanTreeNode getProfileNode( TreePath a_path )
+    {
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return ( BeanTreeNode ) l_last.getParent() ;
+        }
+        else
+        {
+            return ( BeanTreeNode ) l_last ;
+        }
+    }
+    
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    private MutableApplication getApplication( String appName )
+    {
+        MutableApplication l_app = null ;
+        BeanTreeNode l_root = ( BeanTreeNode ) m_manager
+            .getSelectedPath().getPath()[0] ;
+        ContainerTreeNode l_apps = l_root.getContainerChild( "Applications" ) ;
+        
+        for ( int ii = 0; ii < l_apps.getChildCount(); ii++ )
+        {
+            BeanTreeNode l_child = ( BeanTreeNode ) l_apps.getChildAt( ii ) ;
+            l_app = ( MutableApplication ) l_child.getUserObject() ;
+            
+            if ( ( l_app ).getName().equals( appName ) )
+            {
+                return l_app ;
+            }
+        }
+        
+        return null ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = getProfile( l_path ) ;
+            ContainerTreeNode l_grants = null ;
+            
+            if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+            {
+                // we selected a role node so we need to get the child grants
+                l_grants = ( ( BeanTreeNode ) l_path.getLastPathComponent() )
+                    .getContainerChild( "Grants" ) ;
+            }
+            else
+            {   
+                // we selected the grants node so we just get the last container
+                l_grants = m_manager.getLastContainer() ;
+            }
+            
+            MutableApplication l_app = getApplication( 
+                    l_profile.getApplicationName() ) ;
+            MutableBitPermission l_perm = ( MutableBitPermission ) 
+                l_app.getPermission( l_permName ) ;
+            BeanTreeNode l_permNode = new BeanTreeNode( l_perm,
+                    m_manager.getContainmentModel() ) ;
+            
+            try
+            {
+                l_profile.grant( l_perm ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to grant the permission " 
+                    + l_permName + " for user " + l_profile.getUserName()
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName()
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Grant Permission to Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+                
+            m_manager.getTreeModel().insertNodeInto( l_permNode, l_grants, 0 ) ;
+            
+            BeanTreeNode l_profileNode = getProfileNode( l_path ) ;
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableProfile l_profile = getProfile( a_path ) ;
+        MutableApplication l_app = getApplication( 
+                l_profile.getApplicationName() ) ;
+            
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        l_menu.setToolTipText( "Grant a permission to user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_app.getPermissions() ;
+
+        while ( l_list.hasNext() )
+        {
+            BitPermission l_perm = ( BitPermission ) l_list.next() ;
+            l_items.add( l_perm.getName() ) ;
+        }
+
+        l_list = l_profile.getPermissions() ;
+        while ( l_list.hasNext() )
+        {
+            BitPermission l_perm = ( BitPermission ) l_list.next() ;
+            l_items.remove( l_perm.getName() ) ;
+        }
+        
+        l_list = l_profile.getGrants() ;
+        while ( l_list.hasNext() )
+        {
+            BitPermission l_perm = ( BitPermission ) l_list.next() ;
+            l_items.remove( l_perm.getName() ) ;
+        }
+        
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            String l_item = ( String ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Grant permission " + l_item 
+                    + " to user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToRoleHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/GrantPermissionToRoleHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,296 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.User ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableRole ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'GrantPermissionToRole' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class GrantPermissionToRoleHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "GrantPermissionToRole" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'GrantPermissionToRole' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public GrantPermissionToRoleHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the application associated with the selection path.
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableApplication getApplication( TreePath a_path )
+    {
+        MutableApplication l_app = null ;
+        
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        if ( l_last instanceof ContainerTreeNode )
+        {
+            l_app = ( MutableApplication ) ( ( BeanTreeNode ) l_last
+                    .getParent().getParent().getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_app = ( MutableApplication ) ( ( BeanTreeNode ) l_last.getParent()
+                    .getParent() ).getUserObject() ;
+        }
+        
+        return l_app ;
+    }
+
+    
+    /**
+     * Gets the role associated with the selection path
+     * 
+     * @param a_path the selection path
+     * @return the mutable role under which this path is associated
+     */
+    private MutableRole getRole( TreePath a_path )
+    {
+        MutableRole l_role = null ;
+
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        if ( l_last instanceof ContainerTreeNode )
+        {
+            l_role = ( MutableRole ) 
+                ( ( BeanTreeNode ) l_last.getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_role = ( MutableRole ) l_last.getUserObject() ;
+        }
+        
+        return l_role ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableRole l_role = getRole( l_path ) ;
+            ContainerTreeNode l_grants = null ;
+            
+            if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+            {
+                // we selected a role node so we need to get the child grants
+                l_grants = ( ( BeanTreeNode ) l_path.getLastPathComponent() )
+                    .getContainerChild( "Grants" ) ;
+            }
+            else
+            {   
+                // we selected the grants node so we just get the last container
+                l_grants = m_manager.getLastContainer() ;
+            }
+            
+            MutableApplication l_app = getApplication( l_path ) ;
+            BitPermission l_perm = l_app.getPermission( l_permName ) ;
+            BeanTreeNode l_permNode = new BeanTreeNode( l_perm,
+                    m_manager.getContainmentModel() ) ;
+            
+            try
+            {
+                l_role.grant( l_permName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to grant the permission " 
+                    + l_permName + " for Role " + l_role.getName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Grant Permission to Role", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+                
+            m_manager.getTreeModel().insertNodeInto( l_permNode, l_grants, 0 ) ;
+            m_manager.buildMenus() ;
+            
+            /*
+             * Profiles listen as Observers of DefaultRoles which extends the
+             * Observable class.  Changes to roles automatically result in 
+             * effective permission calculations this way in profiles if the
+             * provider implementation handles the Observer.update() calls 
+             * correctly.  All we now need to do is refresh the profile nodes
+             * so they display the correct permissions for roles and the correct
+             * effective permissions.
+             * 
+             * We need to find all the profile nodes of users that are in the 
+             * role that just changed by having the grant added.  We must call
+             * refresh on these nodes and let the tree model announce a 
+             * structural change to the tree at those nodes.
+             */
+            BeanTreeNode l_root = ( BeanTreeNode ) 
+                m_manager.getTreeModel().getRoot() ;
+            ContainerTreeNode l_users = ( ContainerTreeNode ) 
+                l_root.getContainerChild( "Users" ) ;
+            
+            for ( int ii = 0; ii < l_users.getChildCount(); ii++ )
+            {
+                BeanTreeNode node = ( BeanTreeNode ) l_users.getChildAt( ii ) ;
+                User user = ( User ) node.getUserObject() ;
+                
+                if ( user.hasProfile( l_role.getApplicationName() ) )
+                {
+                    user.getProfile( l_role.getApplicationName() ).hasRole( 
+                            l_role ) ;
+                    
+                    // We'll just update the user node 
+                    node.refresh() ;
+                    m_manager.getTreeModel().nodeStructureChanged( node ) ;
+                }
+            }
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableRole l_role = getRole( a_path ) ;
+        MutableApplication l_app = getApplication( a_path ) ;
+            
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        l_menu.setToolTipText( "Grant a permission to role " 
+                + l_role.getName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_app.getPermissions() ;
+
+        while ( l_list.hasNext() )
+        {
+            l_items.add( l_list.next() ) ;
+        }
+
+        l_list = l_role.getGrants() ;
+        while ( l_list.hasNext() )
+        {
+            l_items.remove( l_list.next() ) ;
+        }
+        
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            BitPermission l_item = ( BitPermission ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item.getName() ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item.getName() ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Grant permission " + l_item.getName() 
+                    + " to Role " + l_role.getName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/HandlerTemplate.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/HandlerTemplate.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,69 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.event.ActionEvent ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+
+
+/**
+ * Handler for '' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class HandlerTemplate extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND =
+        "" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a '' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public HandlerTemplate( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) )
+        {
+            // do what we do
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,54 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.event.ActionListener ;
+
+import org.apache.rms.ui.ocmm.Action ;
+
+
+/**
+ * Menu handlers are action handlers designed specifically for ocmm Actions.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface MenuHandler extends ActionListener
+{
+    /**
+     * Checks whether or not this handler is for single items.
+     * 
+     * @return
+     */
+    boolean isForItem() ;
+    
+    /**
+     * Gets the command for this handler.
+     * 
+     * @return the command
+     */
+    String getCommand() ;
+    
+    /**
+     * Checks to see if this handler handles an action.
+     * 
+     * @param action the action to handle
+     * @return true if this handler handles the action, false otherwise.
+     */
+    boolean handles( Action action ) ;
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuItemHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/MenuItemHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,42 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import javax.swing.JMenuItem ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.rms.ui.ocmm.Action ;
+
+
+/**
+ * This is a handler for a single menu item.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface MenuItemHandler extends MenuHandler
+{
+    /**
+     * Gets a new menu item for a path and action.
+     * 
+     * @param a_path the path to the selected item
+     * @param a_action the action to associated with this handler
+     * @return the menu item triggering actions handled by this handler
+     */
+    JMenuItem getMenuItem( TreePath a_path, Action a_action ) ;
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RefreshHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RefreshHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,73 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.event.ActionEvent ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'Refresh' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RefreshHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "Refresh" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'Refresh' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public RefreshHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) )
+        {
+            ContainmentTreeNode l_node = ( ContainmentTreeNode ) 
+                m_manager.getSelectedPath().getLastPathComponent() ;
+            
+            l_node.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_node ) ;
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RemoveRoleFromProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RemoveRoleFromProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,317 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.awt.Dimension ;
+import java.util.ArrayList ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.Role ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRole ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'RemoveRoleFromProfile' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RemoveRoleFromProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "RemoveRoleFromProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'RemoveRoleFromProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public RemoveRoleFromProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    /**
+     * Checks to see if a role is selected so we will show a single menu
+     * item in this case instead of an entire submenu.
+     * 
+     * @param a_path the path to the selected node
+     * @return true if the selected node is a role node false otherwise
+     */
+    private boolean isRoleSelected( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return false ;
+        }
+        else if ( l_last.getContainmentMetadata().getTypeClass()
+                    .isAssignableFrom( Role.class ) )
+        {
+            return true ;
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Gets the selected role.
+     * 
+     * @param a_path the path to the selected role
+     * @return the select mutable selected role
+     */
+    private MutableRole getSelectedRole( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        return ( MutableRole ) l_last.getUserObject() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_roleName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = null ;
+            BeanTreeNode l_roleNode = null ;
+            ContainerTreeNode l_roles = null ;
+            BeanTreeNode l_profileNode = null ;
+            
+            
+            if ( isRoleSelected( l_path ) )
+            {
+                l_roleNode = ( BeanTreeNode ) l_path.getLastPathComponent() ;
+                l_roles = m_manager.getLastContainer() ;
+                l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                        l_roles.getParent() ).getUserObject() ;
+                l_profileNode = ( BeanTreeNode ) l_roles.getParent() ;
+            }
+            else
+            {
+                l_profile = getProfile( l_path ) ;
+                
+                if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+                {
+                    // we selected a profile node so we need to get child roles
+                    l_roles = ( ( BeanTreeNode ) l_path
+                            .getLastPathComponent() )
+                            .getContainerChild( "Roles" ) ;
+                }
+                else
+                {   
+                    // we selected the roles node so we just get last container
+                    l_roles = m_manager.getLastContainer() ;
+                }
+                l_profileNode = ( BeanTreeNode ) l_roles.getParent() ;
+            
+                for ( int ii = 0; ii < l_roles.getChildCount(); ii++ )
+                {
+                    BeanTreeNode l_child = ( BeanTreeNode ) 
+                        l_roles.getChildAt( ii ) ;
+                    MutableRole l_role = ( MutableRole ) 
+                        l_child.getUserObject() ;
+                    
+                    if ( l_role.getName().equals( l_roleName ) )
+                    {
+                        l_roleNode = l_child ;
+                        break ;
+                    }
+                }
+            }
+
+            try
+            {
+                l_profile.removeRole( l_roleName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to remove the role " 
+                    + l_roleName + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName()  
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Remove Role From Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            m_manager.getTreeModel().removeNodeFromParent( l_roleNode ) ;
+
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        if ( isRoleSelected( a_path ) )
+        {
+            MutableRole l_role = getSelectedRole( a_path ) ;
+            JMenuItem l_item = new JMenuItem( a_action.getName() ) ;
+            l_item.setIcon( Images.load( a_action.getIcon() ) ) ;
+            String l_cmd = a_action.getCommand() + "|" + l_role.getName() ;
+            l_item.setActionCommand( l_cmd ) ;
+            l_item.setToolTipText( "Remove role " + l_role.getName() ) ; 
+            l_item.addActionListener( this ) ;
+            return l_item ;
+        }
+        
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableProfile l_profile = getProfile( a_path ) ;
+
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        l_menu.setToolTipText( "Remove a role from user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_profile.getRoles() ;
+        while ( l_list.hasNext() )
+        {
+            l_items.add( l_list.next() ) ;
+        }
+
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            MutableRole l_item = ( MutableRole ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item.getName() ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item.getName() ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Remove role " + l_item.getName() 
+                    + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameApplicationHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameApplicationHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,213 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreeNode ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.Role ;
+import org.apache.rms.User ;
+import org.apache.rms.Application ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableApplication ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Action handler for 'RenameApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RenameApplicationHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "RenameApplication" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'RenameApplication' action commands. 
+     */
+    public RenameApplicationHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            BeanTreeNode l_beanNode = m_manager.getLastBean() ;
+            ContainerTreeNode l_apps = m_manager.getLastContainer() ;
+            MutableApplication l_app = ( MutableApplication ) 
+                l_beanNode.getUserObject() ;
+            String l_newName = null ;
+            
+            Iterator l_list = l_app.getRoles() ;
+            ArrayList l_rolesForApp = new ArrayList() ;
+            while ( l_list.hasNext() )
+            {
+                l_rolesForApp.add( ( ( Role ) l_list.next() ).getName() ) ;
+            }
+            
+            l_list = l_app.getPermissions() ;
+            ArrayList l_permsForApp = new ArrayList() ;
+            while ( l_list.hasNext() )
+            {
+                l_permsForApp.add( ( ( BitPermission ) l_list.next() )
+                        .getName() ) ;
+            }
+            
+            try
+            {
+                l_list = Rms.getInstance().getUsers( l_app.getName() ) ;
+            }
+            catch( RmsException ex )
+            {
+                ex.printStackTrace() ;
+            }
+            ArrayList l_usersForApp = new ArrayList() ;
+            while ( l_list.hasNext() )
+            {
+                l_usersForApp.add( ( ( User ) l_list.next() ).getName() ) ;
+            }
+            
+            
+            if ( l_rolesForApp.size() > 0 
+                    || l_permsForApp.size() > 0 
+                    || l_usersForApp.size() > 0 )
+            {
+                String l_msg = 
+                    "The application " + l_app.getName() 
+                    + " has the following roles that depend on it:\n"
+                    + l_rolesForApp ;
+                l_msg +=
+                    "\n\nThe application " + l_app.getName() 
+                    + " has the following permissions that depend on it:\n"
+                    + l_permsForApp ; 
+                l_msg +=
+                    "\n\nThe application " + l_app.getName() + " has the "
+                    + "following user's with profiles that depend on it:\n"
+                    + l_permsForApp ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Application is Referenced by Entities!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            l_newName = JOptionPane.showInputDialog( m_manager.getMainFrame(), 
+                    "What would you like to rename application " + l_app.getName() 
+                    + " to?", "Rename Application " + l_app.getName(), 
+                    JOptionPane.INFORMATION_MESSAGE ) ;
+            
+            if ( l_newName == null )
+            {
+                return ;
+            }
+            else if ( l_newName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "Application name cannot be set to the empty String!", 
+                        "Invalid Application Name", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            for ( int ii = 0; ii < l_apps.getChildCount(); ii++ )
+            {
+                BeanTreeNode l_child = 
+                    ( BeanTreeNode ) l_apps.getChildAt( ii )  ;
+                Application l_childApp = 
+                    ( Application ) l_child.getUserObject() ;
+                if ( l_childApp.getName().equals( l_newName ) )
+                {
+                    JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                            "New application name " + l_newName 
+                            + " is already the name of another Application!", 
+                            "Invalid Application Name", 
+                            JOptionPane.ERROR_MESSAGE ) ;
+                    return ;
+                }
+            }
+            
+            try
+            {
+                l_app.rename( l_newName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "Failed to rename appliciation " 
+                    + l_app.getName()
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Rename Application!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+            
+            m_manager.getTreeModel().nodeChanged( ( TreeNode ) l_beanNode ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionDialog.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionDialog.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,305 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Font ;
+import java.awt.Frame ;
+import java.awt.Color ;
+import java.awt.Insets ;
+import java.awt.Toolkit ;
+import java.awt.Dimension ;
+import java.awt.FlowLayout ;
+import java.awt.GridBagLayout ;
+import java.awt.event.ActionEvent ;
+import java.awt.event.WindowEvent ;
+import java.awt.GridBagConstraints ;
+import java.awt.event.ActionListener ;
+
+import javax.swing.JPanel ;
+import javax.swing.JLabel ;
+import javax.swing.JButton ;
+import javax.swing.JDialog ;
+import javax.swing.JTextField ;
+import javax.swing.JOptionPane ;
+import javax.swing.BorderFactory ;
+import javax.swing.border.TitledBorder ;
+
+
+import org.apache.rms.Application ;
+import org.apache.rms.BitPermission ;
+
+
+/**
+ * A modal dialog for renaming permissions.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RenamePermissionDialog 
+    extends JDialog implements ActionListener
+{
+    private static final String TITLE_BASE = 
+        "Rename Permission " ;
+    private static final String PRESS_TO_CANCEL_TOP = 
+        "Press to cancel creation of permission" ;
+    private static final String PRESS_TO_CREATE_TIP = 
+        "Press to create new application permission" ;
+    
+    private boolean m_hasCanceled = true ;
+    
+    private final Application m_application ;
+    private final BitPermission m_permission ;
+    
+    private JPanel m_mainPanel = new JPanel() ;
+    private JPanel m_infoPanel = new JPanel() ;
+    private JPanel m_buttonPanel = new JPanel() ;
+    private JPanel m_appPanel = new JPanel() ;
+    private JLabel m_appNameLabel = new JLabel() ;
+    private JButton m_cancelButton = new JButton() ;
+    private JButton m_renameButton = new JButton() ;
+    private JPanel m_permPanel = new JPanel() ;
+    private JLabel m_permNameLabel = new JLabel() ;
+    private JTextField m_permNameText = new JTextField() ;
+    private JLabel m_appName = new JLabel() ;
+    
+    
+    /**
+     * Creates new form JDialog
+     * 
+     * @param parent  
+     * @param modal
+     */
+    public RenamePermissionDialog( Frame parent, boolean modal, 
+                                   Application app, BitPermission perm )
+    {
+        super( parent, modal ) ;
+        m_application = app ;
+        m_permission = perm ;
+        
+        initGUI() ;
+        
+        Dimension m_screenSize = Toolkit.getDefaultToolkit().getScreenSize() ;
+        Dimension m_frameSize = getSize() ;
+        
+        if ( m_frameSize.height > m_screenSize.height )
+        {
+            m_frameSize.height = m_screenSize.height ;
+        }
+        
+        if ( m_frameSize.width > m_screenSize.width )
+        {
+            m_frameSize.width = m_screenSize.width ;
+        }
+        
+        setLocation( ( m_screenSize.width - m_frameSize.width ) / 2, 
+                ( m_screenSize.height - m_frameSize.height ) / 2 ) ;
+    }
+
+    
+    /** 
+     * Called from within the constructor to initialize the form.
+     */
+    private void initGUI()
+    {
+        addWindowListener( new java.awt.event.WindowAdapter()
+        {
+                public void windowClosing( java.awt.event.WindowEvent evt )
+                {
+                    closeDialog(evt);
+                }
+        });
+        pack();
+        setBounds( new java.awt.Rectangle( 0, 0, 455, 220 ) ) ;
+        setTitle( TITLE_BASE + m_permission.getName() ) ;
+        setModal( true ) ;
+        getContentPane().setLayout( new java.awt.BorderLayout() ) ;
+        getContentPane().add( m_mainPanel, java.awt.BorderLayout.CENTER ) ;
+        m_mainPanel.setLayout( new java.awt.GridBagLayout() ) ;
+        m_mainPanel.setBorder( null ) ;
+
+        m_mainPanel.add( m_infoPanel, new GridBagConstraints( 0, 0, 1, 1, 
+                        1.0, 0.8, GridBagConstraints.NORTH, 
+                        GridBagConstraints.BOTH, new Insets( 0, 5, 5, 5 ), 
+                        0, 0 ) ) ;
+
+        m_mainPanel.add( m_buttonPanel, 
+                new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, 
+                        GridBagConstraints.EAST, 
+                        GridBagConstraints.BOTH, 
+                        new Insets( 10, 5, 10, 5 ), 0, 0 ) ) ;
+
+        m_infoPanel.setBorder( BorderFactory.createTitledBorder(
+                        BorderFactory.createLineBorder( new Color( 
+                                        153, 153, 153 ), 1 ), 
+                        "Rename Permission",
+                        TitledBorder.LEADING, TitledBorder.TOP,
+                        new Font( "Comic Sans MS", 0, 14 ),
+                        new Color( 60, 60, 60 ) ) ) ;
+
+        m_infoPanel.setLayout( new GridBagLayout() ) ;
+
+        m_infoPanel.add( m_appPanel, new GridBagConstraints( 0, 0, 1, 1, 1.0, 
+                        1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH,
+                        new Insets( 0, 0, 0, 0 ), 0, 0 ) ) ;
+
+        m_infoPanel.add( m_permPanel, new GridBagConstraints( 0, 1, 1, 1, 1.0, 
+                        1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+                        new Insets( 0, 0, 5, 0 ), 0, 0 ) ) ;
+
+        m_appNameLabel.setText( "Application Name:" ) ;
+        m_appNameLabel.setToolTipText( "Application Name" ) ;
+        m_appPanel.setLayout( new GridBagLayout() ) ;
+        m_appPanel.setAlignmentX( 0.0f ) ;
+        m_appPanel.setAlignmentY( 0.0f ) ;
+
+        m_appPanel.add( m_appNameLabel, new GridBagConstraints( 0, 0, 1, 1, 0.0,
+                        0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.NONE, 
+                        new Insets( 0, 10, 0, 10 ), 0, 0 ) );
+
+        m_appPanel.add( m_appName, new GridBagConstraints( 1, 0, 4, 1, 1.0, 0.0,
+                        GridBagConstraints.WEST,
+                        GridBagConstraints.HORIZONTAL,
+                        new Insets( 0, 0, 0, 0 ), 0, 0 ) ) ;
+
+        m_cancelButton.setText( "Cancel" ) ;
+        m_cancelButton.setActionCommand( "Cancel" ) ;
+        m_cancelButton.addActionListener( this ) ;
+        m_cancelButton.setToolTipText( PRESS_TO_CANCEL_TOP ) ;
+        m_cancelButton.setSelected( true ) ;
+        m_buttonPanel.setLayout( new FlowLayout( FlowLayout.RIGHT, 10, 5 ) ) ;
+        m_buttonPanel.setBorder( BorderFactory.createTitledBorder(
+            BorderFactory.createLineBorder( new Color( 153, 153, 153 ), 1 ), "",
+            TitledBorder.LEADING, TitledBorder.TOP,
+            new Font( "Comic Sans MS", 0, 14 ), new Color( 60, 60, 60 ) ) ) ;
+        m_buttonPanel.add( m_cancelButton ) ;
+        m_buttonPanel.add( m_renameButton ) ;
+        m_renameButton.setText( "Rename" ) ;
+        m_renameButton.setActionCommand( "Rename" ) ;
+        m_renameButton.addActionListener( this ) ;
+        m_renameButton.setToolTipText( PRESS_TO_CREATE_TIP ) ;
+        m_permNameLabel.setText( "Permission Name:" ) ;
+        m_permNameLabel.setVerifyInputWhenFocusTarget( false ) ;
+        m_permNameLabel.setToolTipText( "Permission Name" ) ;
+        m_permPanel.setLayout( new GridBagLayout() ) ;
+
+        m_permPanel.add(m_permNameLabel, new GridBagConstraints( 0, 0, 1, 1, 
+                        0.29, 0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.HORIZONTAL, 
+                        new Insets( 0, 10, 0, 0 ), 0, 0 ) ) ;
+
+        m_permPanel.add( m_permNameText, new GridBagConstraints( 1, 0, 1, 1, 
+                        70.0, 0.0, GridBagConstraints.WEST, 
+                        GridBagConstraints.HORIZONTAL, 
+                        new Insets( 0, 10, 0, 10 ), 0, 0 ) ) ;
+
+        m_appName.setText( m_application.getName() ) ;
+        m_appName.setToolTipText( 
+                "The name of the application owning the permission" ) ;
+        
+        m_permNameText.setText( m_permission.getName() ) ;
+    }
+
+    
+    /**
+     *  Closes the dialog 
+     * 
+     * @param evt
+     */
+    private void closeDialog( WindowEvent evt )
+    {
+        evt.getWindow() ;
+        setVisible( false ) ;
+        dispose() ;
+    }
+    
+    
+    /**
+     * Gets the permission name.
+     * 
+     * @return the name of the new permission to create
+     */
+    public String getPermissionName()
+    {
+        return m_permNameText.getText() ;
+    }
+    
+    
+    /**
+     * Gets if this dialog's action was canceled.
+     * 
+     * @return true if canceled false otherwise
+     */
+    public boolean hasCanceled()
+    {
+        return m_hasCanceled ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( "Cancel" ) )
+        {
+            m_hasCanceled = true ;
+        }
+        else if ( e.getActionCommand().equals( "Rename" ) )
+        {
+            if ( m_permNameText.getText() == null || 
+                 m_permNameText.getText().trim().equals( "" ) ) 
+            {
+                JOptionPane.showMessageDialog( this, 
+                        "Cannot rename permission with empty label!",
+                        "Cannot rename: no permission name!",
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            String l_permName = m_permNameText.getText().trim() ;
+            
+            if ( m_permNameText.getText().equals( m_permission.getName() ) )
+            {
+                JOptionPane.showMessageDialog( this, 
+                        "Permission name " + l_permName 
+                        + " has not changed!",
+                        "Permission name has not changed!",
+                        JOptionPane.ERROR_MESSAGE ) ;
+                m_permNameText.setText( m_permission.getName() ) ;
+                return ;
+            }
+            else if ( m_application.hasPermission( l_permName ) )
+            {
+                JOptionPane.showMessageDialog( this, 
+                        "Permission with name " + l_permName 
+                        + " already exists for Application!",
+                        "Permission exists for Application!",
+                        JOptionPane.ERROR_MESSAGE ) ;
+                m_permNameText.setText( m_permission.getName() ) ;
+                return ;
+            }
+            
+            m_hasCanceled = false ;
+        }
+
+        setVisible( false ) ;
+        dispose() ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenamePermissionHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,101 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.event.ActionEvent ;
+
+import javax.swing.tree.TreeNode ;
+
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableApplication ;
+import org.apache.rms.spi.MutableBitPermission ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Action handler for 'AddPermissionToApplication' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RenamePermissionHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "RenamePermission" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'AddPermissionToApplication' action commands. 
+     */
+    public RenamePermissionHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            BeanTreeNode l_beanNode = m_manager.getLastBean() ;
+            MutableBitPermission l_perm =
+                ( MutableBitPermission ) l_beanNode.getUserObject() ;
+            MutableApplication l_app = 
+                ( MutableApplication ) ( ( ContainmentTreeNode ) l_beanNode
+                    .getParent().getParent() ).getUserObject() ;
+
+            RenamePermissionDialog l_permDialog = 
+                new RenamePermissionDialog( null, true, l_app, l_perm ) ;
+            l_permDialog.setVisible( true ) ;
+            
+            if ( l_permDialog.hasCanceled() )
+            {
+                return ;
+            }
+
+            String l_newPermName = l_permDialog.getPermissionName() ;
+            try
+            {
+                l_app.renamePermission( l_perm, l_newPermName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                ex.printStackTrace() ;
+            }
+            
+            m_manager.getTreeModel().nodeChanged( ( TreeNode ) 
+                    m_manager.getTreeModel().getRoot() ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameRoleHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameRoleHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,186 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreeNode ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.Rms ;
+import org.apache.rms.Role ;
+import org.apache.rms.User ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableRole;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Action handler for 'RenameRole' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RenameRoleHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "RenameRole" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'RenameRole' action commands. 
+     */
+    public RenameRoleHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            BeanTreeNode l_beanNode = m_manager.getLastBean() ;
+            ContainerTreeNode l_roles = m_manager.getLastContainer() ;
+            MutableRole l_role = ( MutableRole ) l_beanNode.getUserObject() ;
+            String l_newName = null ;
+            
+            Iterator l_list = null ;
+            ArrayList l_usersInRole = new ArrayList() ;
+            try
+            {
+                l_list = Rms.getInstance().getUsers( l_role.getApplicationName(), 
+                        l_role.getName() ) ;
+            }
+            catch ( RmsException ex )
+            {
+                ex.printStackTrace() ;
+            }
+            
+            while ( l_list.hasNext() )
+            {
+                l_usersInRole.add( ( ( User ) l_list.next() ).getName() ) ;
+            }
+            
+            if ( l_usersInRole.size() > 0 )
+            {
+                String l_msg = 
+                    "The role " + l_role.getName() 
+                    + " has the following users that depend on it:\n"
+                    + l_usersInRole ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Role is Referenced by Entities!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            l_newName = JOptionPane.showInputDialog( m_manager.getMainFrame(), 
+                    "What would you like to rename role " + l_role.getName() 
+                    + " to?", "Rename Role " + l_role.getName(), 
+                    JOptionPane.INFORMATION_MESSAGE ) ;
+            
+            if ( l_newName == null )
+            {
+                return ;
+            }
+            else if ( l_newName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "Role name cannot be set to the empty String!", 
+                        "Invalid Role Name", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            for ( int ii = 0; ii < l_roles.getChildCount(); ii++ )
+            {
+                BeanTreeNode l_child = 
+                    ( BeanTreeNode ) l_roles.getChildAt( ii )  ;
+                Role l_childRole = ( Role ) l_child.getUserObject() ;
+                if ( l_childRole.getName().equals( l_newName ) )
+                {
+                    JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                            "New role name " + l_newName 
+                            + " is already the name of another Role!", 
+                            "Invalid Role Name", 
+                            JOptionPane.ERROR_MESSAGE ) ;
+                    return ;
+                }
+            }
+            
+            try
+            {
+                l_role.rename( l_newName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "Failed to rename role " 
+                    + l_role.getName()
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Rename Role!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+            
+            m_manager.getTreeModel().nodeChanged( ( TreeNode ) l_beanNode ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameUserHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RenameUserHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,173 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreeNode ;
+
+import org.apache.commons.lang.WordUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.User ;
+import org.apache.rms.Profile ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.spi.MutableUser ;
+
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+
+
+/**
+ * Action handler for 'RenameUser' action commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RenameUserHandler extends BaseMenuItemHandler
+{
+    public static final String ACTION_COMMAND = "RenameUser" ;
+    private final ActionMenuManager m_manager ;
+    
+
+    /**
+     * Creates a handler for 'RenameUser' action commands. 
+     */
+    public RenameUserHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        if ( e.getActionCommand().equals( ACTION_COMMAND ) ) 
+        {
+            BeanTreeNode l_beanNode = m_manager.getLastBean() ;
+            ContainerTreeNode l_users = m_manager.getLastContainer() ;
+            MutableUser l_user = ( MutableUser ) l_beanNode.getUserObject() ;
+            String l_newName = null ;
+            
+            Iterator l_list = l_user.getProfiles() ;
+            ArrayList l_profilesForUser = new ArrayList() ;
+            while ( l_list.hasNext() )
+            {
+                l_profilesForUser.add( ( ( Profile ) l_list.next() )
+                        .getApplicationName() ) ;
+            }
+            
+            if ( l_profilesForUser.size() > 0 )
+            {
+                String l_msg = 
+                    "The user " + l_user.getName() 
+                    + " has the following profiles that depend on it:\n"
+                    + l_profilesForUser ; 
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "User is Referenced by Profiles!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            l_newName = JOptionPane.showInputDialog( m_manager.getMainFrame(), 
+                    "What would you like to rename user " + l_user.getName() 
+                    + " to?", "Rename User " + l_user.getName(), 
+                    JOptionPane.INFORMATION_MESSAGE ) ;
+            
+            if ( l_newName == null )
+            {
+                return ;
+            }
+            else if ( l_newName.trim().equals( "" ) )
+            {
+                JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                        "User name cannot be set to the empty String!", 
+                        "Invalid User Name", JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            
+            for ( int ii = 0; ii < l_users.getChildCount(); ii++ )
+            {
+                BeanTreeNode l_child = 
+                    ( BeanTreeNode ) l_users.getChildAt( ii )  ;
+                User l_childUser = ( User ) l_child.getUserObject() ;
+                if ( l_childUser.getName().equals( l_newName ) )
+                {
+                    JOptionPane.showMessageDialog( m_manager.getMainFrame(),
+                            "New user name " + l_newName 
+                            + " is already the name of another User!", 
+                            "Invalid User Name", JOptionPane.ERROR_MESSAGE ) ;
+                    return ;
+                }
+            }
+            
+            try
+            {
+                l_user.rename( l_newName ) ;
+            }
+            catch ( RmsException ex ) 
+            {
+                String l_msg = "Failed to rename user " + l_user.getName()
+                    + " due to the following reason:" 
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                l_msg = WordUtils.wrap( l_msg, 80 ) ;
+
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( new 
+                        Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Rename User!", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+            }
+            
+            m_manager.getTreeModel().nodeChanged( ( TreeNode ) l_beanNode ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeDenialFromProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeDenialFromProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,316 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.awt.Dimension ;
+import java.util.ArrayList ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.spi.MutableBitPermission ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'RevokeDenialFromProfile' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RevokeDenialFromProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "RevokeDenialFromProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'RevokeDenialFromProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public RevokeDenialFromProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    /**
+     * Checks to see if a permission is selected so we will show a single menu
+     * item in this case instead of an entire submenu.
+     * 
+     * @param a_path the path to the selected node
+     * @return true if the selected node is a permission node false otherwise
+     */
+    private boolean isPermSelected( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return false ;
+        }
+        else if ( l_last.getContainmentMetadata().getTypeClass()
+                    .isAssignableFrom( BitPermission.class ) )
+        {
+            return true ;
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Gets the selected permission.
+     * 
+     * @param a_path the path to the selected permission
+     * @return the select mutable bit permission
+     */
+    private MutableBitPermission getPermission( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        return ( MutableBitPermission ) l_last.getUserObject() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = null ;
+            BeanTreeNode l_permNode = null ;
+            ContainerTreeNode l_denials = null ;
+            BeanTreeNode l_profileNode = null ;
+            
+            
+            if ( isPermSelected( l_path ) )
+            {
+                l_permNode = ( BeanTreeNode ) l_path.getLastPathComponent() ;
+                l_denials = m_manager.getLastContainer() ;
+                l_profileNode = ( BeanTreeNode ) l_denials.getParent() ;
+                l_profile = ( MutableProfile ) l_profileNode.getUserObject() ;
+            }
+            else
+            {
+                l_profile = getProfile( l_path ) ;
+                
+                if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+                {
+                    // we selected a role node so we need to get child grants
+                    l_denials = ( ( BeanTreeNode ) l_path
+                            .getLastPathComponent() )
+                            .getContainerChild( "Denials" ) ;
+                }
+                else
+                {   
+                    // we selected the grants node so we just get last container
+                    l_denials = m_manager.getLastContainer() ;
+                }            
+                l_profileNode = ( BeanTreeNode ) l_denials.getParent() ;
+
+                for ( int ii = 0; ii < l_denials.getChildCount(); ii++ )
+                {
+                    BeanTreeNode l_child = ( BeanTreeNode ) 
+                        l_denials.getChildAt( ii ) ;
+                    BitPermission l_perm = ( BitPermission ) 
+                        l_child.getUserObject() ;
+                    
+                    if ( l_perm.getName().equals( l_permName ) )
+                    {
+                        l_permNode = l_child ;
+                        break ;
+                    }
+                }
+            }
+
+            try
+            {
+                l_profile.revokeDenial( l_permName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to revoke the permission " 
+                    + l_permName + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Revoke Permission From Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            m_manager.getTreeModel().removeNodeFromParent( l_permNode ) ;
+            
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        if ( isPermSelected( a_path ) )
+        {
+            MutableBitPermission l_perm = getPermission( a_path ) ;
+            JMenuItem l_item = new JMenuItem( a_action.getName() ) ;
+            String l_cmd = a_action.getCommand() + "|" + l_perm.getName() ;
+            l_item.setActionCommand( l_cmd ) ;
+            l_item.setToolTipText( "Revoke denial " + l_perm.getName() ) ; 
+            l_item.addActionListener( this ) ;
+            l_item.setIcon( Images.load( a_action.getIcon() ) ) ;
+            return l_item ;
+        }
+        
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableProfile l_profile = getProfile( a_path ) ;
+
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        l_menu.setToolTipText( "Revoke a denial from user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_profile.getDenials() ;
+        while ( l_list.hasNext() )
+        {
+            l_items.add( l_list.next() ) ;
+        }
+
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            BitPermission l_item = ( BitPermission ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item.getName() ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item.getName() ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Revoke denial " + l_item.getName() 
+                    + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeGrantFromProfileHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokeGrantFromProfileHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,315 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.awt.Dimension ;
+import java.util.ArrayList ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.spi.MutableProfile ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.spi.MutableBitPermission ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'RevokeGrantFromProfile' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RevokeGrantFromProfileHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "RevokeGrantFromProfile" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'RevokeGrantFromProfile' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public RevokeGrantFromProfileHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the Profile associated with the selection path.   
+     * 
+     * @param a_path the selection path
+     * @return the mutable application under which this path is associated 
+     */
+    private MutableProfile getProfile( TreePath a_path )
+    {
+        MutableProfile l_profile = null ;
+        
+        /*
+         * Last selected is either the 'Grants' container or the profile bean.
+         */
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) l_last
+                    .getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_profile = ( MutableProfile ) ( ( BeanTreeNode ) 
+                    l_last ).getUserObject() ;
+        }
+        
+        return l_profile ;
+    }
+    
+    
+    /**
+     * Checks to see if a permission is selected so we will show a single menu
+     * item in this case instead of an entire submenu.
+     * 
+     * @param a_path the path to the selected node
+     * @return true if the selected node is a permission node false otherwise
+     */
+    private boolean isPermSelected( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return false ;
+        }
+        else if ( l_last.getContainmentMetadata().getTypeClass()
+                    .isAssignableFrom( BitPermission.class ) )
+        {
+            return true ;
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Gets the selected permission.
+     * 
+     * @param a_path the path to the selected permission
+     * @return the select mutable bit permission
+     */
+    private MutableBitPermission getPermission( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        return ( MutableBitPermission ) l_last.getUserObject() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableProfile l_profile = null ;
+            BeanTreeNode l_permNode = null ;
+            ContainerTreeNode l_grants = null ;
+            BeanTreeNode l_profileNode = null ;
+            
+            if ( isPermSelected( l_path ) )
+            {
+                l_permNode = ( BeanTreeNode ) l_path.getLastPathComponent() ;
+                l_grants = m_manager.getLastContainer() ;
+                l_profileNode = ( BeanTreeNode ) l_grants.getParent() ;
+                l_profile = ( MutableProfile ) l_profileNode.getUserObject() ;
+            }
+            else
+            {
+                l_profile = getProfile( l_path ) ;
+                
+                if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+                {
+                    // we selected a role node so we need to get child grants
+                    l_grants = ( ( BeanTreeNode ) l_path
+                            .getLastPathComponent() )
+                            .getContainerChild( "Grants" ) ;
+                }
+                else
+                {   
+                    // we selected the grants node so we just get last container
+                    l_grants = m_manager.getLastContainer() ;
+                }
+                l_profileNode = ( BeanTreeNode ) l_grants.getParent() ;
+            
+                for ( int ii = 0; ii < l_grants.getChildCount(); ii++ )
+                {
+                    BeanTreeNode l_child = ( BeanTreeNode ) 
+                        l_grants.getChildAt( ii ) ;
+                    BitPermission l_perm = ( BitPermission ) 
+                        l_child.getUserObject() ;
+                    
+                    if ( l_perm.getName().equals( l_permName ) )
+                    {
+                        l_permNode = l_child ;
+                        break ;
+                    }
+                }
+            }
+
+            try
+            {
+                l_profile.revokeGrant( l_permName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to revoke the permission " 
+                    + l_permName + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Revoke Permission From Profile", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            m_manager.getTreeModel().removeNodeFromParent( l_permNode ) ;
+            
+            l_profileNode.refresh() ;
+            m_manager.getTreeModel().nodeStructureChanged( l_profileNode ) ;
+
+            m_manager.buildMenus() ;
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        if ( isPermSelected( a_path ) )
+        {
+            MutableBitPermission l_perm = getPermission( a_path ) ;
+            JMenuItem l_item = new JMenuItem( a_action.getName() ) ;
+            String l_cmd = a_action.getCommand() + "|" + l_perm.getName() ;
+            l_item.setActionCommand( l_cmd ) ;
+            l_item.setToolTipText( "Revoke grant " + l_perm.getName() ) ; 
+            l_item.addActionListener( this ) ;
+            l_item.setIcon( Images.load( a_action.getIcon() ) ) ;
+            return l_item ;
+        }
+        
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableProfile l_profile = getProfile( a_path ) ;
+
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ;
+        l_menu.setToolTipText( "Revoke a grant from user " 
+                + l_profile.getUserName() + "'s profile for application "
+                + l_profile.getApplicationName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_profile.getGrants() ;
+        while ( l_list.hasNext() )
+        {
+            l_items.add( l_list.next() ) ;
+        }
+
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            BitPermission l_item = ( BitPermission ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item.getName() ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item.getName() ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Revoke grant " + l_item.getName() 
+                    + " from user " + l_profile.getUserName() 
+                    + "'s profile for application " 
+                    + l_profile.getApplicationName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokePermissionFromRoleHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/RevokePermissionFromRoleHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,337 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+
+import java.awt.Dimension ;
+import java.awt.event.ActionEvent ;
+
+import javax.swing.JMenu ;
+import javax.swing.JMenuItem ;
+import javax.swing.JTextArea ;
+import javax.swing.JOptionPane ;
+import javax.swing.JScrollPane ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.commons.lang.StringUtils ;
+import org.apache.commons.lang.exception.ExceptionUtils ;
+
+import org.apache.rms.User ;
+import org.apache.rms.ui.Images ;
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.RmsException ;
+import org.apache.rms.BitPermission ;
+import org.apache.rms.spi.MutableRole ;
+import org.apache.rms.ui.ActionMenuManager ;
+import org.apache.rms.ui.navtree.BeanTreeNode ;
+import org.apache.rms.ui.navtree.ContainerTreeNode ;
+import org.apache.rms.spi.MutableBitPermission ;
+import org.apache.rms.ui.navtree.ContainmentTreeNode ;
+
+
+/**
+ * Handler for 'RevokePermissionFromRole' ActionEvent commands.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class RevokePermissionFromRoleHandler implements SubMenuHandler
+{
+    public static final String ACTION_COMMAND = "RevokePermissionFromRole" ;
+    private final ActionMenuManager m_manager ;
+
+    
+    /**
+     * Creates a 'RevokePermissionFromRole' action command handler.
+     * 
+     * @param a_manager the handler for the command.
+     */
+    public RevokePermissionFromRoleHandler( ActionMenuManager a_manager )
+    {
+        m_manager = a_manager ;
+    }
+    
+    
+    /**
+     * Gets the role associated with the selection path
+     * 
+     * @param a_path the selection path
+     * @return the mutable role under which this path is associated
+     */
+    private MutableRole getRole( TreePath a_path )
+    {
+        MutableRole l_role = null ;
+
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        if ( l_last instanceof ContainerTreeNode )
+        {
+            l_role = ( MutableRole ) 
+                ( ( BeanTreeNode ) l_last.getParent() ).getUserObject() ;
+        }
+        else
+        {
+            l_role = ( MutableRole ) l_last.getUserObject() ;
+        }
+        
+        return l_role ;
+    }
+    
+    
+    /**
+     * Checks to see if a permission is selected so we will show a single menu
+     * item in this case instead of an entire submenu.
+     * 
+     * @param a_path the path to the selected node
+     * @return true if the selected node is a permission node false otherwise
+     */
+    private boolean isPermSelected( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        
+        if ( l_last.isContainerNode() )
+        {
+            return false ;
+        }
+        else if ( l_last.getContainmentMetadata().getTypeClass()
+                    .isAssignableFrom( BitPermission.class ) )
+        {
+            return true ;
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Gets the selected permission.
+     * 
+     * @param a_path the path to the selected permission
+     * @return the select mutable bit permission
+     */
+    private MutableBitPermission getPermission( TreePath a_path )
+    {
+        ContainmentTreeNode l_last = 
+            ( ContainmentTreeNode ) a_path.getLastPathComponent() ;
+        return ( MutableBitPermission ) l_last.getUserObject() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see java.awt.event.ActionListener#actionPerformed(
+     * java.awt.event.ActionEvent)
+     */
+    public void actionPerformed( ActionEvent e )
+    {
+        String l_cmd = e.getActionCommand() ;
+        
+        if ( l_cmd.startsWith( ACTION_COMMAND ) )
+        {
+            TreePath l_path = m_manager.getSelectedPath() ;
+            String l_permName = StringUtils.split( l_cmd, '|' )[1] ;
+            MutableRole l_role = null ;
+            BeanTreeNode l_permNode = null ;
+            ContainerTreeNode l_grants = null ;
+            
+            
+            if ( isPermSelected( l_path ) )
+            {
+                l_permNode = ( BeanTreeNode ) l_path.getLastPathComponent() ;
+                l_grants = m_manager.getLastContainer() ;
+                l_role = ( MutableRole ) ( ( BeanTreeNode ) 
+                        l_grants.getParent() ).getUserObject() ;
+            }
+            else
+            {
+                l_role = getRole( l_path ) ;
+                
+                if ( l_path.getLastPathComponent() instanceof BeanTreeNode )
+                {
+                    // we selected a role node so we need to get child grants
+                    l_grants = ( ( BeanTreeNode ) l_path
+                            .getLastPathComponent() )
+                            .getContainerChild( "Grants" ) ;
+                }
+                else
+                {   
+                    // we selected the grants node so we just get last container
+                    l_grants = m_manager.getLastContainer() ;
+                }
+            
+                for ( int ii = 0; ii < l_grants.getChildCount(); ii++ )
+                {
+                    BeanTreeNode l_child = ( BeanTreeNode ) 
+                        l_grants.getChildAt( ii ) ;
+                    BitPermission l_perm = ( BitPermission ) 
+                        l_child.getUserObject() ;
+                    
+                    if ( l_perm.getName().equals( l_permName ) )
+                    {
+                        l_permNode = l_child ;
+                        break ;
+                    }
+                }
+            }
+
+            try
+            {
+                l_role.revoke( l_permName ) ;
+            }
+            catch( RmsException ex )
+            {
+                String l_msg = "We failed to revoke the permission " 
+                    + l_permName + " for Role " + l_role.getName() 
+                    + " for the following reasons: "
+                    + ExceptionUtils.getFullStackTrace( ex ) ;
+                JTextArea l_text = new JTextArea( l_msg ) ;
+                l_text.setEnabled( false ) ;
+                JScrollPane l_comp = new JScrollPane( l_text,
+                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ) ;
+                l_comp.getViewport().setPreferredSize( 
+                        new Dimension( 640, 240 ) ) ;
+                JOptionPane.showMessageDialog( null , l_comp, 
+                        "Failed to Revoke Permission From Role", 
+                        JOptionPane.ERROR_MESSAGE ) ;
+                return ;
+            }
+            
+            m_manager.getTreeModel().removeNodeFromParent( l_permNode ) ;
+            m_manager.buildMenus() ;
+            
+            /*
+             * Profiles listen as Observers of DefaultRoles which extends the
+             * Observable class.  Changes to roles automatically result in 
+             * effective permission calculations this way in profiles if the
+             * provider implementation handles the Observer.update() calls 
+             * correctly.  All we now need to do is refresh the profile nodes
+             * so they display the correct permissions for roles and the correct
+             * effective permissions.
+             * 
+             * We need to find all the profile nodes of users that are in the 
+             * role that just changed by having the grant removed.  We must call
+             * refresh on these nodes and let the tree model announce a 
+             * structural change to the tree at those nodes.
+             */
+            BeanTreeNode l_root = ( BeanTreeNode ) 
+                m_manager.getTreeModel().getRoot() ;
+            ContainerTreeNode l_users = ( ContainerTreeNode ) 
+                l_root.getContainerChild( "Users" ) ;
+            
+            for ( int ii = 0; ii < l_users.getChildCount(); ii++ )
+            {
+                BeanTreeNode node = ( BeanTreeNode ) l_users.getChildAt( ii ) ;
+                User user = ( User ) node.getUserObject() ;
+                
+                if ( user.hasProfile( l_role.getApplicationName() ) )
+                {
+                    user.getProfile( l_role.getApplicationName() ).hasRole( 
+                            l_role ) ;
+                    
+                    // We'll just update the user node 
+                    node.refresh() ;
+                    m_manager.getTreeModel().nodeStructureChanged( node ) ;
+                }
+            }
+        }
+    }
+    
+    
+    /* 
+     * This method is invoked when the Grants of a role is selected or a role
+     * itself is selected.
+     * 
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.actions.SubMenuHandler#getSubMenu(javax.swing.tree.TreePath,
+     * org.apache.rms.ui.ocmm.Action)
+     */
+    public JMenuItem getSubMenu( TreePath a_path, Action a_action )
+    {
+        if ( isPermSelected( a_path ) )
+        {
+            MutableBitPermission l_perm = getPermission( a_path ) ;
+            JMenuItem l_item = new JMenuItem( a_action.getName() ) ;
+            String l_cmd = a_action.getCommand() + "|" + l_perm.getName() ;
+            l_item.setActionCommand( l_cmd ) ;
+            l_item.setToolTipText( "Revoke permission " + l_perm.getName() ) ; 
+            l_item.addActionListener( this ) ;
+            l_item.setIcon( Images.load( a_action.getIcon() ) ) ;
+            return l_item ;
+        }
+        
+        JMenu l_menu = new JMenu( a_action.getName() ) ;
+        MutableRole l_role = getRole( a_path ) ;
+
+        l_menu.setIcon( Images.load( a_action.getIcon() ) ) ; 
+        l_menu.setToolTipText( "Revoke a permission from role " 
+                + l_role.getName() ) ;
+        
+        ArrayList l_items = new ArrayList() ;
+        Iterator l_list = l_role.getGrants() ;
+        while ( l_list.hasNext() )
+        {
+            l_items.add( l_list.next() ) ;
+        }
+
+        for ( int ii = 0; ii < l_items.size(); ii++ )
+        {
+            BitPermission l_item = ( BitPermission ) l_items.get( ii ) ;
+            JMenuItem l_menuItem = new JMenuItem( l_item.getName() ) ;
+            l_menu.add( l_menuItem ) ;
+                
+            String l_cmd = a_action.getCommand() + "|" + l_item.getName() ;
+            l_menuItem.setActionCommand( l_cmd ) ;
+            l_menuItem.setToolTipText( "Revoke permission " + l_item.getName() 
+                    + " from Role " + l_role.getName() ) ;
+            l_menuItem.addActionListener( this ) ;
+            l_menuItem.setIcon( Images.load( a_action.getIcon() ) ) ;
+        }
+            
+        return l_menu ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#getCommand()
+     */
+    public String getCommand()
+    {
+        return ACTION_COMMAND ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#handles(org.apache.rms.ui.ocmm.Action)
+     */
+    public boolean handles( Action action )
+    {
+        return action.getCommand().equals( ACTION_COMMAND ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.actions.MenuHandler#isForItem()
+     */
+    public boolean isForItem()
+    {
+        return false ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/SubMenuHandler.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/actions/SubMenuHandler.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,43 @@
+/*
+ *   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.rms.ui.actions ;
+
+
+import javax.swing.JMenuItem ;
+import javax.swing.tree.TreePath ;
+
+import org.apache.rms.ui.ocmm.Action ;
+
+
+/**
+ * Some handler's are very special since they manage sub menu's as opposed to
+ * single menu items.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface SubMenuHandler extends MenuHandler
+{
+    /**
+     * Gets a new submenu for associated with this handler. 
+     * 
+     * @param path the path to the selected component
+     * @param action the action
+     * @return the submenu
+     */
+    JMenuItem getSubMenu( TreePath path, Action action ) ;
+}

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/closefile.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/help.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/plain/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/16x16/shadow/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/plain/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/24x24/shadow/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/plain/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/earth.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/32x32/shadow/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/plain/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/.cvsignore
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/.cvsignore	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+Thumbs.db

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/add2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/application_server.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/at.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_glass_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_ball_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_square_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_blue.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_green.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_red.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/bullet_triangle_yellow.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/delete2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/earth_lock.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/environment.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_bronze.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_gold_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/goblet_silver.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/home.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_error.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_information.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_new.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_ok.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_view.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_card_warning.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/id_cards.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/joypad.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/key2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/keys.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/replace2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_add.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_delete.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/user1_refresh.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users3_preferences.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users_back.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/users_family.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman1.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman2.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman3.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/woman4.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/48x48/shadow/worker.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/images/status.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/src/java/org/apache/rms/ui/openfile.gif
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/xdocs/images/mmc.png
==============================================================================
Binary file. No diff available.

Added: incubator/directory/rms/trunk/gui/main/xdocs/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/xdocs/index.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <body>
+    <properties>
+      <author email="akarasulu@apache.org">Alex Karasulu</author>
+      <title>RMS Management Console (RMC)</title>
+    </properties>
+    
+    <section name="RMS Management Console">
+      <p>
+        Welcome to the RMS Management Console Home Page!
+      </p>
+      <p>
+        The RMS Management Console or RMC is used to manage the entities within
+        a realm.  Applications, users, profiles, permissions, roles et. cetera.
+        are managed by environment operators using this console application 
+        which directly alters the authoritative RMS datastore.
+      </p>
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/main/xdocs/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/xdocs/navigation.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <title>RMS Management Console (RMC)</title>
+  <body>
+    <links>
+      <item name="RMS" href="http://openrms.sourceforge.net"/>
+      <item name="RMS" href="http://openrms.sourceforge.net"/>
+    </links>
+    
+    <menu name="About RMC">
+      <item name="Requirements" href="requirements.html"/>
+      <item name="Random Thoughts" href="requirements.html"/>
+    </menu>
+  </body>
+</project>
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/main/xdocs/requirements.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/xdocs/requirements.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <body>
+    <properties>
+      <author email="akarasulu@apache.org">Alex Karasulu</author>
+      <title>Rms Management Console Requirements</title>
+    </properties>
+    
+    <section name="Rms Management Console Requirements">
+      <subsection name="UI Description">
+        <p>
+          The UI will be designed to resemble the Microsoft Management Console 
+          (MMC) application.  Snap-ins for the Rms console like MMC snap-ins
+          will have other snap-ins associated with them heirarchically.  The
+          snap-ins and their heirarchy will be displayed like the MMC in a tree
+          on the left hand side of a split pane.
+        </p>
+        
+        <p>
+          On the right hand side of the split pane plugins can display within a
+          table any information they would like.  Basically selecting a plugin
+          node in the tree hands over control of this area to the right to that
+          plugin.  The plugin may populate the table with what ever content it
+          needs as well as change the popup menus triggered on the cells of the
+          table.
+        </p>
+        
+        <p>
+          On the tree display when expanding a plugin it is upto the plugin to
+          return the set of child plugins to display.  Each subordinate plugin
+          when selected displays rows in the table to the right of the split 
+          pan in accordance with the context of the plugin.  Here's what the 
+          MMC looks like to show the kind of UI we are talking about:
+        </p>
+        <center><img src="images/mmc.png"/></center>
+      </subsection>
+      <subsection name="Design Aspects">
+        <p>
+          A main application is required as a baseline where plugins can be 
+          snapped in.  The main UI and the plugins should all be IoC enabled
+          components.  There will be initially two plugins: one to manage users
+          and another to manage applications.
+        </p>
+        
+        <p>
+          Let's explore the application plugin.  This plugin when selected 
+          will list the set of applications in the system within the 
+          table to the right hand side.  If the plugin's node in the tree on the
+          left hand side is expanded then all the applications are displayed in
+          the tree.  When application nodes are selected they display two 
+          containers: one for roles and another for permissions.  When expanded
+          the application node displays these two child nodes.  When these nodes
+          are selected the set or roles or permissions respectively are listed
+          within the table to the right.  Also when expanded these nodes display
+          the roles or permissions respectively within the tree on the left.  
+        </p>
+        
+        <p>
+          The user plugin will enable the management of users and user 
+          application authorization profiles.  The plugin when expanded in the
+          tree will list the set of users.  When selected the table to the right
+          will display these users as rows in the table.  Users when expanded
+          will display profiles for various applications in the system.  Each
+          profile will then display containers for the roles, grants and denials
+          of permissions in the associated application for that profile.
+        </p>
+      </subsection>
+    </section>
+    <section name="Random Thoughts On Tree Based Navigation">
+      <p>
+        The main console application will need to expose access to its tree
+        and table realestate.  I have no idea on how this could be done right
+        now.  Perhaps its best to explore what a standard UI design would 
+        entail and then refactor that to use plugins. That's probably the 
+        best approach to weed out the better plugin based design.
+      </p>
+
+      <subsection name="Navigation Based on Database Metadata">
+        <p>
+          We need to build a tree model based on the contents of the database.
+          Basically clicking on an application's roles tree node should list
+          the roles in the application.  We have a drill down mechanism with
+          the tree to explore RMS contents.  Not every node in the tree can be
+          logically inferred or can it?  Take for example the containers of 
+          objects like roles and permissions - can we infer the need to create
+          the container for these objects that are of zero to many cardinality
+          in relation to the application?  They really can be but its a PITA to 
+          do this with reflection or reading the database's meta data to devise
+          a generic navigation just for this small set of object types.  
+        </p>
+        
+        <p>
+          For the heck of it let's just explore the idea of building a tree 
+          navigator that uses database metadata.  Such a navigator must be given
+          a set of seed tables.  These seed tables are the child nodes right 
+          under the root of the tree.  The metadata is used to determine the 
+          tables that have a foreign key to the seed table.  For simplicity, let
+          us automatically presume the cardinality of the fk relation to always 
+          be zero or more.  This way every child table with a fk automatically 
+          represents a container node under the parent table.  This container 
+          node will contain the records of the child table within it.  The fk 
+          relations to the children will also be evaluated to determine their 
+          child containers as well.
+        </p>
+        
+        <p>
+          This sounding pretty cool now.  Let's step through the events of 
+          exploring the application seed node.  The application node is 
+          represented as a container with the label 'applications'.  Expanding
+          this branch node lists all the applications by name under it.  These
+          applications can in turn be expanded to display two child containers
+          labeled, 'roles' and 'permissions'.  Expanding the permissions 
+          container would list the set of permissions associated with the 
+          application.  The permissions themselves are terminal and cannot be
+          expanded.  Expansion of the roles container displays the roles of the
+          user.  Now each role is referenced by a user profile but we do not
+          want to display the user profile under each role or do we?  Also roles
+          have grants but these grants are a hunk of binary data that cannot be
+          displayed appropriately using this scheme based on database metadata.
+          A special editor is required to display the actual list of grants 
+          rather than this blob of binary data.  These are the areas that are
+          gray with respect to this technique.
+        </p>
+        
+        <p>
+          Furthermore we need a way to determine how to name container nodes and
+          the labels of the records they use.  A mapping is required to 
+          associate a container label for a table and a container child node 
+          label for each row in that table.  The container label is easy.  The 
+          container label map just says for table 'FOO', name the container 
+          'Foos' and if there is an 'S' or 's' at the end of the table name then
+          don't add the extra 's' for the container name.  Now the child nodes
+          in the container can be named using a map that specifies the column 
+          value to use as the container's unique name for the child node.  So 
+          for a role the ROLE_NAME column could be used.  In this case the value
+          for the ROLE_NAME would be used to name the child node in the roles 
+          container.
+        </p>
+      </subsection>
+      <subsection name="Navigation Based on Object Model Metadata">
+        <p>
+          This database metadata based navigation takes us to the records of 
+          interest.  But keep in mind we really should not be dealing with 
+          database records or constructs at this point.  We should be using the
+          value objects created from the database.
+        </p>
+        <p>
+          So then where does this leave us.  Well we now have to deal with 
+          reflection to understand the containment heirarchy.  The metadata 
+          we're looking for is now based on class and interface information 
+          which we use reflection to get to.  This may actually be better for us
+          because it reduces some of the complications of the database metadata 
+          based navigation above.  For example the issue of flowing over into 
+          profiles because of a fk to the APP_ROLES table from the 
+          USER_APP_PROFILE_ROLES table is no longer there.  The Role interface 
+          does not allow access to the profiles that reference the Role.  Also 
+          the Role grants which are efficiently stored in the database as binary
+          data no longer represent scaler quantities.  They become containers 
+          that can reveal the set of permissions granted to the role or those 
+          that are associated with the role.  So we actually gain more from the 
+          padding that reflection on interfaces gives us when building such a 
+          navigation system.
+        </p>
+        
+        <p>
+          There are however some problems that will result.  The relationships
+          between objects are often not so clear when container classes are 
+          used to return objects rather than using arrays of those class 
+          instances.  Take for example return types using an Iterator.  The
+          type of the underlying objects returned is lost.  We have to infer
+          the type based on some naming convention or provide some extra meta
+          information.
+        </p>
+        
+        <p>
+          Let's conduct the same exercise using reflection for navigation rather
+          than using database metadata.  Again some seed information is 
+          required for the first teir of child nodes under the root of the tree.
+          When using database metadata the seeds were table names, which allowed
+          the lookup of records in those tables when the container for the table
+          was expanded.  The seeds for reflection require a class or interface
+          name as well as a factory like object for listing the set of objects 
+          that implement that interface.  The RMS top level facade will be that
+          factory but I don't think we should use that.  Instead a new set of
+          factories should be created to return these objects.  Even for objects
+          that are returned by the parent we should expose these 'factories'.
+          Perhaps a 'factory' is not a good term for these objects that help
+          operate on the containment trees of other objects.  These peer 
+          factories or what ever could also provide extra hints and meta data 
+          not easily inferred through reflection regarding the composition of 
+          the class the factory is dedicated to.  Basically the factory can 
+          either describe or clarify which functions to use to acquire child 
+          objects or a listing for them so reflection can proceed.  The factory 
+          can also provide other things like menus and editors for child 
+          elements and so on.
+        </p>
+        
+        <p>
+          This route is sounding much better now.  There is a well defined node 
+          type helper or container class defined (the helper factory thingy we
+          talked about above).  An instance of this class is registered for each
+          data type involved in the containment hierary.  Any objects that do
+          not have registered helper containers for their classes or interfaces
+          are deamed scalar objects and are not expandable as container objects.
+        </p>
+      </subsection>
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/main/xdocs/rt.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/main/xdocs/rt.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Random Thoughts</title>
+  </properties> 
+  
+ <body>
+  <section name="Random Thoughts">
+    
+     <subsection name="30-JAN-2004: Experiment with Navigation">
+      <p>
+        I'm just going to implement a brut force tree navigation for now which
+        can later be refactored into something more elegant.  Here are my 
+        reasons for this:
+      </p>
+      <ul>
+        <li>
+          Forgot swing stuff and need to get refamiliarized before I can draw
+          out an elaborate design around these APIs to make the navigation more
+          generic.   
+        </li>
+        <li>
+          Brute force code will be faster to write and I can start taking notes 
+          as ideas come up about where to take the design.
+        </li>
+        <li>
+          Can always refactor!
+        </li>
+      </ul>
+     </subsection>
+     
+   </section>
+  </body>
+</document>

Added: incubator/directory/rms/trunk/gui/navtree/.classpath
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/.classpath	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+    <classpathentry kind="src" path="src/java"/>
+    <classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.0.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.jar"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-api"/>
+    <classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/directory/rms/trunk/gui/navtree/.project
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/.project	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>rms-gui-navtree</name>
+	<comment>The RMS Management Console has to the left of a split pane a navigation tree showing the object model for the domain. This project contains the code for that navigation tree.</comment>
+	<projects>
+		<project>rms-gui-ocmm-api</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: incubator/directory/rms/trunk/gui/navtree/navtree.iml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/navtree.iml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="junit-3.8.1.jar" level="application" />
+    <orderEntry type="module" module-name="ocmm-api" />
+    <orderEntry type="module" module-name="ocmm-impl" />
+    <orderEntry type="module" module-name="ocmm-spi" />
+    <orderEntry type="library" name="commons-beanutils-1.6.jar" level="application" />
+    <orderEntry type="library" name="commons-collections-3.0.jar" level="application" />
+  </component>
+</module>
+

Added: incubator/directory/rms/trunk/gui/navtree/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/project.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+    <extend>${basedir}/../../project.xml</extend>
+    <id>rms-gui-navtree</id>
+    <name>RMS Management Console Navigation Tree</name>
+    <package>org.apache.rms.ui.navtree</package>
+    <currentVersion>SNAPSHOT</currentVersion>
+
+    <shortDescription>RMS Management Console Navigation Tree</shortDescription>
+    <description>
+      The RMS Management Console has to the left of a split pane a navigation
+      tree showing the object model for the domain.  This project contains
+      the code for that navigation tree.
+    </description>
+    
+    <dependencies>
+
+      <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.0</version>
+        <url>http://jakarta.apache.com/commons/lang</url>
+      </dependency>
+
+      <dependency>
+        <groupId>commons-collections</groupId>
+        <artifactId>commons-collections</artifactId>
+        <version>3.0</version>
+        <url>http://jakarta.apache.com/commons/collections</url>
+      </dependency>
+
+      <dependency>
+        <groupId>commons-beanutils</groupId>
+        <artifactId>commons-beanutils</artifactId>
+        <version>1.6</version>
+        <url>http://jakarta.apache.com/commons/collections</url>
+      </dependency>
+
+      <dependency>
+        <groupId>incubator-directory</groupId>
+        <artifactId>rms-gui-ocmm-api</artifactId>
+        <version>SNAPSHOT</version>
+        <url>http://openrms.sourceforge.net/rms/gui/ocmm/api</url>
+      </dependency>
+
+    </dependencies>
+</project>
+
+

Added: incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/BeanTreeNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/BeanTreeNode.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,192 @@
+/*
+ *   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.rms.ui.navtree ;
+
+
+import javax.swing.tree.DefaultMutableTreeNode ;
+
+import java.lang.reflect.InvocationTargetException ;
+
+import org.apache.commons.beanutils.BeanUtils ;
+
+import org.apache.rms.ui.ocmm.Container ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+
+
+/**
+ * A node holding a bean.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class BeanTreeNode extends DefaultMutableTreeNode 
+    implements ContainmentTreeNode
+{
+    // private final TreeNode m_parent ;
+    private final ContainmentMetadata m_metadata ;
+    private final ContainmentModel m_model ;
+    
+
+    /**
+     * Creates a TreeNode containing a bean in the containment model.
+     * 
+     * @param a_bean the bean representing this node
+     * @param a_model the containment model
+     */
+    public BeanTreeNode( Object a_bean, ContainmentModel a_model )
+    {
+        super( a_bean, true ) ;
+        m_metadata = a_model.getMetadata( a_bean.getClass() ) ;
+        m_model = a_model ;
+        
+        init() ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see javax.swing.tree.TreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return ! m_metadata.isLeaf() ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.tree.TreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return m_metadata.isLeaf() ;
+    }
+
+
+    public String toString()
+    {
+        String l_key = m_metadata.getKeyedBy() ;
+        if ( m_metadata.isKeyedByProperty() )
+        {
+            try
+            {
+                return BeanUtils.getProperty( getUserObject(), l_key ) ;
+            }
+            catch( NoSuchMethodException e )
+            {
+                e.printStackTrace() ;
+            }
+            catch( IllegalAccessException e )
+            {
+                e.printStackTrace() ;
+            }
+            catch( InvocationTargetException e )
+            {
+                e.printStackTrace() ;
+            }
+            
+            return "FAILED-NAME-PROPERTY-LOOKUP" ;
+        }
+        else 
+        {
+            return l_key ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#getContainmentMetadata()
+     */
+    public ContainmentMetadata getContainmentMetadata()
+    {
+        return m_metadata ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#isBeanNode()
+     */
+    public boolean isBeanNode()
+    {
+        return true ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#isContainerNode()
+     */
+    public boolean isContainerNode()
+    {
+        return false ;
+    }
+    
+    
+    /**
+     * Gets a child container node by name.
+     * 
+     * @param a_name the name of the child container node
+     * @return the child container tree node
+     */
+    public ContainerTreeNode getContainerChild( String a_name )
+    {
+        ContainerTreeNode l_ctn = null ;
+        
+        for ( int ii = 0; ii < getChildCount(); ii++ )
+        {
+            l_ctn = ( ContainerTreeNode ) getChildAt( ii ) ;
+            if ( l_ctn.getContainer().getName().equalsIgnoreCase( a_name ) ) 
+            {
+                return l_ctn ;
+            }
+        }
+        
+        return l_ctn ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#refresh()
+     */
+    public void init()
+    {
+        if ( ! m_metadata.isLeaf() )
+        {
+            Container[] l_containers = m_metadata.getContainers() ;
+            for ( int ii = 0; ii < l_containers.length; ii++ )
+            {
+                ContainerTreeNode l_child = new ContainerTreeNode( this, 
+                        l_containers[ii], m_model ) ;
+                add( l_child ) ;
+                l_child.setParent( this ) ;
+            }
+        }
+    }
+    
+    
+    public void refresh()
+    {
+        if ( ! m_metadata.isLeaf() )
+        {
+            Container[] l_containers = m_metadata.getContainers() ;
+            for ( int ii = 0; ii < l_containers.length; ii++ )
+            {
+                ContainerTreeNode l_child = 
+                    ( ContainerTreeNode ) getChildAt( ii ) ;
+                l_child.refresh() ;
+            }
+        }
+    }
+}

Added: incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainerTreeNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainerTreeNode.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,276 @@
+/*
+ *   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.rms.ui.navtree ;
+
+
+import java.util.Vector ;
+import java.util.HashSet ;
+import java.util.Iterator ;
+
+import javax.swing.tree.MutableTreeNode ;
+import javax.swing.tree.DefaultMutableTreeNode ;
+
+import org.apache.commons.beanutils.PropertyUtils ;
+import org.apache.commons.collections.IteratorUtils ;
+import org.apache.commons.collections.CollectionUtils ;
+
+import org.apache.rms.ui.ocmm.Container ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+
+
+/**
+ * A container node.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class ContainerTreeNode extends DefaultMutableTreeNode 
+    implements ContainmentTreeNode
+{
+    private final ContainmentMetadata m_metadata ;
+    private final ContainmentModel m_model ;
+    private final Container m_container ;
+    private BeanTreeNode m_parent ;
+
+
+    /**
+     * Creates a container tree node based on a container of objects under a
+     * parent using a containment model.
+     * 
+     * @param parent the parent of this node
+     * @param container the container this node is associated with
+     * @param model the containment model to use while creating children
+     */
+    public ContainerTreeNode( BeanTreeNode parent, Container container,
+                              ContainmentModel model )
+    {
+        super( container, true ) ;
+        m_container = container ;
+        m_metadata = model.getMetadata( m_container.getContainedType() ) ;
+        m_model = model ;
+        m_parent = parent ;
+        
+        init() ;
+    }
+    
+    
+    /**
+     * Gets an iteration over the set of contained elements.
+     * 
+     * @return the iteration over contained elements
+     */
+    private Iterator getIterator( Object bean )
+    {
+        Object l_retval = null ;
+        String l_prop = m_container.getIterationProperty() ;
+        
+        try 
+        {
+            l_retval = PropertyUtils.getProperty( bean, l_prop ) ;
+        }
+        catch( Exception e )
+        {
+            e.printStackTrace() ;
+        }
+        
+        return IteratorUtils.getIterator( l_retval ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see javax.swing.tree.TreeNode#getAllowsChildren()
+     */
+    public boolean getAllowsChildren()
+    {
+        return true ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see javax.swing.tree.TreeNode#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return false ;
+    }
+
+    
+    /*
+     *  (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return m_container.getName() ;
+    }
+    
+    
+    /**
+     * Gets the container this node represents.
+     * 
+     * @return the container for this node.
+     */
+    public Container getContainer()
+    {
+        return m_container ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#getContainmentMetadata()
+     */
+    public ContainmentMetadata getContainmentMetadata()
+    {
+        return m_metadata ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#getUserObject()
+     */
+    public Object getUserObject()
+    {
+        return m_container ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#isBeanNode()
+     */
+    public boolean isBeanNode()
+    {
+        return false ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#isContainerNode()
+     */
+    public boolean isContainerNode()
+    {
+        return true ;
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see javax.swing.tree.MutableTreeNode#setParent(
+     * javax.swing.tree.MutableTreeNode)
+     */
+    public void setParent( MutableTreeNode node )
+    {
+        super.setParent( node ) ;
+        m_parent = ( BeanTreeNode ) node ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#refresh()
+     */
+    public void init()
+    {
+        Iterator l_list = getIterator( m_parent.getUserObject() ) ;
+        while( l_list.hasNext() )
+        {
+            BeanTreeNode l_child = null ;
+            Object l_bean = l_list.next() ;
+            
+            if ( l_bean != null )
+            {    
+                l_child = new BeanTreeNode( l_bean, m_model ) ;
+            }
+            else
+            {
+                continue ;
+            }
+
+            add( l_child ) ;
+            l_child.setParent( this ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentTreeNode#refresh()
+     */
+    public void refresh()
+    {
+        HashSet l_set = new HashSet() ;
+        CollectionUtils.addAll( l_set, 
+                getIterator( m_parent.getUserObject() ) ) ;
+        
+        if ( l_set.isEmpty() )
+        {
+            removeAllChildren() ;
+        }
+        
+        /*
+         * If there are children start looking for ones to delete.  Any child 
+         * that is not within the set of newly queried children l_set is to be
+         * removed from the children vector.  To do this properly the vector
+         * must be cloned while deleting.
+         */
+        if ( getChildCount() != 0 )
+        {    
+            // Clone the children so we can delete while iterating.
+            Vector l_current = ( Vector ) children.clone() ;
+            
+            for ( int ii = 0; ii < l_current.size(); ii++ )
+            {
+                BeanTreeNode l_childNode = ( BeanTreeNode ) l_current.get( ii ) ;
+                
+                // remove children we already have from the set but leave child
+                if ( l_set.contains( l_childNode.getUserObject() ) )
+                {
+                    l_set.remove( l_childNode.getUserObject() ) ;
+                }
+                // children not present in the set are removed
+                else
+                {
+                    // removal of a child shifts elements above one pos down
+                    remove( l_childNode ) ;
+                }
+                
+                l_childNode.refresh() ;
+            }
+        }
+        
+        /*
+         * what ever is left in the set after this process must be added to
+         * this node as new children - so we build and add them here:
+         */
+        Iterator l_list = l_set.iterator() ;
+        while( l_list.hasNext() )
+        {
+            BeanTreeNode l_child = null ;
+            Object l_bean = l_list.next() ;
+            
+            if ( l_bean != null )
+            {    
+                l_child = new BeanTreeNode( l_bean, m_model ) ;
+            }
+            else
+            {
+                continue ;
+            }
+
+            add( l_child ) ;
+            l_child.setParent( this ) ;
+        }
+    }
+}

Added: incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainmentTreeNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/navtree/src/java/org/apache/rms/ui/navtree/ContainmentTreeNode.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,72 @@
+/*
+ *   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.rms.ui.navtree ;
+
+
+import javax.swing.tree.MutableTreeNode ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+
+
+/**
+ * The interface supported by all TreeNodes in a containment tree.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface ContainmentTreeNode extends MutableTreeNode
+{
+    /**
+     * Tests whether or not this node is a node that contains a bean instead of
+     * a collection of beans.
+     * 
+     * @return true if node contains a bean, false if node contains a collection
+     */
+    boolean isBeanNode() ;
+    
+    /**
+     * Tests whether or not this node contains a collection of beans.
+     * 
+     * @return true if node contains a collection of beans, false if it is
+     * just a bean node.
+     */
+    boolean isContainerNode() ;
+    
+    /**
+     * Gets the object associated with this node.  If this is a container of 
+     * beans it should return the Container object.  If this is a bean node then
+     * it should return the bean.  If access to the contained beans of a 
+     * container node is needed then the child nodes can be gotten.
+     * 
+     * @return the bean or a Container for a collection of beans.
+     */
+    Object getUserObject() ;
+    
+    /**
+     * Gets the containment information for the bean's class if this is a bean
+     * node or the containment information for the class of the contained beans
+     * if this is a container node.
+     * 
+     * @return the ContainmnetMetadata for the bean class of this node or the 
+     * bean class of the beans contained by this node.
+     */
+    ContainmentMetadata getContainmentMetadata() ;
+    
+    /**
+     * Refreshes this node.
+     */
+    void refresh() ;
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/.classpath
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/.classpath	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+    <classpathentry kind="src" path="src/java"/>
+    <classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/>
+    <classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/directory/rms/trunk/gui/ocmm/api/.project
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/.project	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<projectDescription>
+  <name>rms-gui-ocmm-api</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

Added: incubator/directory/rms/trunk/gui/ocmm/api/maven.log
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/maven.log	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,331 @@
+2004-04-06 15:14:21,179 INFO  org.apache.maven.plugin.PluginManager - Initializing Plugins!
+2004-04-06 15:14:21,226 INFO  org.apache.maven.plugin.PluginManager - Unpacking plugins from directory --> j:\apache\maven\maven-1.0-beta-10\plugins
+2004-04-06 15:14:21,336 INFO  org.apache.maven.plugin.PluginManager - Processing unpacked plugins in C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 15:14:21,336 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-deploy-plugin-1.1
+2004-04-06 15:14:21,492 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-plexus-plugin-0.2
+2004-04-06 15:14:21,523 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-runner-plugin-0.2
+2004-04-06 15:14:21,539 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-sea-plugin-1.0
+2004-04-06 15:14:21,539 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-vdoclet-plugin-1.0
+2004-04-06 15:14:21,539 INFO  org.apache.maven.plugin.PluginCacheManager - Saving caches to C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 15:14:21,586 INFO  org.apache.maven.plugin.PluginManager - Finished initializing Plugins!
+2004-04-06 15:14:25,070 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1d33a6b. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 15:14:25,070 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@7976c1. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 15:14:25,086 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@f892a4. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 15:14:25,086 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1636e4e. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 15:14:26,461 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@63a721. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 15:14:26,773 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@63a721. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)
+	at com.werken.werkz.jelly.AttainGoalTag.doTag(AttainGoalTag.java:134)
+	at org.apache.maven.jelly.tags.werkz.LazyAttainGoalTag.doTag(LazyAttainGoalTag.java:107)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)

Added: incubator/directory/rms/trunk/gui/ocmm/api/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/maven.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1 @@
+<project default="jar:install"/>

Added: incubator/directory/rms/trunk/gui/ocmm/api/ocmm-api.iml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/ocmm-api.iml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="commons-lang-2.0.jar" level="application" />
+  </component>
+</module>
+

Added: incubator/directory/rms/trunk/gui/ocmm/api/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/project.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+  <extend>${basedir}/../project.xml</extend>
+  <id>rms-gui-ocmm-api</id>
+  <name>Obect Containment Meta Model</name>
+  <package>org.apache.rms.ui.ocmm</package>
+  <currentVersion>SNAPSHOT</currentVersion>
+  <shortDescription>
+    API for for object containment heirarchy meta data model
+  </shortDescription>
+  
+  <dependencies>
+    <dependency>
+      <artifactId>commons-lang</artifactId>
+      <groupId>commons-lang</groupId>
+      <version>2.0</version>
+    </dependency>
+  </dependencies>
+</project>

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Action.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Action.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,70 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * Defines an action that can be performed.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface Action
+{
+    /** no contexts corresponds to all contexts - this is the default */
+    String[] ALL_CONTEXTS = new String[0] ;
+    
+    /**
+     * Gets the name (a.k.a. displayed label) of this Action.
+     * 
+     * @return the name of this Action
+     */
+    String getName() ;
+    
+    /**
+     * Gets this Action's command String.
+     * 
+     * @return this Action's command String
+     */
+    String getCommand() ;
+
+    /**
+     * Gets the contexts where this Action is applicable.  If an empty array
+     * is returned and or that array equals ALL_CONEXTS then the Action is 
+     * effective in all contexts.  When no context is defined we default to
+     * all contexts.
+     * 
+     * @return the contexts for this Action
+     */
+    String[] getContexts() ;
+
+    /**
+     * Gets a short discription for this Action.
+     * 
+     * @return this Action's description
+     */
+    String getDescription() ;
+
+    /**
+     * Gets the IconUsage descriptor associated with this Action.
+     * 
+     * @return the IconUsage descriptor associated with this Action
+     */
+    IconUsage getIcon() ;
+}
+
+

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Container.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/Container.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,68 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * Describes a container node within a visual containment tree of a non-scalar
+ * property for a data type.  Basically any objects contained by a data type 
+ * with a cardinality of x or more are managed as contained objects.  This 
+ * interfaces describes the type of objects contained, the name for the 
+ * container, and the bean property to use to access an iteration of elements
+ * contained within this container.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface Container
+{
+    /**
+     * Gets the name to use for the container.
+     * 
+     * @return the container's name
+     */
+    String getName() ;
+    
+    /**
+     * Gets the class of the types contained by this container.
+     * 
+     * @return the class of the contained items
+     */
+    Class getContainedType() ;
+    
+    /**
+     * Gets the property to use on the parent containing object to get an 
+     * iteration over the contained set of items.
+     * 
+     * @return the bean property to use to get an iteration over the elements
+     */
+    String getIterationProperty() ;
+    
+    /**
+     * Gets the Actions applicable to this Container.
+     * 
+     * @return the actions applicable to this Container
+     */
+    Action[] getActions() ;
+    
+    /**
+     * Gets the IconUsage descriptor for this Container.
+     * 
+     * @return the IconUsage descriptor for this Container
+     */
+    IconUsage getIcon() ;
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentMetadata.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentMetadata.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,94 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * A metadata descriptor for how object's of a data type are to be represented 
+ * in a visual containment tree.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface ContainmentMetadata
+{
+    /**
+     * Gets the class associated with this ContainmentMetadata.
+     * 
+     * @return the class for this ContainmentMetadata
+     */
+    Class getTypeClass() ;
+    
+    /**
+     * Determines whether or not objects of this data type are leaves or not.
+     * 
+     * @return true if objects are leaves, false otherwise.
+     */
+    boolean isLeaf() ;
+    
+    /**
+     * Gets whether or not the keyedBy value returned is the name of a bean
+     * property on the object or is a constant label to use for all objects of
+     * this type.
+     * 
+     * @return true if the keyedBy value is a property name, false if it is a
+     *      constant name
+     */
+    boolean isKeyedByProperty() ;
+    
+    /**
+     * Gets either the name of a bean property to use for getting an objects
+     * key value or a constant name to use for all objects of the associated 
+     * data type.  Use the isKeyedByProperty to determine what kind of value
+     * is returned.
+     * 
+     * @return the bean property name or a constant name for object keys
+     */
+    String getKeyedBy() ;
+    
+    /**
+     * Gets the set of bean properties listing scalar values.
+     * 
+     * @return the set of scalar bean properties.
+     */
+    String[] getScalarProperties() ;
+
+    /**
+     * Gets the containers displayed as non-leaf child nodes under objects of
+     * the associated data type.  Note that if isLeaf returns true a zero length
+     * container array will be returned instead of null.  If isLeaf returns 
+     * false a non-zero length array will be returned.
+     * 
+     * @return the containers under objects of this type
+     */
+    Container[] getContainers() ;
+    
+    /**
+     * Gets the actions applicable to the data type represented by this 
+     * ContainmentMetadata.
+     * 
+     * @return the actions applicable to the data type
+     */
+    Action[] getActions() ;
+
+    /**
+     * Gets the set of IconUsage descriptors defined for this metadata.
+     * 
+     * @return the set of IconUsage descriptors
+     */
+    IconUsage[] getIcons() ;
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentModel.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContainmentModel.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,38 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * Contains metadata for types, descibing the containment characteristics of
+ * interest to be displayed within a visual containment tree.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface ContainmentModel
+{
+    /**
+     * Gets containment metadata describing the manner in which the contained
+     * data type should appear in the visual containment tree.
+     * 
+     * @param clazz the class to lookup containment metadata for
+     * @return the containment metadata, or null if metadata does not exist for
+     *      that class
+     */
+    ContainmentMetadata getMetadata( Class clazz ) ;
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContextUtils.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/ContextUtils.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,105 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+import org.apache.commons.lang.StringUtils ;
+
+
+/**
+ * Utility methods for dealing with contexts.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class ContextUtils
+{
+    /**
+     * Tests to see if the path is matched by a set of contexts.
+     * 
+     * @param path of / separated node name to test for a match
+     * @param contexts the contexts of applicability
+     * @return true if the path is matched by the contexts, false if it does not
+     */
+    public static boolean matches( String path, String[] contexts ) 
+    {
+        // no context means all contexts are valid
+        if ( contexts.length == 0 )
+        {
+            return true ;
+        }
+        
+        for ( int ii = 0; ii < contexts.length; ii++ )
+        {    
+            if ( matches( path, contexts[ii] ) )
+            {
+                return true ;
+            }
+        }
+        
+        return false ;
+    }
+    
+    
+    /**
+     * Tests to see if the path is matched by a context.
+     * 
+     * @param path of / separated node name to test for a match
+     * @param context the context 
+     * @return true if the path is matched by the context, false if it does not
+     */
+    public static boolean matches( String path, String context )
+    {
+        String[] l_comps = StringUtils.split( context, '/' ) ;
+        String[] l_pathComps = StringUtils.split( path, '/' ) ;
+        
+        if ( l_pathComps.length != l_comps.length )
+        {
+            return false ;
+        }
+        
+        for ( int ii = 0; ii < l_comps.length; ii++ )
+        {
+            if ( l_comps[ii].equals( "root" ) )
+            {
+                if ( l_comps.length == 1 && l_pathComps.length == 1 )
+                {
+                    return true ;
+                }
+                else if ( l_comps.length > 1 && l_pathComps.length > 1 )
+                {
+                    continue ;
+                }
+                else if ( l_comps.length == 1 )
+                {
+                    return false ;
+                }
+            }
+
+            if ( l_comps[ii].equals( "bean" ) )
+            {
+                continue ;
+            }
+            else if ( ! l_pathComps[ii].equals( l_comps[ii] ) )
+            {
+                return false ;
+            }
+        }
+        
+        return true ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultAction.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultAction.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,166 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+import org.apache.commons.lang.Validate ;
+
+
+/**
+ * A defualt Action bean.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DefaultAction implements Action
+{
+    /** the icon for this Action */
+    private final IconUsage m_icon ;
+    /** the name of this Action */
+    private final String m_name ;
+    /** the command for this Action */
+    private final String m_command ;
+    /** the contexts this Action is applied to */
+    private final String[] m_contexts ;
+    /** a description for this Action */
+    private String m_description ;
+    
+
+    /**
+     * Creates a default Action using all the required properties.  
+     * 
+     * If the contexts are null or set to an empty array the contexts property 
+     * is set to Action.ALL_CONTEXTS to denote this Action's being applicable
+     * to all contexts.
+     *  
+     * @param name the name of this Action
+     * @param command the command for this Action
+     * @param contexts the contexts this Action is applied to
+     * @param description a description for this Action
+     * @param icon the icon for this Action
+     * @see Action.ALL_CONTEXTS
+     */
+    public DefaultAction( String name, String command, String[] contexts,
+                          String description, IconUsage icon )
+    {
+        Validate.notNull( name, "Action must have non-null name" ) ;
+        m_name = name ;
+        
+        Validate.notNull( command, "Action must have non-null command" ) ;
+        m_command = command ;
+        
+        if ( contexts != null && contexts.length > 0 )
+        {    
+            m_contexts = contexts ;
+        }
+        else
+        {
+            m_contexts = ALL_CONTEXTS ;
+        }
+        
+        m_description = description ;
+        m_icon = icon ;
+    }
+    
+    
+    /**
+     * Creates a default Action without a description.
+     * 
+     * If the contexts are null or set to an empty array the contexts property 
+     * is set to Action.ALL_CONTEXTS to denote this Action's being applicable
+     * to all contexts.
+     *  
+     * @param a_name
+     * @param a_command
+     * @param a_contexts
+     * @see Action.ALL_CONTEXTS
+     */
+    public DefaultAction( String a_name, String a_command, String[] a_contexts )
+    {
+        this( a_name, a_command, a_contexts, null, null ) ;
+    }
+    
+    
+    /**
+     * Creates a default Action without a description applied to all contexts.
+     * 
+     * @param a_name
+     * @param a_command
+     * @see Action.ALL_CONTEXTS
+     */
+    public DefaultAction( String a_name, String a_command )
+    {
+        this( a_name, a_command, null, null, null ) ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Action#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Action#getCommand()
+     */
+    public String getCommand()
+    {
+        return m_command ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Action#getContexts()
+     */
+    public String[] getContexts()
+    {
+        return m_contexts ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Action#getDescription()
+     */
+    public String getDescription()
+    {
+        return m_description ;
+    }
+    
+    
+    /**
+     * Sets a short description for this Action.
+     * 
+     * @param a_description a short description for this Action
+     */
+    public void setDescription( String a_description )
+    {
+        m_description = a_description ;
+    }
+    
+    
+    /*
+     *  (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Action#getIcon()
+     */
+    public IconUsage getIcon()
+    {
+        return m_icon ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainer.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainer.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,110 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * A default Container of objects of the same data type.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DefaultContainer implements Container
+{
+    private final IconUsage m_icon ;
+    private final String m_name ;
+    private final Class m_type ;
+    private final String m_beanProp ;
+    private final Action[] m_actions ;
+    
+    
+    /**
+     * Creates a default Container.
+     * 
+     * @param a_name the name of the container
+     * @param a_type the data type of objects contained inside
+     * @param a_beanProp the bean property used to get at a set of values that
+     *      can be iterated over
+     * @see org.apache.commons.collections.IteratorUtils.getIterator(Object) for
+     *      more on what return types can be iterated over.
+     */
+    public DefaultContainer( String name, Class type, String beanProp,
+                             Action[] actions, IconUsage icon )
+    {
+        m_name = name ;
+        m_type = type ;
+        m_actions = actions ;
+        m_beanProp = beanProp ;
+        m_icon = icon ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.Container#getName()
+     */
+    public String getName()
+    {
+        return m_name ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.Container#getContainedType()
+     */
+    public Class getContainedType()
+    {
+        return m_type ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.Container#getIterationProperty()
+     */
+    public String getIterationProperty()
+    {
+        return m_beanProp ;
+    }
+    
+    
+    /*
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Container#getActions()
+     */
+    public Action[] getActions()
+    {
+        return m_actions ;
+    }
+    
+    
+    /*
+     *  (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return m_name ;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.Container#getIcon()
+     */
+    public IconUsage getIcon()
+    {
+        return m_icon ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentMetadata.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentMetadata.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,176 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+import org.apache.commons.lang.Validate ;
+
+
+/**
+ * The default containment metadata implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DefaultContainmentMetadata implements ContainmentMetadata
+{
+    public static final IconUsage[] EMPTY_ICONS = new IconUsage[0] ;
+    public static final String[] EMPTY_SCALARS = new String[0] ;
+    public static final Action[] EMPTY_ACTIONS = new Action[0] ;
+    public static final Container[] EMPTY_CONTAINERS = new Container[0] ;
+    
+    private final boolean m_isKeyedByProperty ;
+    private final Class m_type ;
+    private final Container[] m_containers ;
+    private final String m_keyedBy ;
+    private final String[] m_scalarProps ;
+    private final Action[] m_actions ;
+    private final IconUsage[] m_icons ;
+    
+    
+    /**
+     * Creates a default ContainmentMetadata instance.
+     * 
+     * @param a_type the type associated with this ContainmentMetadata
+     * @param a_containers the containers for this type, can be null
+     * @param a_scalarProps the scalar properties for this type, can be null
+     * @param a_keyedBy
+     * @param a_isKeyedByProperty
+     */
+    public DefaultContainmentMetadata( Class a_type, Container[] a_containers,
+                                       String[] a_scalarProps, String a_keyedBy,
+                                       Action[] a_actions, IconUsage[] a_icons,
+                                       boolean a_isKeyedByProperty )
+    {
+        Validate.notNull( a_type, "cannot have null type for metadata" ) ;
+        m_type = a_type ;
+        
+        Validate.notNull( a_keyedBy, "cannot have null keyedBy for metadata" ) ;
+        m_keyedBy = a_keyedBy ;
+        
+        if ( a_containers != null && a_containers.length > 0 )
+        {    
+            m_containers = a_containers ;
+        }
+        else
+        {
+            m_containers = EMPTY_CONTAINERS ;
+        }
+
+        if ( a_scalarProps != null && a_scalarProps.length > 0 )
+        {    
+            m_scalarProps = a_scalarProps ;
+        }
+        else
+        {
+            m_scalarProps = EMPTY_SCALARS ;
+        }
+        
+        if ( a_actions != null && a_actions.length > 0 )
+        {    
+            m_actions = a_actions ;
+        }
+        else
+        {
+            m_actions = EMPTY_ACTIONS ;
+        }
+
+        if ( a_icons != null && a_icons.length > 0 )
+        {    
+            m_icons = a_icons ;
+        }
+        else
+        {
+            m_icons = EMPTY_ICONS ;
+        }
+
+        m_isKeyedByProperty = a_isKeyedByProperty ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#getTypeClass()
+     */
+    public Class getTypeClass()
+    {
+        return m_type ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#isLeaf()
+     */
+    public boolean isLeaf()
+    {
+        return m_containers == EMPTY_CONTAINERS ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#isKeyedByProperty()
+     */
+    public boolean isKeyedByProperty()
+    {
+        return m_isKeyedByProperty ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#getKeyedBy()
+     */
+    public String getKeyedBy()
+    {
+        return m_keyedBy ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#getScalarProperties()
+     */
+    public String[] getScalarProperties()
+    {
+        return m_scalarProps ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentMetadata#getContainers()
+     */
+    public Container[] getContainers()
+    {
+        return m_containers ;
+    }
+
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.ContainmentMetadata#getActions()
+     */
+    public Action[] getActions()
+    {
+        return m_actions ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.ContainmentMetadata#getIcons()
+     */
+    public IconUsage[] getIcons()
+    {
+        return m_icons ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentModel.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultContainmentModel.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,71 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+import java.util.Map ;
+import java.util.Iterator ;
+
+
+/**
+ * A default containment model implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DefaultContainmentModel implements ContainmentModel
+{
+    private final Map m_types ;
+    
+    
+    /**
+     * Creates an instance of a default ContainmentModel implementation.
+     * 
+     * @param types a map of Class keys mapped to ContainmentMetadata values
+     */
+    public DefaultContainmentModel( Map types )
+    {
+        m_types = types ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.navtree.ContainmentModel#getMetadata(java.lang.Class)
+     */
+    public ContainmentMetadata getMetadata( Class clazz )
+    {
+        ContainmentMetadata meta = ( ContainmentMetadata ) m_types.get( clazz ) ;
+        
+        if ( meta != null )
+        {    
+            return meta ;
+        }
+        
+        Iterator list = m_types.keySet().iterator() ;
+        while ( list.hasNext() )
+        {
+            Class modelClass = ( Class ) list.next() ;
+            if ( modelClass.isAssignableFrom( clazz ) )
+            {
+                meta = ( ContainmentMetadata ) m_types.get( modelClass ) ;
+                break ;
+            }
+        }
+        
+        return meta ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultIconUsage.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/DefaultIconUsage.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,124 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+import java.io.File ;
+
+import org.apache.commons.lang.StringUtils ;
+
+
+/**
+ * The default IconUsage descriptor implementation.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class DefaultIconUsage implements IconUsage
+{
+    private final String m_baseDir ;
+    private final String m_fileName ;
+    private final String m_category ;
+    private final String[] m_contexts ;
+    private transient String m_iconPath = null ;
+    
+    
+    /**
+     * Creates a default IconUsage descriptor implemenation.
+     * 
+     * @param baseDir the path to the base directory
+     * @param fileName the relative file name with extention
+     * @param category the path fragment to the category directory which
+     *      does not have trialing ( i.e. 24x24/cars ) separators
+     * @param contexts
+     */
+    public DefaultIconUsage( String baseDir, String fileName, String category,
+                        String[] contexts )
+    {
+        m_baseDir = correctPath( baseDir ) ;
+        m_fileName = correctPath( fileName ) ;
+        m_category = correctPath( category ) ;
+        m_contexts = contexts ;
+    }
+    
+    
+    /**
+     * Corrects paths to match OS
+     * 
+     * @param path the path using regular '/'
+     * @return the path with OS specific separators
+     */
+    private String correctPath( String path )
+    {
+        return StringUtils.replaceChars( path, '/', File.separatorChar ) ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.IconUsage#getBaseDir()
+     */
+    public String getBaseDir()
+    {
+        return m_baseDir ;
+    }
+    
+
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.IconUsage#getCategory()
+     */
+    public String getCategory()
+    {
+        return m_category ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.IconUsage#getFilename()
+     */
+    public String getFileName()
+    {
+        return m_fileName ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.IconUsage#getContexts()
+     */
+    public String[] getContexts()
+    {
+        return m_contexts ;
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.IconUsage#getImageIcon()
+     */
+    public String getIconPath()
+    {
+        if ( m_iconPath != null )
+        {
+            return m_iconPath ;
+        }
+        
+        StringBuffer l_buf = new StringBuffer() ;
+        l_buf.append( m_baseDir ).append( File.separatorChar ) ;
+        l_buf.append( m_category ).append( File.separatorChar ) ;
+        l_buf.append( m_fileName ) ;
+        m_iconPath = l_buf.toString() ;
+        return m_iconPath ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/IconUsage.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/IconUsage.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,66 @@
+/*
+ *   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.rms.ui.ocmm ;
+
+
+/**
+ * A descriptor that specifies an icon and how it is used.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public interface IconUsage
+{
+    /** no contexts corresponds to all contexts - this is the default */
+    String[] ALL_CONTEXTS = new String[0] ;
+
+    /**
+     * Gets the base directory path for an icon.
+     * 
+     * @return the base directory path.
+     */
+    String getBaseDir() ;
+    
+    /**
+     * Gets the category of the icon which is used as a subdirectory from the
+     * base to find the icon.
+     * 
+     * @return 
+     */
+    String getCategory() ;
+    
+    /**
+     * Gets the relative file name of the icon with extention and without paths.
+     *  
+     * @return the relative file name of the icon with extention
+     */
+    String getFileName() ;
+    
+    /**
+     * Gets the contents for which the icon is valid.
+     * 
+     * @return the valid contexts for the image
+     */
+    String[] getContexts() ;
+    
+    /**
+     * Gets the path to the image assocated with this IconUsage descriptor.
+     * 
+     * @return the path to the image assocated with this IconUsage descriptor
+     */
+    String getIconPath() ;
+}

Added: incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/package.html
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/api/src/java/org/apache/rms/ui/ocmm/package.html	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,6 @@
+<body>
+<p>
+  The <code>ocmm/api</code> package contains an classes and interfaces used to 
+  build an object containment meta model component.
+</p>
+</body>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/.classpath
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/.classpath	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+    <classpathentry kind="src" path="src/java"/>
+    <classpathentry kind="src" path="src/test"/>
+    <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
+    <classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
+    <classpathentry kind="var" path="MAVEN_REPO/avalon-framework/jars/avalon-framework-api-4.1.5.jar"/>
+    <classpathentry kind="var" path="MAVEN_REPO/merlin/jars/merlin-unit-3.2.7.jar"/>
+    <classpathentry kind="lib" path="target/test-classes"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-api"/>
+    <classpathentry kind="src" path="/rms-gui-ocmm-spi"/>
+    <classpathentry kind="var" path="MAVEN_REPO/commons-lang/jars/commons-lang-2.0.jar"/>
+    <classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/.project
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/.project	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>rms-gui-ocmm-impl</name>
+	<comment>
+  </comment>
+	<projects>
+		<project>rms-gui-ocmm-api</project>
+		<project>rms-gui-ocmm-spi</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/conf/block.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/conf/block.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,21 @@
+
+<!-- definition of an embedded block -->
+
+<container name="rmc">
+
+   <classloader>
+     <classpath>
+       <repository>
+         <resource id="commons-lang:commons-lang" version="2.0"/>
+         <resource id="rms:rms-rbac-api" version="SNAPSHOT"/>
+         <resource id="rms:rms-gui-ocmm-api" version="SNAPSHOT"/>
+         <resource id="rms:rms-gui-ocmm-spi" version="SNAPSHOT"/>
+       </repository>
+     </classpath>
+   </classloader>
+
+   <component name="ocmm-factory" 
+       class="org.apache.rms.ui.ocmm.impl.MerlinOcmmFactory" activation="startup">
+   </component>
+   
+</container>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/conf/config.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/conf/config.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<targets>
+
+  <target path="/rmc/ocmm-factory">
+    <categories priority="INFO"/>
+  </target>
+
+</targets>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/maven.log
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/maven.log	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,391 @@
+2004-04-06 23:41:19,583 INFO  org.apache.maven.plugin.PluginManager - Initializing Plugins!
+2004-04-06 23:41:19,614 INFO  org.apache.maven.plugin.PluginManager - Unpacking plugins from directory --> j:\apache\maven\maven-1.0-beta-10\plugins
+2004-04-06 23:41:19,708 INFO  org.apache.maven.plugin.PluginManager - Processing unpacked plugins in C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:41:19,724 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-deploy-plugin-1.1
+2004-04-06 23:41:19,895 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-plexus-plugin-0.2
+2004-04-06 23:41:19,927 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-runner-plugin-0.2
+2004-04-06 23:41:19,927 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-sea-plugin-1.0
+2004-04-06 23:41:19,927 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-vdoclet-plugin-1.0
+2004-04-06 23:41:19,942 INFO  org.apache.maven.plugin.PluginCacheManager - Saving caches to C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:41:19,989 INFO  org.apache.maven.plugin.PluginManager - Finished initializing Plugins!
+2004-04-06 23:41:23,504 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@6835fb. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:23,504 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1636e4e. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:23,536 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1c8ef56. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:23,536 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@d90453. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:25,660 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1b32627. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:25,707 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1b32627. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:41:25,723 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1b32627. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)

Added: incubator/directory/rms/trunk/gui/ocmm/impl/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/maven.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,7 @@
+<project default="jar:install">
+
+  <preGoal name="java:compile">
+    <attainGoal name="avalon:meta"/>
+  </preGoal>
+
+</project>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/merlin.properties
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/merlin.properties	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,11 @@
+
+#
+# General properties referenced by merlin plugin
+# goals and the merlin unit test.
+#
+
+merlin.info = false
+merlin.debug = false
+
+
+

Added: incubator/directory/rms/trunk/gui/ocmm/impl/ocmm-impl.iml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/ocmm-impl.iml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="false">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/classes" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="ocmm-api" />
+    <orderEntry type="module" module-name="ocmm-spi" />
+    <orderEntry type="library" name="avalon-framework-api-4.1.5.jar" level="application" />
+    <orderEntry type="library" name="merlin-unit-3.2.10.jar" level="application" />
+    <orderEntry type="library" name="junit-3.8.1.jar" level="application" />
+  </component>
+</module>
+

Added: incubator/directory/rms/trunk/gui/ocmm/impl/project.xml
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/project.xml	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project>
+
+  <extend>${basedir}/../project.xml</extend>
+
+  <id>rms-gui-ocmm-impl</id>
+  <name>Object Containment Meta Model Implementation</name>
+  <currentVersion>SNAPSHOT</currentVersion>
+  <shortDescription>
+    Object Containment Meta Model Implementation
+  </shortDescription>
+  <package>org.apache.rms.ui.ocmm.impl</package>
+
+  <dependencies>
+    
+    <dependency>
+      <artifactId>commons-lang</artifactId>
+      <groupId>commons-lang</groupId>
+      <version>2.0</version>
+    </dependency>
+
+    <dependency>
+      <groupId>incubator-directory</groupId>
+      <artifactId>rms-gui-ocmm-api</artifactId>
+      <version>SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>incubator-directory</groupId>
+      <artifactId>rms-gui-ocmm-spi</artifactId>
+      <version>SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>avalon-framework</groupId>
+      <artifactId>avalon-framework-api</artifactId>
+      <version>4.1.5</version>
+    </dependency>
+
+    <dependency>
+      <groupId>merlin</groupId>
+      <artifactId>merlin-unit</artifactId>
+      <version>3.2.10</version>
+    </dependency>
+
+  </dependencies>
+  
+</project>

Added: incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,397 @@
+/*
+ *   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.rms.ui.ocmm.impl ;
+
+
+import java.util.HashMap ;
+
+import org.apache.avalon.framework.configuration.Configurable ;
+import org.apache.avalon.framework.configuration.Configuration ;
+import org.apache.avalon.framework.configuration.ConfigurationException ;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled ;
+
+import org.apache.rms.ui.ocmm.Action ;
+import org.apache.rms.ui.ocmm.Container ;
+import org.apache.rms.ui.ocmm.IconUsage ;
+import org.apache.rms.ui.ocmm.DefaultAction ;
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.DefaultContainer ;
+import org.apache.rms.ui.ocmm.DefaultIconUsage ;
+import org.apache.rms.ui.ocmm.ContainmentMetadata ;
+import org.apache.rms.ui.ocmm.DefaultContainmentModel ;
+import org.apache.rms.ui.ocmm.DefaultContainmentMetadata ;
+import org.apache.rms.ui.ocmm.spi.ContainmentModelFactory ;
+
+
+/**
+ * A Merlin based object containment meta model factory.
+ * 
+ * @avalon.component name="ocmm-factory" lifestyle="singleton"
+ * @avalon.service type="org.apache.rms.ui.ocmm.spi.ContainmentModelFactory" version="1.0"
+ * 
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class MerlinOcmmFactory extends AbstractLogEnabled 
+    implements ContainmentModelFactory,
+    Configurable
+{
+    private ContainmentModel m_model ;
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.rms.ui.ocmm.spi.ContainmentModelFactory#getContainmentModel()
+     */
+    public ContainmentModel getContainmentModel()
+    {
+        return m_model ;
+    }
+    
+    
+    public void configure( Configuration a_config ) 
+        throws ConfigurationException
+    {
+        ContainmentMetadata l_metadata = null ;
+        Configuration[] l_types = a_config.getChildren( "type" ) ;
+        HashMap l_map = new HashMap( l_types.length ) ;
+        
+        for ( int ii = 0; ii < l_types.length; ii++ )
+        {
+            l_metadata = new DefaultContainmentMetadata( 
+                    getClass( l_types[ii] ),
+                    getContainers( l_types[ii] ),
+                    getScalars( l_types[ii] ),
+                    getKeyedBy( l_types[ii] ),
+                    getActions( l_types[ii] ),
+                    getIcons( l_types[ii] ),
+                    isKeyedByProperty( l_types[ii] ) 
+            ) ;
+            
+            l_map.put( l_metadata.getTypeClass(), l_metadata ) ;
+        }
+        
+        m_model = new DefaultContainmentModel( l_map ) ;
+    }
+    
+    
+    /**
+     * Gets the set of containers nodes of this type will display.
+     * 
+     * @param a_type the top configuration node for a meta model type
+     * @return an array of Containers
+     * @throws ConfigurationException if there is a problem while accessing 
+     *      configuration data
+     */
+    private Container[] getContainers( Configuration a_type )
+        throws ConfigurationException
+    {
+        Configuration[] l_nodes = a_type
+            .getChild( "contains" ).getChildren() ;
+        Container[] l_containers = new Container[ l_nodes.length ] ;
+        
+        for ( int ii = 0; ii < l_containers.length; ii++ )
+        {
+            l_containers[ii] = new DefaultContainer(
+                    getContainerName( l_nodes[ii] ),
+                    getContainedClass( l_nodes[ii] ),
+                    getIterationProperty( l_nodes[ii] ),
+                    getActions( l_nodes[ii] ), 
+                    getIcon( l_nodes[ii].getChild( "icon" ) ) 
+            ) ;
+        }
+        
+        return l_containers ;
+    }
+    
+    
+    /**
+     * Gets the [] tag value for a container node.
+     * 
+     * @param a_container a container configuration node for a meta model type
+     * @return the [] tag value for a container node
+     * @throws ConfigurationException if there is a problem while accessing the 
+     *      configuration data
+     */
+    private String getContainerName( Configuration a_container ) 
+        throws ConfigurationException
+    {
+        return a_container.getChild( "name" ).getValue() ;
+    }
+    
+    
+    /**
+     * Gets the [] tag value for a container node.
+     * 
+     * @param a_container a container configuration node for a meta model type
+     * @return the [] tag value for a container node
+     * @throws ConfigurationException if there is a problem while accessing the 
+     *      configuration data
+     */
+    private Class getContainedClass( Configuration a_container ) 
+        throws ConfigurationException
+    {
+        String l_className = null ;
+        
+        try
+        {
+            ClassLoader l_cl = Thread.currentThread().getContextClassLoader() ;
+            l_className = a_container.getChild( "contents" ).getValue() ;
+            return l_cl.loadClass( l_className ) ;
+        }
+        catch ( ClassNotFoundException e )
+        {
+            throw new ConfigurationException( "Failed to load Class used "
+                    + "in the containment meta model by a container named " 
+                    + a_container.getChild( "name" ).getValue() 
+                    + " containing values of type : " + l_className ) ;
+        }
+    }
+    
+    
+    /**
+     * Gets the [] tag value for a container node.
+     * 
+     * @param a_container a container configuration node for a meta model type
+     * @return the [] tag value for a container node
+     * @throws ConfigurationException if there is a problem while accessing the 
+     *      configuration data
+     */
+    private String getIterationProperty( Configuration a_container ) 
+        throws ConfigurationException
+    {
+        return a_container.getChild( "iterationProperty" ).getValue() ;
+    }
+    
+    
+    /**
+     * Gets the set of scalar properties nodes of this type contain.
+     * 
+     * @param a_type the top configuration node for a meta model type
+     * @return an array of scalar properties
+     * @throws ConfigurationException if there is a problem while accessing 
+     *      configuration data
+     */
+    private String[] getScalars( Configuration a_type )
+        throws ConfigurationException
+    {
+        Configuration[] l_nodes = a_type
+            .getChild( "scalar-properties" ).getChildren() ;
+        String[] l_scalars = new String[ l_nodes.length ] ;
+        
+        for ( int ii = 0; ii < l_scalars.length; ii++ )
+        {
+            if ( l_nodes[ii].getName().equals( "property" ) )
+            {    
+                l_scalars[ii] = l_nodes[ii].getValue() ;
+            }
+            else
+            {
+                throw new ConfigurationException( "Expect on <property> tags "
+                        + "only within the <scalar-properties> tag NOT <"
+                        + l_nodes[ii].getName() + "> nodes" ) ;
+            }
+        }
+        
+        return l_scalars ;
+    }
+    
+    
+    /**
+     * Gets the name of the keyedBy property for nodes of this type or a 
+     * constant label for all node instances of this type.
+     * 
+     * @param a_type the top configuration node for a meta model type
+     * @return the name of a property or a constant label
+     * @throws ConfigurationException if there is a problem while accessing 
+     *      configuration data
+     */
+    private String getKeyedBy( Configuration a_type )
+        throws ConfigurationException
+    {
+        Configuration l_node = a_type.getChild( "keyed-by" ).getChildren()[0] ;
+        return l_node.getValue() ;
+    }
+    
+    
+    /**
+     * Tests to see if a property name or a constant is used for the keyedBy
+     * value.
+     * 
+     * @param a_type the top configuration node for a meta model type
+     * @return true if the keyedBy string is a property name or false if it is
+     *      a constant label
+     */
+    private boolean isKeyedByProperty( Configuration a_type )
+    {
+        Configuration l_node = a_type.getChild( "keyed-by" ).getChildren()[0] ;
+        return l_node.getName().equals( "property" ) ;
+    }
+    
+    
+    /**
+     * Gets the Class associated with a type used in the meta model.
+     * 
+     * @param a_type the top configuration node for a meta model type
+     * @return the Class for the type 
+     * @throws ConfigurationException if the class for the type cannot be found
+     */
+    private Class getClass( Configuration a_type ) throws ConfigurationException
+    {
+        try 
+        {
+            ClassLoader l_cl = Thread.currentThread().getContextClassLoader() ;
+            return l_cl.loadClass( a_type.getChild( "class" ).getValue() ) ;
+        }
+        catch( ClassNotFoundException e )
+        {
+            throw new ConfigurationException( "Failed to load Class used "
+                    + "in the containment meta model: " 
+                    + a_type.getChild( "class" ).getValue() ) ;
+        }
+    }
+    
+    
+    /**
+     * Gets the set of Icon descriptor beans for a node that contains an 
+     * &lt;icons&gt; tag.
+     * 
+     * @param a_iconsConfig a configuration node that contains an icons node 
+     * @return the array of the contained Icon descriptor beans
+     * @throws ConfigurationException if there is a configuration error
+     */
+    private IconUsage[] getIcons( Configuration a_iconsConfig )
+        throws ConfigurationException
+    {
+        Configuration[] l_nodes = a_iconsConfig
+            .getChild( "icons" ).getChildren() ;
+        IconUsage[] l_beans = new IconUsage[ l_nodes.length ] ;
+        
+        for ( int ii = 0; ii < l_beans.length; ii++ )
+        {
+            l_beans[ii] = getIcon( l_nodes[ii] ) ;
+        }
+        
+        return l_beans ;
+    }
+
+    
+    /**
+     * Gets the Icon descriptor bean for an &lt;icon&gt; configuration node.
+     * 
+     * @param a_iconConfig a configuration node for an Icon descriptor
+     * @return the Icon descriptor bean for an &lt;icon&gt; configuration node
+     * @throws ConfigurationException if there is a configuration error
+     */
+    private IconUsage getIcon( Configuration a_iconConfig )
+        throws ConfigurationException
+    {
+        String[] l_contexts = null ;
+        Configuration[] l_nodes = a_iconConfig.getChildren( "context" ) ;
+        
+        if ( l_nodes == null || l_nodes.length == 0 )
+        {
+            l_contexts = IconUsage.ALL_CONTEXTS ;
+        }
+        else
+        {
+            l_contexts = new String[ l_nodes.length ] ;
+            for ( int ii = 0; ii < l_contexts.length; ii++ )
+            {
+                l_contexts[ii] = l_nodes[ii].getValue() ;
+            }
+        }
+        
+        return new DefaultIconUsage(
+                a_iconConfig.getChild( "baseDir" ).getValue(),
+                a_iconConfig.getChild( "fileName" ).getValue(),
+                a_iconConfig.getChild( "category" ).getValue(),
+                l_contexts
+                ) ;
+    }
+    
+
+    /**
+     * Gets the set of Action beans for a node that contains an &lt;actions&gt;
+     * tag.
+     * 
+     * @param a_hasActions a configuration node that contains an actions node 
+     * @return the array of Action beans
+     * @throws ConfigurationException if there is a configuration error
+     */
+    private Action[] getActions( Configuration a_hasActions )
+        throws ConfigurationException
+    {
+        Configuration[] l_nodes = a_hasActions
+            .getChild( "actions" ).getChildren() ;
+        Action[] l_beans = new Action[ l_nodes.length ] ;
+        
+        for ( int ii = 0; ii < l_beans.length; ii++ )
+        {
+            l_beans[ii] = getAction( l_nodes[ii] ) ;
+        }
+        
+        return l_beans ;
+    }
+
+    
+    /**
+     * Gets the Action bean for an &lt;action&gt; configuration node.
+     * 
+     * @param a_action a configuration node for an Action
+     * @return the Action bean for an &lt;action&gt; configuration node
+     * @throws ConfigurationException if there is a configuration error
+     */
+    private Action getAction( Configuration a_action )
+        throws ConfigurationException
+    {
+        String[] l_contexts = null ;
+        Configuration[] l_nodes = a_action.getChildren( "context" ) ;
+        
+        if ( l_nodes == null || l_nodes.length == 0 )
+        {
+            l_contexts = DefaultAction.ALL_CONTEXTS ;
+        }
+        else
+        {
+            l_contexts = new String[ l_nodes.length ] ;
+            for ( int ii = 0; ii < l_contexts.length; ii++ )
+            {
+                l_contexts[ii] = l_nodes[ii].getValue() ;
+            }
+        }
+        
+        Configuration l_iconChild = a_action.getChild( "icon", false ) ;
+        IconUsage l_icon = null ;
+        if ( l_iconChild == null )
+        {
+            l_icon = null ;
+        }
+        else
+        {
+            l_icon = getIcon( l_iconChild ) ;
+        }
+        
+        return new DefaultAction( 
+            a_action.getChild( "name" ).getValue(),
+            a_action.getChild( "command" ).getValue(),
+            l_contexts,
+            a_action.getChild( "description" ).getValue(),
+            l_icon
+        ) ;
+    }
+}

Added: incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.xconfig
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/src/java/org/apache/rms/ui/ocmm/impl/MerlinOcmmFactory.xconfig	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,891 @@
+<?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.
+ *
+ */
+  -->
+
+<config>
+  <!-- 
+    Actions and Types
+    =================
+    
+    Actions are associated with types.  An action can be an operation on
+    an instance of the type or an operation on a factory to create or destroy 
+    an instance of a type et. cetera.  
+    
+    We do not try to distinguish between the mechanism used to achieve the 
+    action at the present time.
+
+
+    Action Contexts
+    ===============
+    
+    An instance of a type can be located within the navigation tree in several
+    different places.  For example a permission may be seen under the Grants 
+    container of a Role as well as under an Application's Permissions container.
+    
+    Some actions should be available within the containers of objects of these
+    types and some should not.  Some actions on objects of a type should also 
+    be available on instances of other containing types.  
+    
+    To control the visibility of actions on objects of a type we specify
+    contexts in which actions apply.  An action is hence valid for the contexts
+    it is specified for.  A context is a simple path specification.  So for
+    example the permission under the Grants container of a Roles object is
+    in a different context from the permission within the Permissions container
+    of an Application instance.
+    
+    Hence a type supports a set of actions defined for certain contexts.  The
+    current context is determined by the current selection path in the 
+    navigation tree.  Hence where we are in the navigation determines which 
+    actions are available.  A path notation is used to specify the action 
+    context.  The following path component names can be used:
+    
+       * root - the root of the tree whatever it may be
+       * bean - a bean of a type
+       
+   The names of containers within the type can be used as path components as 
+   well.  Here's a few examples of some path components and the contexts they
+   connotate:
+       
+   root                    when root is selected
+   root/Applications       when Applications container under root
+   root/Users/bean/Grants
+                           when the Grants container of any user bean is 
+                           selected
+    -->
+
+  <!--
+    R M S   T O P   L E V E L 
+    =========================
+    -->
+
+  <type>
+    <class>org.apache.rms.Rms</class>
+    <keyed-by>
+      <name>RmsRoot</name>
+    </keyed-by>
+    
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>earth_lock.png</fileName>
+        <category>24x24/plain</category>
+      </icon>
+    </icons>
+    
+    <actions>
+      <action>
+        <name>CreateUser</name>
+        <command>CreateUser</command>
+        <description>Create a new user</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>user1_add.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>CreateApplication</name>
+        <command>CreateApplication</command>
+        <description>Create a new application</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>application_add.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+    </actions>
+
+    <contains>
+      <container>
+        <name>Applications</name>
+        <contents>org.apache.rms.Application</contents>
+        <iterationProperty>applications</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>application_server.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+
+        <actions>
+          <action>
+            <name>Create</name>
+            <command>CreateApplication</command>
+            <description>Create a new application</description>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>application_add.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+
+      <container>
+        <name>Users</name>
+        <contents>org.apache.rms.User</contents>
+        <iterationProperty>users</iterationProperty>
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>users1.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Create</name>
+            <command>CreateUser</command>
+            <description>Create a new user</description>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>user1_add.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+    </contains>
+  </type>
+
+  <!--
+    =================================================
+    U S E R   M E T A D A T A   D E F I N I T I O N S
+    =================================================
+    -->
+    
+  <type>
+    <class>org.apache.rms.User</class>
+    <keyed-by>
+      <property>name</property>
+    </keyed-by>
+    <scalar-properties>
+      <property>name</property>
+    </scalar-properties>
+    
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>user1.png</fileName>
+        <category>24x24/plain</category>
+      </icon>
+    </icons>
+    
+    <actions>
+      <action>
+        <name>Rename</name>
+        <command>RenameUser</command>
+        <description>Rename a user</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>replace2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Delete</name>
+        <command>DeleteUser</command>
+        <description>Delete a user</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>CreateProfile</name>
+        <command>CreateProfileForUser</command>
+        <description>Create an application profile for a user</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+    </actions>
+    
+    <contains>
+      <container>
+        <name>Profiles</name>
+        <contents>org.apache.rms.Profile</contents>
+        <iterationProperty>profiles</iterationProperty>
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>users3_preferences.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Create</name>
+            <command>CreateProfileForUser</command>
+            <description>Create an application profile for a user</description>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+    </contains>
+  </type>
+
+  <!--
+    ===============================================================
+    A P P L I C A T I O N   M E T A D A T A   D E F I N I T I O N S
+    ===============================================================
+    -->
+    
+  <type>
+    <class>org.apache.rms.Application</class>
+    <keyed-by>
+      <property>name</property>
+    </keyed-by>
+    <scalar-properties>
+      <property>name</property>
+    </scalar-properties>
+    
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>application.png</fileName>
+        <category>24x24/plain</category>
+      </icon>
+    </icons>
+    
+    <actions>
+      <action>
+        <name>Rename</name>
+        <command>RenameApplication</command>
+        <description>Rename an Application</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>replace2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Delete</name>
+        <command>DeleteApplication</command>
+        <description>Delete an Application</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>CreateRole</name>
+        <command>CreateRoleForApplication</command>
+        <description>Create a Role for an Application</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>AddPermission</name>
+        <command>AddPermissionToApplication</command>
+        <description>Add a Permission to an Application</description>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+    </actions>
+    
+    <contains>
+      <container>
+        <name>Roles</name>
+        <contents>org.apache.rms.Role</contents>
+        <iterationProperty>roles</iterationProperty>
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>users_family.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Create</name>
+            <command>CreateRoleForApplication</command>
+            <description>Create a Role for an Application</description>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+      <container>
+        <name>Permissions</name>
+        <contents>org.apache.rms.BitPermission</contents>
+        <iterationProperty>permissions</iterationProperty>
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>keys.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Add</name>
+            <command>AddPermissionToApplication</command>
+            <description>Add a Permission to an Application</description>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+    </contains>
+  </type>    
+
+
+  <!--
+    =================================================
+    R O L E   M E T A D A T A   D E F I N I T I O N S
+    =================================================
+    -->
+    
+
+  <type>
+    <class>org.apache.rms.Role</class>
+    <keyed-by>
+      <property>name</property>
+    </keyed-by>
+    <scalar-properties>
+      <property>name</property>
+    </scalar-properties>
+
+    <!--
+      A Role is visible in two contexts:
+        1). Defined under an Application's Roles container here:
+          root/Applications/bean/Roles/bean
+          
+        2). Referred to by a Profile under its Roles container here:
+          root/User/bean/Profiles/bean/Roles/bean
+      -->
+
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>users3.png</fileName>
+        <category>24x24/plain</category>
+      </icon>
+    </icons>
+    
+    <actions>
+      <action>
+        <name>Rename</name>
+        <command>RenameRole</command>
+        <description>Rename a Role</description>
+        <context>root/Applications/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>replace2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Delete</name>
+        <command>DeleteRoleFromApplication</command>
+        <description>Delete a Role from an Application</description>
+        <context>root/Applications/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Revoke</name>
+        <command>RevokeRoleFromProfile</command>
+        <description>Revokes a Role from a User's Profile</description>
+        <context>root/User/bean/Profiles/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>GrantPermission</name>
+        <command>GrantPermissionToRole</command>
+        <description>Grants a Permission to a Role</description>
+        <context>root/Applications/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>RevokePermission</name>
+        <command>RevokePermissionFromRole</command>
+        <description>Revokes a Permission from a Role</description>
+        <context>root/Applications/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Remove</name>
+        <command>RemoveRoleFromProfile</command>
+        <description>Remove a Role from a user's profile</description>
+        <context>root/Users/bean/Profiles/bean/Roles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+    </actions>
+    
+    <contains>
+      <container>
+        <name>Grants</name>
+        <contents>org.apache.rms.BitPermission</contents>
+        <iterationProperty>grants</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>keys.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Grant</name>
+            <command>GrantPermissionToRole</command>
+            <description>Grants a Permission to a Role</description>
+            <context>root/Applications/bean/Roles/bean/Grants</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+          <action>
+            <name>Revoke</name>
+            <command>RevokePermissionFromRole</command>
+            <description>Grants a Permission to a Role</description>
+            <context>root/Applications/bean/Roles/bean/Grants</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>delete2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+    </contains>
+  </type>
+    
+    <!--
+      =====================================================================
+      B I T   P E R M I S S I O N   M E T A D A T A   D E F I N I T I O N S
+      ===================================================================== 
+      -->
+    
+  <type>
+    <class>org.apache.rms.BitPermission</class>
+    <keyed-by>
+      <property>name</property>
+    </keyed-by>
+    <scalar-properties>
+      <property>name</property>
+      <property>index</property>
+      <property>application</property>
+    </scalar-properties>
+
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>key1_preferences.png</fileName>
+        <category>24x24/plain</category>
+        <context>
+          root/Users/bean/Profiles/bean/Permissions/bean
+        </context>
+      </icon>
+      
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>key1.png</fileName>
+        <category>24x24/plain</category>
+        <context>
+          root/Applications/bean/Permissions/bean
+        </context>
+      </icon>
+      
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>key1_add.png</fileName>
+        <category>24x24/plain</category>
+        <context>root/Applications/bean/Roles/bean/Grants/bean</context>
+        <context>root/Users/bean/Profiles/bean/Roles/bean/Grants/bean</context>
+      </icon>
+      
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>key1_add.png</fileName>
+        <category>24x24/plain</category>
+        <context>root/Users/bean/Profiles/bean/Grants/bean</context>
+      </icon>
+      
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>key1_delete.png</fileName>
+        <category>24x24/plain</category>
+        <context>root/Users/bean/Profiles/bean/Denials/bean</context>
+      </icon>
+      
+    </icons>
+    
+    <!--
+      A BitPermission is visible in 5 contexts:
+        1). Defined under an Application's Permissions container here:
+          root/Applications/bean/Permissions/bean
+          
+        2). Referred to by a Role in its Grants container here:
+          root/Applications/bean/Roles/bean/Grants/bean
+          
+        3). Referred to by a Profile in its Grants container here:
+          root/Users/bean/Profiles/bean/Grants/bean
+          
+        4). Referred to by a Profile in its Denials container here:
+          root/Users/bean/Profiles/bean/Denials/bean
+          
+        5). Referred to by a Profile in its Grants container here:
+          root/Users/bean/Profiles/bean/Permissions/bean
+      -->
+          
+    <actions>
+      <action>
+        <name>Rename</name>
+        <command>RenamePermission</command>
+        <description>Renames a Permission</description>
+        <context>root/Applications/bean/Permissions/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>replace2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Delete</name>
+        <command>DeletePermissionFromApplication</command>
+        <description>Deletes a Permission from an Application</description>
+        <context>root/Applications/bean/Permissions/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Revoke</name>
+        <command>RevokePermissionFromRole</command>
+        <description>Revokes a Permission from a Role</description>
+        <context>root/Applications/bean/Roles/bean/Grants/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Revoke</name>
+        <command>RevokeGrantFromProfile</command>
+        <description>Revokes a Permission grant from a Profile</description>
+        <context>root/Users/bean/Profiles/bean/Grants/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Revoke</name>
+        <command>RevokeDenialFromProfile</command>
+        <description>Revokes a Permission denial from a Profile</description>
+        <context>root/Users/bean/Profiles/bean/Denials/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>Trace</name>
+        <command>TraceEffectivePermission</command>
+        <description>
+          Traces the sources causing the grant of the Permission
+        </description>
+        <context>root/Users/bean/Profiles/bean/Permissions/bean</context>
+      </action>
+    </actions>
+  </type>
+  
+  
+  <!-- 
+    =======================================================
+    P R O F I L E   M E T A D A T A   D E F I N I T I O N S 
+    =======================================================
+    -->
+  
+  <type>
+    <class>org.apache.rms.Profile</class>
+    <keyed-by>
+      <property>applicationName</property>
+    </keyed-by>
+    <scalar-properties>
+      <property>userName</property>
+      <property>applicationName</property>
+    </scalar-properties>
+
+    <icons>
+      <icon>
+        <baseDir>images</baseDir>
+        <fileName>user1_preferences.png</fileName>
+        <category>24x24/plain</category>
+      </icon>
+    </icons>
+
+    <actions>
+      <action>
+        <name>Delete</name>
+        <command>DeleteProfileFromUser</command>
+        <description>Deletes a profile from a user</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      
+      <action>
+        <name>Grant</name>
+        <command>GrantPermissionToProfile</command>
+        <description>Grants a permission to a user profile</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>RevokeGrant</name>
+        <command>RevokeGrantFromProfile</command>
+        <description>Revokes a permission grant to a user profile</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+
+      <action>
+        <name>Deny</name>
+        <command>DenyPermissionForProfile</command>
+        <description>Denies a permission for a user profile</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>RevokeDenial</name>
+        <command>RevokeDenialFromProfile</command>
+        <description>
+          Revokes a permission denial from a user profile
+        </description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      
+      <action>
+        <name>AddRole</name>
+        <command>AddRoleToProfile</command>
+        <description>Adds a role to a user profile</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>add2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+      <action>
+        <name>RemoveRole</name>
+        <command>RemoveRoleFromProfile</command>
+        <description>Removes a role from a user profile</description>
+        <context>root/Users/bean/Profiles/bean</context>
+        <!--icon>
+          <baseDir>images</baseDir>
+          <fileName>delete2.png</fileName>
+          <category>16x16/plain</category>
+        </icon-->
+      </action>
+    </actions>
+
+    <contains>
+
+      <container>
+        <name>Grants</name>
+        <contents>org.apache.rms.BitPermission</contents>
+        <iterationProperty>grants</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>keys.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Grant</name>
+            <command>GrantPermissionToProfile</command>
+            <description>Grants a permission to a user profile</description>
+            <context>root/Users/bean/Profiles/bean/Grants</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+          <action>
+            <name>Revoke</name>
+            <command>RevokeGrantFromProfile</command>
+            <description>Revokes granted perm from user profile</description>
+            <context>root/Users/bean/Profiles/bean/Grants</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>delete2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+      
+      <container>
+        <name>Denials</name>
+        <contents>org.apache.rms.BitPermission</contents>
+        <iterationProperty>denials</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>keys.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Deny</name>
+            <command>DenyPermissionForProfile</command>
+            <description>Denies a permission for a user profile</description>
+            <context>root/Users/bean/Profiles/bean/Denials</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+          <action>
+            <name>Revoke</name>
+            <command>RevokeDenialFromProfile</command>
+            <description>Revokes denied perm from user profile</description>
+            <context>root/Users/bean/Profiles/bean/Denials</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>delete2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+
+      </container>
+      
+      <container>
+        <name>Permissions</name>
+        <contents>org.apache.rms.BitPermission</contents>
+        <iterationProperty>permissions</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>keys.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Trace</name>
+            <command>TracePermissionForProfile</command>
+            <description>Traces how a profile gained the permission</description>
+            <context>root/Users/bean/Profiles/bean/Permissions</context>
+          </action>
+        </actions>
+      </container>
+
+      <container>
+        <name>Roles</name>
+        <contents>org.apache.rms.Role</contents>
+        <iterationProperty>roles</iterationProperty>
+
+        <icon>
+          <baseDir>images</baseDir>
+          <fileName>users_family.png</fileName>
+          <category>24x24/plain</category>
+        </icon>
+        <actions>
+          <action>
+            <name>Add</name>
+            <command>AddRoleToProfile</command>
+            <description>Adds a role to a user profile</description>
+            <context>root/Users/bean/Profiles/bean/Roles</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>add2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+          <action>
+            <name>Remove</name>
+            <command>RemoveRoleFromProfile</command>
+            <description>Removes a role from user profile</description>
+            <context>root/Users/bean/Profiles/bean/Roles</context>
+            <!--icon>
+              <baseDir>images</baseDir>
+              <fileName>delete2.png</fileName>
+              <category>16x16/plain</category>
+            </icon-->
+          </action>
+        </actions>
+      </container>
+    </contains>
+  </type>
+</config>
\ No newline at end of file

Added: incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/test/MerlinOcmmFactoryTest.java
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/impl/src/test/org/apache/rms/ui/ocmm/test/MerlinOcmmFactoryTest.java	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,67 @@
+/*
+ *   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.rms.ui.ocmm.test ;
+
+
+import org.apache.rms.ui.ocmm.ContainmentModel ;
+import org.apache.rms.ui.ocmm.spi.ContainmentModelFactory ;
+import org.apache.avalon.merlin.unit.AbstractMerlinTestCase ;
+
+
+/**
+ * Ocmm factory merlin implememtation based test case.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
+ * @version $Rev: 27 $
+ */
+public class MerlinOcmmFactoryTest extends AbstractMerlinTestCase
+{
+
+    // --------------------------------------------------------
+    // constructors
+    // --------------------------------------------------------
+
+   /**
+    * @param name the name of the test case
+    */
+    public MerlinOcmmFactoryTest( String name )
+    {
+        super( name );
+    }
+
+    
+    // --------------------------------------------------------
+    // unit testcases
+    // --------------------------------------------------------
+
+
+    /**
+     * Tests for service resolution.
+     *
+     * @throws Exception if there are failures when starting the container
+     */
+    public void testServiceResolution() throws Exception
+    {
+        ContainmentModelFactory l_factory = ( ContainmentModelFactory ) 
+            resolve( "/rmc/ocmm-factory" ) ;
+        assertNotNull( "factory is null", l_factory ) ;
+
+        ContainmentModel l_model = l_factory.getContainmentModel() ;
+        assertNotNull( "l_model is null", l_model ) ;
+    }
+}
+

Added: incubator/directory/rms/trunk/gui/ocmm/maven.log
==============================================================================
--- (empty file)
+++ incubator/directory/rms/trunk/gui/ocmm/maven.log	Wed Apr  7 18:57:22 2004
@@ -0,0 +1,1038 @@
+2004-04-06 23:56:27,838 INFO  org.apache.maven.plugin.PluginManager - Initializing Plugins!
+2004-04-06 23:56:27,869 INFO  org.apache.maven.plugin.PluginManager - Unpacking plugins from directory --> j:\apache\maven\maven-1.0-beta-10\plugins
+2004-04-06 23:56:27,963 INFO  org.apache.maven.plugin.PluginManager - Processing unpacked plugins in C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:56:27,963 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-deploy-plugin-1.1
+2004-04-06 23:56:28,135 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-plexus-plugin-0.2
+2004-04-06 23:56:28,166 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-runner-plugin-0.2
+2004-04-06 23:56:28,166 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-sea-plugin-1.0
+2004-04-06 23:56:28,182 INFO  org.apache.maven.plugin.PluginManager - Processing Plugin: maven-vdoclet-plugin-1.0
+2004-04-06 23:56:28,182 INFO  org.apache.maven.plugin.PluginCacheManager - Saving caches to C:\Documents and Settings\akarasulu\.maven\plugins
+2004-04-06 23:56:28,245 INFO  org.apache.maven.plugin.PluginManager - Finished initializing Plugins!
+2004-04-06 23:56:32,043 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@4cd580. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:32,043 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@92b1a1. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:32,058 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1a5db4b. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:32,058 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1e0512a. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:33,527 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@82d210. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:34,793 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@a8e586. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:34,793 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@74cb02. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:34,793 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1bc1fb9. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:34,809 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@1c6e818. Reason: java.lang.NumberFormatException: For input string: "excludes"
+java.lang.NumberFormatException: For input string: "excludes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsIterator(ExpressionSupport.java:146)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:127)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:112)
+	at org.apache.maven.jelly.JellyUtils.runScript(JellyUtils.java:139)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:734)
+	at org.apache.maven.plugin.PluginManager.prepDynamicTagLib(PluginManager.java:611)
+	at org.apache.maven.plugin.PluginManager.prepDynaTagLibs(PluginManager.java:586)
+	at org.apache.maven.plugin.PluginManager.loadPlugin(PluginManager.java:686)
+	at org.apache.maven.plugin.PluginManager.loadPlugins(PluginManager.java:766)
+	at org.apache.maven.plugin.PluginManager.prepForCallbacks(PluginManager.java:554)
+	at org.apache.maven.plugin.PluginManager.prepForGoal(PluginManager.java:525)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:415)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:36,091 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@82d210. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:36,122 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@82d210. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:36,137 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@82d210. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:87)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:267)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.TagSupport.getBodyText(TagSupport.java:271)
+	at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:205)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.impl.DynamicTag.doTag(DynamicTag.java:125)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
+	at com.werken.werkz.Goal.attain(Goal.java:573)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:360)
+	at org.apache.maven.jelly.tags.maven.ReactorTag.doTag(ReactorTag.java:374)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
+	at com.werken.werkz.Goal.fire(Goal.java:639)
+	at com.werken.werkz.Goal.attain(Goal.java:575)
+	at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
+	at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
+	at org.apache.maven.cli.App.doMain(App.java:525)
+	at org.apache.maven.cli.App.main(App.java:1088)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:324)
+	at com.werken.forehead.Forehead.run(Forehead.java:543)
+	at com.werken.forehead.Forehead.main(Forehead.java:573)
+2004-04-06 23:56:37,794 WARN  org.apache.commons.jelly.expression.jexl.JexlExpression - Caught exception evaluating: org.apache.commons.jexl.ExpressionImpl@fa5ff3. Reason: java.lang.NumberFormatException: For input string: "includes"
+java.lang.NumberFormatException: For input string: "includes"
+	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
+	at java.lang.Integer.parseInt(Integer.java:468)
+	at java.lang.Integer.valueOf(Integer.java:574)
+	at org.apache.commons.jexl.util.Coercion.coerceInteger(Coercion.java:95)
+	at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:177)
+	at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:104)
+	at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:106)
+	at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:88)
+	at org.apache.commons.jexl.parser.ASTNotNode.value(ASTNotNode.java:88)
+	at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:85)
+	at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:123)
+	at org.apache.commons.jelly.expression.jexl.JexlExpression.evaluate(JexlExpression.java:115)
+	at org.apache.commons.jelly.expression.jexl.JexlExpressionFactory$ExpressionSupportLocal.evaluate(JexlExpressionFactory.java:168)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:106)
+	at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:116)
+	at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:90)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:84)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
+	at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
+	at com.werken.werkz.jelly.ProjectTag.doTag(ProjectTag.java:112)
+	at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
+	at org.apache.maven.jelly.