Remoing trunk dir

git-svn-id: https://svn.apache.org/repos/asf/lenya/tags/RELEASE_2_0_RC_4@603226 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/trunk/CREDITS.txt b/trunk/CREDITS.txt
deleted file mode 100644
index 26f85d8..0000000
--- a/trunk/CREDITS.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-
-                                C R E D I T S
-                                 
-This is the file where major donations to the Lenya project are listed and it
-should be used to give appropriate visibility to those inviduals, organizations
-or companies that donated resources to the effort. This file wants to be one of
-the ways the Lenya community pays back.
-
-
- Community Credits
- =================
-                                   
- Active Committers:
- ------------------
-
-* Doug Chestnut
-* Edith Chevrier
-* Dale Christ
-* Christian Egli
-* Jann Forrer
-* Antonio Gallardo
-* Andreas Hartmann   Andreas runs the cocooncenter.org site.
-* Andreas Kuckartz   Tester, Bugzilla reporter
-* Rolf Kulemann
-* Gregor J. Rothfuss 
-* Thorsten Scherler
-* Torsten Schlabach
-* J. Wolfgang Kaltz
-* Michael Wechner    
-
- Inactive Committers:
- --------------------
-
-* Juergen Bigalke      wrote some creators.
-* Memo Birgi
-* Marc Liyanage       wrote the first Lenya build system way back.
-* Felix Maeder
-* Rene Niedermowe
-* Giacomo Pati        helped to port the predecessor of Lenya to Cocoon.
-
- Other Contributors:
- -------------------
-
-* Lon Boonen           Lon is the original creator of Xopus and helped a 
-                       lot to integrate it into Lenya. Recently he 
-                       rewrote the JavaScript of the Lenya menubar.
-* Jose Chaso           Spanish translation.
-* Paul Ercolino (solprovider)  Refactored search, various small fixes
-* Stephen England      Design of the Lenya logo, design of the Lenya UI.
-* Jorge Gutierrez      Spanish translation.
-* Martin Hitz
-* Margrit John
-* Olivier Lange        French translation.
-* Jean Pierre LeJacq   Build system improvements.
-* Martin Lüthi         Mail class.
-* Christian Stocker    Christian is the original creator of the 
-                       Bitflux Editor and helped a lot to integrate 
-                       it into Lenya.
-* Urs Stöckli
-* Giampaolo Trapasso   Italian translation, entertainer on #lenya
-* Markus Vaterlaus
-* Kars Veiling
-* Marc von Wattenwyl
-* Thomas Werschlein
-
-
-                                                 The Apache Lenya Community
-                                                 http://lenya.apache.org
diff --git a/trunk/INSTALL-BIN.txt b/trunk/INSTALL-BIN.txt
deleted file mode 100644
index bd49069..0000000
--- a/trunk/INSTALL-BIN.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-There is no binary release of Lenya 2.0 at this point.
-We recommend checking out the SVN repository instead (see INSTALL-SRC.txt).
diff --git a/trunk/INSTALL-SRC.txt b/trunk/INSTALL-SRC.txt
deleted file mode 100644
index 41bc75e..0000000
--- a/trunk/INSTALL-SRC.txt
+++ /dev/null
@@ -1,190 +0,0 @@
-# FIXME: this file duplicates the contents of
-# docu/src/documentation/content/xdocs/docs/2_0_x/installation/ (which is
-# currently out of date)
-# It would make a lot of sense to only maintain the xdocs and generate this
-# file with an xslt.
-
-Installation of the Source Version
-
-    * Prerequisites
-    * Standalone Installation (using the built-in Jetty)
-    * Installation with Apache Tomcat
-    * Security considerations
-
-Prerequisites
-
-
-    The following list describes the setup that is tested and recommended. 
-    Please note that you can use other servlet containers as well, but Jetty and Tomcat are the tested ones.
-
-
-    * Java 2 Platform, Standard Edition
-      Recommended version: JDK 1.5 (used by most developers). Java 1.4.2 or later should also
-      work, and people are using Java 1.6 successfully in day-to-day operation.
-      Get the JDK at http://java.sun.com/javase/downloads/index_jdk5.jsp.
-
-      WARNING: There have been numerous reports of spurious VM crashes with Java versions from 
-      1.5.0-07 to 1.5.0-11 both on Windows and Linux. Make sure you are using the latest available Java
-      5 package for your operating system (-13 as of this writing). 
-      If you encounter such crashes with more current revisions, please re-open 
-      http://issues.apache.org/bugzilla/show_bug.cgi?id=42493 .
-
-    * Apache Cocoon
-      Recommended version: BRANCH_2_1_X (https://svn.apache.org/repos/asf/cocoon/branches/BRANCH_2_1_X)
-      When you check out the latest Lenya source from svn, Cocoon will be included as an svn external 
-      and you don't need to download it separately.
-      Note that Cocoon is needed when building the source version of Lenya, but the 
-      resulting Lenya webapp is completely self contained and therefore it does not need 
-      the Cocoon webapp to be installed. See the FAQ for details of configuration changes 
-      required when running multiple Cocoon based applications.
-
-    * A SVN client
-      SVN (or subversion) is a software revision control system that is used by the Lenya community to 
-      manage the development tree. You will need to install a client in order to check out your local
-      copy of Lenya.
-      All Linux distributions come with svn (or subversion) packages. Under Windows, you can either use 
-      TortoiseSVN (see http://tortoisesvn.tigris.org) or the svn package included in Cygwin (http://cygwin.com).
-
-    * (optional) Apache Tomcat for JDK 1.5, version: 5.5.20 or later (earlier versions may work as well, 
-      but they are not tested).
-      Get the source at http://jakarta.apache.org/site/binindex.cgi
-      Note that Lenya ships with Jetty and therefore does not need a servlet container to be installed.
-
-
-
-Standalone Installation (using the built-in Jetty)
-
-
-   This is the recommended mode of installation that is used by most developers.
-
-   1. Get the Java SDK (see Prerequisites): e.g. J2SDK_1.5.0-11
-      and set JAVA_HOME
-      (Windows: start -> Control Panel -> System -> Advanced -> Environment Variables -> User variables
-      ...)
-
-   2. Check out Apache Lenya from SVN:
-      Change into the directory where you want your Lenya sources to be, and do
-  
-        svn checkout http://svn.apache.org/repos/asf/lenya/trunk lenya-2.0.x
-
-   3. Configure Lenya:
-
-      In the newly created lenya-2.0.x directory, copy build.properties to local.build.properties
-      and edit it to taste or use the configure script:
-
-          * Linux: configure.sh (works also on Windows with Cygwin)
-          * Windows: configure.bat
-
-
-   4. Build Lenya:
-
-      Make sure that you have the environment variable JAVA_HOME defined to point 
-      to the location of the Java SDK you installed (see Prerequisites).
-
-      MS Windows: http://support.microsoft.com/default.aspx?scid=kb;en-us;310519&sd=tech
-      Linux/Unix: export JAVA_HOME=/usr/local/jdk-1.5.0 (or wherever your JDK is)
-
-      Start the build process:
-
-          * Linux: ./build.sh (works also on Windows with Cygwin)
-          * Windows:  build.bat
-          
-   5. Start Lenya:
-
-          * Linux: ./lenya.sh
-          * Windows: lenya.bat
-
-   6. Test the installation by pointing your browser to
-          http://localhost:8888/
-
-
-
-Installation with Apache Tomcat
-
-
-   Watch out: Tomcat integration has not been tested much yet. You are welcome
-   to direct questions at or point out problems to the lenya developer mailing
-   list.
-
-   Installing Lenya with Tomcat is similar to stand-alone mode. Follow Steps 1-3
-   above, then do the steps below.
-
-   1. Get Apache Tomcat (see Prerequisites)
-
-   2. Install Apache Tomcat as per the Tomcat docs.
-
-      Important: Make sure you do not install at a location with spaces in the path, such as
-      C:\Tomcat Webapps\Lenya - some components in Lenya/Cocoon don't play well with such paths.
-
-   3. Configure Lenya for Tomcat
-
-      Edit local.build.properties. For the described configuration the following settings 
-      will work (MS Windows: Don't use backslashes "\" for directory separation.) It is 
-      important that tomcat.home.dir is an absolute path. Replace $TOMCAT_HOME by your Tomcat 
-      installation directory. If your Cocoon source directory is not at ../cocoon 
-      relative to Lenya, then change the cocoon.webapp.dir and cocoon.src.dir properties.
-          * cocoon.src.dir=$COCOON_HOME
-          * tomcat.home.dir=$TOMCAT_HOME
-  
-   4. Build Lenya (see "Standalone Installation" above)
-
-   5. Check versions of endorsed libraries
-
-      Lenya and Tomcat will inter-operate correctly only if the proper versions of the Xalan 
-      and Xerces libraries are used consistently throughout the deployment. Unfortunately 
-      this can be difficult to get to work correctly since both of these libraries are shipped 
-      with Java 2 SDK, Tomcat, Cocoon and Lenya.
-
-      The following libraries must be placed in the endorsed library directory for your deployment.
-          * xalan-2.7.0.jar
-          * xalan-2.7.0-serializer.jar
-          * xerces-2.9.0-xercesImpl.jar
-          * xerces-2.9.0-xml-apis.jar
-
-      They are placed by the build process in the directory specified by tomcat.endorsed.dir in 
-      build.properties. You should validate that these files are indeed in the proper location 
-      for your deployment. You must then validate that no other instances of these libraries 
-      exist in any of the following directories:
-          * The Java 2 SDK endorsed standards directories. This is usually ${JAVA_HOME}/lib/endorsed/.
-          * Any other location in your Tomcat deployment. Specifically, check shared/lib/, common/lib/ and server/lib/.
-          * Any other location in your Lenya deployment. Specifically, check webapps/lenya/WEB-INF/lib/.
-
-      A common symptom of incorrect library version are blank pages after starting Lenya. 
-      Try carefully checking the location and version numbers of each of the libraries.
-
-      References:
-          * Tomcat Class Loader HOWTO 
-              (http://jakarta.apache.org/tomcat/tomcat-5.0-doc/class-loader-howto.html)
-          * Java 2 Endorsed Standards Override Mechanism 
-              (http://java.sun.com/j2se/1.4.2/docs/guide/standards/index.html)
- 
-   6. Restart Tomcat
-
-   7. Test the installation by pointing your browser to
-          http://localhost:8080/lenya/
-
-
-Security Considerations
-
-   It is advisable to run Lenya's servlet container with limited privileges,
-   to reduce the impact of a possible exploit.
-   You might want to create a user "lenya" with default group "lenya" for
-   this, change the rights of the build/ tree accordingly, and start the
-   server as that user.
-   
-   Additionally, you might want to consider tightening the write privileges 
-   of the servlet container. At run-time, it only needs write access to
-   WEB-INF/* and the publication's content and access-control store.
-   While not strictly necessary, disallowing write access to other parts
-   makes it harder for an attacker to manipulate the system.
-   FIXME: this needs more detailed documentation.
-
-
-Performing automated tests
-
-  If you are hacking Lenya (or you have healthy paranoia levels), you might want to run automated unit
-  and web tests on your Lenya checkout, especially after modifications. 
-  In the lenya-2.0.x directory, do
-  ./build.sh test    (to run the junit tests, requires a successful build), and
-  ./build.sh modules.test.canoo  (to run the canoo web tests, requires a running servlet engine).
-  
\ No newline at end of file
diff --git a/trunk/KEYS b/trunk/KEYS
deleted file mode 100644
index c8d8936..0000000
--- a/trunk/KEYS
+++ /dev/null
@@ -1,77 +0,0 @@
-(instructions copied from cocoons's KEYS file)
-
-This file contains the PGP keys of various developers.
-Please don't use them for email unless you have to. Their main
-purpose is code signing.
-
-Users: pgp < KEYS
-Developers:
-        pgp -kxa <your name> and append it to this file.
-        (pgpk -ll <your name> && pgpk -xa <your name>) >> this file.
-        (gpg --list-sigs <your name>
-             && gpg --armor --export <your name>) >> this file.
-             
-pub  1024D/08586F81 2004-12-29 Rolf Kulemann (Commiter of the Apache Software Foundation) <roku@apache.org>
-sig 3       08586F81 2004-12-29   Rolf Kulemann (Commiter of the Apache Software Foundation) <roku@apache.org>
-sub  2048g/A57AD592 2004-12-29
-sig         08586F81 2004-12-29   Rolf Kulemann (Commiter of the Apache Software Foundation) <roku@apache.org>
- 
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.4 (GNU/Linux)
- 
-mQGiBEHTMc8RBACrsQmDSKRahyGhnb2744to8ejgPpNSnZ2Zxr4D7YFG3h5YfbXJ
-GOGbtqelSCHUUhUxmOUOUmaiuhSN0l3a1D+zgiesuZxQyCVUVuKPqKkmxm3+q5Ir
-dg6/BXTVQJ+oLJNa4/k/P3V4uncq67NXvweJSzsm15Z9b92K0uFne+m8FwCgp85g
-Lhq+KSHxWTbeZfkUOhhTm7UD/3bcXgOs2NWmqvoOjNVvGu1Fp8mUvpDt5k4mXLqc
-SxAWHm84Mb4K4jrutoc+zWUvXI+ZtoElYGBm3VPBmqSxMgtUrnlPPpQCqZ6w2dU9
-TgJRzJgzwqJFwT++ivPMIokwL5ORn9oKMZUjNjjwCDGFuhUGNTZ2hwiF8568CPs2
-VDIQA/9vQlH5qyJrS9iHvpWKSkE2IdLf1KzpiLx/wiMdRU3UPRN4+ZlObfYwOOdp
-HG0/1njFqueQT4N38DsIzbkXrPd9QPYFiVgbH7dfXKMl3Ddc/5WibfvAWABC6p2u
-Jm6/NANTG9/3aHzg2BsYi+LYgbKJP9+DBIurM511PnIhlW46zLRMUm9sZiBLdWxl
-bWFubiAoQ29tbWl0ZXIgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
-KSA8cm9rdUBhcGFjaGUub3JnPoheBBMRAgAeBQJB0zHPAhsDBgsJCAcDAgMVAgMD
-FgIBAh4BAheAAAoJEAFpbawIWG+BG7gAoJ5fRwMJ3uH4458Plut5lmKu3bggAKCf
-TAn5L3xkjOuIeLjsHM3eI8nYJbkCDQRB0zHgEAgArsy9ADrDmueVAPyYBCDwR2nL
-IekaRRngrocjPPiy4dbEAywkw9A0ixpWKOsTeWHu8/+fKu7+gbInwH3YPLvpJ2+N
-3sHdNpGlGYEV2v50EoJnjeRzRi9HZzPlMtyde/x6Buedz/UtuA3P3IRxSH64OzJE
-DQmMEETkgbIC+//OiNBlxZNzXDhwxoCXjZMTAiXoGITPg6PvDfzgFITWnu6kbLy0
-37aaWAlOS1OLCP9emhDC6I6fE+JaHJyfXfNYlNIy3IMEHVJPsn9uMPcI2jsfiaF2
-HcHJXWFxwWXLHAwRIxXyKPDuKpY6eWU2SIXMNRPsYBiEdgjn8hBWwwFAfT8P0wAD
-Bgf9HSwOjl6MIEpM//JPRV4WMWje7orme+uNVIv5PUmtEev2VE8nSJE5zjgcTYjs
-scSqRFKxHojCDEMbN7GtIXF+AUgoB8BNYT0x0fGf2uohWSteKjGLV23AYG1T+ENr
-v/VqEEP0KnRSwi214rKOsl9msvUtKsX3VqnFiWfSsfv7Azntv1gnHIAIEtlL2Av+
-5aIlbDQ85MGQITOMDO8jGFb+IT/8uf6JnyyxzQzxnKlpp19kew6jnrCCTorral8r
-e7RV4b+KAkHU19YsJWyb+9boCyzA/sgZpjEA9BTAxQOG/TgnR3nqeLyC6mpCVczZ
-JQ7nBdkp2cPEyuTJoE7g1JIhKohJBBgRAgAJBQJB0zHgAhsMAAoJEAFpbawIWG+B
-cMIAmwYpKy/m/LVY7OVZFg7ZoxUU0M14AJ9KrFhoLUbekdKWVY6YNMKarO055w==
-=ndjW
------END PGP PUBLIC KEY BLOCK-----
-             pub  1024D/6A6DC9F7 2005-05-01 Gregor J. Rothfuss <gregor@apache.org>

-sig 3       6A6DC9F7 2005-05-01   Gregor J. Rothfuss <gregor@apache.org>

-sub  1024g/E245A2B0 2005-05-01

-sig         6A6DC9F7 2005-05-01   Gregor J. Rothfuss <gregor@apache.org>

-

------BEGIN PGP PUBLIC KEY BLOCK-----

-Version: GnuPG v1.2.3-nr1 (Windows XP)

-

-mQGiBEJ1SoQRBAC99TailoMLV0eeOkkt+j2qcSiMIFkHdjvh4HoqR6IFwU25gBTB

-0kc6oqx6DzeHI+k8OYh0oG6d7N82kgeGAYsxtYfSrHGqWTr7zz/YjY1N/0xHS+iW

-AEprN7s8Zf3kKQH53bKS6OOVMfdjTkrjwTOw9z0EE6aWzV0y9SIyj3QiKwCgm1dt

-Z1EdHHWGQ0D/iOuPJy4ejCkD/3MLJqjBicx5Lbhm444C28Na7G4QMq84QqhC+qNf

-VY2NcnuMxni7AbcrbGxB5Cvo8untgt/flTvMmK+o0oYZ/zuvvK4sJ5uXDawWnFLH

-nFcvRyLdzHglKeqpEh4LirxR0noiZyrBy0JiHg9NeB/UviFD3bMPRHZorYNoeACK

-WrAHA/wNoH8w/lyYjycVJXgYCW1a4KXpkYqPBpJKKjqPvg9djuWNOaAmWoHcKBI3

-dxyySihi5nQ7ZsZhPXA1Qs/Mp8FeF7xXvr9c2j+r5LWDm4fy3kIpUEcQt3DPubpm

-N+jsb7q3zYcx9jDE5/gE3G4oiS2WqzZ/5+KVrU8dycxAO2tVmbQmR3JlZ29yIEou

-IFJvdGhmdXNzIDxncmVnb3JAYXBhY2hlLm9yZz6IXwQTEQIAHwUCQnVKhAIbAwcL

-CQgHAwIBAxUCAwMWAgECHgECF4AACgkQ8XfjPGptyfe1UwCfaZ8d+pVjgb2yMMa/

-q9+HYzsF9KIAnicPkeNbup0JWZ/Ax5ejNS/1s1GAuQENBEJ1SocQBACN+vU6lOYw

-TB+4s/7xdzSmGWoLv5ZNUNUrXVUwNYAdSCpwfIUcCOkE7mD2QCY7lkeukyYUzy6n

-y7C2zYCIxcf5B12mEX82jUcvHyezgCLziTCKKKnO6kfn5rG18MaPwqNEpyI+PG+h

-FFXGO42+aansVLIMpvHxwkVF0V/fqDtmEwADBQP/cFz7JuuEu0KgAxv8Q2oGsfbm

-qZzrPErChls7mSYBN2n7fWiqb1qcm2rfGq7vUtWGM+I26p+UKZhcF/AnDbfp9lT9

-xdp3rSg3t64//i8VbOv3Y5DCFbcfSVjRCvLzFMnQIT0NwLxkhGh8ugrharCVKgr2

-dEmRNV5jP7dHEpQx356ISQQYEQIACQUCQnVKhwIbDAAKCRDxd+M8am3J97oCAJ0d

-IfihpLACvSdSiT2fCm5UEFrI3ACfXOPMYHCtG4wDI7hrpjFcIjuTzEo=

-=C9sc

------END PGP PUBLIC KEY BLOCK-----

diff --git a/trunk/LICENSE.txt b/trunk/LICENSE.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/trunk/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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.
diff --git a/trunk/NOTICE.txt b/trunk/NOTICE.txt
deleted file mode 100644
index dc7fb79..0000000
--- a/trunk/NOTICE.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Apache Lenya
-Copyright 1999-2006 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by the DOM4J Project
-(http://www.dom4j.org/).
-
-This product includes software developed by the XML:DB Initiative 
-(http://www.xmldb.org/).
-
-This product includes software developed by the BXE Project
-(http://bxe.oscom.org/).
-
-This product includes software developed by the Kupu Project
-(http://kupu.oscom.org/).
-
-Portions are Copyright (c) 1998-2000 World Wide Web Consortium 
-(Massachusetts Institute of Technology, Institut National de Recherche en
-Informatique et en Automatique, Keio University). All Rights Reserved.
-
-Portions are Copyright (c) 2001, 2002 Thai Open Source Software Center Ltd.
-All rights reserved.
diff --git a/trunk/README.txt b/trunk/README.txt
deleted file mode 100644
index 65ea2f7..0000000
--- a/trunk/README.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-
-                    A  P  A  C  H  E        L  E  N  Y  A
-
-  About Apache Lenya
-  ------------------
-
-  Apache Lenya is a Java-based Open-Source Content Management System.
-  It is based on open standards such as XML and XSLT. One of its core
-  components is Cocoon from the Apache Software Foundation.
-
-  Apache Lenya supports inline WYSIWYG editors. Your site editors do not
-  have to learn XML. This is possible thanks to the support of XML,
-  XSLT and XML Schema on the client side. An administration interface
-  allows advanced users to monitor the CMS, and perform configuration
-  tasks.
-
-
-  Installation Instructions and Documentation
-  -------------------------------------------
-
-  For the binary distribution read INSTALL-BIN.txt.
-
-  For the source distribution read INSTALL-SRC.txt.
-
-  The documentation available as of the date of this release is included
-  in this directory.
-
-  If you are updating from a previous release of Lenya, make sure
-  that you read the installation instructions on updating first.
-
-  Look for the most updated documentation on the Apache Lenya web site
-  (http://lenya.apache.org/).
-
-
-
-  Licensing and legal issues
-  --------------------------
-
-  Apache Lenya is licensed under the Apache Software License, a license of the BSD
-  family, and contains software which is compatible with the BSD licensing
-  style.
-
-  For more information, please read the LICENSE files in the /legal directory.
-
-
-
-  Credits
-  -------
-
-  For more information on credits and due reference to included software,
-  please read the CREDITS.txt file in this directory.
-
-
-  Known issues
-  ------------
-
-  The Apache issue tracker is available at
-  http://issues.apache.org/bugzilla/ .
-
-
-
-  Thanks for your interest in Apache Lenya.
-
-
-
-                                               The Apache Lenya Project
-                                             http://lenya.apache.org/
diff --git a/trunk/build.bat b/trunk/build.bat
deleted file mode 100644
index 4f1373c..0000000
--- a/trunk/build.bat
+++ /dev/null
@@ -1,45 +0,0 @@
-@echo off
-rem  Licensed to the Apache Software Foundation (ASF) under one or more
-rem  contributor license agreements.  See the NOTICE file distributed with
-rem  this work for additional information regarding copyright ownership.
-rem  The ASF licenses this file to You under the Apache License, Version 2.0
-rem  (the "License"); you may not use this file except in compliance with
-rem  the License.  You may obtain a copy of the License at
-rem
-rem      http://www.apache.org/licenses/LICENSE-2.0
-rem
-rem  Unless required by applicable law or agreed to in writing, software
-rem  distributed under the License is distributed on an "AS IS" BASIS,
-rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-rem  See the License for the specific language governing permissions and
-rem  limitations under the License.
-rem
-rem ----------------------------------------------------------------------------
-rem build.bat - Win32 Build Script for Apache Lenya
-rem
-rem $Id: build.bat 54525 2004-10-11 09:39:04Z cziegeler $
-rem ----------------------------------------------------------------------------
-
-
-set COCOON_HOME=externals\cocoon_2_1_x
-set COCOON_ENDORSED_DIR=%COCOON_HOME%\lib\endorsed
-
-rem ----- Ignore system CLASSPATH variable
-set OLD_CLASSPATH=%CLASSPATH%
-set CLASSPATH=
-for %%i in (lib\*.jar) do call tools\bin\appendcp.bat %%i
-for %%i in (%COCOON_ENDORSED_DIR%\*.jar) do call tools\bin\appendcp.bat %%i
-
-rem ----- Use Ant shipped with Cocoon. Ignore installed in the system Ant
-set OLD_ANT_HOME=%ANT_HOME%
-set ANT_HOME=tools
-
-call %ANT_HOME%\bin\ant -Djava.endorsed.dirs=%COCOON_ENDORSED_DIR% -logger org.apache.tools.ant.NoBannerLogger -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9
- 
-rem ----- Restore ANT_HOME and ANT_OPTS
-set ANT_HOME=%OLD_ANT_HOME%
-set OLD_ANT_HOME=
-
-rem ----- Restore CLASSPATH
-set CLASSPATH=%OLD_CLASSPATH%
-set OLD_CLASSPATH=
diff --git a/trunk/build.properties b/trunk/build.properties
deleted file mode 100644
index fc05ab5..0000000
--- a/trunk/build.properties
+++ /dev/null
@@ -1,194 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#------------------------------------------------------------------------------------
-
-
-# Properties controlling the build process
-
-# NOTE: 
-# Don't modify this file directly but create a file named
-# 'local.build.properties' and implement ONLY
-# the properties you need.
- 
-# You do NOT have to copy the whole 'build.properties' file.
- 
-# The build system will first read all properties defined 
-# in the 'local.build.properties' file and then will read out the 
-# ones in 'build.properties'. Ant will use the first found.
-# You can as well execute ./configure.sh (Linux) or configure (Windows)
-# to generate the 'local.build.properties'.
-
-#------------------------------------------------------------------------------------
-# Build properties version to make sure that local.build.properties is kept in sync
-# NOTE: Do NOT modify this number unless you are a Dev and want to modify this file
-# NOTE for Devs: Update this number if this file is being updated.
-#                Also update the version number within src/targets/properties-build.xml
-
-build.properties.version=594644
-
-#------------------------------------------------------------------------------------
-# The root of the Cocoon source tree
-
-cocoon.src.dir=externals/cocoon_2_1_x
-#cocoon.src.dir=../../cocoon/branches/BRANCH_2_1_X
-
-
-#------------------------------------------------------------------------------------
-# The cocoon webapp directory
-# You do not have to change this since Lenya will build Cocoon for you
-
-cocoon.webapp.dir=${cocoon.src.dir}/build/webapp
-
-
-#------------------------------------------------------------------------------------
-# Root directories where publications are located
-
-pubs.root.dirs=src/pubs
-#pubs.root.dirs=src/pubs:../anotherproject/pubs:/home/user/my-pub
-
-
-#------------------------------------------------------------------------------------
-# Root directories where modules are located
-modules.root.dirs=src/modules:src/modules-core:src/pubs/default/modules
-#modules.root.dirs=src/modules:src/pubs/default/modules:src/modules-optional
-
-# copy modules to the web application?
-modules.copy=true
-
-#------------------------------------------------------------------------------------
-# Web Application Server
-# NOTE: There are slight differences re deployment on the various servlet containers, e.g. endorsed libraries ...
-
-web.app.server=Jetty
-# NOTE: This only works for lenya.sh (Linux). TODO: Make it also work for lenya.bat (Windows)
-web.app.server.jetty.port=8888
-web.app.server.jetty.admin.port=8889
-#web.app.server=Tomcat
-#web.app.server=WLS
-
-
-#------------------------------------------------------------------------------------
-# Where the 'install' build target should put the webapp context
-# WARNING: This has to be an absolute path! (FIXME: cocoon.xconf needs absolute path (scr/targets/init-build.xml))
-# NOTE: Do not use white spaces within the path
-
-tomcat.home.dir=/usr/local/tomcat
-#tomcat.home.dir=C:/build/tomcat
-
-
-#------------------------------------------------------------------------------------
-# Where the 'install' build target should put the webapp context
-# NOTE: This path is not necessarily relative to tomcat.home.dir
-
-tomcat.webapps.dir=${tomcat.home.dir}/webapps/lenya
-
-
-#------------------------------------------------------------------------------------
-# The server cache directory to be cleaned by the 'reset' target
-# NOTE: This path is not necessarily relative to tomcat.home.dir
-
-# Tomcat 5.x
-tomcat.cache.dir=${tomcat.home.dir}/work/Catalina/localhost/lenya
-# Tomcat 4.x
-#tomcat.cache.dir=${tomcat.home.dir}/work/Standalone/localhost/lenya
-
-#------------------------------------------------------------------------------------
-# Where the 'install' build target should copy the endorsed libraries
-# NOTE: This path is not necessarily relative to tomcat.home.dir
-
-tomcat.endorsed.dir=${tomcat.home.dir}/common/endorsed
-
-
-#------------------------------------------------------------------------------------
-# Files and directories which should be excluded during 'install', 'clean' and 'reset'
-# Comma- or space-separated list of patterns
-# All files are included when commented
-# This is useful for preserving content while you are developing a publication
-
-#target.install.excludes=**/pubs/default/content/**,**/pubs/default/resources/authoring/**,**/pubs/default/resources/live/**,**/pubs/default/config/ac/passwd/*.iml
-#target.reset.excludes=${target.install.excludes}
-
-
-#------------------------------------------------------------------------------------
-# TODO: This seems to have moved to src/confpatch/enable-uploads.xweb whereas it
-#       does NOT seem to work properly!
-# Enable file uploads in Lenya
-# If you leave this set to false, asset and image upload will not work.
-# It is disabled by default for security reasons
-# NOTE: One can change this after the build within build/lenya/webapp/WEB-INF/web.xml
-#       where also the max upload size can be configured (upload-max-size parameter)
-
-enable.uploads=false
-
-
-#------------------------------------------------------------------------------------
-# Anteater home directory
-
-#anteater.home=/usr/local/anteater
-
-
-#------------------------------------------------------------------------------------
-# Canoo Webtest configuration
-
-# Webtest home directory
-#webtest.home=/usr/local/canoo-webtest-2.1
-
-# Webtest configuration parameters
-webtest.config.host=localhost
-webtest.config.port=8888
-webtest.config.basepath=default/authoring
-
-
-#------------------------------------------------------------------------------------
-# Eclipse Properties for use with the eclipse-project target
-
-ide.eclipse.outputdir=build/eclipse/classes
-ide.eclipse.export.libs=false
-
-
-#------------------------------------------------------------------------------------
-# The Java version.
-
-# Change to 1.5 if you need the features of 1.5.
-src.java.version=1.4
-
-
-#------------------------------------------------------------------------------------
-# Xopus context name
-
-xopus.context=Xopus2.1.64
-xopus.path=../../ROOT
-
-
-#------------------------------------------------------------------------------------
-# JCR repository factory
-
-repository.factory=org.apache.lenya.cms.jcr.jackrabbit.JackrabbitRepositoryFactory
-# NOTE: JeceiraRepositoryFactory has not been implemented yet
-#repository.factory=org.apache.lenya.cms.jcr.jeceira.JeceiraRepositoryFactory
-
-
-#------------------------------------------------------------------------------------
-# NOTE: The node factory needs to be configured within "build/lenya/webapp/WEB-INF/classes/org/apache/lenya/lenya.roles" after having build Lenya
-
-#node.factory=org.apache.lenya.cms.repository.SourceNodeFactory
-#node.factory=org.apache.lenya.cms.repo.adapter.RepoNodeFactory
-#node.factory=org.apache.lenya.cms.jcr.JCRNodeFactory
-
-
-#------------------------------------------------------------------------------------
-# SVN Revision number
-
-lenya.revision=xxx
diff --git a/trunk/build.sh b/trunk/build.sh
deleted file mode 100755
index 14ea29c..0000000
--- a/trunk/build.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-                                                                                                                                                             
-chmod u+x ./tools/bin/antRun
-chmod u+x ./tools/bin/ant
-                                                                                                                                                             
-# ----- Verify and Set Required Environment Variables -------------------------
-                                                                                                                                                             
-if [ "$TERM" = "cygwin" ] ; then
-  S=';'
-else
-  S=':'
-fi
-                                                                                                                                                             
-# ----- Ignore system CLASSPATH variable
-OLD_CLASSPATH="$CLASSPATH"
-unset CLASSPATH
-CLASSPATH="`echo lib/*.jar | tr ' ' $S`"
-ENDORSED_DIR="externals/cocoon_2_1_x/lib/endorsed"
-# Add cocoon endorsed libs
-CLASSPATH="$CLASSPATH `echo $ENDORSED_DIR/*.jar | tr ' ' $S`"
-export CLASSPATH
-
-# ----- Use Ant shipped with Lenya. Ignore installed in the system Ant
-OLD_ANT_HOME="$ANT_HOME"
-ANT_HOME=tools
-OLD_ANT_OPTS="$ANT_OPTS"
-ANT_OPTS="-Xms32M -Xmx512M -Djava.endorsed.dirs=$ENDORSED_DIR"
-export ANT_HOME ANT_OPTS
-
-"$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs  $@
-ERR=$?
-
-# ----- Restore ANT_HOME and ANT_OPTS
-ANT_HOME="$OLD_ANT_HOME"
-ANT_OPTS="$OLD_ANT_OPTS"
-export ANT_HOME ANT_OPTS
-unset OLD_ANT_HOME
-unset OLD_ANT_OPTS
-                                                                                                                                                             
-# ----- Restore CLASSPATH
-CLASSPATH="$OLD_CLASSPATH"
-export CLASSPATH
-unset OLD_CLASSPATH
-
-# Build status return
-# Usage: e.g. bash: ./build.sh; if [ $? -ne 0 ]; then echo "Build FAILED"; fi
-exit $ERR
diff --git a/trunk/build.xml b/trunk/build.xml
deleted file mode 100644
index 09fc558..0000000
--- a/trunk/build.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!DOCTYPE project [
-<!-- ===========================================================================
-
-                       * =========================== *
-                       |  Apache Lenya Build System |
-                       * =========================== *
-
-       CVS $Id$:
-
-============================================================================ -->
-
-]>
-
-<project default="webapp" basedir="." name="lenya">
-
-  <!-- ==================  Apache Lenya targets  ======================== -->
-
-  <!-- =================================================================== -->
-  <!-- Global properties  -->
-  <import file="src/targets/properties-build.xml" />
-  <!-- Initialization targets  -->
-  <import file="src/targets/init-build.xml" />
-  <!-- IDE targets             --> 
-  <import file="src/targets/ide-build.xml" />
-  <!-- Compile targets         --> 
-  <import file="src/targets/compile-build.xml" />
-  <!-- Documentation targets   --> 
-  <import file="src/targets/docs-build.xml" />
-  <!-- Web application targets -->
-  <import file="src/targets/webapp-build.xml" />
-  <!-- Testcases targets       -->
-  <import file="src/targets/test-build.xml" />
-  <!-- Distribution targets    -->
-  <import file="src/targets/dist-build.xml" />
-  <!-- Kupu targets            -->
-  <import file="src/targets/kupu-build.xml" />
-  <!-- Export targets          -->
-  <import file="src/targets/export-build.xml" />
-  <!-- module targets          -->
-  <import file="src/targets/modules-build.xml" />
-  <!-- migration targets          -->
-  <import file="src/targets/migration-build.xml" />
-  <!-- Publication tests       -->
-  <import file="src/targets/publication-test-build.xml" />
-  <!-- Successfully Built Message       -->
-  <import file="src/targets/message-build.xml" />
-  <!-- =================================================================== -->
-
-</project>
diff --git a/trunk/configure.bat b/trunk/configure.bat
deleted file mode 100644
index affdab6..0000000
--- a/trunk/configure.bat
+++ /dev/null
@@ -1,51 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one or more
-:: contributor license agreements.  See the NOTICE file distributed with
-:: this work for additional information regarding copyright ownership.
-:: The ASF licenses this file to You 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.
-::
-::
-@echo off
-
-:: define variables for paths
-set LENYA_HOME=%CD%
-set CP=%LENYA_HOME%\tools\configure\lib\apache-lenya-configure-core-1.4-dev-r414579.jar;%LENYA_HOME%\tools\configure\lib\apache-lenya-configure-impl-1.4-dev-r414579.jar
-echo The classpath is set to: %CP%
-
-:: check if JAVA_HOME is set or goto end
-if not "%JAVA_HOME%" == "" goto gotJavaHome
-echo You must set JAVA_HOME to point at your Java Development Kit installation
-goto end
-
-:gotJavaHome
-:: If commandline argument cmd is given goto javaCmd. Default without any argument
-:: it will start the GUI.
-if "%1" == "gui" goto javaGui
-goto javaCmd
-
-:javaGui
-java -classpath %CP% org.apache.lenya.config.impl.ConfigureGUI %LENYA_HOME%
-goto end
-
-:javaCmd
-java -classpath %CP% org.apache.lenya.config.impl.ConfigureCommandLine %LENYA_HOME%
-goto end
-
-:help
-echo Usage: %0 gui or cmd
-goto end
-
-
-:end
-:: unset used variables
-set LENYA_HOME=
-set CP=
diff --git a/trunk/configure.sh b/trunk/configure.sh
deleted file mode 100755
index e350bcf..0000000
--- a/trunk/configure.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/sh
-
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-                                                                                                                                                             
-# ----- Verify and Set Required Environment Variables -------------------------
-                                                                                                                                                             
-if [ "$TERM" = "cygwin" ] ; then
-  S=';'
-else
-  S=':'
-fi
-
-# ----- Check JAVA_HOME
-JAVA_HOME="$JAVA_HOME"
-if [ "$JAVA_HOME" = "" ];then
-  echo "ERROR: No JAVA_HOME set yet!"
-  echo "       Have you installed JDK 1.4.2 or higher?"
-  echo ""
-  echo "NOTE:  Apache Lenya does not work properly with JDK 1.5!"
-  exit 1
-fi
-                                                                                                                                                             
-# ----- Ignore system CLASSPATH variable
-OLD_CLASSPATH="$CLASSPATH"
-unset CLASSPATH
-#CLASSPATH="`echo tools/configure/build/classes | tr ' ' $S`"
-CLASSPATH="tools/configure/lib/apache-lenya-configure-core-1.4-dev-r414579.jar:tools/configure/lib/apache-lenya-configure-impl-1.4-dev-r414579.jar"
-export CLASSPATH
-#echo "DEBUG: $CLASSPATH"
-
-DEFAULT_UI_TYPE=cmd
-UI_TYPE=$1
-if [ "$UI_TYPE" = "" ];then
-  UI_TYPE=$DEFAULT_UI_TYPE
-fi
-#echo "DEBUG: $UI_TYPE"
-
-
-PWD=`pwd`
-if [ "$UI_TYPE" = "cmd" ];then
-  java org.apache.lenya.config.impl.ConfigureCommandLine $PWD
-elif [ "$UI_TYPE" = "gui" ]; then
-  java org.apache.lenya.config.impl.ConfigureGUI $PWD
-else
-  echo "ERROR: No such User Interface: $UI_TYPE"
-  exit 1
-fi
-ERR=$?
-
-echo ""
-echo "NOTE (for the advanced user): You might want to edit the local.* files manually, because there are often even more parameters which can be configured than the ones which were presented during this configuration setup!"
-
-echo ""
-echo "NOTE: Build Lenya now by running ./build.sh!"
-
-# ----- Restore CLASSPATH
-CLASSPATH="$OLD_CLASSPATH"
-export CLASSPATH
-unset OLD_CLASSPATH
-
-# Build status return
-# Usage: e.g. bash: ./build.sh; if [ $? -ne 0 ]; then echo "Build FAILED"; fi
-exit $ERR
diff --git a/trunk/legal/LICENSE.apache b/trunk/legal/LICENSE.apache
deleted file mode 100644
index 1fc4c3e..0000000
--- a/trunk/legal/LICENSE.apache
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
- ============================================================================
-                   The Apache Software License, Version 1.1
- ============================================================================
- 
- Copyright (C) 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 "Apache Cocoon" 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 and was  originally created by
- Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
- Software Foundation, please see <http://www.apache.org/>.
- 
-*/
diff --git a/trunk/legal/LICENSE.avalon b/trunk/legal/LICENSE.avalon
deleted file mode 100644
index 86f3c8a..0000000
--- a/trunk/legal/LICENSE.avalon
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
- ============================================================================
-                   The Apache Software License, Version 1.1
- ============================================================================
- 
- Copyright (C) 1997-2001 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 "Jakarta", "Avalon", "Excalibur", "Avalon Framework" 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/>.
-     
-
diff --git a/trunk/legal/LICENSE.batik b/trunk/legal/LICENSE.batik
deleted file mode 100644
index 6480f2a..0000000
--- a/trunk/legal/LICENSE.batik
+++ /dev/null
@@ -1,45 +0,0 @@
- ============================================================================
-                   The Apache Software License, Version 1.1
- ============================================================================
- 
- Copyright (C) 2000 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 "Batik" 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/>.
diff --git a/trunk/legal/LICENSE.bxeng b/trunk/legal/LICENSE.bxeng
deleted file mode 100644
index 7dd2916..0000000
--- a/trunk/legal/LICENSE.bxeng
+++ /dev/null
@@ -1,49 +0,0 @@
-The Bitflux Editor Software License
-
-Copyright (c) 2002, 2003 Bitflux GmbH. All rights reserved.
-
-Redistribution and use in source and binary forms,
-with or without modification, 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. All advertising materials mentioning features or
-use of this software must display the following
-acknowledgment: "This product includes software
-developed by Bitflux GmbH (http://www.bitflux.ch)"
-
-4. The name "Bitflux Editor" and "Bitflux" must not be
-used to endorse or promote products derived from this
-software without prior written permission. For written
-permission, please contact editor@bitflux.ch
-
-5. Products derived from this software may not be
-called "Bitflux" or "Bitflux Editor" nor may "Bitflux"
-or "Bitflux Editor" appear in their names without
-prior written permission of Bitflux.
-
-6. Redistributions of any form whatsoever must retain
-the following acknowledgment: "This product includes
-software developed by Bitflux GmbH 
-(http://www.bitflux.ch)"
-
-
-THIS SOFTWARE IS PROVIDED BY Bitflux "AS IS" WITHOUT
-ANY WARRANTY EXPRESS OR IMPLIED, INCLUDING THE
-WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. Bitflux WILL NOT BE LIABLE FOR ANY
-DAMAGES SUFFERED BY YOU AS A RESULT OF USING THIS
-SOFTWARE. IN NO EVENT WILL Bitflux BE LIABLE FOR ANY
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST
-PROFITS EVEN IF Bitflux HAS BEEN ADVISED OF THE
-POSSIBILITY OF THEIR OCCURRENCE. Bitflux WILL NOT BE
-LIABLE FOR ANY THIRD PARTY CLAIMS AGAINST YOU.
diff --git a/trunk/legal/LICENSE.forrest b/trunk/legal/LICENSE.forrest
deleted file mode 100644
index f376e9b..0000000
--- a/trunk/legal/LICENSE.forrest
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-
- ============================================================================
-                   The Apache Software License, Version 1.1
- ============================================================================
- 
- Copyright (C) 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 "Apache Forrest" 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/>.
- 
-*/
diff --git a/trunk/legal/LICENSE.jakarta-commons b/trunk/legal/LICENSE.jakarta-commons
deleted file mode 100644
index 5fb9ec1..0000000
--- a/trunk/legal/LICENSE.jakarta-commons
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * ====================================================================
- * 
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 acknowledgement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgement may appear in the software itself,
- *    if and wherever such third-party acknowledgements normally appear.
- *
- * 4. The names "Apache", "The Jakarta Project", "Commons", 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 (INCLUDING, 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/>.
- *
- */ 
- 
\ No newline at end of file
diff --git a/trunk/legal/LICENSE.jakarta-regexp b/trunk/legal/LICENSE.jakarta-regexp
deleted file mode 100644
index 64ea074..0000000
--- a/trunk/legal/LICENSE.jakarta-regexp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * ====================================================================
- * 
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Jakarta-Regexp", 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 names without prior written
- *    permission of the Apache Group.
- *
- * 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 (INCLUDING, 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/>.
- *
- */ 
diff --git a/trunk/legal/LICENSE.jing b/trunk/legal/LICENSE.jing
deleted file mode 100644
index f257dcc..0000000
--- a/trunk/legal/LICENSE.jing
+++ /dev/null
@@ -1,39 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Jing Copying Conditions</title></head>
-<body>
-<h1>Jing Copying Conditions</h1>
-
-<p>Copyright (c) 2001-2003 Thai Open Source Software Center Ltd<br>
-All rights reserved.</p>
-
-<p>Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:</p>
-
-<ul>
-    <li>Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.</li>
-
-    <li>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.</li>
-
-    <li>Neither the name of the Thai Open Source Software Center Ltd nor
-    the names of its contributors may be used to endorse or promote
-    products derived from this software without specific prior written
-    permission.</li>
-</ul>
-
-<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS 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 REGENTS OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.</p>
-
-</body></html>
\ No newline at end of file
diff --git a/trunk/legal/LICENSE.jtidy b/trunk/legal/LICENSE.jtidy
deleted file mode 100644
index 84e366b..0000000
--- a/trunk/legal/LICENSE.jtidy
+++ /dev/null
@@ -1,49 +0,0 @@
-  Java HTML Tidy - JTidy
-  HTML parser and pretty printer
-
-  Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
-  Institute of Technology, Institut National de Recherche en
-  Informatique et en Automatique, Keio University). All Rights
-  Reserved.
-
-  Contributing Author(s):
-
-     Dave Raggett <dsr@w3.org>
-     Andy Quick <ac.quick@sympatico.ca> (translation to Java)
-     Gary L Peskin <garyp@firstech.com> (Java development)
-     Sami Lempinen <sami@lempinen.net>  (release management)
-
-  The contributing author(s) would like to thank all those who
-  helped with testing, bug fixes, and patience.  This wouldn't
-  have been possible without all of you.
-
-  COPYRIGHT NOTICE:
- 
-  This software and documentation is provided "as is," and
-  the copyright holders and contributing author(s) make no
-  representations or warranties, express or implied, including
-  but not limited to, warranties of merchantability or fitness
-  for any particular purpose or that the use of the software or
-  documentation will not infringe any third party patents,
-  copyrights, trademarks or other rights. 
-
-  The copyright holders and contributing author(s) will not be
-  liable for any direct, indirect, special or consequential damages
-  arising out of any use of the software or documentation, even if
-  advised of the possibility of such damage.
-
-  Permission is hereby granted to use, copy, modify, and distribute
-  this source code, or portions hereof, documentation and executables,
-  for any purpose, without fee, subject to the following restrictions:
-
-  1. The origin of this source code must not be misrepresented.
-  2. Altered versions must be plainly marked as such and must
-     not be misrepresented as being the original source.
-  3. This Copyright notice may not be removed or altered from any
-     source or altered source distribution.
- 
-  The copyright holders and contributing author(s) specifically
-  permit, without fee, and encourage the use of this source code
-  as a component for supporting the Hypertext Markup Language in
-  commercial products. If you use this source code in a product,
-  acknowledgment is not required but would be appreciated.
diff --git a/trunk/legal/LICENSE.junit b/trunk/legal/LICENSE.junit
deleted file mode 100644
index cdf887a..0000000
--- a/trunk/legal/LICENSE.junit
+++ /dev/null
@@ -1,185 +0,0 @@
-

-IBM Public License Version 1.0 

-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM PUBLIC 

-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE 

-PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 

-1. DEFINITIONS 

-

-"Contribution" means: 

-  a) in the case of International Business Machines Corporation ("IBM"), 

-  the Original Program, and 

-  b) in the case of each Contributor, 

-  i) changes to the Program, and

-  ii) additions to the Program;

-  where such changes and/or additions to the Program originate from and 

-  are distributed by that particular Contributor. A Contribution 

-  'originates' from a Contributor if it was added to the Program by such 

-  Contributor itself or anyone acting on such Contributor's behalf. 

-  Contributions do not include additions to the Program which: (i) are 

-  separate modules of software distributed in conjunction with the Program 

-  under their own license agreement, and (ii) are not derivative works of 

-  the Program.

-"Contributor" means IBM and any other entity that distributes the Program. 

-

-"Licensed Patents " mean patent claims licensable by a Contributor which 

-are necessarily infringed by the use or sale of its Contribution alone or 

-when combined with the Program. 

-"Original Program" means the original version of the software accompanying 

-this Agreement as released by IBM, including source code, object code and 

-documentation, if any. 

-"Program" means the Original Program and Contributions. 

-"Recipient" means anyone who receives the Program under this Agreement, 

-including all Contributors. 

-2. GRANT OF RIGHTS 

-  a) Subject to the terms of this Agreement, each Contributor hereby 

-  grants Recipient a non-exclusive, worldwide, royalty-free copyright 

-  license to reproduce, prepare derivative works of, publicly display, 

-  publicly perform, distribute and sublicense the Contribution of such 

-  Contributor, if any, and such derivative works, in source code and 

-  object code form.

-  b) Subject to the terms of this Agreement, each Contributor hereby 

-  grants Recipient a non-exclusive, worldwide, royalty-free patent license 

-  under Licensed Patents to make, use, sell, offer to sell, import and 

-  otherwise transfer the Contribution of such Contributor, if any, in 

-  source code and object code form. This patent license shall apply to the 

-  combination of the Contribution and the Program if, at the time the 

-  Contribution is added by the Contributor, such addition of the 

-  Contribution causes such combination to be covered by the Licensed 

-  Patents. The patent license shall not apply to any other combinations 

-  which include the Contribution. No hardware per se is licensed 

-  hereunder. 

-  c) Recipient understands that although each Contributor grants the 

-  licenses to its Contributions set forth herein, no assurances are 

-  provided by any Contributor that the Program does not infringe the 

-  patent or other intellectual property rights of any other entity. Each 

-  Contributor disclaims any liability to Recipient for claims brought by 

-  any other entity based on infringement of intellectual property rights 

-  or otherwise. As a condition to exercising the rights and licenses 

-  granted hereunder, each Recipient hereby assumes sole responsibility to 

-  secure any other intellectual property rights needed, if any. For 

-  example, if a third party patent license is required to allow Recipient 

-  to distribute the Program, it is Recipient's responsibility to acquire 

-  that license before distributing the Program.

-  d) Each Contributor represents that to its knowledge it has sufficient 

-  copyright rights in its Contribution, if any, to grant the copyright 

-  license set forth in this Agreement. 

-3. REQUIREMENTS 

-A Contributor may choose to distribute the Program in object code form 

-under its own license agreement, provided that: 

-  a) it complies with the terms and conditions of this Agreement; and

-  b) its license agreement:

-  i) effectively disclaims on behalf of all Contributors all warranties 

-  and conditions, express and implied, including warranties or conditions 

-  of title and non-infringement, and implied warranties or conditions of 

-  merchantability and fitness for a particular purpose; 

-  ii) effectively excludes on behalf of all Contributors all liability for 

-  damages, including direct, indirect, special, incidental and 

-  consequential damages, such as lost profits; 

-  iii) states that any provisions which differ from this Agreement are 

-  offered by that Contributor alone and not by any other party; and

-  iv) states that source code for the Program is available from such 

-  Contributor, and informs licensees how to obtain it in a reasonable 

-  manner on or through a medium customarily used for software exchange.

-When the Program is made available in source code form: 

-  a) it must be made available under this Agreement; and 

-  b) a copy of this Agreement must be included with each copy of the 

-  Program. 

-Each Contributor must include the following in a conspicuous location in 

-the Program: 

-  Copyright © {date here}, International Business Machines Corporation and 

-  others. All Rights Reserved. 

-In addition, each Contributor must identify itself as the originator of 

-its Contribution, if any, in a manner that reasonably allows subsequent 

-Recipients to identify the originator of the Contribution. 

-4. COMMERCIAL DISTRIBUTION 

-Commercial distributors of software may accept certain responsibilities 

-with respect to end users, business partners and the like. While this 

-license is intended to facilitate the commercial use of the Program, the 

-Contributor who includes the Program in a commercial product offering 

-should do so in a manner which does not create potential liability for 

-other Contributors. Therefore, if a Contributor includes the Program in a 

-commercial product offering, such Contributor ("Commercial Contributor") 

-hereby agrees to defend and indemnify every other Contributor 

-("Indemnified Contributor") against any losses, damages and costs 

-(collectively "Losses") arising from claims, lawsuits and other legal 

-actions brought by a third party against the Indemnified Contributor to 

-the extent caused by the acts or omissions of such Commercial Contributor 

-in connection with its distribution of the Program in a commercial product 

-offering. The obligations in this section do not apply to any claims or 

-Losses relating to any actual or alleged intellectual property 

-infringement. In order to qualify, an Indemnified Contributor must: a) 

-promptly notify the Commercial Contributor in writing of such claim, and 

-b) allow the Commercial Contributor to control, and cooperate with the 

-Commercial Contributor in, the defense and any related settlement 

-negotiations. The Indemnified Contributor may participate in any such 

-claim at its own expense. 

-For example, a Contributor might include the Program in a commercial 

-product offering, Product X. That Contributor is then a Commercial 

-Contributor. If that Commercial Contributor then makes performance claims, 

-or offers warranties related to Product X, those performance claims and 

-warranties are such Commercial Contributor's responsibility alone. Under 

-this section, the Commercial Contributor would have to defend claims 

-against the other Contributors related to those performance claims and 

-warranties, and if a court requires any other Contributor to pay any 

-damages as a result, the Commercial Contributor must pay those damages. 

-5. NO WARRANTY 

-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 

-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. Each Recipient is solely responsible for determining 

-the appropriateness of using and distributing the Program and assumes all 

-risks associated with its exercise of rights under this Agreement, 

-including but not limited to the risks and costs of program errors, 

-compliance with applicable laws, damage to or loss of data, programs or 

-equipment, and unavailability or interruption of operations. 

-6. DISCLAIMER OF LIABILITY 

-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 

-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, 

-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING 

-WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION 

-OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF 

-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 

-7. GENERAL 

-If any provision of this Agreement is invalid or unenforceable under 

-applicable law, it shall not affect the validity or enforceability of the 

-remainder of the terms of this Agreement, and without further action by 

-the parties hereto, such provision shall be reformed to the minimum extent 

-necessary to make such provision valid and enforceable. 

-If Recipient institutes patent litigation against a Contributor with 

-respect to a patent applicable to software (including a cross-claim or 

-counterclaim in a lawsuit), then any patent licenses granted by that 

-Contributor to such Recipient under this Agreement shall terminate as of 

-the date such litigation is filed. In addition, If Recipient institutes 

-patent litigation against any entity (including a cross-claim or 

-counterclaim in a lawsuit) alleging that the Program itself (excluding 

-combinations of the Program with other software or hardware) infringes 

-such Recipient's patent(s), then such Recipient's rights granted under 

-Section 2(b) shall terminate as of the date such litigation is filed. 

-All Recipient's rights under this Agreement shall terminate if it fails to 

-comply with any of the material terms or conditions of this Agreement and 

-does not cure such failure in a reasonable period of time after becoming 

-aware of such noncompliance. If all Recipient's rights under this 

-Agreement terminate, Recipient agrees to cease use and distribution of the 

-Program as soon as reasonably practicable. However, Recipient's 

-obligations under this Agreement and any licenses granted by Recipient 

-relating to the Program shall continue and survive. 

-IBM may publish new versions (including revisions) of this Agreement from 

-time to time. Each new version of the Agreement will be given a 

-distinguishing version number. The Program (including Contributions) may 

-always be distributed subject to the version of the Agreement under which 

-it was received. In addition, after a new version of the Agreement is 

-published, Contributor may elect to distribute the Program (including its 

-Contributions) under the new version. No one other than IBM has the right 

-to modify this Agreement. Except as expressly stated in Sections 2(a) and 

-2(b) above, Recipient receives no rights or licenses to the intellectual 

-property of any Contributor under this Agreement, whether expressly, by 

-implication, estoppel or otherwise. All rights in the Program not 

-expressly granted under this Agreement are reserved. 

-This Agreement is governed by the laws of the State of New York and the 

-intellectual property laws of the United States of America. No party to 

-this Agreement will bring a legal action under this Agreement more than 

-one year after the cause of action arose. Each party waives its rights to 

-a jury trial in any resulting litigation. 

diff --git a/trunk/legal/LICENSE.logkit b/trunk/legal/LICENSE.logkit
deleted file mode 100644
index b360565..0000000
--- a/trunk/legal/LICENSE.logkit
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
- ============================================================================
-                   The Apache Software License, Version 1.1
- ============================================================================
- 
- Copyright (C) 1999-2001 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 "LogKit", "Jakarta" 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 and was  originally created by
- Stefano Mazzocchi  <stefano@apache.org>. For more  information on the Apache 
- Software Foundation, please see <http://www.apache.org/>.
- 
-*/
diff --git a/trunk/legal/LICENSE.quartz b/trunk/legal/LICENSE.quartz
deleted file mode 100644
index 4c8db80..0000000
--- a/trunk/legal/LICENSE.quartz
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * All source code, binaries, documentation and other files distributed
- * with Quartz Enterprise Job Scheduler are subject to the following 
- * license terms, and are held under the following copyright notice, 
- * unless otherwise noted within the individual files.
- *
- */
-
-
-/*
- *  Copyright James House (c) 2001-2003
- *
- *  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS 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 AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, 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 product uses and includes within its distribution, 
- * software developed by the Apache Software Foundation 
- *     (http://www.apache.org/)
- *
- */
diff --git a/trunk/legal/LICENSE.resolver b/trunk/legal/LICENSE.resolver
deleted file mode 100644
index b9f6031..0000000
--- a/trunk/legal/LICENSE.resolver
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 "Apache" 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 (INCLUDING, 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/>.
- */
diff --git a/trunk/legal/LICENSE.servlet b/trunk/legal/LICENSE.servlet
deleted file mode 100644
index 9bace83..0000000
--- a/trunk/legal/LICENSE.servlet
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Tomcat", 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 names without prior written
- *    permission of the Apache Group.
- *
- * 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 (INCLUDING, 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/>.
- *
- * ====================================================================
- *
- * This source code implements specifications defined by the Java
- * Community Process. In order to remain compliant with the specification
- * DO NOT add / change / or delete method signatures!
- */ 
diff --git a/trunk/legal/LICENSE.websphinx b/trunk/legal/LICENSE.websphinx
deleted file mode 100644
index 3a6c289..0000000
--- a/trunk/legal/LICENSE.websphinx
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * WebSphinx web-crawling toolkit
- *
- * Copyright (c) 1998-2002 Carnegie Mellon University.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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.
- *
- * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``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 CARNEGIE MELLON UNIVERSITY
- * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.
- *
- */
diff --git a/trunk/legal/LICENSE.xalan b/trunk/legal/LICENSE.xalan
deleted file mode 100644
index 21156a6..0000000
--- a/trunk/legal/LICENSE.xalan
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 "Xalan" 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 (INCLUDING, 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 and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
diff --git a/trunk/legal/LICENSE.xerces b/trunk/legal/LICENSE.xerces
deleted file mode 100644
index b37087c..0000000
--- a/trunk/legal/LICENSE.xerces
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 "Xerces" 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 (INCLUDING, 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 and was
- * originally based on software copyright (c) 1999, International
- * Business Machines, Inc., http://www.ibm.com.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
diff --git a/trunk/legal/LICENSE.xml-apis b/trunk/legal/LICENSE.xml-apis
deleted file mode 100644
index 930145f..0000000
--- a/trunk/legal/LICENSE.xml-apis
+++ /dev/null
@@ -1,5 +0,0 @@
-
-xml-apis is covered by The Apache Software License, Version 1.1
-
-FIXME: Put license text in here once it is available at
-       http://cvs.apache.org/viewcvs.cgi/xml-commons/
diff --git a/trunk/legal/ant-contrib-0.6.jar.license.txt b/trunk/legal/ant-contrib-0.6.jar.license.txt
deleted file mode 100644
index 4d8c2fb..0000000
--- a/trunk/legal/ant-contrib-0.6.jar.license.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001-2003 Ant-Contrib project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, 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 acknowlegement:  
- *       "This product includes software developed by the 
- *        Ant-Contrib project (http://sourceforge.net/projects/ant-contrib)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The name Ant-Contrib must not be used to endorse or promote products 
- *    derived from this software without prior written permission. For
- *    written permission, please contact
- *    ant-contrib-developers@lists.sourceforge.net.
- *
- * 5. Products derived from this software may not be called "Ant-Contrib"
- *    nor may "Ant-Contrib" appear in their names without prior written
- *    permission of the Ant-Contrib project.
- *
- * 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 ANT-CONTRIB PROJECT OR ITS
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.
- * ====================================================================
- */
diff --git a/trunk/legal/ant-junit.jar.license.txt b/trunk/legal/ant-junit.jar.license.txt
deleted file mode 100644
index f820d4b..0000000
--- a/trunk/legal/ant-junit.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- *                                 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.
- */
diff --git a/trunk/legal/ant-launcher.jar.license.txt b/trunk/legal/ant-launcher.jar.license.txt
deleted file mode 100644
index f820d4b..0000000
--- a/trunk/legal/ant-launcher.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- *                                 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.
- */
diff --git a/trunk/legal/ant-trax.jar.license.txt b/trunk/legal/ant-trax.jar.license.txt
deleted file mode 100644
index f820d4b..0000000
--- a/trunk/legal/ant-trax.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- *                                 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.
- */
diff --git a/trunk/legal/ant.jar.license.txt b/trunk/legal/ant.jar.license.txt
deleted file mode 100644
index f820d4b..0000000
--- a/trunk/legal/ant.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- *                                 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.
- */
diff --git a/trunk/legal/commons-cli-1.0.jar.license.txt b/trunk/legal/commons-cli-1.0.jar.license.txt
deleted file mode 100644
index 4088a92..0000000
--- a/trunk/legal/commons-cli-1.0.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-                               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.
-
- 
\ No newline at end of file
diff --git a/trunk/legal/commons-logging.jar.license.txt b/trunk/legal/commons-logging.jar.license.txt
deleted file mode 100644
index 4088a92..0000000
--- a/trunk/legal/commons-logging.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-                               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.
-
- 
\ No newline at end of file
diff --git a/trunk/legal/howl.jar.license.html b/trunk/legal/howl.jar.license.html
deleted file mode 100644
index 0f6e253..0000000
--- a/trunk/legal/howl.jar.license.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html>
-<head>
-<meta name="generator" content="
-HTML Tidy for Windows (vers 1st July 2003), see www.w3.org">
-<title>BSD-style License</title>
-</head>
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="
-#FF0000" vlink="#9900DD">
-<h1>BSD-style License</h1>
-<hr>
-<p>Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the following
-conditions are met:</p>
-<p>-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.</p>
-<p>-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.</p>
-
-<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-CONTRIBUTORS "AS IS" AND ANY EXPRESS 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 COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.</p>
-<hr>
-<p>Updated: <!-- hhmts start -->
- 9 Dec 2003 jotm <!-- hhmts end --></p>
-<hr>
-</body>
-</html>
\ No newline at end of file
diff --git a/trunk/legal/jaas-5.1.4.jar.license.txt b/trunk/legal/jaas-5.1.4.jar.license.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/trunk/legal/jaas-5.1.4.jar.license.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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.
diff --git a/trunk/legal/jetty.plus-5.1.4.jar.license.txt b/trunk/legal/jetty.plus-5.1.4.jar.license.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/trunk/legal/jetty.plus-5.1.4.jar.license.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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.
diff --git a/trunk/legal/jotm.jar.license.html b/trunk/legal/jotm.jar.license.html
deleted file mode 100644
index 0f6e253..0000000
--- a/trunk/legal/jotm.jar.license.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html>
-<head>
-<meta name="generator" content="
-HTML Tidy for Windows (vers 1st July 2003), see www.w3.org">
-<title>BSD-style License</title>
-</head>
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="
-#FF0000" vlink="#9900DD">
-<h1>BSD-style License</h1>
-<hr>
-<p>Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the following
-conditions are met:</p>
-<p>-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.</p>
-<p>-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.</p>
-
-<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-CONTRIBUTORS "AS IS" AND ANY EXPRESS 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 COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.</p>
-<hr>
-<p>Updated: <!-- hhmts start -->
- 9 Dec 2003 jotm <!-- hhmts end --></p>
-<hr>
-</body>
-</html>
\ No newline at end of file
diff --git a/trunk/legal/kupu.license.txt b/trunk/legal/kupu.license.txt
deleted file mode 100644
index 124695f..0000000
--- a/trunk/legal/kupu.license.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Copyright (c) 2003-2004, Kupu Contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * 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.
-
-    * Neither the name of Kupu nor the names of its contributors may
-      be used to endorse or promote products derived from this
-      software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS 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 COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.
diff --git a/trunk/legal/log4j.jar.license.txt b/trunk/legal/log4j.jar.license.txt
deleted file mode 100644
index e7e2637..0000000
--- a/trunk/legal/log4j.jar.license.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
-                                 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.
-
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
diff --git a/trunk/legal/neko.license.txt b/trunk/legal/neko.license.txt
deleted file mode 100644
index 760f629..0000000
--- a/trunk/legal/neko.license.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-The CyberNeko Software License, Version 1.0
-
- 
-(C) Copyright 2002, Andy Clark.  All rights reserved.
- 
-Redistribution and use in source and binary forms, with or without
-modification, 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 Andy Clark."
-   Alternately, this acknowledgment may appear in the software itself,
-   if and wherever such third-party acknowledgments normally appear.
-
-4. The names "CyberNeko" and "NekoHTML" must not be used to endorse
-   or promote products derived from this software without prior 
-   written permission. For written permission, please contact 
-   andy@cyberneko.net.
-
-5. Products derived from this software may not be called "NekoHTML",
-   nor may "NekoHTML" appear in their name, without prior written
-   permission of the author.
-
-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 AUTHOR OR OTHER CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
-OR CONSEQUENTIAL DAMAGES (INCLUDING, 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 license is based on the Apache Software License, version 1.1.
\ No newline at end of file
diff --git a/trunk/legal/xindice-1.1.jar.license.txt b/trunk/legal/xindice-1.1.jar.license.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/trunk/legal/xindice-1.1.jar.license.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 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.
diff --git a/trunk/legal/xmldb-common-20030701.jar.license.txt b/trunk/legal/xmldb-common-20030701.jar.license.txt
deleted file mode 100644
index 6cf5b78..0000000
--- a/trunk/legal/xmldb-common-20030701.jar.license.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-
-   The XML:DB Initiative Software License, Version 1.0
- 
- 
-  Copyright (c) 2000-2001 The XML:DB Initiative.  All rights
-  reserved.
- 
-  Redistribution and use in source and binary forms, with or without
-  modification, 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
-         XML:DB Initiative (http://www.xmldb.org/)."
-     Alternately, this acknowledgment may appear in the software itself,
-     if and wherever such third-party acknowledgments normally appear.
- 
-  4. The name "XML:DB Initiative" must not be used to endorse or
-     promote products derived from this software without prior written
-     permission. For written permission, please contact info@xmldb.org.
- 
-  5. Products derived from this software may not be called "XML:DB",
-     nor may "XML:DB" appear in their name, without prior written
-     permission of the XML:DB Initiative.
- 
-  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 (INCLUDING, 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 XML:DB Initiative. For more information
-  on the XML:DB Initiative, please see <http://www.xmldb.org/>.
- 
diff --git a/trunk/legal/xmldb-xupdate-20040205.jar.license.txt b/trunk/legal/xmldb-xupdate-20040205.jar.license.txt
deleted file mode 100644
index 6cf5b78..0000000
--- a/trunk/legal/xmldb-xupdate-20040205.jar.license.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-
-   The XML:DB Initiative Software License, Version 1.0
- 
- 
-  Copyright (c) 2000-2001 The XML:DB Initiative.  All rights
-  reserved.
- 
-  Redistribution and use in source and binary forms, with or without
-  modification, 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
-         XML:DB Initiative (http://www.xmldb.org/)."
-     Alternately, this acknowledgment may appear in the software itself,
-     if and wherever such third-party acknowledgments normally appear.
- 
-  4. The name "XML:DB Initiative" must not be used to endorse or
-     promote products derived from this software without prior written
-     permission. For written permission, please contact info@xmldb.org.
- 
-  5. Products derived from this software may not be called "XML:DB",
-     nor may "XML:DB" appear in their name, without prior written
-     permission of the XML:DB Initiative.
- 
-  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 (INCLUDING, 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 XML:DB Initiative. For more information
-  on the XML:DB Initiative, please see <http://www.xmldb.org/>.
- 
diff --git a/trunk/legal/xmlunit1.0.jar.license.txt b/trunk/legal/xmlunit1.0.jar.license.txt
deleted file mode 100644
index 0a1439f..0000000
--- a/trunk/legal/xmlunit1.0.jar.license.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-******************************************************************
-Copyright (c) 2001, Jeff Martin, Tim Bacon
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * 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.
-    * Neither the name of the xmlunit.sourceforge.net nor the names
-      of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written
-      permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS 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
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-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.
-
-******************************************************************
-*/
diff --git a/trunk/lenya.bat b/trunk/lenya.bat
deleted file mode 100644
index ec98e15..0000000
--- a/trunk/lenya.bat
+++ /dev/null
@@ -1,162 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one or more
-:: contributor license agreements.  See the NOTICE file distributed with
-:: this work for additional information regarding copyright ownership.
-:: The ASF licenses this file to You 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.
-
-@echo off
-:: -----------------------------------------------------------------------------
-:: Lenya Win32 Shell Script
-::
-:: $Id$
-:: -----------------------------------------------------------------------------
-
-:: Configuration variables
-::
-:: LENYA_HOME
-::   Folder that points to the root of the Lenya distribution
-::
-:: LENYA_LIB
-::   Folder containing all the library files needed by the Lenya CLI
-::
-:: JAVA_HOME
-::   Home of Java installation.
-::
-:: JAVA_OPTIONS
-::   Extra options to pass to the JVM
-::
-:: JAVA_DEBUG_PORT
-::   The location where the JVM debug server should listen to
-::
-:: JETTY_PORT
-::   Override the default port for Jetty
-::
-:: JETTY_ADMIN_PORT
-::   The port where the jetty web administration should bind
-::
-:: JETTY_WEBAPP
-::   The directory where the webapp that jetty has to execute is located
-::
-
-:: ----- Verify and Set Required Environment Variables -------------------------
-
-if not "%JAVA_HOME%" == "" goto gotJavaHome
-echo You must set JAVA_HOME to point at your Java Development Kit installation
-goto end
-:gotJavaHome
-
-:: ----- Check System Properties -----------------------------------------------
-
-if not "%EXEC%" == "" goto gotExec
-if not "%OS%" == "Windows_NT" goto noExecNT
-set EXEC=start "Apache Lenya" /D. /MAX
-goto gotExec
-:noExecNT
-set EXEC=
-:gotExec
-
-set LENYA_HOME=.
-:: echo lenya.bat: using %LENYA_HOME% as home
-
-set LENYA_LIB=%LENYA_HOME%\build\lenya\webapp\WEB-INF\lib
-:: echo lenya.bat: using %LENYA_LIB% as lib
-
-set JETTY_PORT=8888
-
-set JETTY_ADMIN_PORT=8889
-set JETTY_URI_CHARSET=ISO-8859-1
-set JETTY_WEBAPP=%LENYA_HOME%\build\lenya\webapp
-:: echo lenya.bat: using %JETTY_WEBAPP% as the webapp directory
-
-set JAVA_DEBUG_PORT=8000
-
-:: ----- Set Up The Classpath --------------------------------------------------
-
-set CP=%LENYA_HOME%\tools\loader
-
-:: ----- Unpack WAR file if needed --------------------------------------------------
-
-if exist build\lenya\webapp goto action
-
-echo        ###############################################
-echo        #   First start of Lenya. Unpacking now...    #
-echo        ###############################################
-
-mkdir build\lenya\webapp
-cd build\lenya\webapp
-"%JAVA_HOME%\bin\jar.exe" -xf ..\..\..\lenya.war
-cd ..\..\..
-mkdir build\lenya\webapp\WEB-INF\logs
-
-:: ----- Check action ----------------------------------------------------------
-:action
-if ""%1"" == ""cli"" goto doCli
-if ""%1"" == ""servlet"" goto doServlet
-if ""%1"" == ""servlet-admin"" goto doAdmin
-if ""%1"" == ""servlet-debug"" goto doDebug
-IF ""%1"" == ""servlet-profile"" goto doProfile
-goto doServlet
-
-echo Usage: lenya (action)
-echo actions:
-echo   cli             Run Lenya from command line
-echo   servlet         Run Lenya in a servlet container
-echo   servlet-admin   Run Lenya in a servlet container and turn container web administration on
-echo   servlet-debug   Run Lenya in a servlet container and turn on remote JVM debug
-echo   servlet-profile Run Lenya in a servlet container and turn on JVM profiling
-goto end
-
-:: ----- Cli -------------------------------------------------------------------
-
-:doCli
-set param=
-shift
-:cliLoop
-if "%1"=="" goto cliLoopEnd
-if not "%1"=="" set param=%param% %1
-shift
-goto cliLoop
-
-:cliLoopEnd
-
-"%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath %CP% -Djava.endorsed.dirs=%LENYA_LIB%\endorsed -Dloader.jar.repositories=%LENYA_LIB% -Dloader.main.class=org.apache.cocoon.Main Loader %param%
-goto end
-
-:: ----- Servlet ---------------------------------------------------------------
-
-:doServlet
-%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath %CP% -Djava.endorsed.dirs=%LENYA_LIB%\endorsed -Dwebapp=%JETTY_WEBAPP% -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% -Dhome=%LENYA_HOME% "-Dloader.jar.repositories=%LENYA_HOME%\tools\jetty\lib;%LENYA_HOME%\tools\jetty\extra\lib;%LENYA_HOME%\tools\jetty\extra\ext;%LENYA_HOME%\tools\jetty\ext;%LENYA_HOME%\tools\jetty\extra\resources;%LENYA_LIB%\endorsed" -Dloader.main.class=org.mortbay.jetty.plus.Server -Dorg.mortbay.util.URI.charset=%JETTY_URI_CHARSET% Loader %LENYA_HOME%\tools\jetty\conf\main.xml
-goto end
-
-:: ----- Servlet with Administration Web Interface -----------------------------
-
-:doAdmin
-%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -classpath %CP% -Djava.endorsed.dirs=%LENYA_LIB%\endorsed -Dwebapp=%JETTY_WEBAPP% -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% -Dhome=%LENYA_HOME% "-Dloader.jar.repositories=%LENYA_HOME%\tools\jetty\lib;%LENYA_HOME%\tools\jetty\extra\lib;%LENYA_HOME%\tools\jetty\extra\ext;%LENYA_HOME%\tools\jetty\ext;%LENYA_HOME%\tools\jetty\extra\resources;%LENYA_LIB%\endorsed" -Dloader.main.class=org.mortbay.jetty.plus.Server -Dorg.mortbay.util.URI.charset=%JETTY_URI_CHARSET% Loader %LENYA_HOME%\tools\jetty\conf\main.xml %LENYA_HOME%\tools\jetty\conf\admin.xml
-goto end
-
-:: ----- Servlet Debug ---------------------------------------------------------
-
-:doDebug
-%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -Xdebug -Xrunjdwp:transport=dt_socket,address=%JAVA_DEBUG_PORT%,server=y,suspend=n  -classpath %CP% -Djava.endorsed.dirs=%LENYA_LIB%\endorsed -Dwebapp=%JETTY_WEBAPP% -Dhome=%LENYA_HOME% -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dloader.jar.repositories=%LENYA_HOME%\tools\jetty\lib;%LENYA_HOME%\tools\jetty\extra\lib;%LENYA_HOME%\tools\jetty\extra\ext;%LENYA_HOME%\tools\jetty\ext;%LENYA_HOME%\tools\jetty\extra\resources;%LENYA_LIB%\endorsed" -Dloader.main.class=org.mortbay.jetty.plus.Server -Dorg.mortbay.util.URI.charset=%JETTY_URI_CHARSET% Loader %LENYA_HOME%\tools\jetty\conf\main.xml
-goto end
-
-:: ----- Servlet Profile ---------------------------------------------------------
-
-:doProfile
-%EXEC% "%JAVA_HOME%\bin\java.exe" %JAVA_OPTIONS% -Xrunhprof:heap=all,cpu=samples,thread=y,depth=3 -classpath %CP% -Djava.endorsed.dirs=%LENYA_LIB%\endorsed -Dwebapp=%JETTY_WEBAPP% -Dhome=%LENYA_HOME% -Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser -Djetty.port=%JETTY_PORT% -Djetty.admin.port=%JETTY_ADMIN_PORT% "-Dloader.jar.repositories=%LENYA_HOME%\tools\jetty\lib;%LENYA_HOME%\tools\jetty\extra\lib;%LENYA_HOME%\tools\jetty\extra\ext;%LENYA_HOME%\tools\jetty\ext;%LENYA_HOME%\tools\jetty\extra\resources;%LENYA_LIB%\endorsed" -Dloader.main.class=org.mortbay.jetty.plus.Server -Dorg.mortbay.util.URI.charset=%JETTY_URI_CHARSET% Loader %LENYA_HOME%\tools\jetty\conf\main.xml
-
-:: ----- End -------------------------------------------------------------------
-
-:end
-set CP=
-set EXEC=
-
diff --git a/trunk/lenya.nsi b/trunk/lenya.nsi
deleted file mode 100644
index c31d72f..0000000
--- a/trunk/lenya.nsi
+++ /dev/null
@@ -1,165 +0,0 @@
-;NSIS Lenya Installer script
-
-; Licensed to the Apache Software Foundation (ASF) under one or more
-; contributor license agreements.  See the NOTICE file distributed with
-; this work for additional information regarding copyright ownership.
-; The ASF licenses this file to You 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.
-
-; $Id$
-
-;--------------------------------
-;Include Modern UI
-
-  !include "MUI.nsh"
-
-;--------------------------------
-;Configuration
-
-  ;General
-  Var product_name
-  Name "Apache Lenya 2.0-dev"
-  OutFile "apache-lenya-2.0-dev-bin.exe"
-  
-  CRCCheck on
-  SetCompress force
-  SetDatablockOptimize on
-
-  ;Folder selection page
-  InstallDir "C:\apache-lenya-2.0-dev"
-  
-;--------------------------------
-;Interface Settings
-
-  !define MUI_ABORTWARNING
-
-;--------------------------------
-;Pages
-
-  !insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
-  !insertmacro MUI_PAGE_COMPONENTS
-  !insertmacro MUI_PAGE_DIRECTORY
-  !insertmacro MUI_PAGE_INSTFILES
-  
-  !insertmacro MUI_UNPAGE_CONFIRM
-  !insertmacro MUI_UNPAGE_INSTFILES
-  
-;--------------------------------
-;Languages
- 
-  !insertmacro MUI_LANGUAGE "English"
-
-;--------------------------------
-;Installer Sections
-
-Section "Apache Lenya 2.0-dev" SecDummy
-
-  Call findJavaPath
-  StrCpy $product_name "Apache Lenya 2.0-dev"
-  SetOutPath $INSTDIR
-  
-  SetOutPath $INSTDIR\build\lenya\webapp
-  File build\lenya\webapp\global-sitemap.xmap
-  File build\lenya\webapp\sitemap.xmap
-  File /r build\lenya\webapp\lenya
-  File /r build\lenya\webapp\WEB-INF
-  
-  SetOutPath $INSTDIR
-  File lenya.bat
-  File build.properties
-  File build.xml
-  File NOTICE.txt
-  File LICENSE.txt
-  File README.txt
-  File CREDITS.txt
-  File /r tools
-  File /r legal
-
-  CreateDirectory "$SMPROGRAMS\$product_name"
-  CreateShortCut "$SMPROGRAMS\$product_name\Apache Lenya Home Page.lnk" \
-                 "http://lenya.apache.org/"
-
-  CreateShortCut "$SMPROGRAMS\$product_name\Welcome to $product_name.lnk" \
-                 "http://127.0.0.1:8888"
-
-  CreateShortCut "$SMPROGRAMS\$product_name\Uninstall $product_name.lnk" \
-                 "$INSTDIR\Uninstall.exe"
-
-  CreateShortCut "$SMPROGRAMS\$product_name\Start $product_name.lnk" \
-                 "$INSTDIR\lenya.bat" \
-                 'servlet' \
-                 "$INSTDIR\lenya.bat" 1 SW_SHOWNORMAL
-
-  ClearErrors
-
-  ;Start Apache Lenya, wait 12 seconds to give it time to start, then launch start page
-  ExecShell "open" '"$INSTDIR\lenya.bat"' 0 SW_SHOWMINIMIZED
-  ;Create uninstaller
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-  Sleep 12000
-  ExecShell "open" '"http://127.0.0.1:8888"' 0 SW_SHOWNORMAL
-  Quit
-SectionEnd
-
-;--------------------------------
-;Descriptions
-
-  LangString DESC_SecDummy ${LANG_ENGLISH} "Installs the Apache Lenya 2.0-dev Content Management System."
-
-  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy)
-  !insertmacro MUI_FUNCTION_DESCRIPTION_END
- 
-;--------------------------------
-;Uninstaller Section
-
-Section "Uninstall"
-  RMDir /r "$SMPROGRAMS\Apache Lenya 2.0-dev"
-  RMDir /r "$INSTDIR"
-SectionEnd
-
-; =====================
-; FindJavaPath Function
-; =====================
-;
-; Find the JAVA_HOME used on the system, and put the result on the top of the
-; stack
-; Will exit if the path cannot be determined
-;
-Function findJavaPath
-
-  ClearErrors
-
-  ReadEnvStr $1 JAVA_HOME
-
-  IfErrors 0 FoundJDK
-
-  ClearErrors
-
-  ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Development Kit" "CurrentVersion"
-  ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Development Kit\$2" "JavaHome"
-  ReadRegStr $3 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
-  ReadRegStr $4 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$3" "RuntimeLib"
-
-  FoundJDK:
-
-  IfErrors 0 NoAbort
-    MessageBox MB_OK "Couldn't find a Java Development Kit installed on this \
-computer. Please download one from http://java.sun.com. If there is already \ a JDK installed on this computer, set an environment variable JAVA_HOME to the \ pathname of the directory where it is installed."
-    Abort
-
-  NoAbort:
-
-  ; Put the result in the stack
-  Push $1
-
-FunctionEnd
diff --git a/trunk/lenya.sh b/trunk/lenya.sh
deleted file mode 100755
index b19d2b8..0000000
--- a/trunk/lenya.sh
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-# -----------------------------------------------------------------------------
-# Lenya Unix Shell Script
-#
-# $Id$
-# -----------------------------------------------------------------------------
-
-# Configuration variables
-#
-# LENYA_HOME
-#   The root of the Lenya distribution
-#
-# LENYA_WEBAPP_HOME
-#   The root of the Lenya web application
-#
-# LENYA_LIB
-#   Folder containing all the library files needed by the Lenya CLI
-#
-# JAVA_HOME
-#   Home of Java installation.
-#
-# JAVA_OPTIONS
-#   Extra options to pass to the JVM
-#
-# JAVA_DEBUG_ARGS
-#   The command line arguments for the internal JVM debugger
-#
-# JAVA_PROFILE_ARGS
-#   The command line arguments for the internal JVM profiler
-#
-# JETTY_PORT
-#   Override the default port for Jetty
-#
-# JETTY_ADMIN_PORT
-#   The port where the jetty web administration should bind
-#
-
-
-usage()
-{
-    echo "Usage: $0 (action)"
-    echo "actions:"
-    echo "  cli               Run Lenya from the command line"
-    echo "  servlet           Run Lenya in a servlet container"
-    echo "  servlet-admin     Run Lenya in a servlet container and turn on container web administration"
-    echo "  servlet-debug     Run Lenya in a servlet container and turn on JVM remote debug"
-    echo "  servlet-profile   Run Lenya in a servlet container and turn on JVM profiling"
-    exit 1
-}
-
-#[ $# -gt 0 ] || usage
-
-DEFAULT_ACTION="servlet"
-ACTION=$1
-if [ -n "$ACTION" ]
-then
-  shift
-else
-  ACTION=$DEFAULT_ACTION
-  echo "$0: executing default action '$ACTION', use -h to see other actions"
-fi
-ARGS="$*"
-
-# ----- Verify and Set Required Environment Variables -------------------------
-
-if [ "$JAVA_HOME" = "" ] ; then
-  echo You must set JAVA_HOME to point at your Java Development Kit installation
-  exit 1
-fi
-
-if [ "$JAVA_OPTIONS" = "" ] ; then
-  JAVA_OPTIONS='-Xms32M -Xmx512M -Djava.awt.headless=true'
-fi
-
-if [ "$LENYA_HOME" = "" ] ; then
-  LENYA_HOME='.'
-  # TODO: Make it startable from any directory
-  #LENYA_HOME=`dirname $0`
-  #echo "LENYA_HOME: $LENYA_HOME"
-fi
-
-if [ "$LENYA_WEBAPP_HOME" = "" ] ; then
-  STANDALONE_WEBAPP=../webapp
-  if [ -d $STANDALONE_WEBAPP ] ; then
-    # for standalone-webapp setup
-    LENYA_WEBAPP_HOME=$STANDALONE_WEBAPP
-  else
-    # when in the build environment
-    LENYA_WEBAPP_HOME="$LENYA_HOME/build/lenya/webapp"
-  fi
-fi
-echo "$0: using $LENYA_WEBAPP_HOME as the webapp directory"
-
-if [ "$LENYA_LIB" = "" ] ; then
-  LENYA_LIB="$LENYA_WEBAPP_HOME/WEB-INF/lib"
-fi
-
-
-# Set Jetty Port
-if [ -f local.build.properties ] ; then
-  JETTY_PORT=`grep web.app.server.jetty.port $LENYA_HOME/local.build.properties | grep -v "#" | sed -e 's/web\.app\.server\.jetty\.port=//'`
-fi
-if [ "$JETTY_PORT" = "" ] ; then
-  JETTY_PORT=`grep web.app.server.jetty.port $LENYA_HOME/build.properties | grep -v "#" | sed -e 's/web\.app\.server\.jetty\.port=//'`
-fi
-echo "INFO: Jetty Port is $JETTY_PORT"
-
-# Set Jetty Admin Port
-if [ -f local.build.properties ] ; then
-  JETTY_ADMIN_PORT=`grep web.app.server.jetty.admin.port $LENYA_HOME/local.build.properties | grep -v "#" | sed -e 's/web\.app\.server\.jetty\.admin\.port=//'`
-fi
-if [ "$JETTY_ADMIN_PORT" = "" ] ; then
-  JETTY_ADMIN_PORT=`grep web.app.server.jetty.admin.port $LENYA_HOME/build.properties | grep -v "#" | sed -e 's/web\.app\.server\.jetty\.admin\.port=//'`
-fi
-echo "INFO: Jetty Admin Port is $JETTY_ADMIN_PORT"
-
-if [ "$JAVA_DEBUG_ARGS" = "" ] ; then
-  JAVA_DEBUG_ARGS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'
-fi
-
-if [ "$JAVA_PROFILE_ARGS" = "" ] ; then
-  JAVA_PROFILE_ARGS='-Xrunhprof:heap=all,cpu=samples,thread=y,depth=3'
-fi
-
-
-# ----- Set platform specific variables
-
-PATHSEP=":";
-case "`uname`" in
-   CYGWIN*) PATHSEP=";" ;;
-esac
-
-# ----- Set Local Variables ( used to minimize cut/paste) ---------------------
-
-JAVA="$JAVA_HOME/bin/java"
-ENDORSED_LIBS="${LENYA_HOME}/externals/cocoon_2_1_x/lib/endorsed"
-ENDORSED="-Djava.endorsed.dirs=$ENDORSED_LIBS"
-PARSER=-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser
-LOADER=Loader
-LOADER_LIB="${LENYA_HOME}/tools/loader"
-
-CLI=-Dloader.main.class=org.apache.lenya.Main
-CLI_LIBRARIES="-Dloader.jar.repositories=$LENYA_LIB"
-
-JETTY=-Dloader.main.class=org.mortbay.jetty.plus.Server
-JETTY_CONF="$LENYA_HOME/tools/jetty/conf"
-JETTY_MAIN="$JETTY_CONF/main.xml"
-JETTY_ADMIN="$JETTY_CONF/admin.xml"
-JETTY_WEBAPP="-Dwebapp=$LENYA_WEBAPP_HOME"
-JETTY_HOME="-Dhome=$LENYA_HOME"
-JETTY_PORT_ARGS="-Djetty.port=$JETTY_PORT"
-JETTY_ADMIN_ARGS="-Djetty.admin.port=$JETTY_ADMIN_PORT"
-JETTY_LIBRARIES="-Dloader.jar.repositories=$LENYA_HOME/tools/jetty/lib${PATHSEP}$LENYA_HOME/tools/jetty/extra/lib${PATHSEP}$LENYA_HOME/tools/jetty/extra/ext${PATHSEP}$LENYA_HOME/tools/jetty/ext${PATHSEP}$LENYA_HOME/tools/jetty/extra/resources${PATHSEP}${ENDORSED_LIBS}"
-JETTY_URI_CHARSET="-Dorg.mortbay.util.URI.charset=ISO-8859-1"
-
-# ----- Do the action ----------------------------------------------------------
-
-if [ -d build ]; then
-    echo "INFO: build/lenya/webapp directory already exists."
-else
-    if [ -f lenya.war ]; then
-        echo "INFO: lenya.war will be unpacked ..."
-        mkdir -p build/lenya/webapp
-        cp lenya.war build/lenya/webapp/.
-        cd build/lenya/webapp
-        $JAVA_HOME/bin/jar -xf lenya.war
-        cd ../../..
-        mkdir -p build/lenya/webapp/WEB-INF/logs
-        rm build/lenya/webapp/lenya.war
-    else
-        echo "INFO: No such war file lenya.war or build directory!"
-        exit 1
-    fi
-fi
-
-case "$ACTION" in
-  cli)
-        $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $CLI_LIBRARIES $CLI $LOADER $ARGS
-        ;;
-
-  servlet)
-        $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY_URI_CHARSET $JETTY $LOADER $JETTY_MAIN
-        ;;
-
-  servlet-admin)
-        $JAVA $JAVA_OPTIONS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_ADMIN_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY_URI_CHARSET $JETTY $LOADER $JETTY_MAIN $JETTY_ADMIN
-        ;;
-
-  servlet-debug)
-        $JAVA $JAVA_OPTIONS $JAVA_DEBUG_ARGS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_PORT_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME  $JETTY_URI_CHARSET $JETTY $LOADER $JETTY_MAIN
-        ;;
-
-  servlet-profile)
-        $JAVA $JAVA_OPTIONS $JAVA_PROFILE_ARGS -cp $LOADER_LIB $ENDORSED $PARSER $JETTY_ARGS $JETTY_LIBRARIES $JETTY_WEBAPP $JETTY_HOME $JETTY_URI_CHARSET $JETTY $LOADER $JETTY_MAIN
-        ;;
-
-  *)
-        usage
-        ;;
-esac
-
-exit 0
diff --git a/trunk/lib/commons-codec-1.3.jar b/trunk/lib/commons-codec-1.3.jar
deleted file mode 100644
index 957b675..0000000
--- a/trunk/lib/commons-codec-1.3.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/commons-validator-1.3.1.jar b/trunk/lib/commons-validator-1.3.1.jar
deleted file mode 100644
index 55b12b1..0000000
--- a/trunk/lib/commons-validator-1.3.1.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/excalibur-testcase-1.0.jar b/trunk/lib/excalibur-testcase-1.0.jar
deleted file mode 100644
index 90f651b..0000000
--- a/trunk/lib/excalibur-testcase-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/jackrabbit-1.0-LCR330244.jar b/trunk/lib/jackrabbit-1.0-LCR330244.jar
deleted file mode 100644
index 847b355..0000000
--- a/trunk/lib/jackrabbit-1.0-LCR330244.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/jackrabbit-commons-1.0-LCR330244.jar b/trunk/lib/jackrabbit-commons-1.0-LCR330244.jar
deleted file mode 100644
index e03e04a..0000000
--- a/trunk/lib/jackrabbit-commons-1.0-LCR330244.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/jcifs-mock.jar b/trunk/lib/jcifs-mock.jar
deleted file mode 100644
index 2a5fdd3..0000000
--- a/trunk/lib/jcifs-mock.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/jcr-1.0.jar b/trunk/lib/jcr-1.0.jar
deleted file mode 100644
index dcb71cf..0000000
--- a/trunk/lib/jcr-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/jing-20030619.jar b/trunk/lib/jing-20030619.jar
deleted file mode 100644
index 6acbfb0..0000000
--- a/trunk/lib/jing-20030619.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/junit-3.8.1.jar b/trunk/lib/junit-3.8.1.jar
deleted file mode 100644
index 674d71e..0000000
--- a/trunk/lib/junit-3.8.1.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/nekodtd-0.1.11.jar b/trunk/lib/nekodtd-0.1.11.jar
deleted file mode 100644
index 96e0c30..0000000
--- a/trunk/lib/nekodtd-0.1.11.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/nekopull-0.2.4.jar b/trunk/lib/nekopull-0.2.4.jar
deleted file mode 100644
index 49b7c28..0000000
--- a/trunk/lib/nekopull-0.2.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/websphinx-0.5.jar b/trunk/lib/websphinx-0.5.jar
deleted file mode 100644
index 0fefd94..0000000
--- a/trunk/lib/websphinx-0.5.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/xercesImpl-2.9.0.jar b/trunk/lib/xercesImpl-2.9.0.jar
deleted file mode 100644
index 50df930..0000000
--- a/trunk/lib/xercesImpl-2.9.0.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/xml-apis-1.3.04.jar b/trunk/lib/xml-apis-1.3.04.jar
deleted file mode 100644
index d42c0ea..0000000
--- a/trunk/lib/xml-apis-1.3.04.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/xml-forrest-r428652.jar b/trunk/lib/xml-forrest-r428652.jar
deleted file mode 100644
index 38ef09d..0000000
--- a/trunk/lib/xml-forrest-r428652.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/lib/xmlunit1.0.jar b/trunk/lib/xmlunit1.0.jar
deleted file mode 100644
index 6e8ed58..0000000
--- a/trunk/lib/xmlunit1.0.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/src/README_AC.txt b/trunk/src/README_AC.txt
deleted file mode 100644
index ccb0fec..0000000
--- a/trunk/src/README_AC.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-Access Control Specification
-
-    * Possibility to deny permissions
-
-Terminology
-
-    * An accreditable is either a user, a group, an IP range, or the world.
-    * A credential is an assignment of a role to an accreditable.
-
-Names
-
-    * We use the following names:
-          o n - a node
-          o parent(n) - the parent node of n
-          o n.c1, ..., n.ci - the credentials of the node n
-          o acc(c) - the accreditable which the credential refers to
-          o role(c) - the role which the credential assignes to the accreditable
-          o method(c) - the method of the credential
-
-Concept
-
-    * Credential methods can be grant or deny.
-    * The order of credentials at a node is important.
-    * To find out if a certain accreditable a has a role r for the node n, use the following algorithm:
-          o Search for the first matching credential, starting with the first credential of the node n.
-          o If no credential of n matches the accreditable, continue with the parent node.
-          o When a credential is found which assigns the role r to the accreditable a, return the method of the credential.
-          o If no credential is found up to the top, return deny.
-
-Role resolving algorithm
-
-    * while not matched:
-          o for c : n.ci to n.c1:
-                + if acc(c) = a and role(c) = r, return method(c)
-          o n := parent(n)
-    * return deny
-
-User interface
-
-The user interface has to allow the following operations:
-
-    * add/remove credentials for users, groups, world
-    * set the credential method
-    * change credential order (move up/down)
-
-**************************************************************
-Examples:
-*********
-Like stated above the order of the credential is important. 
-Credentials are builded from policies.
-Imaginge you are trying to access http://localhost:8888/default/introduction.html
-
-The defined policy (with highest priority) would be:
-config/ac/policies/introduction.html/subtree-policy.acml
-
-Imaginge you have defined:
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-  <world>
-    <role id="visit" method="deny"/>
-  </world>
-  <group id="editor">
-    <role id="edit" method="grant"/>
-  </group>
-</policy>
-
-Then you try to login in with user "lenya" who is in the editor group. 
-However you will not be successful, because everybody always is world. 
-Since the DENY of world is coming first nobody will now be able to see 
-the page.
-
-Changing above policy to 
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-  <group id="editor">
-    <role id="edit" method="grant"/>
-  </group>
-  <world>
-    <role id="visit" method="deny"/>
-  </world>
-</policy>
-
-Let all user of the group editor access the page.
-
-Best practise is to deny access early in a node tree of policies for e.g. WORLD. 
\ No newline at end of file
diff --git a/trunk/src/README_MODULES.txt b/trunk/src/README_MODULES.txt
deleted file mode 100644
index ff6c150..0000000
--- a/trunk/src/README_MODULES.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Module categories:
-==================
-
-The modules in Lenya are currently split up into the following categories:
-
-* modules-core
-  This set of modules implements the core functionality of Lenya.
-  Modules in the core will not have any dependencies outside of the core.
-
-
-* modules
-  This is where most of the add-on functionality goes: support for specific 
-  editors, document types, the nifty new feature of the day, etc.
-
-
-* modules-optional
-  The scratchpad. Modules in here do not necessarily have to work or even
-  compile, nor have a stable API. (FIXME: should modules that require 
-  external code to be useful also be moved here, such as tinymce or
-  fckeditor?
-
-
-* modules-legacy
-  This is the place for modules that do not adhere to the programming 
-  conventions of the trunk, but are still needed as no updated version is
-  available. For instance, modules that use the 1.2 way of handling usecases
-  without using the usecase framework should go here. (FIXME: does that make
-  the kupu module a candidate?)
-
-Directory Layout:
-=================
-
-Each module should adhere to the following directory layout (subdirectories
-if appropriate, take a look at the core modules if in doubt):
-
-mymodule/
-  config/                    configuration files
-    module.xml               module descriptor
-    cocoon-xconf/            patches for cocoon.xconf:
-      component-mycomponent.xconf
-      usecase-myusecase.xconf     
-  usecases/
-    myusecase.jx             usecase view
-  java/
-    src/                     Java source files
-    lib/                     Java libraries
-  xslt/                      XSLT stylesheets
-  sitemap.xmap               main module sitemap
-
-
-module.xml
-==========
-
-Each module must contain a description file config/module.xml:
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <!-- the ID *must* start with the package name of 
-       your custom Java code -->
-  <id>org.myproject.lenya.modules.myeditor</id>
-  <!-- build dependencies; see note below -->
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.webdav"/>
-  <!-- the Java package your module belongs to -->
-FIXME: why is this needed? afaiu it could be gleaned from the id...
-  <package>org.myproject.lenya.modules</package>
-  <!-- a version string -->
-FIXME: what does this do? just for information, or is there version
-management?
-  <version>0.1-dev</version>
-  <!-- a short name for your module -->
-  <name>My Own Editor</name>
-  <!-- the required lenya version -->
-FIXME: is this actually used?
-  <lenya-version>2.0-dev</lenya-version>
-  <!-- a detailed description of your module -->
-  <description>
-    This is my own editor.
-    For more information, visit http://myproject.org/editor.
-  </description>
-</module>
-
-NOTE: be careful to specify the depencies correctly. The <depends/> element
-is meant for java code dependencies only, i.e. issues that affect
-compilation. If a module merely links to another module's usecases in its
-views, that does not qualify as a dependency (although maybe it should at
-some point in the future).
-
-
-see also:
-=========
-
-Please refer to the online docs at
-http://lenya.apache.org/docs/1_4/reference/modules/index.html.
diff --git a/trunk/src/cocoon/local.blocks.properties b/trunk/src/cocoon/local.blocks.properties
deleted file mode 100644
index 14ce102..0000000
--- a/trunk/src/cocoon/local.blocks.properties
+++ /dev/null
@@ -1,190 +0,0 @@
-
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-#
-
-#------------------------------------------------------------------------------------
-# Blocks properties version to make sure that local.blocks.properties is kept in sync
-# NOTE: Do NOT modify this number unless you are a Dev and want to modify this file
-# NOTE for Devs: Update this number if this file is being updated.
-#                Also update the version number within src/targets/init-build.xml
-
-lenya.blocks.properties.version=426603
-lenya.version=2.0-dev
-
-#------------------------------------------------------------------------------#
-#                             Cocoon Blocks                                    #
-#------------------------------------------------------------------------------#
-
-# Remove blocks from your cocoon distribution by setting the corresponding
-# include property to true or false. The blocks are included by default, i.e. if
-# no property was set.
-
-# NOTE: Don't modify this file directly but make a copy named
-# 'local.blocks.properties' and modify that. The build system will first load
-# 'local.blocks.properties' and properties are immutable in Ant.
-
-# NOTE: "[dependency]" indicates blocks that are required by other blocks.
-# Disabling batik, for example, will result in a RuntimeException when using
-# fop. Dependencies only needed for the block's samples are marked explicitely.
-# This latter information was introduced only short time ago, so do not expect
-# it to be complete.
-
-# NOTE: (to Cocoon committers): blocks.properties is generated from gump.xml
-# using "build generate-blocks.properties". Any changes to blocks definitions
-# must be made in gump.xml, not here.
-
-# All blocks -------------------------------------------------------------------
-
-# Use this property to exclude all blocks at once
-# exclude.all.blocks=true
-
-# Use this property to include all blocks at once
-# include.all.blocks=true
-
-
-# Stable blocks ----------------------------------------------------------------
-
-# Stable blocks are those that can be considered ready for production and
-# will contain components and API that will remain stable and where
-# developers are committed to back compatibility. In short, stuff that you
-# can depend on.
-
-#-----[dependency]: "authentication-fw" depends on "session-fw".
-#-----[dependency]: "authentication-fw" is needed by "portal", "portal-fw".
-include.block.authentication-fw=false
-#-----[dependency]: "batik" is needed by "fop", "tour".
-#include.block.batik=false
-include.block.bsf=false
-#include.block.chaperon=false
-#-----[dependency]: "databases" depends on "xsp".
-#-----[dependency]: "databases" is needed by "hsqldb", "jms", "ojb", "petstore", "repository", "xmldb".
-#include.block.databases=false
-#-----[dependency]: "fop" depends on "batik".
-#-----[dependency]: "fop" is needed by "tour".
-#include.block.fop=false
-#-----[dependency]: "hsqldb" depends on "databases".
-#-----[dependency]: "hsqldb" is needed by "jms", "ojb", "petstore".
-#include.block.hsqldb=false
-#include.block.html=false
-#-----[dependency]: "itext" depends on "xsp" (for samples).
-include.block.itext=false
-include.block.jfor=false
-include.block.jsp=false
-#-----[dependency]: "linkrewriter" depends on "xsp".
-#include.block.linkrewriter=false
-#-----[dependency]: "lucene" is needed by "querybean".
-include.block.lucene=true
-include.block.midi=false
-#include.block.naming=false
-#-----[dependency]: "ojb" depends on "databases" (for samples), "forms" (for samples), "hsqldb" (for samples).
-#-----[dependency]: "ojb" is needed by "javaflow", "portal", "querybean".
-include.block.ojb=false
-include.block.paranoid=false
-include.block.poi=false
-#-----[dependency]: "portal" depends on "authentication-fw", "cron", "forms", "ojb", "session-fw".
-#-----[dependency]: "portal" is needed by "faces".
-include.block.portal=false
-#include.block.profiler=false
-#-----[dependency]: "python" depends on "xsp".
-include.block.python=false
-#-----[dependency]: "session-fw" depends on "xsp".
-#-----[dependency]: "session-fw" is needed by "authentication-fw", "portal", "portal-fw".
-#include.block.session-fw=false
-#-----[dependency]: "velocity" is needed by "petstore".
-include.block.velocity=false
-include.block.web3=false
-#-----[dependency]: "xmldb" depends on "databases".
-# TODO: Including the xmldb block might cause a conflict with the patched xmldb libraries lib/xmldb-common-2003-09-02.jar and lib/xmldb-xupdate-2003-10-14.jar
-include.block.xmldb=false
-#-----[dependency]: "xsp" is needed by "databases", "itext", "linkrewriter", "python", "session-fw", "woody".
-#include.block.xsp=false
-
-# Deprecated blocks ------------------------------------------------------------
-
-# Although some of these blocks may have been stable, they are now deprecated
-# in favour of other blocks and therefore are excluded by default from the build.
-# For including one of them you have to set the exclude property into comment in
-# blocks.properties.
-
-include.block.php=false
-#-----[dependency]: "portal-fw" depends on "authentication-fw", "session-fw".
-include.block.portal-fw=false
-include.block.swf=false
-#-----[dependency]: "woody" depends on "xsp" (for samples).
-include.block.woody=false
-
-# Unstable blocks --------------------------------------------------------------
-
-# Unstable blocks are currently under development and do not guarantee that the
-# contracts they expose (API, xml schema, properties, behavior) will remain
-# constant in time. Developers are not committed to back-compatibility just yet.
-# This doesn't necessarily mean the blocks implementation is unstable or
-# the code can't be trusted for production, but use with care and watch
-# its development as things might change over time before they are marked
-# stable.
-
-#-----[dependency]: "ajax" is needed by "forms".
-#include.block.ajax=false
-#-----[dependency]: "apples" depends on "forms" (for samples).
-include.block.apples=false
-#-----[dependency]: "asciiart" is needed by "mail".
-include.block.asciiart=true
-include.block.axis=true
-#include.block.captcha=false
-#-----[dependency]: "cron" is needed by "jms", "portal".
-include.block.cron=true
-#include.block.deli=false
-#-----[dependency]: "eventcache" depends on "jms".
-#-----[dependency]: "eventcache" is needed by "repository".
-include.block.eventcache=false
-#-----[dependency]: "faces" depends on "portal", "taglib".
-include.block.faces=false
-#-----[dependency]: "forms" depends on "ajax".
-#-----[dependency]: "forms" is needed by "apples", "javaflow", "ojb", "petstore", "portal", "querybean", "tour".
-#include.block.forms=false
-#include.block.imageop=false
-#-----[dependency]: "javaflow" depends on "forms", "ojb".
-include.block.javaflow=false
-#include.block.jcr=false
-#-----[dependency]: "jms" depends on "cron", "databases" (for samples), "hsqldb".
-#-----[dependency]: "jms" is needed by "eventcache", "slide".
-include.block.jms=false
-include.block.linotype=false
-#-----[dependency]: "mail" depends on "asciiart".
-include.block.mail=true
-#-----[dependency]: "petstore" depends on "databases", "forms", "hsqldb", "velocity".
-include.block.petstore=false
-#include.block.proxy=false
-include.block.qdox=false
-#-----[dependency]: "querybean" depends on "forms" (for samples), "lucene", "ojb".
-#include.block.querybean=false
-#-----[dependency]: "repository" depends on "databases", "eventcache".
-#-----[dependency]: "repository" is needed by "slide", "webdav".
-include.block.repository=false
-#include.block.serializers=false
-#-----[dependency]: "slide" depends on "jms", "repository".
-include.block.slide=false
-#-----[dependency]: "slop" is needed by "tour".
-include.block.slop=false
-include.block.stx=false
-#-----[dependency]: "taglib" is needed by "faces".
-include.block.taglib=false
-#-----[dependency]: "tour" depends on "batik", "fop", "forms", "slop".
-include.block.tour=false
-#include.block.validation=false
-#-----[dependency]: "webdav" depends on "repository".
-include.block.webdav=false
-#include.block.xsltal=false
diff --git a/trunk/src/cocoon/local.build.properties b/trunk/src/cocoon/local.build.properties
deleted file mode 100644
index 46e74fa..0000000
--- a/trunk/src/cocoon/local.build.properties
+++ /dev/null
@@ -1,202 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-#
-
-#------------------------------------------------------------------------------------
-# Build properties version to make sure that local.build.properties is kept in sync
-# NOTE: Do NOT modify this number unless you are a Dev and want to modify this file
-# NOTE for Devs: Update this number if this file is being updated.
-#                Also update the version number within src/targets/init-build.xml
-
-lenya.build.properties.version=529161
-lenya.version=2.0-dev
-
-#----------------------------------------------
-#  Cocoon Build Properties
-#----------------------------------------------
-
-# NOTE: don't modify this file directly but copy the properties you need
-# to modify over to a file named 'local.build.properties' and modify that.
-# The build system will override these properties with the ones in the
-# 'local.build.properties' file.
-
-# ---- Webapp ------------------------------------------------------------------
-
-exclude.webapp.documentation=true
-exclude.webapp.javadocs=true
-exclude.webapp.idldocs=true
-exclude.webapp.samples=true
-
-# ---- Build Exclusions --------------------------------------------------------
-
-exclude.deprecated=true
-exclude.documentation=true
-exclude.javadocs=true
-#include.sources-in-jars=true
-
-# ---- Configuration -----------------------------------------------------------
-
-#include.driver.oracle=true
-#include.driver.postgre=true
-#include.driver.odbc=true
-config.allow-reloads=false
-
-# TODO: Since externals/cocoon_2_1_x/src/webapp/WEB-INF/web.xml is true already this won't help ...
-config.enable-uploads=false
-#config.enable-instrumentation=true
-
-# ---- Validation --------------------------------------------------------------
-
-#exclude.validate.config=true
-exclude.validate.xdocs=true
-#exclude.validate.jars=true
-
-# ---- Forrest -----------------------------------------------------------------
-
-# set $FORREST_HOME and $PATH as instructed by Forrest
-
-# ---- Anteater ----------------------------------------------------------------
-
-anteater.home = /default-from-build.properties/anteater-0.9.16
-anteater.target.host = localhost
-anteater.target.port = 8888
-anteater.target.base.path = /
-anteater.option.haltonerror = true
-
-# disable some long-running tests by default
-# anteater.test.bug26186InternalRequestMemoryLeak.enabled = true
-
-# ---- JUnit -------------------------------------------------------------------
-
-junit.test.debugport=8000
-#junit.testcase=org.apache.cocoon.util.test.NetUtilsTestCase
-
-# ---- Build -------------------------------------------------------------------
-
-build.root=build
-build=${build.root}/${name}-${version}
-build.dest=${build}/classes
-build.mocks=${build}/mocks
-build.test=${build}/test
-build.test.output=${build.test}/output
-build.docs=${build}/docs
-build.docs.printer=${build}/printer-docs
-build.site=${build}/site
-build.xdocs=${build}/xdocs
-build.javadocs=${build}/javadocs
-build.context=${build}/documentation
-build.context.printer=${build}/printer-documentation
-build.blocks=${build}/blocks
-build.deprecated=${build}/deprecated
-build.samples=${build}/samples
-build.temp=${build}/temp
-build.mounttable=../../mount-table.xml
-
-build.docs.loglevel=ERROR
-build.docs.printer.loglevel=ERROR
-
-# ------ Webapp Build Properties -----------------------------------------------
-
-build.webapp=${build.root}/webapp
-build.webapp.webinf=${build.webapp}/WEB-INF
-build.webapp.classes=${build.webapp.webinf}/classes
-build.webapp.lib=${build.webapp.webinf}/lib
-build.webapp.samples=${build.webapp}/samples
-build.webapp.test-suite=${build.webapp}/test-suite
-build.webapp.docs=${build.webapp}/docs
-build.webapp.javadocs=${build.webapp}/api/java
-build.webapp.loglevel=INFO
-build.war=${build}/${name}.war
-
-# ------ Standalone-demo Build Properties --------------------------------------
-build.standalone.demo=${build.root}/standalone-demo
-
-# ---- Compilation -------------------------------------------------------------
-
-compiler=modern
-compiler.debug=on
-compiler.optimize=on
-compiler.deprecation=off
-compiler.nowarn=on
-source.vm=1.4
-
-
-# ------ System Properties -----------------------------------------------------
-
-# WARNING: you shouldn't need to modify anything below here since there is a
-# very high change of breaking the build system. Do it only if you know what
-# you're doing.
-
-packages=org.apache
-
-# Project descriptor
-gump.descriptor=gump.xml
-
-# Directory Layout
-src=src
-java=${src}/java
-mocks=${src}/mocks
-test=${src}/test
-resources=${src}/resources
-resources.styles=${resources}/styles
-resources.logos=${resources}/logos
-resources.javadoc=${resources}/javadoc
-documentation=${src}/documentation
-docs=${documentation}/xdocs
-images=${documentation}/images
-blocks=${src}${file.separator}blocks
-samples=${src}/samples
-webapp=${src}/webapp
-webapp.samples=${webapp}/samples
-webapp.test-suite=${webapp}/test-suite
-customconf=${src}/confpatch
-
-# Deprecated Stuff
-deprecated=${src}/deprecated
-deprecated.src=${deprecated}/java
-deprecated.conf=${deprecated}/conf
-
-# Tools
-tools=tools
-tools.lib=${tools}/lib
-tools.src=${tools}/src
-tools.tasks.src=${tools.src}/anttasks
-tools.tasks.dest=${tools}/anttasks
-tools.loader.src=${tools.src}/loader
-tools.loader.dest=${tools}/loader
-tools.jetty=${tools}/jetty
-
-# IDE
-ide.eclipse.outputdir=${build.root}/eclipse/classes
-ide.eclipse.export.libs=false
-
-# Libraries
-lib=lib
-lib.core=${lib}/core
-lib.endorsed=${lib}/endorsed
-lib.optional=${lib}/optional
-lib.local=${lib}/local
-
-# Distribution Directories
-dist.root=dist
-dist=${dist.root}/${name}-${version}
-dist.name=${name}-${version}
-dist.target=${dist.root}
-
-# Site Directory
-site=../cocoon-site/site/2.1
-
-# Legal
-legal=legal
diff --git a/trunk/src/confpatch/enable-uploads.xweb b/trunk/src/confpatch/enable-uploads.xweb
deleted file mode 100644
index e30b3b1..0000000
--- a/trunk/src/confpatch/enable-uploads.xweb
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- http://wiki.apache.org/cocoon/XPatchTaskUsage -->
-
-<xweb xpath="/web-app/servlet/init-param[param-name='enable-uploads']/param-value"
-      if-prop="enable.uploads"
-      remove="/web-app/servlet/init-param[param-name='enable-uploads']/param-value/text()"
->true</xweb>
diff --git a/trunk/src/confpatch/form-encoding.xweb b/trunk/src/confpatch/form-encoding.xweb
deleted file mode 100644
index 5d69445..0000000
--- a/trunk/src/confpatch/form-encoding.xweb
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xweb xpath="/web-app/servlet/init-param[param-name='form-encoding']/param-value"
-	remove="/web-app/servlet/init-param[param-name='form-encoding']/param-value/text()"
->UTF-8</xweb>
\ No newline at end of file
diff --git a/trunk/src/confpatch/log4j-appender.xconf b/trunk/src/confpatch/log4j-appender.xconf
deleted file mode 100644
index 8927ab2..0000000
--- a/trunk/src/confpatch/log4j-appender.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/configuration" unless="/configuration/appender[@name='Chainsaw']" insert-after="appender">
-
-    <!--+ 
-        | See http://logging.apache.org/log4j/docs/chainsaw.html
-        +-->
-    <appender name="Chainsaw" class="org.apache.log4j.net.SocketAppender">
-        <param name="remoteHost" value="localhost" />
-        <param name="port" value="4445"/>
-        <param name="locationInfo" value="true" />
-    </appender>
-
-</xconf>
diff --git a/trunk/src/confpatch/log4j-appenderref.xconf b/trunk/src/confpatch/log4j-appenderref.xconf
deleted file mode 100644
index b12c9cb..0000000
--- a/trunk/src/confpatch/log4j-appenderref.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/configuration/root" unless="/configuration/root/appender-ref[@ref='Chainsaw'] or /configuration/root/node()[self::comment() and contains(., 'appender-ref ref=&quot;Chainsaw&quot;')]" insert-after="appender-ref">
-
-      <!--+
-          | Uncomment to enable logging to Chainsaw.
-          | See http://logging.apache.org/log4j/docs/chainsaw.html
-          +-->
-      <!--
-      <appender-ref ref="Chainsaw" />
-        -->
-</xconf>
diff --git a/trunk/src/confpatch/log4j-logger.xconf b/trunk/src/confpatch/log4j-logger.xconf
deleted file mode 100644
index e861fc6..0000000
--- a/trunk/src/confpatch/log4j-logger.xconf
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/configuration" unless="/configuration/logger[@name='org.mortbay.http.ContextLoader']" insert-after="appender">
-
-    <logger name="org.mortbay.http.ContextLoader">
-        <level value="warn"/>
-    </logger>
-</xconf>
diff --git a/trunk/src/confpatch/logger-class.xweb b/trunk/src/confpatch/logger-class.xweb
deleted file mode 100644
index 28a5c1c..0000000
--- a/trunk/src/confpatch/logger-class.xweb
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xweb xpath="/web-app/servlet[servlet-name = 'Cocoon']"
-      unless="init-param[param-name = 'logger-class' and
-                         normalize-space(param-value) = 'org.apache.avalon.excalibur.logger.Log4JLoggerManager']"
-      insert-after="init-param[position() = last()]">
-    <init-param>
-      <param-name>logger-class</param-name>
-      <param-value>org.apache.avalon.excalibur.logger.Log4JLoggerManager</param-value>
-    </init-param>
-    <init-param>
-      <param-name>log4j-config</param-name>
-      <param-value>/WEB-INF/log4j.xconf</param-value>
-    </init-param>
-</xweb>
\ No newline at end of file
diff --git a/trunk/src/confpatch/logkit-categories.xconf b/trunk/src/confpatch/logkit-categories.xconf
deleted file mode 100644
index 70da51a..0000000
--- a/trunk/src/confpatch/logkit-categories.xconf
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/logkit/categories" unless="category[@name='lenya']">
-    <category name="lenya" log-level="INFO">
-      <log-target id-ref="lenya"/>
-      <log-target id-ref="error"/>
-    </category>
-</xconf>
diff --git a/trunk/src/confpatch/logkit-targets.xconf b/trunk/src/confpatch/logkit-targets.xconf
deleted file mode 100644
index cef080f..0000000
--- a/trunk/src/confpatch/logkit-targets.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/logkit/targets" unless="cocoon[@id='lenya']">
-	<cocoon id="lenya">
-	  <filename>${context-root}/WEB-INF/logs/lenya.log</filename>
-	  <format type="cocoon">
-	    %7.7{priority} %{time}   [%{category}] (%{uri}) %{thread}/%{class:short}: %{message}\n%{throwable}
-	  </format>
-	  <append>false</append>
-	</cocoon>
-</xconf>
diff --git a/trunk/src/confpatch/overwrite-uploads.xweb b/trunk/src/confpatch/overwrite-uploads.xweb
deleted file mode 100644
index 4c40eda..0000000
--- a/trunk/src/confpatch/overwrite-uploads.xweb
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xweb xpath="/web-app/servlet/init-param[param-name='overwrite-uploads']/param-value"
-	remove="/web-app/servlet/init-param[param-name='overwrite-uploads']/param-value/text()"
->allow</xweb>
\ No newline at end of file
diff --git a/trunk/src/confpatch/session-listener.xweb b/trunk/src/confpatch/session-listener.xweb
deleted file mode 100644
index bc6f785..0000000
--- a/trunk/src/confpatch/session-listener.xweb
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xweb xpath="/web-app" unless="listener" insert-before="node()[1]">
-
-  <listener>
-    <!--
-      - Listen for new sessions and store the objects in a HashMap 
-      -->
-    <listener-class>org.apache.lenya.util.SessionListener</listener-class>
-  </listener>
-
-</xweb>
diff --git a/trunk/src/confpatch/upload-max-size.xweb b/trunk/src/confpatch/upload-max-size.xweb
deleted file mode 100644
index 80ada86..0000000
--- a/trunk/src/confpatch/upload-max-size.xweb
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xweb xpath="/web-app/servlet/init-param[param-name='upload-max-size']/param-value"
-      remove="/web-app/servlet/init-param[param-name='upload-max-size']/param-value/text()"
->10000000</xweb>
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java b/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
deleted file mode 100644
index 77cd67c..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Initializable;
-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.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-
-/**
- * Avalon-based element set.
- */
-public class ConfigurableElementSet extends AbstractLogEnabled implements ElementSet, Configurable,
-        ThreadSafe, Initializable, Serviceable {
-
-    private String namespaceUri;
-    private Map elements = new HashMap();
-
-    public void configure(Configuration config) throws ConfigurationException {
-
-        this.namespaceUri = config.getAttribute("name");
-
-        Configuration[] attributeConfigs = config.getChildren("element");
-        for (int i = 0; i < attributeConfigs.length; i++) {
-            String name = attributeConfigs[i].getAttribute("name");
-            boolean isMultiple = attributeConfigs[i].getAttributeAsBoolean("multiple", false);
-            boolean isEditable = attributeConfigs[i].getAttributeAsBoolean("editable", false);
-            String actionOnCopy = attributeConfigs[i].getAttribute("onCopy", "copy");
-            ElementImpl element = new ElementImpl(name, isMultiple, isEditable);
-            int action;
-            if (actionOnCopy.equalsIgnoreCase("copy")) {
-                action = Element.ONCOPY_COPY;
-            }
-            else if (actionOnCopy.equalsIgnoreCase("ignore")) {
-                action = Element.ONCOPY_IGNORE;
-            }
-            else if (actionOnCopy.equalsIgnoreCase("delete")) {
-                action = Element.ONCOPY_DELETE;
-            }
-            else {
-                throw new ConfigurationException("The action [" + actionOnCopy + "] is not supported.");
-            }
-            try {
-                element.setActionOnCopy(action);
-            } catch (MetaDataException e) {
-                throw new RuntimeException(e);
-            }
-            this.elements.put(name, element);
-        }
-
-    }
-
-    public Element[] getElements() {
-        Collection values = this.elements.values();
-        return (Element[]) values.toArray(new Element[values.size()]);
-    }
-
-    public Element getElement(String name) {
-        return (Element) this.elements.get(name);
-    }
-
-    public String getNamespaceUri() {
-        return this.namespaceUri;
-    }
-
-    public boolean containsElement(String name) {
-        return this.elements.keySet().contains(name);
-    }
-
-    public void initialize() throws Exception {
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-            registry.register(getNamespaceUri(), this);
-        }
-        finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-    }
-    
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java
deleted file mode 100644
index 0b81712..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Element implementation.
- */
-public class ElementImpl implements Element {
-    
-    private String name;
-    private boolean multiple;
-    private String description = "";
-    private boolean editable;
-    
-    /**
-     * Ctor.
-     * @param name The name.
-     * @param isMultiple if the element can have multiple values.
-     * @param isEditable if the element can be edited.
-     */
-    public ElementImpl(String name, boolean isMultiple, boolean isEditable) {
-        this.name = name;
-        this.multiple = isMultiple;
-        this.editable = isEditable;
-    }
-
-    /**
-     * Ctor.
-     * @param name The name.
-     * @param isMultiple if the element can have multiple values.
-     * @param isEditable  if the element can be edited.
-     * @param description The description of the element.
-     */
-    public ElementImpl(String name, boolean isMultiple, boolean isEditable, String description) {
-        this(name, isMultiple, isEditable);
-        this.description = description;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public boolean isMultiple() {
-        return this.multiple;
-    }
-
-    public String getDescription() {
-        return this.description;
-    }
-
-    public boolean isEditable() {
-        return this.editable;
-    }
-    
-    private int actionOnCopy;
-
-    public int getActionOnCopy() {
-        return this.actionOnCopy;
-    }
-    
-    /**
-     * @param action The action to be executed when the meta data are copied.
-     * @throws MetaDataException if the action is not supported.
-     */
-    public void setActionOnCopy(int action) throws MetaDataException {
-        this.actionOnCopy = action;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/metadata/MetaDataRegistryImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/metadata/MetaDataRegistryImpl.java
deleted file mode 100644
index 20a1d41..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/metadata/MetaDataRegistryImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.thread.ThreadSafe;
-
-/**
- * Meta data registry implementation.
- */
-public class MetaDataRegistryImpl extends AbstractLogEnabled implements MetaDataRegistry,
-        ThreadSafe {
-
-    public ElementSet getElementSet(String namespaceUri) throws MetaDataException {
-        if (!isRegistered(namespaceUri)) {
-            throw new MetaDataException("The namespace URI [" + namespaceUri
-                    + "] is not registered.");
-        }
-        return (ElementSet) this.namespace2set.get(namespaceUri);
-    }
-
-    public boolean isRegistered(String namespaceUri) throws MetaDataException {
-        return this.namespace2set.containsKey(namespaceUri);
-    }
-
-    private Map namespace2set = new HashMap();
-
-    public void register(String namespaceUri, ElementSet elementSet) throws MetaDataException {
-        if (this.namespace2set.containsKey(namespaceUri)) {
-            throw new MetaDataException("The namespace [" + namespaceUri
-                    + "] is already registered.");
-        }
-        this.namespace2set.put(namespaceUri, elementSet);
-    }
-
-    public String[] getNamespaceUris() throws MetaDataException {
-        Set keys = this.namespace2set.keySet();
-        return (String[]) keys.toArray(new String[keys.size()]);
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/module/ModuleManagerImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/module/ModuleManagerImpl.java
deleted file mode 100644
index 3385b02..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/module/ModuleManagerImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.module;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-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.avalon.framework.thread.ThreadSafe;
-
-/**
- * Module manager implementation.
- */
-public class ModuleManagerImpl extends AbstractLogEnabled implements ModuleManager, ThreadSafe,
-        Configurable {
-
-    public String getBaseURI(String shortcut) throws ModuleException {
-        if (!this.module2src.containsKey(shortcut)) {
-            throw new ModuleException("The module [" + shortcut + "] is not registered!");
-        }
-        
-        String baseUri;
-        if (this.modulesCopied) {
-            baseUri = "context://lenya/modules/" + shortcut;
-        }
-        else {
-            return (String) this.module2src.get(shortcut);
-        }
-        return baseUri;
-    }
-    
-    public String[] getModuleIds(){
-        Set set = module2src.keySet();
-        return (String[]) set.toArray(new String[set.size()]);
-    }
-
-    private boolean modulesCopied = false;
-    private Map module2src = new HashMap();
-
-    public void configure(Configuration config) throws ConfigurationException {
-        Configuration modulesConfig = config.getChild("modules");
-        this.modulesCopied = modulesConfig.getAttributeAsBoolean("copy");
-
-        Configuration[] modules = modulesConfig.getChildren("module");
-        for (int i = 0; i < modules.length; i++) {
-            String shortcut = modules[i].getAttribute("shortcut");
-            String src = modules[i].getAttribute("src");
-            String uri = new File(src).toURI().toString();
-            this.module2src.put(shortcut, uri);
-        }
-
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/AreaImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/AreaImpl.java
deleted file mode 100644
index d3f80c6..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/AreaImpl.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Area implementation.
- */
-public class AreaImpl implements Area {
-
-    private String name;
-    private Publication pub;
-    private DocumentFactory factory;
-    private NodeFactory nodeFactory;
-    private ServiceManager manager;
-
-    /**
-     * @param manager The service manager.
-     * @param factory The factory.
-     * @param pub The publication.
-     * @param name The area name.
-     */
-    public AreaImpl(ServiceManager manager, DocumentFactory factory, Publication pub, String name) {
-        this.manager = manager;
-        this.factory = factory;
-        this.pub = pub;
-        this.name = name;
-    }
-
-    public boolean contains(String uuid, String language) {
-        // check site structure first (performance)
-        if (getSite().containsByUuid(uuid, language)) {
-            return true;
-        } else {
-            String sourceUri = DocumentImpl.getSourceURI(pub, name, uuid, language);
-            try {
-                Node node = (Node) getPublication().getSession().getRepositoryItem(
-                        getNodeFactory(), sourceUri);
-                return node.exists();
-            } catch (RepositoryException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    protected NodeFactory getNodeFactory() {
-        if (this.nodeFactory == null) {
-            try {
-                this.nodeFactory = (NodeFactory) this.manager.lookup(NodeFactory.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.nodeFactory;
-    }
-
-    public Document getDocument(String uuid, String language) throws PublicationException {
-        return this.factory.get(getPublication(), getName(), uuid, language);
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public Publication getPublication() {
-        return this.pub;
-    }
-
-    private SiteStructure site;
-
-    public SiteStructure getSite() {
-        if (this.site == null) {
-            SiteManager siteManager = null;
-            ServiceSelector selector = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-                siteManager = (SiteManager) selector.select(getPublication().getSiteManagerHint());
-                this.site = siteManager.getSiteStructure(this.factory, getPublication(), getName());
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (selector != null) {
-                    if (siteManager != null) {
-                        selector.release(siteManager);
-                    }
-                    this.manager.release(selector);
-                }
-            }
-        }
-        return this.site;
-    }
-
-    public String toString() {
-        return getPublication().getId() + ":" + getName();
-    }
-
-    public Document[] getDocuments() {
-        SiteNode[] nodes = getSite().getNodes();
-        List docs = new ArrayList();
-        for (int i = 0; i < nodes.length; i++) {
-            if (nodes[i].getUuid() != null) {
-                String[] langs = nodes[i].getLanguages();
-                for (int l = 0; l < langs.length; l++) {
-                    try {
-                        docs.add(nodes[i].getLink(langs[l]).getDocument());
-                    } catch (SiteException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }
-        }
-        return (Document[]) docs.toArray(new Document[docs.size()]);
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryBuilderImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryBuilderImpl.java
deleted file mode 100644
index f1e5431..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryBuilderImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Document factory builder implementation.
- */
-public class DocumentFactoryBuilderImpl extends AbstractLogEnabled implements ThreadSafe,
-        DocumentFactoryBuilder, Serviceable {
-
-    public DocumentFactory createDocumentFactory(Session session) {
-        return new DocumentFactoryImpl(session, this.manager, getLogger());
-    }
-    
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
deleted file mode 100644
index 37b3b2f..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.Arrays;
-import java.util.StringTokenizer;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.util.Assert;
-
-/**
- * A DocumentIdentityMap avoids the multiple instanciation of a document object.
- * 
- * @version $Id: DocumentIdentityMap.java 264153 2005-08-29 15:11:14Z andreas $
- */
-public class DocumentFactoryImpl extends AbstractLogEnabled implements DocumentFactory {
-
-    private Session session;
-    protected ServiceManager manager;
-
-    /**
-     * @return The session.
-     */
-    public Session getSession() {
-        return this.session;
-    }
-
-    /**
-     * Ctor.
-     * @param session The session to use.
-     * @param manager The service manager.
-     * @param logger The logger to use.
-     */
-    public DocumentFactoryImpl(Session session, ServiceManager manager, Logger logger) {
-        this.session = session;
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    /**
-     * Returns a document.
-     * @param publication The publication.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @param language The language.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public Document get(Publication publication, String area, String uuid, String language)
-            throws DocumentBuildException {
-        return get(publication, area, uuid, language, -1);
-    }
-
-    public Document get(Publication publication, String area, String uuid, String language,
-            int revision) throws DocumentBuildException {
-        if (getLogger().isDebugEnabled())
-            getLogger().debug(
-                    "DocumentIdentityMap::get() called on publication [" + publication.getId()
-                            + "], area [" + area + "], UUID [" + uuid + "], language [" + language
-                            + "]");
-
-        String key = getKey(publication, area, uuid, language, revision);
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug(
-                    "DocumentIdentityMap::get() got key [" + key + "] from DocumentFactory");
-
-        try {
-            return (Document) getSession().getRepositoryItem(this, key);
-        } catch (RepositoryException e) {
-            throw new DocumentBuildException(e);
-        }
-    }
-
-    /**
-     * Returns the document identified by a certain web application URL.
-     * @param webappUrl The web application URL.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public Document getFromURL(String webappUrl) throws DocumentBuildException {
-        String key = getKey(webappUrl);
-        try {
-            return (Document) getSession().getRepositoryItem(this, key);
-        } catch (RepositoryException e) {
-            throw new DocumentBuildException(e);
-        }
-    }
-
-    /**
-     * Builds a clone of a document for another language.
-     * @param document The document to clone.
-     * @param language The language of the target document.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public Document getLanguageVersion(Document document, String language)
-            throws DocumentBuildException {
-        return get(document.getPublication(), document.getArea(), document.getUUID(), language);
-    }
-
-    /**
-     * Builds a clone of a document for another area.
-     * @param document The document to clone.
-     * @param area The area of the target document.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public Document getAreaVersion(Document document, String area) throws DocumentBuildException {
-        return get(document.getPublication(), area, document.getUUID(), document.getLanguage());
-    }
-
-    /**
-     * Builds a document for the default language.
-     * @param publication The publication.
-     * @param area The area.
-     * @param documentId The document ID.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public Document get(Publication publication, String area, String documentId)
-            throws DocumentBuildException {
-        return get(publication, area, documentId, publication.getDefaultLanguage());
-    }
-
-    /**
-     * Checks if a string represents a valid document ID.
-     * @param id The string.
-     * @return A boolean value.
-     */
-    public boolean isValidDocumentId(String id) {
-
-        if (!id.startsWith("/")) {
-            return false;
-        }
-
-        String[] snippets = id.split("/");
-
-        if (snippets.length < 2) {
-            return false;
-        }
-
-        for (int i = 1; i < snippets.length; i++) {
-            if (!snippets[i].matches("[a-zA-Z0-9\\-]+")) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Checks if a webapp URL represents a document.
-     * @param webappUrl A web application URL.
-     * @return A boolean value.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public boolean isDocument(String webappUrl) throws DocumentBuildException {
-        Assert.notNull("webapp URL", webappUrl);
-        PublicationManager pubMgr = getPubManager();
-        try {
-            URLInformation info = new URLInformation(webappUrl);
-            String pubId = info.getPublicationId();
-            if (pubId != null && Arrays.asList(pubMgr.getPublicationIds()).contains(pubId)) {
-                Publication pub = pubMgr.getPublication(this, pubId);
-                DocumentBuilder builder = pub.getDocumentBuilder();
-                return builder.isDocument(this, webappUrl);
-            } else {
-                return false;
-            }
-        } catch (PublicationException e) {
-            throw new DocumentBuildException(e);
-        }
-    }
-
-    /**
-     * Builds a document key.
-     * @param publication The publication.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @param language The language.
-     * @param revision 
-     * @return A key.
-     */
-    public String getKey(Publication publication, String area, String uuid, String language, int revision) {
-        Assert.notNull("publication", publication);
-        Assert.notNull("area", area);
-        Assert.notNull("uuid", uuid);
-        Assert.notNull("language", language);
-        return publication.getId() + ":" + area + ":" + uuid + ":" + language + ":" + revision;
-    }
-
-    /**
-     * Builds a document key.
-     * @param webappUrl The web application URL.
-     * @return A key.
-     */
-    public String getKey(String webappUrl) {
-        Assert.notNull("webapp URL", webappUrl);
-        try {
-            if (!isDocument(webappUrl)) {
-                throw new RuntimeException("No document for URL [" + webappUrl + "] found.");
-            }
-            DocumentLocator locator = getLocator(webappUrl);
-            Publication publication = getPublication(locator.getPublicationId());
-            String area = locator.getArea();
-            String uuid = publication.getArea(area).getSite().getNode(locator.getPath()).getUuid();
-            return getKey(publication, area, uuid, locator.getLanguage(), -1);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected DocumentLocator getLocator(String webappUrl) {
-        DocumentLocator locator;
-        try {
-            Publication publication = PublicationUtil.getPublicationFromUrl(this.manager, this,
-                    webappUrl);
-            DocumentBuilder builder = publication.getDocumentBuilder();
-            locator = builder.getLocator(this, webappUrl);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return locator;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.IdentifiableFactory#build(org.apache.lenya.transaction.IdentityMap,
-     *      java.lang.String)
-     */
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("DocumentFactory::build() called with key [" + key + "]");
-
-        StringTokenizer tokenizer = new StringTokenizer(key, ":");
-        String publicationId = tokenizer.nextToken();
-        String area = tokenizer.nextToken();
-        String uuid = tokenizer.nextToken();
-        String language = tokenizer.nextToken();
-        String revisionString = tokenizer.nextToken();
-        int revision = Integer.valueOf(revisionString).intValue();
-
-        Document document;
-        try {
-            Publication publication = getPublication(publicationId);
-            DocumentBuilder builder = publication.getDocumentBuilder();
-            DocumentIdentifier identifier = new DocumentIdentifier(publicationId, area, uuid,
-                    language);
-            document = buildDocument(this, identifier, revision, builder);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("DocumentFactory::build() done.");
-
-        return document;
-    }
-
-    protected Document buildDocument(DocumentFactory map, DocumentIdentifier identifier,
-            int revision, DocumentBuilder builder) throws DocumentBuildException {
-
-        DocumentImpl document = createDocument(map, identifier, revision, builder);
-        ContainerUtil.enableLogging(document, getLogger());
-        return document;
-    }
-
-    /**
-     * Creates a new document object. Override this method to create specific document objects,
-     * e.g., for different document IDs.
-     * @param map The identity map.
-     * @param identifier The identifier.
-     * @param revision The revision or -1 for the latest revision.
-     * @param builder The document builder.
-     * @return A document.
-     * @throws DocumentBuildException when something went wrong.
-     */
-    protected DocumentImpl createDocument(DocumentFactory map, DocumentIdentifier identifier,
-            int revision, DocumentBuilder builder) throws DocumentBuildException {
-        return new DocumentImpl(this.manager, map, identifier, revision, getLogger());
-    }
-
-    public Document get(DocumentIdentifier identifier) throws DocumentBuildException {
-        try {
-            Publication pub = getPublication(identifier.getPublicationId());
-            return get(pub, identifier.getArea(), identifier.getUUID(), identifier.getLanguage());
-        } catch (PublicationException e) {
-            throw new DocumentBuildException(e);
-        }
-    }
-
-    public String getItemType() {
-        return Document.TRANSACTIONABLE_TYPE;
-    }
-
-    public Document get(DocumentLocator locator) throws DocumentBuildException {
-        try {
-            Publication pub = getPublication(locator.getPublicationId());
-            SiteStructure site = pub.getArea(locator.getArea()).getSite();
-            String uuid = site.getNode(locator.getPath()).getUuid();
-            return get(pub, locator.getArea(), uuid, locator.getLanguage());
-        } catch (PublicationException e) {
-            throw new DocumentBuildException(e);
-        }
-    }
-
-    public Publication getPublication(String id) throws PublicationException {
-        return getPubManager().getPublication(this, id);
-    }
-
-    public Publication[] getPublications() {
-        return getPubManager().getPublications(this);
-    }
-
-    private PublicationManager pubManager;
-
-    protected PublicationManager getPubManager() {
-        if (this.pubManager == null) {
-            try {
-                this.pubManager = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.pubManager;
-    }
-
-    public boolean existsPublication(String id) {
-        return Arrays.asList(getPubManager().getPublicationIds()).contains(id);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
deleted file mode 100644
index f7c25a8..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.repository.ContentHolder;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.util.Assert;
-
-/**
- * A typical CMS document.
- * @version $Id$
- */
-public class DocumentImpl extends AbstractLogEnabled implements Document {
-
-    private DocumentIdentifier identifier;
-    private DocumentFactory factory;
-    protected ServiceManager manager;
-    private int revision = -1;
-
-    /**
-     * The meta data namespace.
-     */
-    public static final String METADATA_NAMESPACE = "http://apache.org/lenya/metadata/document/1.0";
-
-    /**
-     * The name of the resource type attribute. A resource has a resource type; this information can
-     * be used e.g. for different rendering of different types.
-     */
-    protected static final String METADATA_RESOURCE_TYPE = "resourceType";
-
-    /**
-     * The name of the mime type attribute.
-     */
-    protected static final String METADATA_MIME_TYPE = "mimeType";
-
-    /**
-     * The name of the content type attribute. Any content managed by Lenya has a type; this
-     * information can be used e.g. to provide an appropriate management interface.
-     */
-    protected static final String METADATA_CONTENT_TYPE = "contentType";
-
-    /**
-     * The number of seconds from the request that a document can be cached before it expires
-     */
-    protected static final String METADATA_EXPIRES = "expires";
-
-    /**
-     * The extension to use for the document source.
-     */
-    protected static final String METADATA_EXTENSION = "extension";
-
-    /**
-     * Creates a new instance of DefaultDocument.
-     * @param manager The service manager.
-     * @param map The identity map the document belongs to.
-     * @param identifier The identifier.
-     * @param revision The revision number or -1 if the latest revision should be used.
-     * @param _logger a logger
-     */
-    protected DocumentImpl(ServiceManager manager, DocumentFactory map,
-            DocumentIdentifier identifier, int revision, Logger _logger) {
-
-        ContainerUtil.enableLogging(this, _logger);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
-                    "DefaultDocument() creating new instance with id [" + identifier.getUUID()
-                            + "], language [" + identifier.getLanguage() + "]");
-        }
-
-        if (identifier.getUUID() == null) {
-            throw new IllegalArgumentException("The UUID must not be null!");
-        }
-        
-        this.manager = manager;
-        this.identifier = identifier;
-        this.factory = map;
-        this.revision = revision;
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
-                    "DefaultDocument() done building instance with _id [" + identifier.getUUID()
-                            + "], _language [" + identifier.getLanguage() + "]");
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getExpires()
-     */
-    public Date getExpires() throws DocumentException {
-        Date expires = null;
-        long secs = 0;
-
-        MetaData metaData = null;
-        String expiresMeta = null;
-        try {
-            metaData = this.getMetaData(METADATA_NAMESPACE);
-            expiresMeta = metaData.getFirstValue("expires");
-        } catch (MetaDataException e) {
-            throw new DocumentException(e);
-        }
-        if (expiresMeta != null) {
-            secs = Long.parseLong(expiresMeta);
-        } else {
-            secs = -1;
-        }
-
-        if (secs != -1) {
-            Date date = new Date();
-            date.setTime(date.getTime() + secs * 1000l);
-            expires = date;
-        } else {
-            expires = this.getResourceType().getExpires();
-        }
-
-        return expires;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getName()
-     */
-    public String getName() {
-        try {
-            return getLink().getNode().getName();
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private Publication publication;
-    
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getPublication()
-     */
-    public Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = getFactory().getPublication(getIdentifier().getPublicationId());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getLastModified()
-     */
-    public long getLastModified() throws DocumentException {
-        try {
-            return getRepositoryNode().getLastModified();
-        } catch (RepositoryException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public File getFile() {
-        return getPublication().getPathMapper().getFile(getPublication(), getArea(), getUUID(),
-                getLanguage());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getLanguage()
-     */
-    public String getLanguage() {
-        return this.identifier.getLanguage();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getLanguages()
-     */
-    public String[] getLanguages() throws DocumentException {
-
-        List documentLanguages = new ArrayList();
-        String[] allLanguages = getPublication().getLanguages();
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Number of languages of this publication: " + allLanguages.length);
-        }
-
-        for (int i = 0; i < allLanguages.length; i++) {
-            if (existsTranslation(allLanguages[i])) {
-                documentLanguages.add(allLanguages[i]);
-            }
-        }
-
-        return (String[]) documentLanguages.toArray(new String[documentLanguages.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getArea()
-     */
-    public String getArea() {
-        return this.identifier.getArea();
-    }
-
-    private String extension = null;
-    private String defaultExtension = "html";
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getExtension()
-     */
-    public String getExtension() {
-        if (extension == null) {
-            String sourceExtension = getSourceExtension();
-            if (sourceExtension.equals("xml") || sourceExtension.equals("")) {
-                getLogger().info("Default extension will be used: " + defaultExtension);
-                return defaultExtension;
-            } else {
-                return sourceExtension;
-            }
-
-        }
-        return this.extension;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getUUID()
-     */
-    public String getUUID() {
-        return getIdentifier().getUUID();
-    }
-
-    private String defaultSourceExtension = "xml";
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getSourceExtension()
-     */
-    public String getSourceExtension() {
-        String sourceExtension;
-        try {
-            sourceExtension = getMetaData(METADATA_NAMESPACE).getFirstValue(METADATA_EXTENSION);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        if (sourceExtension == null) {
-            getLogger().warn(
-                    "No source extension for document [" + this + "]. The extension \""
-                            + defaultSourceExtension + "\" will be used as default!");
-            sourceExtension = defaultSourceExtension;
-        }
-        return sourceExtension;
-    }
-
-    /**
-     * Sets the extension of the file in the URL.
-     * @param _extension A string.
-     */
-    protected void setExtension(String _extension) {
-        checkWritability();
-        assert _extension != null;
-        Assert.isTrue("Extension doesn't start with a dot", !_extension.startsWith("."));
-        this.extension = _extension;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#exists()
-     */
-    public boolean exists() throws DocumentException {
-        try {
-            return getRepositoryNode().exists();
-        } catch (RepositoryException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#existsInAnyLanguage()
-     */
-    public boolean existsInAnyLanguage() throws DocumentException {
-        String[] languages = getLanguages();
-
-        if (languages.length > 0) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug(
-                        "Document (" + this + ") exists in at least one language: "
-                                + languages.length);
-            }
-            String[] allLanguages = getPublication().getLanguages();
-            if (languages.length == allLanguages.length)
-                // TODO: This is not entirely true, because the publication
-                // could assume the
-                // languages EN and DE, but the document could exist for the
-                // languages DE and FR!
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                            "Document (" + this
-                                    + ") exists even in all languages of this publication");
-                }
-            return true;
-        } else {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Document (" + this + ") does NOT exist in any language");
-            }
-            return false;
-        }
-
-    }
-
-    public DocumentIdentifier getIdentifier() {
-        return this.identifier;
-    }
-
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object object) {
-        if (getClass().isInstance(object)) {
-            DocumentImpl document = (DocumentImpl) object;
-            return document.getIdentifier().equals(getIdentifier());
-        }
-        return false;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-
-        String key = getPublication().getId() + ":" + getPublication().getServletContext() + ":"
-                + getArea() + ":" + getUUID() + ":" + getLanguage();
-
-        return key.hashCode();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getIdentifier().toString();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getFactory()
-     */
-    public DocumentFactory getFactory() {
-        return this.factory;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getCanonicalWebappURL()
-     */
-    public String getCanonicalWebappURL() {
-        return "/" + getPublication().getId() + "/" + getArea() + getCanonicalDocumentURL();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getCanonicalDocumentURL()
-     */
-    public String getCanonicalDocumentURL() {
-        try {
-            DocumentBuilder builder = getPublication().getDocumentBuilder();
-            String webappUrl = builder.buildCanonicalUrl(getFactory(), getLocator());
-            String prefix = "/" + getPublication().getId() + "/" + getArea();
-            return webappUrl.substring(prefix.length());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#accept(org.apache.lenya.cms.publication.util.DocumentVisitor)
-     */
-    public void accept(DocumentVisitor visitor) throws PublicationException {
-        visitor.visitDocument(this);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#delete()
-     */
-    public void delete() throws DocumentException {
-        if (hasLink()) {
-            throw new DocumentException("Can't delete document [" + this
-                    + "], it's still referenced in the site structure.");
-        }
-        try {
-            getRepositoryNode().delete();
-        } catch (Exception e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    protected static final String IDENTIFIABLE_TYPE = "document";
-
-    private ResourceType resourceType;
-
-    /**
-     * Convenience method to read the document's resource type from the meta-data.
-     * @see Document#getResourceType()
-     */
-    public ResourceType getResourceType() throws DocumentException {
-        if (this.resourceType == null) {
-            ServiceSelector selector = null;
-            try {
-                String name = getMetaData(METADATA_NAMESPACE).getFirstValue(METADATA_RESOURCE_TYPE);
-                if (name == null) {
-                    throw new DocumentException("No resource type defined for document [" + this
-                            + "]!");
-                }
-                selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-                this.resourceType = (ResourceType) selector.select(name);
-            } catch (Exception e) {
-                throw new DocumentException(e);
-            }
-        }
-        return this.resourceType;
-    }
-
-    public MetaData getMetaData(String namespaceUri) throws MetaDataException {
-        return getContentHolder().getMetaData(namespaceUri);
-    }
-
-    public String[] getMetaDataNamespaceUris() throws MetaDataException {
-        return getContentHolder().getMetaDataNamespaceUris();
-    }
-
-    public String getMimeType() throws DocumentException {
-        try {
-            String mimeType = getMetaData(METADATA_NAMESPACE).getFirstValue(METADATA_MIME_TYPE);
-            if (mimeType == null) {
-                mimeType = "";
-            }
-            return mimeType;
-        } catch (MetaDataException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public long getContentLength() throws DocumentException {
-        try {
-            return getContentHolder().getContentLength();
-        } catch (RepositoryException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public void setMimeType(String mimeType) throws DocumentException {
-        checkWritability();
-        try {
-            getMetaData(METADATA_NAMESPACE).setValue(METADATA_MIME_TYPE, mimeType);
-        } catch (MetaDataException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public DocumentLocator getLocator() {
-        SiteStructure structure = area().getSite();
-        if (!structure.containsByUuid(getUUID(), getLanguage())) {
-            throw new RuntimeException("The document [" + this
-                    + "] is not referenced in the site structure.");
-        }
-        try {
-            return DocumentLocator.getLocator(getPublication().getId(), getArea(), structure
-                    .getByUuid(getUUID(), getLanguage()).getNode().getPath(), getLanguage());
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public String getPath() throws DocumentException {
-        return getLink().getNode().getPath();
-    }
-
-    public boolean existsAreaVersion(String area) {
-        String sourceUri = getSourceURI(getPublication(), area, getUUID(), getLanguage());
-        try {
-            return SourceUtil.exists(sourceUri, this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean existsTranslation(String language) {
-        return area().contains(getUUID(), language);
-    }
-
-    public Document getAreaVersion(String area) throws DocumentException {
-        try {
-            return getFactory().get(getPublication(), area, getUUID(), getLanguage());
-        } catch (DocumentBuildException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public Document getTranslation(String language) throws DocumentException {
-        try {
-            return getFactory().get(getPublication(), getArea(), getUUID(), language);
-        } catch (DocumentBuildException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    private Node repositoryNode;
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getRepositoryNode()
-     */
-    public Node getRepositoryNode() {
-        if (this.repositoryNode == null) {
-            this.repositoryNode = getRepositoryNode(this.manager, getFactory(), getSourceURI());
-        }
-        return this.repositoryNode;
-    }
-
-    protected ContentHolder getContentHolder() {
-        Node node = getRepositoryNode();
-        if (isRevisionSpecified()) {
-            try {
-                return node.getHistory().getRevision(revision);
-            } catch (RepositoryException e) {
-                throw new RuntimeException(e);
-            }
-        } else {
-            return node;
-        }
-    }
-
-    protected static Node getRepositoryNode(ServiceManager manager, DocumentFactory docFactory,
-            String sourceUri) {
-        Session session = docFactory.getSession();
-        NodeFactory factory = null;
-        try {
-            factory = (NodeFactory) manager.lookup(NodeFactory.ROLE);
-            return (Node) session.getRepositoryItem(factory, sourceUri);
-        } catch (Exception e) {
-            throw new RuntimeException("Creating repository node failed: ", e);
-        } finally {
-            if (factory != null) {
-                manager.release(factory);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Document#getSourceURI()
-     */
-    public String getSourceURI() {
-        return getSourceURI(getPublication(), getArea(), getUUID(), getLanguage());
-    }
-
-    protected static String getSourceURI(Publication pub, String area, String uuid, String language) {
-        String path = pub.getPathMapper().getPath(uuid, language);
-        return pub.getSourceURI() + "/content/" + area + "/" + path;
-    }
-
-    public boolean existsVersion(String area, String language) {
-        String sourceUri = getSourceURI(getPublication(), area, getUUID(), language);
-        try {
-            return SourceUtil.exists(sourceUri, this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public Document getVersion(String area, String language) throws DocumentException {
-        try {
-            return getFactory().get(getPublication(), area, getUUID(), language);
-        } catch (DocumentBuildException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public Link getLink() throws DocumentException {
-        SiteStructure structure = area().getSite();
-        try {
-            if (structure.containsByUuid(getUUID(), getLanguage())) {
-                return structure.getByUuid(getUUID(), getLanguage());
-            } else {
-                throw new DocumentException("The document [" + this
-                        + "] is not referenced in the site structure [" + structure + "].");
-            }
-        } catch (Exception e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public boolean hasLink() {
-        return area().getSite().containsByUuid(getUUID(), getLanguage());
-    }
-
-    public Area area() {
-        try {
-            return getPublication().getArea(getArea());
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void setResourceType(ResourceType resourceType) {
-        checkWritability();
-        Assert.notNull("resource type", resourceType);
-        try {
-            MetaData meta = getMetaData(DocumentImpl.METADATA_NAMESPACE);
-            meta.setValue(DocumentImpl.METADATA_RESOURCE_TYPE, resourceType.getName());
-        } catch (MetaDataException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void setSourceExtension(String extension) {
-        checkWritability();
-        Assert.notNull("extension", extension);
-        Assert.isTrue("extension doesn't start with a dot", !extension.startsWith("."));
-        try {
-            MetaData meta = getMetaData(DocumentImpl.METADATA_NAMESPACE);
-            meta.setValue(DocumentImpl.METADATA_EXTENSION, extension);
-        } catch (MetaDataException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public OutputStream getOutputStream() {
-        checkWritability();
-        try {
-            return getRepositoryNode().getOutputStream();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected void checkWritability() {
-        if (isRevisionSpecified()) {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    protected boolean isRevisionSpecified() {
-        return this.revision != -1;
-    }
-
-    public InputStream getInputStream() {
-        try {
-            return getRepositoryNode().getInputStream();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public Session getSession() {
-        return getFactory().getSession();
-    }
-
-    public int getRevisionNumber() {
-        if (!isRevisionSpecified()) {
-            throw new UnsupportedOperationException(
-                    "This is not a particular revision of the document [" + this + "].");
-        }
-        return this.revision;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
deleted file mode 100644
index 65c811b..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
+++ /dev/null
@@ -1,971 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.UUIDGenerator;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.NodeIterator;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.util.Assert;
-
-/**
- * DocumentManager implementation.
- * 
- * @version $Id$
- */
-public class DocumentManagerImpl extends AbstractLogEnabled implements DocumentManager,
-        Serviceable, Contextualizable {
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#add(org.apache.lenya.cms.publication.Document,
-     *      java.lang.String, java.lang.String, java.lang.String,
-     *      java.lang.String, java.lang.String, boolean)
-     */
-    public Document add(Document sourceDocument, String area, String path, String language,
-            String extension, String navigationTitle, boolean visibleInNav)
-            throws DocumentBuildException, PublicationException {
-
-        Document document = add(sourceDocument.getFactory(), sourceDocument.getResourceType(),
-                sourceDocument.getInputStream(), sourceDocument.getPublication(), area, path,
-                language, extension, navigationTitle, visibleInNav, sourceDocument.getMimeType());
-
-        copyMetaData(sourceDocument, document);
-        return document;
-    }
-
-    /**
-     * Copies meta data from one document to another. If the destination
-     * document is a different area version, the meta data are duplicated (i.e.,
-     * onCopy = delete is neglected).
-     * @param source
-     * @param destination
-     * @throws PublicationException
-     */
-    protected void copyMetaData(Document source, Document destination) throws PublicationException {
-
-        boolean duplicate = source.getUUID().equals(destination.getUUID())
-                && source.getLanguage().equals(destination.getLanguage())
-                && !source.getArea().equals(destination.getArea());
-
-        try {
-            String[] uris = source.getMetaDataNamespaceUris();
-            for (int i = 0; i < uris.length; i++) {
-                if (duplicate) {
-                    destination.getMetaData(uris[i]).forcedReplaceBy(source.getMetaData(uris[i]));
-                } else {
-                    destination.getMetaData(uris[i]).replaceBy(source.getMetaData(uris[i]));
-                }
-            }
-        } catch (MetaDataException e) {
-            throw new PublicationException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#add(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.ResourceType, java.lang.String,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String,
-     *      java.lang.String, java.lang.String, java.lang.String,
-     *      java.lang.String, boolean)
-     */
-    public Document add(DocumentFactory factory, ResourceType documentType,
-            String initialContentsURI, Publication pub, String area, String path, String language,
-            String extension, String navigationTitle, boolean visibleInNav)
-            throws DocumentBuildException, DocumentException, PublicationException {
-
-        Area areaObj = pub.getArea(area);
-        SiteStructure site = areaObj.getSite();
-        if (site.contains(path) && site.getNode(path).hasLink(language)) {
-            throw new DocumentException("The link [" + path + ":" + language
-                    + "] is already contained in site [" + site + "]");
-        }
-
-        Document document = add(factory, documentType, initialContentsURI, pub, area, language,
-                extension);
-
-        addToSiteManager(path, document, navigationTitle, visibleInNav);
-        return document;
-    }
-
-    protected Document add(DocumentFactory factory, ResourceType documentType,
-            InputStream initialContentsStream, Publication pub, String area, String path,
-            String language, String extension, String navigationTitle, boolean visibleInNav, String mimeType)
-            throws DocumentBuildException, DocumentException, PublicationException {
-
-        Area areaObj = pub.getArea(area);
-        SiteStructure site = areaObj.getSite();
-        if (site.contains(path) && site.getNode(path).hasLink(language)) {
-            throw new DocumentException("The link [" + path + ":" + language
-                    + "] is already contained in site [" + site + "]");
-        }
-
-        Document document = add(factory, documentType, initialContentsStream, pub, area, language,
-                extension, mimeType);
-
-        addToSiteManager(path, document, navigationTitle, visibleInNav);
-        return document;
-    }
-
-    public Document add(DocumentFactory factory, ResourceType documentType,
-            String initialContentsURI, Publication pub, String area, String language,
-            String extension) throws DocumentBuildException, DocumentException,
-            PublicationException {
-
-        String uuid = generateUUID();
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(initialContentsURI);
-            return add(factory, documentType, uuid, source.getInputStream(), pub, area, language,
-                    extension, getMimeType(source));
-        } catch (Exception e) {
-            throw new PublicationException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    protected String getMimeType(Source source) {
-        String mimeType = source.getMimeType();
-        if (mimeType == null) {
-            mimeType = "";
-        }
-        return mimeType;
-    }
-
-    protected Document add(DocumentFactory factory, ResourceType documentType,
-            InputStream initialContentsStream, Publication pub, String area, String language,
-            String extension, String mimeType) throws DocumentBuildException, DocumentException,
-            PublicationException {
-
-        String uuid = generateUUID();
-        return add(factory, documentType, uuid, initialContentsStream, pub, area, language,
-                extension, mimeType);
-    }
-
-    protected Document add(DocumentFactory factory, ResourceType documentType, String uuid,
-            InputStream stream, Publication pub, String area, String language, String extension, String mimeType)
-            throws DocumentBuildException {
-        try {
-
-            if (exists(factory, pub, area, uuid, language)) {
-                throw new DocumentBuildException("The document [" + pub.getId() + ":" + area + ":"
-                        + uuid + ":" + language + "] already exists!");
-            }
-
-            Document document = factory.get(pub, area, uuid, language);
-            Node node = document.getRepositoryNode();
-            node.lock();
-
-            document.setResourceType(documentType);
-            document.setSourceExtension(extension);
-            document.setMimeType(mimeType);
-
-            // Write Lenya-internal meta-data
-            MetaData lenyaMetaData = document.getMetaData(DocumentImpl.METADATA_NAMESPACE);
-            lenyaMetaData.setValue(DocumentImpl.METADATA_CONTENT_TYPE, "xml");
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Create");
-                getLogger().debug("    document:     [" + document + "]");
-            }
-
-            create(stream, document);
-            return document;
-        } catch (Exception e) {
-            throw new DocumentBuildException("call to creator for new document failed", e);
-        }
-    }
-
-    protected String generateUUID() throws DocumentBuildException {
-        String uuid;
-        UUIDGenerator generator = null;
-        try {
-
-            generator = (UUIDGenerator) this.manager.lookup(UUIDGenerator.ROLE);
-            uuid = generator.nextUUID();
-
-        } catch (Exception e) {
-            throw new DocumentBuildException("call to creator for new document failed", e);
-        } finally {
-            if (generator != null) {
-                this.manager.release(generator);
-            }
-        }
-        return uuid;
-    }
-
-    protected void create(InputStream stream, Document document) throws Exception {
-
-        // Read initial contents as DOM
-        if (getLogger().isDebugEnabled())
-            getLogger().debug(
-                    "DefaultCreator::create(), ready to read initial contents from URI [" + stream
-                            + "]");
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            copy(resolver, stream, document);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    protected void copy(SourceResolver resolver, InputStream sourceInputStream, Document destination)
-            throws IOException {
-
-        boolean useBuffer = true;
-
-        OutputStream destOutputStream = null;
-        try {
-            destOutputStream = destination.getOutputStream();
-
-            if (useBuffer) {
-                final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-                IOUtils.copy(sourceInputStream, sourceBos);
-                IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-            } else {
-                IOUtils.copy(sourceInputStream, destOutputStream);
-            }
-        } finally {
-            if (destOutputStream != null) {
-                destOutputStream.flush();
-                destOutputStream.close();
-            }
-            if (sourceInputStream != null) {
-                sourceInputStream.close();
-            }
-        }
-    }
-
-    protected void addToSiteManager(String path, Document document, String navigationTitle,
-            boolean visibleInNav) throws PublicationException {
-        addToSiteManager(path, document, navigationTitle, visibleInNav, null);
-    }
-
-    protected void addToSiteManager(String path, Document document, String navigationTitle,
-            boolean visibleInNav, String followingSiblingPath) throws PublicationException {
-        SiteStructure site = document.area().getSite();
-        if (!site.contains(path) && followingSiblingPath != null) {
-            site.add(path, followingSiblingPath);
-        }
-        site.add(path, document);
-        document.getLink().setLabel(navigationTitle);
-        document.getLink().getNode().setVisible(visibleInNav);
-    }
-
-    /**
-     * Template method to copy a document. Override
-     * {@link #copyDocumentSource(Document, Document)} to implement access to a
-     * custom repository.
-     * @see org.apache.lenya.cms.publication.DocumentManager#copy(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.cms.publication.DocumentLocator)
-     */
-    public void copy(Document sourceDoc, DocumentLocator destination) throws PublicationException {
-
-        if (!destination.getPublicationId().equals(sourceDoc.getPublication().getId())) {
-            throw new PublicationException("Can't copy to a different publication!");
-        }
-
-        SiteStructure destSite = sourceDoc.getPublication().getArea(destination.getArea())
-                .getSite();
-        String destPath = destination.getPath();
-        if (destSite.contains(destination.getPath(), destination.getLanguage())) {
-            Document destDoc = destSite.getNode(destPath).getLink(destination.getLanguage())
-                    .getDocument();
-            copyDocumentSource(sourceDoc, destDoc);
-            copyInSiteStructure(sourceDoc, destDoc, destPath);
-        } else {
-            add(sourceDoc, destination.getArea(), destPath, destination.getLanguage(), sourceDoc
-                    .getExtension(), sourceDoc.getLink().getLabel(), sourceDoc.getLink().getNode()
-                    .isVisible());
-        }
-
-    }
-
-    protected void copyInSiteStructure(Document sourceDoc, Document destDoc, String destPath)
-            throws PublicationException, DocumentException, SiteException {
-
-        String destArea = destDoc.getArea();
-
-        SiteStructure destSite = sourceDoc.getPublication().getArea(destArea).getSite();
-
-        if (sourceDoc.hasLink()) {
-            if (destDoc.hasLink()) {
-                Link srcLink = sourceDoc.getLink();
-                Link destLink = destDoc.getLink();
-                destLink.setLabel(srcLink.getLabel());
-                destLink.getNode().setVisible(srcLink.getNode().isVisible());
-            } else {
-                String label = sourceDoc.getLink().getLabel();
-                boolean visible = sourceDoc.getLink().getNode().isVisible();
-                if (destSite.contains(sourceDoc.getLink().getNode().getPath())) {
-                    addToSiteManager(destPath, destDoc, label, visible);
-                } else {
-
-                    String followingSiblingPath = null;
-
-                    if (sourceDoc.getPath().equals(destPath)) {
-                        SiteStructure sourceSite = sourceDoc.area().getSite();
-
-                        SiteNode[] sourceSiblings;
-                        SiteNode sourceNode = sourceDoc.getLink().getNode();
-                        if (sourceNode.isTopLevel()) {
-                            sourceSiblings = sourceSite.getTopLevelNodes();
-                        } else if (sourceNode.getParent() != null) {
-                            sourceSiblings = sourceNode.getParent().getChildren();
-                        } else {
-                            sourceSiblings = new SiteNode[1];
-                            sourceSiblings[0] = sourceNode;
-                        }
-
-                        final int sourcePos = Arrays.asList(sourceSiblings).indexOf(sourceNode);
-
-                        int pos = sourcePos;
-                        while (followingSiblingPath == null && pos < sourceSiblings.length) {
-                            String siblingPath = sourceSiblings[pos].getPath();
-                            if (destSite.contains(siblingPath)) {
-                                followingSiblingPath = siblingPath;
-                            }
-                            pos++;
-                        }
-                    }
-
-                    if (followingSiblingPath == null) {
-                        addToSiteManager(destPath, destDoc, label, visible);
-                    } else {
-                        addToSiteManager(destPath, destDoc, label, visible, followingSiblingPath);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#delete(org.apache.lenya.cms.publication.Document)
-     */
-    public void delete(Document document) throws PublicationException {
-        if (!document.exists()) {
-            throw new PublicationException("Document [" + document + "] does not exist!");
-        }
-
-        if (document.hasLink()) {
-            document.getLink().delete();
-        }
-
-        document.delete();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#move(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.cms.publication.DocumentLocator)
-     */
-    public void move(Document sourceDocument, DocumentLocator destination)
-            throws PublicationException {
-
-        if (!destination.getArea().equals(sourceDocument.getArea())) {
-            throw new PublicationException("Can't move to a different area!");
-        }
-
-        SiteStructure site = sourceDocument.area().getSite();
-        if (site.contains(destination.getPath())) {
-            throw new PublicationException("The path [" + destination
-                    + "] is already contained in this publication!");
-        }
-
-        String label = sourceDocument.getLink().getLabel();
-        boolean visible = sourceDocument.getLink().getNode().isVisible();
-        sourceDocument.getLink().delete();
-
-        site.add(destination.getPath(), sourceDocument);
-        sourceDocument.getLink().setLabel(label);
-        sourceDocument.getLink().getNode().setVisible(visible);
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#copyToArea(org.apache.lenya.cms.publication.Document,
-     *      java.lang.String)
-     */
-    public void copyToArea(Document sourceDoc, String destinationArea) throws PublicationException {
-        String language = sourceDoc.getLanguage();
-        copyToVersion(sourceDoc, destinationArea, language);
-    }
-
-    protected void copyToVersion(Document sourceDoc, String destinationArea, String language)
-            throws DocumentException, DocumentBuildException, PublicationException, SiteException {
-
-        Document destDoc;
-        if (sourceDoc.existsAreaVersion(destinationArea)) {
-            destDoc = sourceDoc.getAreaVersion(destinationArea);
-            copyDocumentSource(sourceDoc, destDoc);
-        } else {
-            destDoc = addVersion(sourceDoc, destinationArea, language);
-        }
-
-        if (sourceDoc.hasLink()) {
-            copyInSiteStructure(sourceDoc, destDoc, sourceDoc.getPath());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#copyToArea(org.apache.lenya.cms.publication.util.DocumentSet,
-     *      java.lang.String)
-     */
-    public void copyToArea(DocumentSet documentSet, String destinationArea)
-            throws PublicationException {
-        Document[] documents = documentSet.getDocuments();
-        for (int i = 0; i < documents.length; i++) {
-            copyToArea(documents[i], destinationArea);
-        }
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    private Context context;
-
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context _context) throws ContextException {
-        this.context = _context;
-    }
-
-    /**
-     * @return The Avalon context.
-     */
-    protected Context getContext() {
-        return this.context;
-    }
-
-    public void moveAll(Area sourceArea, String sourcePath, Area targetArea, String targetPath)
-            throws PublicationException {
-        SiteStructure site = sourceArea.getSite();
-
-        SiteNode root = site.getNode(sourcePath);
-        List subsite = preOrder(root);
-
-        for (Iterator n = subsite.iterator(); n.hasNext();) {
-            SiteNode node = (SiteNode) n.next();
-            String subPath = node.getPath().substring(sourcePath.length());
-            targetArea.getSite().add(targetPath + subPath);
-        }
-        Collections.reverse(subsite);
-        for (Iterator n = subsite.iterator(); n.hasNext();) {
-            SiteNode node = (SiteNode) n.next();
-            String subPath = node.getPath().substring(sourcePath.length());
-            moveAllLanguageVersions(sourceArea, sourcePath + subPath, targetArea, targetPath
-                    + subPath);
-        }
-    }
-    
-    protected List preOrder(SiteNode node) {
-    	List list = new ArrayList();
-    	list.add(node);
-    	SiteNode[] children = node.getChildren();
-    	for (int i = 0; i < children.length; i++) {
-    		list.addAll(preOrder(children[i]));
-    	}
-    	return list;
-    }
-
-    public void moveAllLanguageVersions(Area sourceArea, String sourcePath, Area targetArea,
-            String targetPath) throws PublicationException {
-
-        SiteNode sourceNode = sourceArea.getSite().getNode(sourcePath);
-        String[] languages = sourceNode.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            Link sourceLink = sourceNode.getLink(languages[i]);
-            String label = sourceLink.getLabel();
-            Document sourceDoc = sourceLink.getDocument();
-            sourceLink.delete();
-
-            Document targetDoc;
-            if (sourceArea.getName().equals(targetArea.getName())) {
-                targetDoc = sourceDoc;
-            } else {
-                targetDoc = addVersion(sourceDoc, targetArea.getName(), sourceDoc.getLanguage());
-                copyRevisions(sourceDoc, targetDoc);
-                sourceDoc.delete();
-            }
-
-            Link link = targetArea.getSite().add(targetPath, targetDoc);
-            link.setLabel(label);
-            Assert.isTrue("label set", targetDoc.getLink().getLabel().equals(label));
-        }
-        SiteNode targetNode = targetArea.getSite().getNode(targetPath);
-        targetNode.setVisible(sourceNode.isVisible());
-    }
-
-    protected void copyRevisions(Document sourceDoc, Document targetDoc) throws PublicationException {
-        try {
-            Node targetNode = targetDoc.getRepositoryNode();
-            targetNode.copyRevisionsFrom(sourceDoc.getRepositoryNode());
-        } catch (Exception e) {
-            throw new PublicationException(e);
-        }
-    }
-
-    public void copyAll(Area sourceArea, String sourcePath, Area targetArea, String targetPath)
-            throws PublicationException {
-
-        SiteStructure site = sourceArea.getSite();
-        SiteNode root = site.getNode(sourcePath);
-        
-        List preOrder = preOrder(root);
-        for (Iterator i = preOrder.iterator(); i.hasNext(); ) {
-            SiteNode node = (SiteNode) i.next();
-            String nodeSourcePath = node.getPath();
-            String nodeTargetPath = targetPath + nodeSourcePath.substring(sourcePath.length());
-            copyAllLanguageVersions(sourceArea, nodeSourcePath, targetArea, nodeTargetPath);
-        }
-    }
-
-    public void copyAllLanguageVersions(Area sourceArea, String sourcePath, Area targetArea,
-            String targetPath) throws PublicationException {
-        Publication pub = sourceArea.getPublication();
-
-        SiteNode sourceNode = sourceArea.getSite().getNode(sourcePath);
-        String[] languages = sourceNode.getLanguages();
-
-        Document targetDoc = null;
-
-        for (int i = 0; i < languages.length; i++) {
-            Document sourceVersion = sourceNode.getLink(languages[i]).getDocument();
-            DocumentLocator targetLocator = DocumentLocator.getLocator(pub.getId(), targetArea
-                    .getName(), targetPath, languages[i]);
-            if (targetDoc == null) {
-                copy(sourceVersion, targetLocator.getLanguageVersion(languages[i]));
-                targetDoc = targetArea.getSite().getNode(targetPath).getLink(languages[i])
-                        .getDocument();
-            } else {
-                targetDoc = addVersion(targetDoc, targetLocator.getArea(), languages[i]);
-                addToSiteManager(targetLocator.getPath(), targetDoc, sourceVersion.getLink()
-                        .getLabel(), sourceVersion.getLink().getNode().isVisible());
-                copyDocumentSource(sourceVersion, targetDoc);
-            }
-        }
-    }
-
-    /**
-     * Copies a document source.
-     * @param sourceDocument The source document.
-     * @param destinationDocument The destination document.
-     * @throws PublicationException when something went wrong.
-     */
-    public void copyDocumentSource(Document sourceDocument, Document destinationDocument)
-            throws PublicationException {
-        copyContent(sourceDocument, destinationDocument);
-        copyMetaData(sourceDocument, destinationDocument);
-    }
-
-    protected void copyContent(Document sourceDocument, Document destinationDocument)
-            throws PublicationException {
-        boolean useBuffer = true;
-
-        OutputStream destOutputStream = null;
-        InputStream sourceInputStream = null;
-        try {
-            try {
-                sourceInputStream = sourceDocument.getInputStream();
-                destOutputStream = destinationDocument.getOutputStream();
-
-                if (useBuffer) {
-                    final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-                    IOUtils.copy(sourceInputStream, sourceBos);
-                    IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-                } else {
-                    IOUtils.copy(sourceInputStream, destOutputStream);
-                }
-            } finally {
-                if (destOutputStream != null) {
-                    destOutputStream.flush();
-                    destOutputStream.close();
-                }
-                if (sourceInputStream != null) {
-                    sourceInputStream.close();
-                }
-            }
-        } catch (Exception e) {
-            throw new PublicationException(e);
-        }
-    }
-
-    /**
-     * Abstract base class for document visitors which operate on a source and
-     * target document.
-     */
-    public abstract class SourceTargetVisitor implements DocumentVisitor {
-
-        private DocumentLocator rootSource;
-        private DocumentLocator rootTarget;
-        private DocumentManager manager;
-
-        /**
-         * Ctor.
-         * @param manager The document manager.
-         * @param source The root source.
-         * @param target The root target.
-         */
-        public SourceTargetVisitor(DocumentManager manager, Document source, DocumentLocator target) {
-            this.manager = manager;
-            this.rootSource = source.getLocator();
-            this.rootTarget = target;
-        }
-
-        /**
-         * @return the root source
-         */
-        protected DocumentLocator getRootSource() {
-            return rootSource;
-        }
-
-        /**
-         * @return the root target
-         */
-        protected DocumentLocator getRootTarget() {
-            return rootTarget;
-        }
-
-        /**
-         * @return the document manager
-         */
-        protected DocumentManager getDocumentManager() {
-            return this.manager;
-        }
-
-        /**
-         * Returns the target corresponding to a source relatively to the root
-         * target document.
-         * @param source The source.
-         * @return A document.
-         * @throws DocumentBuildException if the target could not be built.
-         */
-        protected DocumentLocator getTarget(Document source) throws DocumentBuildException {
-            DocumentLocator sourceLocator = source.getLocator();
-            String rootSourcePath = getRootSource().getPath();
-            if (sourceLocator.getPath().equals(rootSourcePath)) {
-                return rootTarget;
-            } else {
-                String relativePath = sourceLocator.getPath().substring(rootSourcePath.length());
-                return rootTarget.getDescendant(relativePath);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#deleteAll(org.apache.lenya.cms.publication.Document)
-     */
-    public void deleteAll(Document document) throws PublicationException {
-
-        SiteManager siteManager = null;
-        ServiceSelector selector = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(document.getPublication()
-                    .getSiteManagerHint());
-
-            NodeSet subsite = SiteUtil.getSubSite(this.manager, document.getLink().getNode());
-            for (NodeIterator i = subsite.descending(); i.hasNext();) {
-                SiteNode node = i.next();
-                String[] languages = node.getLanguages();
-                for (int l = 0; l < languages.length; l++) {
-                    Document doc = node.getLink(languages[l]).getDocument();
-                    delete(doc);
-                }
-            }
-        } catch (ServiceException e) {
-            throw new PublicationException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#deleteAllLanguageVersions(org.apache.lenya.cms.publication.Document)
-     */
-    public void deleteAllLanguageVersions(Document document) throws PublicationException {
-        DocumentFactory identityMap = document.getFactory();
-        String[] languages = document.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            DocumentLocator version = document.getLocator().getLanguageVersion(languages[i]);
-            delete(identityMap.get(version));
-        }
-    }
-
-    /**
-     * Visitor to delete documents.
-     */
-    public class DeleteVisitor implements DocumentVisitor {
-
-        private DocumentManager manager;
-
-        /**
-         * Ctor.
-         * @param manager The document manager.
-         */
-        public DeleteVisitor(DocumentManager manager) {
-            this.manager = manager;
-        }
-
-        protected DocumentManager getDocumentManager() {
-            return this.manager;
-        }
-
-        /**
-         * @see org.apache.lenya.cms.publication.util.DocumentVisitor#visitDocument(org.apache.lenya.cms.publication.Document)
-         */
-        public void visitDocument(Document document) throws PublicationException {
-            getDocumentManager().deleteAllLanguageVersions(document);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#delete(org.apache.lenya.cms.publication.util.DocumentSet)
-     */
-    public void delete(DocumentSet documents) throws PublicationException {
-
-        if (documents.isEmpty()) {
-            return;
-        }
-
-        SiteManager siteManager = null;
-        ServiceSelector selector = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            Publication pub = documents.getDocuments()[0].getPublication();
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-
-            DocumentSet set = new DocumentSet(documents.getDocuments());
-            sortAscending(set);
-            set.reverse();
-
-            DocumentVisitor visitor = new DeleteVisitor(this);
-            set.visit(visitor);
-        } catch (ServiceException e) {
-            throw new PublicationException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#move(org.apache.lenya.cms.publication.util.DocumentSet,
-     *      org.apache.lenya.cms.publication.util.DocumentSet)
-     */
-    public void move(DocumentSet sources, DocumentSet destinations) throws PublicationException {
-        copy(sources, destinations);
-        delete(sources);
-        /*
-         * Document[] sourceDocs = sources.getDocuments(); Document[] targetDocs =
-         * destinations.getDocuments();
-         * 
-         * if (sourceDocs.length != targetDocs.length) { throw new
-         * PublicationException( "The number of source and destination documents
-         * must be equal!"); }
-         * 
-         * Map source2target = new HashMap(); for (int i = 0; i <
-         * sourceDocs.length; i++) { source2target.put(sourceDocs[i],
-         * targetDocs[i]); }
-         * 
-         * DocumentSet sortedSources = new DocumentSet(sourceDocs);
-         * SiteUtil.sortAscending(this.manager, sortedSources); Document[]
-         * sortedSourceDocs = sortedSources.getDocuments();
-         * 
-         * for (int i = 0; i < sortedSourceDocs.length; i++) {
-         * move(sortedSourceDocs[i], (Document)
-         * source2target.get(sortedSourceDocs[i])); }
-         */
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentManager#copy(org.apache.lenya.cms.publication.util.DocumentSet,
-     *      org.apache.lenya.cms.publication.util.DocumentSet)
-     */
-    public void copy(DocumentSet sources, DocumentSet destinations) throws PublicationException {
-        Document[] sourceDocs = sources.getDocuments();
-        Document[] targetDocs = destinations.getDocuments();
-
-        if (sourceDocs.length != targetDocs.length) {
-            throw new PublicationException(
-                    "The number of source and destination documents must be equal!");
-        }
-
-        Map source2target = new HashMap();
-        for (int i = 0; i < sourceDocs.length; i++) {
-            source2target.put(sourceDocs[i], targetDocs[i]);
-        }
-
-        DocumentSet sortedSources = new DocumentSet(sourceDocs);
-        sortAscending(sortedSources);
-        Document[] sortedSourceDocs = sortedSources.getDocuments();
-
-        for (int i = 0; i < sortedSourceDocs.length; i++) {
-            copy(sortedSourceDocs[i], ((Document) source2target.get(sortedSourceDocs[i]))
-                    .getLocator());
-        }
-    }
-
-    protected void sortAscending(DocumentSet set) throws PublicationException {
-
-        if (!set.isEmpty()) {
-
-            Document[] docs = set.getDocuments();
-            int n = docs.length;
-
-            Publication pub = docs[0].getPublication();
-            SiteManager siteManager = null;
-            ServiceSelector selector = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-                siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-
-                Set nodes = new HashSet();
-                for (int i = 0; i < docs.length; i++) {
-                    nodes.add(docs[i].getLink().getNode());
-                }
-
-                SiteNode[] ascending = siteManager.sortAscending((SiteNode[]) nodes
-                        .toArray(new SiteNode[nodes.size()]));
-
-                set.clear();
-                for (int i = 0; i < ascending.length; i++) {
-                    for (int d = 0; d < docs.length; d++) {
-                        if (docs[d].getPath().equals(ascending[i].getPath())) {
-                            set.add(docs[d]);
-                        }
-                    }
-                }
-
-                if (set.getDocuments().length != n) {
-                    throw new IllegalStateException("Number of documents has changed!");
-                }
-
-            } catch (final ServiceException e) {
-                throw new PublicationException(e);
-            } finally {
-                if (selector != null) {
-                    if (siteManager != null) {
-                        selector.release(siteManager);
-                    }
-                    this.manager.release(selector);
-                }
-            }
-        }
-    }
-
-    public Document addVersion(Document sourceDocument, String area, String language,
-            boolean addToSiteStructure) throws DocumentBuildException, PublicationException {
-        Document document = addVersion(sourceDocument, area, language);
-
-        if (addToSiteStructure && sourceDocument.hasLink()) {
-            String path = sourceDocument.getPath();
-            boolean visible = sourceDocument.getLink().getNode().isVisible();
-            addToSiteManager(path, document, sourceDocument.getLink().getLabel(), visible);
-        }
-
-        return document;
-    }
-
-    public Document addVersion(Document sourceDocument, String area, String language)
-            throws DocumentBuildException, DocumentException, PublicationException {
-        Document document = add(sourceDocument.getFactory(), sourceDocument.getResourceType(),
-                sourceDocument.getUUID(), sourceDocument.getInputStream(), sourceDocument
-                        .getPublication(), area, language, sourceDocument.getSourceExtension(),
-                        sourceDocument.getMimeType());
-        copyMetaData(sourceDocument, document);
-
-        return document;
-    }
-
-    public boolean exists(DocumentFactory factory, Publication pub, String area, String uuid,
-            String language) throws PublicationException {
-        String sourceUri = DocumentImpl.getSourceURI(pub, area, uuid, language);
-        try {
-            Node node = DocumentImpl.getRepositoryNode(this.manager, factory, sourceUri);
-            return node.exists();
-        } catch (RepositoryException e) {
-            throw new PublicationException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java
deleted file mode 100644
index 81858f7..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * A publication's configuration. Keep in sync with
- * src/resources/build/publication.rng!
- */
-public class PublicationConfiguration extends AbstractLogEnabled implements Publication {
-
-    private String id;
-    private String name;
-    private File servletContext;
-    private DocumentIdToPathMapper mapper = null;
-    private ArrayList languages = new ArrayList();
-    private String defaultLanguage = null;
-    private String breadcrumbprefix = null;
-    private String instantiatorHint = null;
-    private String contentDir = null;
-
-    private boolean isConfigLoaded = false;
-
-    /**
-     * <code>CONFIGURATION_FILE</code> The publication configuration file
-     */
-    public static final String CONFIGURATION_FILE = CONFIGURATION_PATH + File.separator
-            + "publication.xml";
-
-    private static final String CONFIGURATION_NAMESPACE = "http://apache.org/cocoon/lenya/publication/1.1";
-
-    // properties marked with "*" are currently not parsed by this class.
-    private static final String ELEMENT_NAME = "name";
-    private static final String ELEMENT_DESCRIPTION = "description"; // *
-    private static final String ELEMENT_LONGDESC = "longdesc"; // *
-    private static final String ELEMENT_VERSION = "version"; // *
-    private static final String ELEMENT_LENYA_VERSION = "lenya-version"; // *
-    private static final String ELEMENT_LENYA_REVISION = "lenya-revision"; // *
-    private static final String ELEMENT_COCOON_VERSION = "cocoon-version"; // *
-    private static final String ELEMENT_LANGUAGES = "languages";
-    private static final String ELEMENT_LANGUAGE = "language";
-    private static final String ATTRIBUTE_DEFAULT_LANGUAGE = "default";
-    private static final String ELEMENT_TEMPLATE = "template";
-    private static final String ATTRIBUTE_ID = "id";
-    private static final String ELEMENT_TEMPLATE_INSTANTIATOR = "template-instantiator";
-    private static final String ATTRIBUTE_NAME = "name";
-    private static final String ELEMENT_PATH_MAPPER = "path-mapper";
-    private static final String ELEMENT_DOCUMENT_BUILDER = "document-builder";
-    private static final String ELEMENT_SITE_MANAGER = "site-manager";
-    private static final String ELEMENT_RESOURCE_TYPES = "resource-types";// *
-    private static final String ELEMENT_RESOURCE_TYPE = "resource-type";// *
-    private static final String ATTRIBUTE_WORKFLOW = "workflow";
-    private static final String ELEMENT_MODULES = "modules";// *
-    private static final String ELEMENT_MODULE = "module";// *
-    private static final String ELEMENT_BREADCRUMB_PREFIX = "breadcrumb-prefix";
-    private static final String ELEMENT_CONTENT_DIR = "content-dir";
-    private static final String ATTRIBUTE_SRC = "src";
-    private static final String ELEMENT_PROXIES = "proxies";
-    private static final String ELEMENT_PROXY = "proxy";
-    private static final String ATTRIBUTE_AREA = "area";
-    private static final String ATTRIBUTE_URL = "url";
-    private static final String ATTRIBUTE_SSL = "ssl";
-
-    /**
-     * Creates a new instance of Publication
-     * @param _id the publication id
-     * @param servletContextPath the servlet context of this publication
-     * @throws PublicationException if there was a problem reading the config
-     *         file
-     */
-    protected PublicationConfiguration(String _id, String servletContextPath)
-            throws PublicationException {
-        this.id = _id;
-        this.servletContext = new File(servletContextPath);
-    }
-
-    /**
-     * Loads the configuration.
-     */
-    protected void loadConfiguration() {
-
-        if (isConfigLoaded) {
-            return;
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Loading configuration for publication [" + getId() + "]");
-        }
-
-        File configFile = getConfigurationFile();
-
-        if (!configFile.exists()) {
-            getLogger().error(
-                    "Config file [" + configFile.getAbsolutePath() + "] does not exist: ",
-                    new RuntimeException());
-            throw new RuntimeException("The configuration file [" + configFile
-                    + "] does not exist!");
-        } else {
-            getLogger().debug("Configuration file [" + configFile + "] exists.");
-        }
-
-        final boolean ENABLE_XML_NAMESPACES = true;
-        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(ENABLE_XML_NAMESPACES);
-
-        Configuration config;
-
-        String pathMapperClassName = null;
-
-        try {
-            config = builder.buildFromFile(configFile);
-
-            this.name = config.getChild(ELEMENT_NAME).getValue();
-
-            try {
-                // one sanity check for the proper namespace. we should really
-                // do that for every element,
-                // but since ELEMENT_PATH_MAPPER is mandatory, this should catch
-                // most cases of forgotten namespace.
-                if (config.getChild(ELEMENT_PATH_MAPPER).getNamespace() != CONFIGURATION_NAMESPACE) {
-                    getLogger().warn(
-                            "Deprecated configuration: the publication configuration elements in "
-                                    + configFile + " must be in the " + CONFIGURATION_NAMESPACE
-                                    + " namespace."
-                                    + " See webapp/lenya/resources/schemas/publication.xml.");
-                }
-                pathMapperClassName = config.getChild(ELEMENT_PATH_MAPPER).getValue();
-                Class pathMapperClass = Class.forName(pathMapperClassName);
-                this.mapper = (DocumentIdToPathMapper) pathMapperClass.newInstance();
-            } catch (final ClassNotFoundException e) {
-                throw new PublicationException("Cannot instantiate documentToPathMapper: ["
-                        + pathMapperClassName + "]", e);
-            }
-
-            Configuration documentBuilderConfiguration = config.getChild(ELEMENT_DOCUMENT_BUILDER,
-                    false);
-            if (documentBuilderConfiguration != null) {
-                this.documentBuilderHint = documentBuilderConfiguration
-                        .getAttribute(ATTRIBUTE_NAME);
-            }
-
-            Configuration[] _languages = config.getChild(ELEMENT_LANGUAGES).getChildren(
-                    ELEMENT_LANGUAGE);
-            for (int i = 0; i < _languages.length; i++) {
-                Configuration languageConfig = _languages[i];
-                String language = languageConfig.getValue();
-                this.languages.add(language);
-                if (languageConfig.getAttribute(ATTRIBUTE_DEFAULT_LANGUAGE, null) != null) {
-                    this.defaultLanguage = language;
-                }
-            }
-
-            Configuration siteManagerConfiguration = config.getChild(ELEMENT_SITE_MANAGER, false);
-            if (siteManagerConfiguration != null) {
-                this.siteManagerName = siteManagerConfiguration.getAttribute(ATTRIBUTE_NAME);
-            }
-
-            Configuration proxiesConfig = config.getChild(ELEMENT_PROXIES);
-            Configuration[] proxyConfigs = proxiesConfig.getChildren(ELEMENT_PROXY);
-            for (int i = 0; i < proxyConfigs.length; i++) {
-                String url = proxyConfigs[i].getAttribute(ATTRIBUTE_URL);
-                String ssl = proxyConfigs[i].getAttribute(ATTRIBUTE_SSL);
-                String area = proxyConfigs[i].getAttribute(ATTRIBUTE_AREA);
-
-                Proxy proxy = new Proxy();
-                proxy.setUrl(url);
-
-                Object key = getProxyKey(area, Boolean.valueOf(ssl).booleanValue());
-                this.areaSsl2proxy.put(key, proxy);
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                            "Adding proxy: [" + proxy + "] for area=[" + area + "] SSL=[" + ssl
-                                    + "]");
-                }
-            }
-
-            Configuration templateConfig = config.getChild(ELEMENT_TEMPLATE, false);
-            // FIXME: this is a hack. For some reason, the old code seems to
-            // imply that a publication
-            // can have multiple templates. This is not the case. All this code
-            // should use a simple string
-            // rather than arrays at some point. For now, the old array is kept,
-            // to avoid having to deal
-            // with all kinds of NPEs that keep cropping up...
-            if (templateConfig == null) {
-                this.templates = new String[0]; // ugh. empty array to keep the
-                // legacy code from breaking.
-            } else {
-                this.templates = new String[1];
-                this.templates[0] = templateConfig.getAttribute(ATTRIBUTE_ID);
-            }
-
-            Configuration templateInstantiatorConfig = config.getChild(
-                    ELEMENT_TEMPLATE_INSTANTIATOR, false);
-            if (templateInstantiatorConfig != null) {
-                this.instantiatorHint = templateInstantiatorConfig
-                        .getAttribute(PublicationConfiguration.ATTRIBUTE_NAME);
-            }
-
-            Configuration contentDirConfig = config.getChild(ELEMENT_CONTENT_DIR, false);
-            if (contentDirConfig != null) {
-                this.contentDir = contentDirConfig.getAttribute(ATTRIBUTE_SRC);
-                getLogger().info(
-                        "Content directory loaded from pub configuration: " + this.contentDir);
-            } else {
-                getLogger().info("No content directory specified within pub configuration!");
-            }
-
-            Configuration resourceTypeConfig = config.getChild(ELEMENT_RESOURCE_TYPES);
-            if (resourceTypeConfig != null) {
-                Configuration[] resourceTypeConfigs = resourceTypeConfig
-                        .getChildren(ELEMENT_RESOURCE_TYPE);
-                for (int i = 0; i < resourceTypeConfigs.length; i++) {
-                    String name = resourceTypeConfigs[i].getAttribute(ATTRIBUTE_NAME);
-                    this.resourceTypes.add(name);
-
-                    String workflow = resourceTypeConfigs[i].getAttribute(ATTRIBUTE_WORKFLOW, null);
-                    if (workflow != null) {
-                        this.resourceType2workflow.put(name, workflow);
-                    }
-                }
-            }
-
-        } catch (final Exception e) {
-            throw new RuntimeException("Problem with config file: " + configFile.getAbsolutePath(),
-                    e);
-        }
-
-        this.breadcrumbprefix = config.getChild(ELEMENT_BREADCRUMB_PREFIX).getValue("");
-
-        isConfigLoaded = true;
-    }
-
-    /**
-     * @return The configuration file ({@link #CONFIGURATION_FILE}).
-     */
-    protected File getConfigurationFile() {
-        File configFile = new File(getDirectory(), CONFIGURATION_FILE);
-        return configFile;
-    }
-
-    /**
-     * Returns the publication ID.
-     * @return A string value.
-     */
-    public String getId() {
-        return this.id;
-    }
-
-    /**
-     * Returns the servlet context this publication belongs to (usually, the
-     * <code>webapps/lenya</code> directory).
-     * @return A <code>File</code> object.
-     */
-    public File getServletContext() {
-        return this.servletContext;
-    }
-
-    /**
-     * Returns the publication directory.
-     * @return A <code>File</code> object.
-     */
-    public File getDirectory() {
-        return new File(getServletContext(), PUBLICATION_PREFIX + File.separator + getId());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getContentDirectory(String)
-     */
-    public File getContentDirectory(String area) {
-        return new File(getContentDir(), area);
-    }
-
-    /**
-     * Set the path mapper
-     * @param _mapper The path mapper
-     */
-    public void setPathMapper(DefaultDocumentIdToPathMapper _mapper) {
-        assert _mapper != null;
-        this.mapper = _mapper;
-    }
-
-    /**
-     * Returns the path mapper.
-     * @return a <code>DocumentIdToPathMapper</code>
-     */
-    public DocumentIdToPathMapper getPathMapper() {
-        if (this.mapper == null) {
-            loadConfiguration();
-        }
-        return this.mapper;
-    }
-
-    /**
-     * Get the default language
-     * @return the default language
-     */
-    public String getDefaultLanguage() {
-        if (this.defaultLanguage == null) {
-            loadConfiguration();
-        }
-        return this.defaultLanguage;
-    }
-
-    /**
-     * Set the default language
-     * @param language the default language
-     */
-    public void setDefaultLanguage(String language) {
-        this.defaultLanguage = language;
-    }
-
-    /**
-     * Get all available languages for this publication
-     * @return an <code>Array</code> of languages
-     */
-    public String[] getLanguages() {
-        loadConfiguration();
-        return (String[]) this.languages.toArray(new String[this.languages.size()]);
-    }
-
-    /**
-     * Get the breadcrumb prefix. It can be used as a prefix if a publication is
-     * part of a larger site
-     * @return the breadcrumb prefix
-     */
-    public String getBreadcrumbPrefix() {
-        loadConfiguration();
-        return this.breadcrumbprefix;
-    }
-
-    private String documentBuilderHint;
-
-    /**
-     * Returns the document builder of this instance.
-     * @return A document builder.
-     */
-    public String getDocumentBuilderHint() {
-        loadConfiguration();
-        return this.documentBuilderHint;
-    }
-
-    /**
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object object) {
-        boolean equals = false;
-
-        if (getClass().isInstance(object)) {
-            Publication publication = (Publication) object;
-            equals = getId().equals(publication.getId())
-                    && getServletContext().equals(publication.getServletContext());
-        }
-
-        return equals;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        String key = getServletContext() + ":" + getId();
-        return key.hashCode();
-    }
-
-    private Map areaSsl2proxy = new HashMap();
-
-    /**
-     * Generates a hash key for a area-SSL combination.
-     * @param area The area.
-     * @param isSslProtected If the proxy is assigned for SSL-protected pages.
-     * @return An object.
-     */
-    protected Object getProxyKey(String area, boolean isSslProtected) {
-        return area + ":" + isSslProtected;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getProxy(org.apache.lenya.cms.publication.Document,
-     *      boolean)
-     */
-    public Proxy getProxy(Document document, boolean isSslProtected) {
-        Proxy proxy = getProxy(document.getArea(), isSslProtected);
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger()
-                    .debug("Resolving proxy for [" + document + "] SSL=[" + isSslProtected + "]");
-            getLogger().debug("Resolved proxy: [" + proxy + "]");
-        }
-
-        return proxy;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getProxy(java.lang.String,
-     *      boolean)
-     */
-    public Proxy getProxy(String area, boolean isSslProtected) {
-        loadConfiguration();
-        Object key = getProxyKey(area, isSslProtected);
-        Proxy proxy = (Proxy) this.areaSsl2proxy.get(key);
-        return proxy;
-    }
-
-    /**
-     * @param area The area.
-     * @param isSslProtected If the proxy is for SSL-protected URLs.
-     * @param proxy The proxy to set.
-     */
-    protected void setProxy(String area, boolean isSslProtected, Proxy proxy) {
-        Object key = getProxyKey(area, isSslProtected);
-        this.areaSsl2proxy.put(key, proxy);
-    }
-
-    private String siteManagerName;
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#exists()
-     */
-    public boolean exists() {
-        return getConfigurationFile().exists();
-    }
-
-    private String[] templates;
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getTemplateIds()
-     */
-    public String[] getTemplateIds() {
-        loadConfiguration();
-        List list = Arrays.asList(this.templates);
-        return (String[]) list.toArray(new String[list.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getSiteManagerHint()
-     */
-    public String getSiteManagerHint() {
-        loadConfiguration();
-        return this.siteManagerName;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getInstantiatorHint()
-     */
-    public String getInstantiatorHint() {
-        loadConfiguration();
-        return this.instantiatorHint;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getContentDir()
-     */
-    public String getContentDir() {
-        loadConfiguration();
-        if (this.contentDir == null) {
-            this.contentDir = new File(getDirectory(), CONTENT_PATH).getAbsolutePath();
-        }
-        return this.contentDir;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getSourceURI()
-     */
-    public String getSourceURI() {
-        return Node.LENYA_PROTOCOL + PUBLICATION_PREFIX_URI + "/" + this.id;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getContentURI(java.lang.String)
-     */
-    public String getContentURI(String area) {
-        return getSourceURI() + "/" + CONTENT_PATH + "/" + area;
-    }
-
-    private Map resourceType2workflow = new HashMap();
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getWorkflowSchema(org.apache.lenya.cms.publication.ResourceType)
-     */
-    public String getWorkflowSchema(ResourceType resourceType) {
-        String workflow = (String) this.resourceType2workflow.get(resourceType.getName());
-        return workflow;
-    }
-
-    private List resourceTypes = new ArrayList();
-
-    /**
-     * @see org.apache.lenya.cms.publication.Publication#getResourceTypeNames()
-     */
-    public String[] getResourceTypeNames() {
-        loadConfiguration();
-        return (String[]) this.resourceTypes.toArray(new String[this.resourceTypes.size()]);
-    }
-
-    public String toString() {
-        return getId();
-    }
-
-    public Area getArea(String name) throws PublicationException {
-        throw new IllegalStateException("Not implemented!");
-    }
-
-    private String[] areas;
-
-    public String[] getAreaNames() {
-        // TODO: make this more generic.
-        if (this.areas == null) {
-            List list = new ArrayList();
-            list.add(Publication.AUTHORING_AREA);
-            list.add(Publication.LIVE_AREA);
-            list.add(Publication.STAGING_AREA);
-            list.add(Publication.TRASH_AREA);
-            list.add(Publication.ARCHIVE_AREA);
-            this.areas = (String[]) list.toArray(new String[list.size()]);
-        }
-        return this.areas;
-    }
-
-    public DocumentFactory getFactory() {
-        throw new IllegalStateException("Not implemented!");
-    }
-
-    public DocumentBuilder getDocumentBuilder() {
-        return null;
-    }
-
-    public String getName() {
-        loadConfiguration();
-        return this.name;
-    }
-
-    public Session getSession() {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationFactory.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationFactory.java
deleted file mode 100644
index 5df7101..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Publication factory.
- */
-public class PublicationFactory implements RepositoryItemFactory {
-
-    private ServiceManager manager;
-    private PublicationConfiguration config;
-
-    /**
-     * @param manager The service manager.
-     * @param config The publication configuration.
-     */
-    public PublicationFactory(ServiceManager manager, PublicationConfiguration config) {
-        this.manager = manager;
-        this.config = config;
-    }
-
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-        return new PublicationImpl(this.manager, factory, config);
-    }
-
-    public String getItemType() {
-        return Publication.ITEM_TYPE;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java
deleted file mode 100644
index ae61927..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationImpl.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * A publication.
- * @version $Id$
- */
-public class PublicationImpl extends AbstractLogEnabled implements Publication {
-
-    private PublicationConfiguration delegate;
-    protected ServiceManager manager;
-    private DocumentFactory factory;
-
-    protected PublicationImpl(ServiceManager manager, DocumentFactory factory,
-            PublicationConfiguration delegate) {
-        this.delegate = delegate;
-        this.manager = manager;
-        this.factory = factory;
-    }
-
-    public boolean exists() {
-        return delegate.exists();
-    }
-
-    public String getBreadcrumbPrefix() {
-        return delegate.getBreadcrumbPrefix();
-    }
-
-    public String getContentDir() {
-        return delegate.getContentDir();
-    }
-
-    public File getContentDirectory(String area) {
-        return delegate.getContentDirectory(area);
-    }
-
-    public String getContentURI(String area) {
-        return delegate.getContentURI(area);
-    }
-
-    public String getDefaultLanguage() {
-        return delegate.getDefaultLanguage();
-    }
-
-    public File getDirectory() {
-        return delegate.getDirectory();
-    }
-
-    private DocumentBuilder documentBuilder;
-    
-    public DocumentBuilder getDocumentBuilder() {
-        if (this.documentBuilder == null) {
-            ServiceSelector selector = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(DocumentBuilder.ROLE + "Selector");
-                this.documentBuilder = (DocumentBuilder) selector.select(delegate.getDocumentBuilderHint());
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.documentBuilder;
-    }
-
-    public String getId() {
-        return delegate.getId();
-    }
-
-    public String getInstantiatorHint() {
-        return delegate.getInstantiatorHint();
-    }
-
-    public String[] getLanguages() {
-        return delegate.getLanguages();
-    }
-
-    public DocumentIdToPathMapper getPathMapper() {
-        return delegate.getPathMapper();
-    }
-
-    public Proxy getProxy(Document document, boolean isSslProtected) {
-        return getProxy(document.getArea(), isSslProtected);
-    }
-
-    public Proxy getProxy(String area, boolean isSslProtected) {
-        Proxy proxy = delegate.getProxy(area, isSslProtected);
-        if (proxy == null) {
-            String url = getDefaultProxyUrl(area);
-            proxy = new Proxy();
-            proxy.setUrl(url);
-            this.delegate.setProxy(area, isSslProtected, proxy);
-        }
-        return proxy;
-    }
-    
-    private String contextPath;
-    
-    protected String getContextPath() {
-        if (this.contextPath == null) {
-            ContextUtility context = null;
-            try {
-                context = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-                this.contextPath = context.getRequest().getContextPath();
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-            finally {
-                if (context != null) {
-                    this.manager.release(context);
-                }
-            }
-        }
-        return this.contextPath;
-    }
-
-    /**
-     * @param area The area.
-     * @return The proxy URL if no proxy is declared in {@link PublicationConfiguration#CONFIGURATION_FILE}.
-     */
-    protected String getDefaultProxyUrl(String area) {
-        return getContextPath() + "/" + getId() + "/" + area;
-    }
-
-    private List allResourceTypes;
-
-    protected String getFirstTemplateId() {
-        String[] templateIds = getTemplateIds();
-        if (templateIds.length > 0) {
-            return templateIds[0];
-        } else {
-            return null;
-        }
-    }
-
-    public String[] getResourceTypeNames() {
-        if (this.allResourceTypes == null) {
-            this.allResourceTypes = new ArrayList();
-            this.allResourceTypes.addAll(Arrays.asList(this.delegate.getResourceTypeNames()));
-            String templateId = getFirstTemplateId();
-            if (templateId != null) {
-                try {
-                    Publication template = getFactory().getPublication(templateId);
-                    String[] templateTypes = template.getResourceTypeNames();
-                    this.allResourceTypes.addAll(Arrays.asList(templateTypes));
-                } catch (PublicationException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-        return (String[]) this.allResourceTypes.toArray(new String[this.allResourceTypes.size()]);
-    }
-
-    public File getServletContext() {
-        return delegate.getServletContext();
-    }
-
-    public String getSiteManagerHint() {
-        return delegate.getSiteManagerHint();
-    }
-
-    public String getSourceURI() {
-        return delegate.getSourceURI();
-    }
-
-    public String[] getTemplateIds() {
-        return delegate.getTemplateIds();
-    }
-
-    public String getWorkflowSchema(ResourceType resourceType) {
-        String schema = this.delegate.getWorkflowSchema(resourceType);
-        if (schema == null && getTemplateIds().length > 0) {
-            String templateId = getFirstTemplateId();
-            try {
-                Publication template = getFactory().getPublication(templateId);
-                schema = template.getWorkflowSchema(resourceType);
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return schema;
-    }
-
-    public void setDefaultLanguage(String language) {
-        delegate.setDefaultLanguage(language);
-    }
-
-    public void setPathMapper(DefaultDocumentIdToPathMapper mapper) {
-        delegate.setPathMapper(mapper);
-    }
-
-    private Map areas = new HashMap();
-    
-    public Area getArea(String name) throws PublicationException {
-        if (!this.areas.containsKey(name)) {
-            Area area = new AreaImpl(this.manager, this.factory, this, name);
-            this.areas.put(name, area);
-        }
-        return (Area) this.areas.get(name);
-    }
-
-    public String[] getAreaNames() {
-        return delegate.getAreaNames();
-    }
-
-    public DocumentFactory getFactory() {
-        return this.factory;
-    }
-
-    public boolean equals(Object obj) {
-        if (!getClass().isInstance(obj)) {
-            return false;
-        }
-        return ((Publication) obj).getId().equals(getId());
-    }
-
-    public int hashCode() {
-        return getId().hashCode();
-    }
-
-    public String toString() {
-        return getId();
-    }
-
-    public String getName() {
-        return delegate.getName();
-    }
-
-    public Session getSession() {
-        return getFactory().getSession();
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationManagerImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationManagerImpl.java
deleted file mode 100644
index 6a8f29a..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/PublicationManagerImpl.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: PublicationFactory.java 177927 2005-05-23 05:32:20Z gregor $  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.util.Assert;
-
-/**
- * Factory for creating publication objects.
- */
-public final class PublicationManagerImpl extends AbstractLogEnabled implements PublicationManager,
-        Serviceable, Initializable, ThreadSafe {
-
-    /**
-     * Create a new <code>PublicationFactory</code>.
-     */
-    public PublicationManagerImpl() {
-    }
-
-    private Map id2config;
-
-    protected synchronized Map getId2config() throws PublicationException {
-        if (this.id2config == null) {
-            this.id2config = new HashMap();
-            File servletContext = new File(this.servletContextPath);
-            File publicationsDirectory = new File(servletContext, Publication.PUBLICATION_PREFIX);
-            File[] publicationDirectories = publicationsDirectory.listFiles(new FileFilter() {
-                public boolean accept(File file) {
-                    File configFile = new File(file, PublicationConfiguration.CONFIGURATION_FILE);
-                    return configFile.exists();
-                }
-            });
-            for (int i = 0; i < publicationDirectories.length; i++) {
-                String id = publicationDirectories[i].getName();
-                addPublication(id);
-            }
-        }
-        return this.id2config;
-    }
-
-    public Publication getPublication(DocumentFactory factory, String id)
-            throws PublicationException {
-
-        Assert.notNull("publication ID", id);
-        Map id2config = getId2config();
-        if (!id2config.containsKey(id)) {
-            throw new PublicationException("The publication [" + id + "] does not exist.");
-        }
-
-        PublicationConfiguration config = (PublicationConfiguration) id2config.get(id);
-        PublicationFactory pubFactory = new PublicationFactory(this.manager, config);
-        try {
-            return (Publication) factory.getSession().getRepositoryItem(pubFactory, id);
-        } catch (RepositoryException e) {
-            throw new PublicationException(e);
-        }
-    }
-
-    public Publication[] getPublications(DocumentFactory factory) {
-        List publications = new ArrayList();
-
-        try {
-            Map id2config = getId2config();
-            for (Iterator i = id2config.keySet().iterator(); i.hasNext();) {
-                String publicationId = (String) i.next();
-                Publication publication = getPublication(factory, publicationId);
-                publications.add(publication);
-            }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        return (Publication[]) publications.toArray(new Publication[publications.size()]);
-    }
-
-    public String[] getPublicationIds() {
-        Set ids;
-        try {
-            ids = getId2config().keySet();
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-        return (String[]) ids.toArray(new String[ids.size()]);
-    }
-
-    private String servletContextPath;
-
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public void initialize() throws Exception {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI("context:///");
-            this.servletContextPath = SourceUtil.getFile(source).getCanonicalPath();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    public void addPublication(String pubId) throws PublicationException {
-        Map id2config = getId2config();
-        if (id2config.containsKey(pubId)) {
-            throw new PublicationException("The publication [" + pubId + "] already exists.");
-        }
-        PublicationConfiguration config = new PublicationConfiguration(pubId,
-                this.servletContextPath);
-        ContainerUtil.enableLogging(config, getLogger());
-        id2config.put(pubId, config);
-    }
-
-    protected String getServletContextPath() {
-        return this.servletContextPath;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeImpl.java
deleted file mode 100644
index 8a9039e..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeImpl.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-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.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.Schema;
-
-/**
- * Resource type.
- * 
- * @version $Id:$
- */
-public class ResourceTypeImpl extends AbstractLogEnabled implements Configurable, ThreadSafe,
-        ResourceType, Serviceable {
-
-    /**
-     * The default sample name.
-     */
-    public static final String DEFAULT_SAMPLE_NAME = "Default Sample";
-
-    protected static final String ATTRIBUTE_URI = "uri";
-    protected static final String ATTRIBUTE_NAME = "name";
-    protected static final String ELEMENT_SCHEMA = "schema";
-    protected static final String ATTRIBUTE_NAMESPACE = "namespace";
-    protected static final String ELEMENT_REWRITE_ATTRIBUTE = "link-attribute";
-    protected static final String ATTRIBUTE_XPATH = "xpath";
-    protected static final String ELEMENT_SAMPLES = "samples";
-    protected static final String ELEMENT_SAMPLE = "sample";
-    protected static final String ATTRIBUTE_MIME_TYPE = "mime-type";
-    protected static final String ELEMENT_FORMAT = "format";
-    protected static final String ELEMENT_EXPIRES = "expires";
-    protected static final String ATTRIBUTE_SECONDS = "seconds";
-
-    private Schema schema = null;
-    private String[] linkAttributeXPaths;
-    private Map samples;
-    private String samplesUri = null;
-    private Map formats = new HashMap();
-    private long expires = 0;
-    private String name;
-    private ServiceManager manager;
-
-    /**
-     * A format.
-     */
-    public static class Format {
-        private String uri;
-        /**
-         * @param uri The uri.
-         */
-        public Format(String uri) {
-            Assert.notNull("uri", uri);
-            this.uri = uri;
-        }
-        /**
-         * @return The uri.
-         */
-        public String getURI() {
-            return this.uri;
-        }
-    }
-
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-
-        try {
-
-            Configuration schemaConf = config.getChild(ELEMENT_SCHEMA, false);
-
-            if (schemaConf != null) {
-                String uri = schemaConf.getAttribute(ATTRIBUTE_URI);
-                String language = schemaConf.getAttribute(ATTRIBUTE_NAMESPACE);
-                this.schema = new Schema(language, uri);
-            }
-
-            // determine the sample content locations.
-            Configuration samplesFileConf = config.getChild(ELEMENT_SAMPLES, false);
-            if (samplesFileConf != null) {
-                this.samplesUri = samplesFileConf.getAttribute(ATTRIBUTE_URI);
-            }
-            else {
-                this.samples = loadSamples(config);
-            }
-            
-
-            Configuration[] rewriteAttributeConfigs = config.getChildren(ELEMENT_REWRITE_ATTRIBUTE);
-            List xPaths = new ArrayList();
-            for (int i = 0; i < rewriteAttributeConfigs.length; i++) {
-                String xPath = rewriteAttributeConfigs[i].getAttribute(ATTRIBUTE_XPATH);
-                xPaths.add(xPath);
-            }
-            this.linkAttributeXPaths = (String[]) xPaths.toArray(new String[xPaths.size()]);
-
-            Configuration[] formatConfigs = config.getChildren(ELEMENT_FORMAT);
-            for (int i = 0; i < formatConfigs.length; i++) {
-                String name = formatConfigs[i].getAttribute(ATTRIBUTE_NAME);
-                String uri = formatConfigs[i].getAttribute(ATTRIBUTE_URI);
-                this.formats.put(name, new Format(uri));
-            }
-
-            Configuration expiresConf = config.getChild(ELEMENT_EXPIRES, false);
-            if (expiresConf != null) {
-                this.expires = expiresConf.getAttributeAsLong(ATTRIBUTE_SECONDS);
-            }
-            
-        } catch (Exception e) {
-            throw new ConfigurationException("Configuring resource type failed: ", e);
-        }
-
-    }
-
-    protected Map loadSamples(Configuration samplesParentConfig) throws ConfigurationException {
-        Configuration[] samplesConf = samplesParentConfig.getChildren(ELEMENT_SAMPLE);
-        Map samples = new LinkedHashMap();
-        for (int i = 0; i < samplesConf.length; i++) {
-            String name = samplesConf[i].getAttribute(ATTRIBUTE_NAME, DEFAULT_SAMPLE_NAME);
-            String mimeType = samplesConf[i].getAttribute(ATTRIBUTE_MIME_TYPE);
-            String uri = samplesConf[i].getAttribute(ATTRIBUTE_URI);
-            samples.put(name, new Sample(name, mimeType, uri));
-        }
-        return samples;
-    }
-
-    protected Configuration readConfiguration(String uri) throws ConfigurationException {
-        Configuration config;
-        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(uri);
-            config = builder.build(source.getInputStream());
-        }
-        catch (Exception e) {
-            throw new ConfigurationException("Loading samples from URI [" + uri + "] failed: ", e);
-        }
-        finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-        return config;
-    }
-
-    public Date getExpires() {
-        Date date = new Date();
-        date.setTime(date.getTime() + this.expires * 1000l);
-        return date;
-    }
-
-    public Schema getSchema() {
-        return this.schema;
-    }
-
-    public String[] getLinkAttributeXPaths() {
-        return this.linkAttributeXPaths;
-    }
-    
-    protected Map getSamples() {
-        if (this.samplesUri == null) {
-            return this.samples;
-        }
-        else {
-            try {
-                Configuration samplesConfig = readConfiguration(this.samplesUri);
-                return loadSamples(samplesConfig);
-            } catch (ConfigurationException e) {
-                throw new RuntimeException(e);
-            }
-            
-        }
-    }
-
-    public String[] getSampleNames() {
-        Set names = getSamples().keySet();
-        return (String[]) names.toArray(new String[names.size()]);
-    }
-    
-    public Sample getSample(String name) {
-        Map samples = getSamples();
-        if (!samples.containsKey(name)) {
-            throw new IllegalArgumentException("No sample with name [" + name + "] found.");
-        }
-        return (Sample) samples.get(name);
-    }
-
-    public void setName(String name) {
-        Assert.notNull("name", name);
-        this.name = name;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public String[] getFormats() {
-        Set names = this.formats.keySet();
-        return (String[]) names.toArray(new String[names.size()]);
-    }
-
-    public String getFormatURI(String format) {
-
-        if (!this.formats.containsKey(format)) {
-            throw new RuntimeException("The resource type [" + getName()
-                    + "] does not support the format [" + format + "].");
-        }
-
-        return ((Format) this.formats.get(format)).getURI();
-    }
-    
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-    
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java b/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java
deleted file mode 100644
index 666c4f1..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.cocoon.components.ExtendedComponentSelector;
-
-/**
- * Specifis selector for resource types.
- */
-public class ResourceTypeSelector extends ExtendedComponentSelector{
-
-    /**
-     * @see org.apache.cocoon.components.ExtendedComponentSelector#select(java.lang.Object)
-     */
-    public Component select(Object hint) throws ComponentException {
-        ResourceType type = (ResourceType) super.select(hint);
-        if (type != null) {
-            type.setName((String) hint);
-        }
-        return (Component) type;
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/repository/AxisUUIDGenerator.java b/trunk/src/impl/java/org/apache/lenya/cms/repository/AxisUUIDGenerator.java
deleted file mode 100644
index dd075fe..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/repository/AxisUUIDGenerator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.axis.components.uuid.UUIDGen;
-import org.apache.axis.components.uuid.UUIDGenFactory;
-
-/**
- * UUID generator based on Apache Axis.
- */
-public class AxisUUIDGenerator extends AbstractLogEnabled implements UUIDGenerator, ThreadSafe {
-
-    private UUIDGen delegate;
-
-    protected UUIDGen getDelegate() {
-        if (this.delegate == null) {
-            this.delegate = UUIDGenFactory.getUUIDGen();
-        }
-        return this.delegate;
-    }
-
-    public String nextUUID() {
-        return getDelegate().nextUUID();
-    }
-
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java b/trunk/src/impl/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
deleted file mode 100644
index 71d5531..0000000
--- a/trunk/src/impl/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryListener;
-import org.apache.lenya.transaction.IdentityMap;
-import org.apache.lenya.transaction.IdentityMapImpl;
-import org.apache.lenya.transaction.Lock;
-import org.apache.lenya.transaction.Lockable;
-import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.transaction.Transactionable;
-
-/**
- * Shared item store implementation.
- */
-public class SharedItemStoreImpl extends AbstractLogEnabled implements SharedItemStore, ThreadSafe {
-
-    private IdentityMap map;
-
-    protected synchronized IdentityMap getIdentityMap() {
-        if (this.map == null) {
-            this.map = new IdentityMapImpl(getLogger());
-        }
-        return this.map;
-    }
-
-    public void addListener(RepositoryListener listener) throws RepositoryException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void commit() throws RepositoryException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void enqueueEvent(RepositoryEvent event) {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public Identity getIdentity() {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public RepositoryItem getRepositoryItem(RepositoryItemFactory factory, String key)
-            throws RepositoryException {
-        RepositoryItemFactoryWrapper wrapper = new RepositoryItemFactoryWrapper(factory, this);
-        return (RepositoryItem) getIdentityMap().get(wrapper, key);
-    }
-
-    public boolean isListenerRegistered(RepositoryListener listener) {
-        return false;
-    }
-
-    public boolean isModifiable() {
-        return false;
-    }
-
-    public void rollback() throws RepositoryException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void setIdentity(Identity identity) {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public Lock createLock(Lockable lockable, int version) throws TransactionException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public boolean isDirty(Transactionable transactionable) {
-        return false;
-    }
-
-    public void registerDirty(Transactionable object) throws TransactionException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void registerNew(Transactionable object) throws TransactionException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void registerRemoved(Transactionable object) throws TransactionException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public void removeLock(Lockable lockable) throws TransactionException {
-        throw new IllegalStateException("Operation not permitted.");
-    }
-
-    public synchronized void clear() {
-        this.map = null;
-    }
-
-    public String getId() {
-        return getClass().getName();
-    }
-    
-}
diff --git a/trunk/src/impl/java/org/apache/lenya/lenya.roles b/trunk/src/impl/java/org/apache/lenya/lenya.roles
deleted file mode 100644
index d8666ae..0000000
--- a/trunk/src/impl/java/org/apache/lenya/lenya.roles
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!--
-  This file contains the role definitions for Lenya-specific Avalon services.
-  A role is the interface for an Avalon service.
-
-  The name of the role usually corresponds to the class name of the interface,
-  and is used for looking up a class implementing that interface.
-
-  The relation between a role and implementations for that role may be
-  one-to-one or one-to-many.
-
-  For a one-to-one relationship, the entry in this file can be sufficient
-  to completely specify this role, by setting the "default-class" for that
-  role. This is the class name of the implementation.
-
-  For a one-to-many relationship, the entry in this file refers to an
-  ExtendedComponentSelector, meaning that the list of available 
-  implementations for that role are retrieved via a selector.
-  This requires additional configuration in the Cocoon service
-  configuration file (cocoon.xconf).
-  
-  If a service requires configuration parameters, these can be specified
-  in the Cocoon service configuration file (cocoon.xconf) as an arbitrary
-  XML snippet which is then automatically passed to the service's 
-  configure() method at initialization.
-
-  $Id$
-  -->
-
-<!DOCTYPE role-list [
-<!ELEMENT role-list (role+)> 
-<!ELEMENT role (hint*)>
-<!ELEMENT hint EMPTY>
-<!ATTLIST role name CDATA #REQUIRED
-               shorthand CDATA #REQUIRED
-               default-class CDATA #IMPLIED
->
-<!ATTLIST hint shorthand CDATA #REQUIRED
-               class CDATA #REQUIRED
->
-]>
-
-<role-list>
-
-  <role name="org.apache.lenya.ac.AuthorizerSelector"
-        shorthand="authorizers"
-        default-class="org.apache.cocoon.components.ExtendedComponentSelector">
-    <hint shorthand="policy" class="org.apache.lenya.ac.impl.PolicyAuthorizer"/>
-    <hint shorthand="workflow" class="org.apache.lenya.cms.ac.workflow.WorkflowAuthorizer"/>
-    <hint shorthand="usecase" class="org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer"/>
-  </role>
-  
-  <role name="org.apache.lenya.ac.PolicyManagerSelector"
-        shorthand="policy-managers"
-        default-class="org.apache.cocoon.components.ExtendedComponentSelector">
-    <hint shorthand="file" class="org.apache.lenya.ac.file.FilePolicyManager"/>
-    <hint shorthand="sitemap" class="org.apache.lenya.cms.ac.sitemap.SitemapPolicyManager"/>
-  </role>
-  
-  <role name="org.apache.lenya.ac.AccessController"
-        shorthand="access-controller"
-        default-class="org.apache.lenya.ac.impl.BypassableAccessController"/>
-        
-  <role name="org.apache.lenya.ac.AccessControllerResolverSelector"
-        shorthand="access-controller-resolvers"
-        default-class="org.apache.cocoon.components.ExtendedComponentSelector">
-    <hint shorthand="composable" class="org.apache.lenya.ac.ComposableAccessControllerResolver"/>
-    <hint shorthand="configurable" class="org.apache.lenya.ac.ConfigurableAccessControllerResolver"/>
-    <hint shorthand="publication" class="org.apache.lenya.cms.ac.PublicationAccessControllerResolver"/>
-  </role>
-  
-  <role name="org.apache.lenya.ac.Authenticator"
-        shorthand="authenticator"
-        default-class="org.apache.lenya.ac.impl.UserAuthenticator"/>
-        
-  <role name="org.apache.lenya.ac.cache.SourceCache"
-  		shorthand="sourcecache"
-  		default-class="org.apache.lenya.ac.cache.SourceCacheImpl"/>
-  		
-  <role name="org.apache.lenya.cms.publication.templating.PublicationTemplateManager"
-  	    shorthand="publication-template-manager"
-  	    default-class="org.apache.lenya.cms.publication.templating.PublicationTemplateManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.usecase.Operation"
-  	    shorthand="operation"
-  	    default-class="org.apache.lenya.cms.usecase.AbstractOperation"/>
-        
-  <role name="org.apache.lenya.cms.usecase.UsecaseSelector"
-        shorthand="usecases"
-        default-class="org.apache.lenya.cms.usecase.impl.UsecaseSelector"/>
-
-  <role name="org.apache.lenya.cms.cocoon.flow.FlowHelper"
-  	    shorthand="flowhelper"
-  	    default-class="org.apache.lenya.cms.cocoon.flow.FlowHelperImpl"/>
-        
-  <role name="org.apache.lenya.workflow.WorkflowManager"
-  	    shorthand="workflow-manager"
-  	    default-class="org.apache.lenya.workflow.impl.WorkflowManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.site.usecases.LinkRewriter"
-  	    shorthand="link-rewriter"
-  	    default-class="org.apache.lenya.cms.site.usecases.LinkRewriterImpl"/>
-        
-  <role name="org.apache.lenya.cms.publication.DocumentManager"
-  	    shorthand="document-manager"
-  	    default-class="org.apache.lenya.cms.publication.DocumentManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.publication.DocumentTypeBuilder"
-  	    shorthand="document-type-builder"
-  	    default-class="org.apache.lenya.cms.publication.DocumentTypeBuilderImpl"/>
-
-  <role name="org.apache.lenya.cms.publication.ResourcesManager"
-  	    shorthand="resources-manager"
-  	    default-class="org.apache.lenya.cms.publication.DefaultResourcesManager"/>
-        
-  <role name="org.apache.lenya.cms.site.SiteManagerSelector"
-  	    shorthand="site-managers"
-  	    default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
-        
-  <role name="org.apache.lenya.cms.publication.DocumentBuilderSelector"
-  	    shorthand="document-builders"
-  	    default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
-        
-  <role name="org.apache.lenya.cms.publication.templating.InstantiatorSelector"
-  	    shorthand="template-instantiators"
-  	    default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
-        
-  <role name="org.apache.lenya.cms.usecase.gui.GUIManager"
-        shorthand="gui-manager"
-        default-class="org.apache.lenya.cms.usecase.gui.impl.GUIManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.publication.ResourceTypeSelector"
-  	    shorthand="resource-types"
-  	    default-class="org.apache.lenya.cms.publication.ResourceTypeSelector"/>
-        
-  <role name="org.apache.lenya.cms.metadata.ElementSetSelector"
-  	    shorthand="meta-data"
-  	    default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
-        
-  <role name="org.apache.lenya.cms.repository.RepositoryManager"
-        shorthand="repository-manager"
-        default-class="org.apache.lenya.cms.repository.RepositoryManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.publication.PublicationManager"
-        shorthand="publication-manager"
-        default-class="org.apache.lenya.cms.publication.PublicationManagerImpl"/>
-        
-  <role name="org.apache.lenya.cms.repo.avalon.RepositoryFactory"
-        shorthand="repository-factory"
-        default-class="org.apache.lenya.cms.repo.avalon.RepositoryFactoryImpl"/>
-
-<!-- RGE: inserted roles used by the Lucene2 block -->	
-
-    <!-- default indexer -->
-  <role name="org.apache.cocoon.components.search.components.Indexer/default" shorthand="default_indexer"
-default-class="org.apache.cocoon.components.search.components.impl.DefaultIndexerImpl"/>
-
-    <!-- parallel indexer -->
-  <role name="org.apache.cocoon.components.search.components.Indexer/parallel" shorthand="parallel_indexer"
-default-class="org.apache.cocoon.components.search.components.impl.ParallelIndexerImpl"/>
-
-	<!-- analyzer manager -->
-  <role name="org.apache.cocoon.components.search.components.AnalyzerManager" shorthand="analyzer_manager"
-default-class="org.apache.cocoon.components.search.components.impl.AnalyzerManagerImpl"/>
-
-	<!-- index manager -->
-  <role name="org.apache.cocoon.components.search.components.IndexManager" shorthand="index_manager"
-default-class="org.apache.cocoon.components.search.components.impl.IndexManagerImpl"/>
-
-</role-list>
diff --git a/trunk/src/impl/test/anteater/tests.xml b/trunk/src/impl/test/anteater/tests.xml
deleted file mode 100644
index e3fa051..0000000
--- a/trunk/src/impl/test/anteater/tests.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!DOCTYPE project [
-  <!ENTITY default SYSTEM "../../webapp/lenya/pubs/default/test/anteater/tests.xml"> 
-]>
-
-<project name="Lenya Anteater Tests" default="tests">
-
-  <taskdef resource="META-INF/Anteater.tasks"/>
-  <typedef resource="META-INF/Anteater.types"/>
-  
-  <property name="default.port" value="8888"/>
-  <property name="default.haltonerror" value="true"/>
-
-  <target name="tests"
-    depends="
-        pubs.default
-    "/>
-
-  &default;
-
-</project>
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/ac/impl/AbstractAccessControlTest.java b/trunk/src/impl/test/org/apache/lenya/ac/impl/AbstractAccessControlTest.java
deleted file mode 100644
index ab9a462..0000000
--- a/trunk/src/impl/test/org/apache/lenya/ac/impl/AbstractAccessControlTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: AccessControlTest.java 408702 2006-05-22 16:03:49Z andreas $  */
-
-package org.apache.lenya.ac.impl;
-
-import java.io.File;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.file.FileAccreditableManager;
-import org.apache.lenya.cms.LenyaTestCase;
-import org.apache.lenya.cms.ac.PublicationAccessControllerResolver;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.repository.SessionImpl;
-
-/**
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class AbstractAccessControlTest extends LenyaTestCase {
-
-    protected static final String TEST_PUB_ID = "test";
-    private ServiceSelector accessControllerResolverSelector;
-    private AccessControllerResolver accessControllerResolver;
-    private DefaultAccessController accessController;
-
-    protected org.apache.lenya.cms.repository.Session login(String userId)
-            throws AccessControlException {
-
-        Session session = new SessionImpl(null, true, getManager(), getLogger());
-        
-        DefaultAccessController ac = getAccessController(session, TEST_PUB_ID);
-        AccreditableManager acMgr = ac.getAccreditableManager();
-        User user = acMgr.getUserManager().getUser(userId);
-
-        if (user == null) {
-            throw new AccessControlException("The user [" + userId + "] does not exist!");
-        }
-
-        ac.setupIdentity(getRequest());
-
-        org.apache.cocoon.environment.Session cocoonSession = getRequest().getSession();
-        Identity identity = (Identity) cocoonSession.getAttribute(Identity.class.getName());
-
-        if (!identity.contains(user)) {
-            User oldUser = identity.getUser();
-            if (oldUser != null) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Removing user [" + oldUser + "] from identity.");
-                }
-                identity.removeIdentifiable(oldUser);
-            }
-            identity.addIdentifiable(user);
-        }
-
-        ac.authorize(getRequest());
-
-        Accreditable[] accrs = identity.getAccreditables();
-        for (int i = 0; i < accrs.length; i++) {
-            getLogger().info("Accreditable: " + accrs[i]);
-        }
-
-        session.setIdentity(identity);
-        return session;
-    }
-
-    protected DefaultAccessController getAccessController() {
-        return getAccessController(getSession(), TEST_PUB_ID);
-    }
-
-    protected DefaultAccessController getAccessController(Session session, String pubId) {
-        DefaultAccessController controller;
-        try {
-            this.accessControllerResolverSelector = (ServiceSelector) getManager().lookup(
-                    AccessControllerResolver.ROLE + "Selector");
-            assertNotNull(this.accessControllerResolverSelector);
-
-            this.accessControllerResolver = (AccessControllerResolver) this.accessControllerResolverSelector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
-            assertNotNull(this.accessControllerResolver);
-            getLogger().info(
-                    "Using access controller resolver: ["
-                            + this.accessControllerResolver.getClass() + "]");
-
-            Publication pub = getPublication(session, pubId);
-            getLogger().info("Resolve access controller");
-            getLogger().info(
-                    "Publication directory: [" + pub.getDirectory().getAbsolutePath() + "]");
-
-            String url = "/" + pubId + "/authoring/index.html";
-            controller = (DefaultAccessController) ((PublicationAccessControllerResolver) this.accessControllerResolver)
-                    .resolveAccessController(url);
-
-            assertNotNull(controller);
-            getLogger().info("Resolved access controller: [" + controller.getClass() + "]");
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return controller;
-    }
-
-    /**
-     * The teardown method for JUnit
-     * @exception Exception if an error occurs
-     */
-    public void tearDown() throws Exception {
-
-        if (this.accessControllerResolverSelector != null) {
-            if (this.accessControllerResolver != null) {
-                if (this.accessController != null) {
-                    this.accessControllerResolver.release(this.accessController);
-                }
-                this.accessControllerResolverSelector.release(this.accessControllerResolver);
-            }
-            getManager().release(this.accessControllerResolverSelector);
-        }
-        super.tearDown();
-    }
-
-    protected static final String USERNAME = "lenya";
-
-    /**
-     * Returns the policy manager.
-     * @return A policy manager.
-     */
-    protected PolicyManager getPolicyManager() {
-        return getAccessController().getPolicyManager();
-    }
-
-    /**
-     * Returns the accreditable manager.
-     * @return An accreditable manager.
-     */
-    protected AccreditableManager getAccreditableManager() {
-        return getAccessController().getAccreditableManager();
-    }
-
-    protected File getAccreditablesDirectory() throws AccessControlException {
-        FileAccreditableManager accrMgr = (FileAccreditableManager) getAccreditableManager();
-        return accrMgr.getConfigurationDirectory();
-    }
-
-    protected DocumentFactory getFactory() {
-        return DocumentUtil.createDocumentFactory(getManager(), getSession());
-    }
-
-    protected DocumentFactory getFactory(Session session) {
-        return DocumentUtil.createDocumentFactory(getManager(), session);
-    }
-
-    private Session session;
-
-    protected Session getSession() {
-        if (this.session == null) {
-            try {
-                this.session = login("lenya");
-            } catch (AccessControlException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.session;
-    }
-
-    protected Publication getPublication(Session session, String pubId) throws PublicationException {
-        return getFactory(session).getPublication(pubId);
-    }
-
-    protected Publication getPublication(String id) throws PublicationException {
-        return getFactory().getPublication(id);
-    }
-    
-    protected Identity getIdentity() {
-        return getSession().getIdentity();
-    }
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/AbstractExcaliburTest.java b/trunk/src/impl/test/org/apache/lenya/cms/AbstractExcaliburTest.java
deleted file mode 100644
index 5431c6d..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/AbstractExcaliburTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms;
-
-import java.io.InputStream;
-
-import org.apache.avalon.excalibur.testcase.ExcaliburTestCase;
-
-/**
- * Abstract base class for excalibur tests
- */
-public abstract class AbstractExcaliburTest extends ExcaliburTestCase {
-
-    /**
-     * <code>CONFIGURATION</code> The path to the configuration
-     */
-    public static final String CONFIGURATION = "/" +
-    AbstractExcaliburTest.class.getPackage().getName().replace('.', '/') + "/lenya.xtest";
-
-    /**
-     * @param test The test.
-     */
-    public AbstractExcaliburTest(String test) {
-        super(test);
-    }
-
-    /**
-     * @see org.apache.avalon.excalibur.testcase.ExcaliburTestCase#prepare()
-     */
-    protected void prepare() throws Exception {
-        System.out.println(CONFIGURATION);
-        InputStream stream = AbstractExcaliburTest.class.getResourceAsStream(CONFIGURATION);
-        prepare(stream);
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/LenyaTestCase.java b/trunk/src/impl/test/org/apache/lenya/cms/LenyaTestCase.java
deleted file mode 100644
index baea69f..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/LenyaTestCase.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.context.DefaultContext;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.core.container.ContainerTestCase;
-import org.apache.cocoon.environment.Context;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.commandline.CommandLineContext;
-import org.apache.cocoon.environment.commandline.CommandLineRequest;
-import org.apache.cocoon.environment.mock.MockEnvironment;
-import org.apache.cocoon.util.IOUtils;
-import org.apache.commons.lang.SystemUtils;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Base class for Lenya tests which need the context information.
- */
-public class LenyaTestCase extends ContainerTestCase {
-
-    protected DefaultContext context;
-
-    protected void addContext(DefaultContext context) {
-        super.addContext(context);
-
-        this.context = context;
-
-        String tempPath = System.getProperty("tempDir", "build/lenya/temp");
-        String contextRoot = System.getProperty("contextRoot", "build/lenya/webapp");
-        getLogger().info("Adding context root entry [" + contextRoot + "]");
-
-        File contextRootDir = new File(contextRoot);
-        context.put("context-root", contextRootDir);
-
-        String testPath = System.getProperty("testPath", "build/test");
-        File testRootDir = new File(testPath);
-        context.put("test-path", testRootDir);
-
-        Context envContext = new CommandLineContext(contextRoot);
-        ContainerUtil.enableLogging(envContext, getLogger());
-        context.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, envContext);
-
-        File tempDir = new File(tempPath);
-
-        File workDir = new File(tempDir, "work");
-        context.put("work-directory", workDir);
-
-        File cacheDir = new File(tempDir, "cache");
-        context.put(Constants.CONTEXT_CACHE_DIR, cacheDir);
-
-        File uploadDir = new File(tempDir, "upload");
-        context.put(Constants.CONTEXT_UPLOAD_DIR, uploadDir);
-
-        context.put(Constants.CONTEXT_CLASS_LOADER, LenyaTestCase.class.getClassLoader());
-        context.put(Constants.CONTEXT_CLASSPATH, getClassPath(contextRoot));
-        // context.put(Constants.CONTEXT_CONFIG_URL, conf.toURL());
-        context.put(Constants.CONTEXT_DEFAULT_ENCODING, "ISO-8859-1");
-    }
-
-    private Request request = null;
-
-    protected Request getRequest() {
-        return this.request;
-    }
-
-    protected void prepare() throws Exception {
-        File testPath = new File("build/test");
-        final String resourceName = LenyaTestCase.class.getName().replace('.', '/') + ".xtest";
-        File resourceFile = new File(testPath, resourceName.replace('/', File.separatorChar));
-        
-        if (resourceFile.isFile()) {
-            getLogger().debug("Loading resource " + resourceFile.getAbsolutePath());
-            prepare(new FileInputStream(resourceFile));
-        } else {
-            getLogger().debug("Resource not found " + resourceName);
-        }
-
-        SourceResolver resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-        MockEnvironment env = new MockEnvironment(resolver);
-
-        String pathInfo = getWebappUrl();
-
-        this.request = new CommandLineRequest(env,
-                "",
-                "",
-                pathInfo,
-                new HashMap(),
-                getRequestParameters());
-        context.put("object-model.request", this.request);
-
-        Map objectModel = new HashMap();
-        objectModel.put(ObjectModelHelper.REQUEST_OBJECT, request);
-        Context envContext = (Context) context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
-        objectModel.put(ObjectModelHelper.CONTEXT_OBJECT, envContext);
-        context.put(ContextHelper.CONTEXT_OBJECT_MODEL, objectModel);
-        
-    }
-
-    protected String getWebappUrl() {
-        return "/test/authoring/index.html";
-    }
-
-    protected Map getRequestParameters() {
-        return new HashMap();
-    }
-
-    /**
-     * This builds the important ClassPath used by this class. It does so in a neutral way. It
-     * iterates in alphabetical order through every file in the lib directory and adds it to the
-     * classpath.
-     * 
-     * Also, we add the files to the ClassLoader for the Cocoon system. In order to protect
-     * ourselves from skitzofrantic classloaders, we need to work with a known one.
-     * 
-     * @param context The context path
-     * @return a <code>String</code> value
-     */
-    protected String getClassPath(final String context) {
-        StringBuffer buildClassPath = new StringBuffer();
-
-        String classDir = context + "/WEB-INF/classes";
-        buildClassPath.append(classDir);
-
-        File root = new File(context + "/WEB-INF/lib");
-        if (root.isDirectory()) {
-            File[] libraries = root.listFiles();
-            Arrays.sort(libraries);
-            for (int i = 0; i < libraries.length; i++) {
-                if (libraries[i].getAbsolutePath().endsWith(".jar")) {
-                    buildClassPath.append(File.pathSeparatorChar)
-                            .append(IOUtils.getFullFilename(libraries[i]));
-                }
-            }
-        }
-
-        buildClassPath.append(File.pathSeparatorChar).append(SystemUtils.JAVA_CLASS_PATH);
-
-        // Extra class path is necessary for non-classloader-aware java compilers to compile XSPs
-        // buildClassPath.append(File.pathSeparatorChar)
-        // .append(getExtraClassPath(context));
-
-        getLogger().info("Context classpath: " + buildClassPath);
-        return buildClassPath.toString();
-    }
-    
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/cocoon/generation/TestProxyGeneratorServlet.java b/trunk/src/impl/test/org/apache/lenya/cms/cocoon/generation/TestProxyGeneratorServlet.java
deleted file mode 100644
index 3db7121..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/cocoon/generation/TestProxyGeneratorServlet.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.generation;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Enumeration;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-
-/**
- * Proxy Generator Servlet Test
- */
-public class TestProxyGeneratorServlet extends HttpServlet {
-    /**
-     * Initialize, given a servlet configuration
-     * @param config The configuration
-     * @throws ServletException if an error occurs
-     */
-    public void init(ServletConfig config) throws ServletException {
-        super.init(config);
-    }
-
-    /**
-     * Get a request
-     * @param request The request to get
-     * @param response The response to put it in
-     * @throws IOException if an IO error occurs
-     * @throws ServletException if an error occurs
-     */
-    public void doGet(HttpServletRequest request, HttpServletResponse response)
-        throws IOException, ServletException {
-        response.setContentType("text/xml");
-
-        PrintWriter writer = response.getWriter();
-        writer.print("<?xml version=\"1.0\"?>");
-        writer.print("<servlet class=\"" + this.getClass().getName() + "\">");
-        writer.print("<request method=\"GET\">");
-        writer.print(getRequestInfo(request));
-        writer.print(getParameters(request));
-        writer.print(getSession(request));
-        writer.print(getCookies(request));
-        writer.print("</request>");
-        writer.print("</servlet>");
-    }
-
-    /**
-     * Do a POST using the request and store the response in the response object
-     * @param request The request
-     * @param response The response
-     * @throws ServletException if an error occurs
-     * @throws IOException if an IO error occurs
-     */
-    public void doPost(HttpServletRequest request, HttpServletResponse response)
-        throws ServletException, IOException {
-        response.setContentType("text/xml");
-
-        PrintWriter writer = response.getWriter();
-        writer.print("<?xml version=\"1.0\"?>");
-        writer.print("<servlet class=\"" + this.getClass().getName() + "\">");
-        writer.print("<request method=\"POST\">");
-        writer.print(getRequestInfo(request));
-        writer.print(getParameters(request));
-        writer.print(getSession(request));
-        writer.print(getCookies(request));
-        writer.print("</request>");
-        writer.print("</servlet>");
-    }
-
-    /**
-     * Return the information about a request: URI, Server name and port
-     * @param request The request
-     * @return The information (as XML)
-     */
-    public String getRequestInfo(HttpServletRequest request) {
-        StringBuffer sb = new StringBuffer("");
-        sb.append("<URI>" + request.getRequestURI() + "</URI>");
-        sb.append("<servername>" + request.getServerName() + "</servername>");
-        sb.append("<serverport>" + request.getServerPort() + "</serverport>");
-
-        return sb.toString();
-    }
-
-    /**
-     * Get all parameters from a request
-     * @param request The request
-     * @return The parameters (as XML)
-     */
-    public String getParameters(HttpServletRequest request) {
-        StringBuffer sb = new StringBuffer("");
-        Enumeration parameters = request.getParameterNames();
-        boolean hasParameters = parameters.hasMoreElements();
-
-        if (hasParameters) {
-            sb.append("<parameters>");
-        }
-
-        while (parameters.hasMoreElements()) {
-            String name = (String) parameters.nextElement();
-            String[] values = request.getParameterValues(name);
-            sb.append("<parameter name=\"" + name + "\">");
-
-            for (int i = 0; i < values.length; i++) {
-                sb.append("<value>" + values[i] + "</value>");
-            }
-
-            sb.append("</parameter>");
-        }
-
-        if (hasParameters) {
-            sb.append("</parameters>");
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Get all session attributes of a request
-     * @param request The request
-     * @return The session attributes (in XML)
-     */
-    public String getSession(HttpServletRequest request) {
-        StringBuffer sb = new StringBuffer("");
-
-        //HttpSession session=request.getSession(true);
-        HttpSession session = request.getSession(false);
-
-        if (session != null) {
-            sb.append("<session>");
-
-            Enumeration attributes = session.getAttributeNames();
-
-            if (!attributes.hasMoreElements()) {
-                sb.append("<noattributes/>");
-            }
-
-            while (attributes.hasMoreElements()) {
-                String attributeName = (String) attributes.nextElement();
-                sb.append("<attribute name=\"" + attributeName + "\">");
-                sb.append("" + session.getAttribute(attributeName));
-                sb.append("</attribute>");
-            }
-
-            sb.append("</session>");
-        } else {
-            sb.append("<nosession/>");
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Return all cookies of a request
-     * @param request The request
-     * @return The cookies (as XML)
-     */
-    public String getCookies(HttpServletRequest request) {
-        StringBuffer sb = new StringBuffer("");
-
-        Cookie[] cookies = request.getCookies();
-
-        if (cookies != null) {
-            if (cookies.length > 0) {
-                sb.append("<cookies>");
-
-                for (int i = 0; i < cookies.length; i++) {
-                    sb.append("<cookie>");
-                    sb.append("<comment>" + cookies[i].getComment() + "</comment>");
-                    sb.append("<domain>" + cookies[i].getDomain() + "</domain>");
-                    sb.append("<maxage>" + cookies[i].getMaxAge() + "</maxage>");
-                    sb.append("<name>" + cookies[i].getName() + "</name>");
-                    sb.append("<path>" + cookies[i].getPath() + "</path>");
-                    sb.append("<secure>" + cookies[i].getSecure() + "</secure>");
-                    sb.append("<value>" + cookies[i].getValue() + "</value>");
-                    sb.append("<version>" + cookies[i].getVersion() + "</version>");
-                    sb.append("</cookie>");
-                }
-
-                sb.append("</cookies>");
-            } else {
-                sb.append("<nocookies/>");
-            }
-        } else {
-            sb.append("<nocookies/>");
-        }
-
-        return sb.toString();
-    }
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java b/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java
deleted file mode 100644
index e26e9b8..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-import java.util.Map;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Meta data test.
- */
-public class MetaDataTest extends AbstractAccessControlTest {
-
-    /**
-     * Tests the meta data.
-     * @throws Exception
-     */
-    public void testMetaData() throws Exception {
-
-        Publication publication = getPublication("test");
-        Document doc = publication.getArea("authoring").getSite().getNode("/index").getLink("en").getDocument(); 
-
-        String namespaceUri = "foobar";
-        Exception e = null;
-        try {
-            doc.getMetaData(namespaceUri);
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-
-        namespaceUri = DublinCore.DC_NAMESPACE;
-        MetaData dc = doc.getMetaData(namespaceUri);
-
-        doc.getRepositoryNode().lock();
-
-        checkSetTitle(dc);
-        checkRemoveAllValues(dc);
-
-    }
-
-    protected void checkSetTitle(MetaData dc) throws MetaDataException {
-        Exception e = null;
-        try {
-            dc.setValue("foo", "bar");
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-        dc.setValue("title", "This is the title");
-
-        e = null;
-        // addValue() should throw an exception because a value is already set
-        try {
-            dc.addValue("title", "bar");
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-
-    }
-
-    String NAMESPACE = "http://apache.org/lenya/test/metadata";
-
-    protected void checkOnCopy(Publication pub) throws Exception {
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) getManager().lookup(MetaDataRegistry.ROLE);
-            ElementSet set = new TestElementSet();
-            registry.register(NAMESPACE, set);
-        }
-        finally {
-            getManager().release(registry);
-        }
-        
-        DocumentFactory factory = getFactory();
-        Document source = factory.get(pub, Publication.AUTHORING_AREA, "/index", "en");
-        Document target = factory.get(pub, Publication.AUTHORING_AREA, "/index", "en");
-        
-        MetaData sourceMeta = source.getMetaData(NAMESPACE);
-        sourceMeta.setValue("copy", "sourceCopy");
-        sourceMeta.setValue("ignore", "sourceIgnore");
-        sourceMeta.setValue("delete", "sourceDelete");
-        
-        MetaData targetMeta = target.getMetaData(NAMESPACE);
-        targetMeta.setValue("ignore", "targetIgnore");
-        targetMeta.setValue("delete", "targetDelete");
-        
-        targetMeta.replaceBy(sourceMeta);
-        
-        assertTrue(targetMeta.getValues("copy").length == 1);
-        assertEquals(sourceMeta.getValues("copy"), targetMeta.getValues("copy"));
-        
-        assertTrue(targetMeta.getValues("ignore").length == 1);
-        assertEquals(targetMeta.getFirstValue("ignore"), "targetIgnore");
-        
-        assertTrue(targetMeta.getValues("delete").length == 0);
-    }
-
-    protected void checkRemoveAllValues(MetaData dc) throws MetaDataException {
-        dc.removeAllValues("title");
-        assertTrue(dc.getValues("title").length == 0);
-    }
-
-    protected class TestElement implements Element {
-
-        private String name;
-        private int actionOnCopy;
-
-        protected TestElement(String name, int actionOnCopy) {
-            this.name = name;
-            this.actionOnCopy = actionOnCopy;
-        }
-
-        public int getActionOnCopy() {
-            return actionOnCopy;
-        }
-
-        public String getDescription() {
-            return "";
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public boolean isEditable() {
-            return false;
-        }
-
-        public boolean isMultiple() {
-            return false;
-        }
-
-    }
-
-    protected class TestElementSet implements ElementSet {
-
-        private Element[] elements = { new TestElement("copy", Element.ONCOPY_COPY),
-                new TestElement("ignore", Element.ONCOPY_IGNORE),
-                new TestElement("delete", Element.ONCOPY_DELETE) };
-        
-        private Map name2element;
-
-        protected TestElementSet() {
-            for (int i = 0; i < elements.length; i++) {
-                this.name2element.put(elements[i].getName(), elements[i]);
-            }
-        }
-
-        public boolean containsElement(String name) {
-            return true;
-        }
-
-        public Element getElement(String name) throws MetaDataException {
-            return (Element) this.name2element.get(name);
-        }
-
-        public Element[] getElements() {
-            return elements;
-        }
-
-        public String getNamespaceUri() {
-            return NAMESPACE;
-        }
-
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentBuilderTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentBuilderTest.java
deleted file mode 100644
index 3db9f45..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentBuilderTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-/**
- * 
- * To change the template for this generated type comment go to Window>Preferences>Java>Code
- * Generation>Code and Comments
- */
-public class DefaultDocumentBuilderTest extends DefaultDocumentTest {
-
-    /**
-     * @throws PublicationException 
-     * @see org.apache.lenya.cms.publication.DefaultDocumentTest#getDocument(DocumentTestSet)
-     */
-    protected Document getDocument(DocumentTestSet set) throws PublicationException {
-        Publication pub = getPublication("test");
-        return getFactory().getFromURL("/" + pub.getId() + "/" + set.getArea() + set.getUrl());
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentTest.java
deleted file mode 100644
index cd025a9..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DefaultDocumentTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-
-/**
- * 
- * To change the template for this generated type comment go to Window>Preferences>Java>Code
- * Generation>Code and Comments
- */
-public class DefaultDocumentTest extends AbstractAccessControlTest {
-
-    protected static final DocumentTestSet[] testSets = {
-            new DocumentTestSet("/index.html", "/index", Publication.AUTHORING_AREA, "en", "html"),
-            new DocumentTestSet("/index_de.html", "/index", Publication.AUTHORING_AREA, "de",
-                    "html") };
-
-    /**
-     * Tests a document test set.
-     * @param testSet The test set.
-     * @throws PublicationException
-     */
-    protected void doDocumentTest(DocumentTestSet testSet) throws PublicationException {
-        Document document = getDocument(testSet);
-        getLogger().info("UUID:         " + document.getUUID());
-        getLogger().info("Area:         " + document.getArea());
-        getLogger().info("Language:     " + document.getLanguage());
-        getLogger().info("Document URL: " + document.getCanonicalDocumentURL());
-        getLogger().info("Complete URL: " + document.getCanonicalWebappURL());
-        getLogger().info("Extension:    " + document.getExtension());
-
-        Publication publication = getPublication("test");
-        assertEquals(document.getPublication(), publication);
-        assertEquals(document.getPath(), testSet.getPath());
-        assertEquals(document.getArea(), testSet.getArea());
-        assertEquals(document.getLanguage(), testSet.getLanguage());
-        assertEquals(document.getCanonicalDocumentURL(), testSet.getUrl());
-        assertEquals(document.getCanonicalWebappURL(), "/" + publication.getId() + "/"
-                + document.getArea() + testSet.getUrl());
-        assertEquals(document.getExtension(), testSet.getExtension());
-
-        getLogger().info("-----------------------------------------------");
-    }
-
-    /**
-     * Tests the default document.
-     * @throws PublicationException
-     */
-    public void testDefaultDocument() throws PublicationException {
-        for (int i = 0; i < testSets.length; i++) {
-            doDocumentTest(testSets[i]);
-        }
-    }
-
-    /**
-     * Returns the test document for a given test set.
-     * @param testSet A document test set.
-     * @return A document.
-     * @throws PublicationException
-     */
-    protected Document getDocument(DocumentTestSet testSet) throws PublicationException {
-
-        Publication pub = getPublication("test");
-        String uuid = pub.getArea(testSet.getArea()).getSite().getNode(testSet.getPath()).getUuid();
-        DocumentIdentifier id = new DocumentIdentifier(pub.getId(), testSet.getArea(), uuid, testSet
-                .getLanguage());
-        DocumentImpl document = new DocumentImpl(getManager(), getFactory(), id, -1, getLogger());
-        document.setExtension(testSet.getExtension());
-
-        return document;
-    }
-
-    /**
-     * Utility class to store test data for a document.
-     */
-    protected static class DocumentTestSet {
-        private String url;
-        private String path;
-        private String extension;
-        private String area;
-        private String language;
-
-        /**
-         * Ctor.
-         * @param _url The url.
-         * @param _path The path.
-         * @param _area The area.
-         * @param _language The language.
-         * @param _extension The extension.
-         */
-        public DocumentTestSet(String _url, String _path, String _area, String _language,
-                String _extension) {
-            this.url = _url;
-            this.path = _path;
-            this.area = _area;
-            this.language = _language;
-            this.extension = _extension;
-        }
-
-        /**
-         * @return The area.
-         */
-        public String getArea() {
-            return this.area;
-        }
-
-        /**
-         * @return The extension.
-         */
-        public String getExtension() {
-            return this.extension;
-        }
-
-        /**
-         * @return The path.
-         */
-        public String getPath() {
-            return this.path;
-        }
-
-        /**
-         * @return The language.
-         */
-        public String getLanguage() {
-            return this.language;
-        }
-
-        /**
-         * @return The URL.
-         */
-        public String getUrl() {
-            return this.url;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentFactoryTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentFactoryTest.java
deleted file mode 100644
index 5c8275f..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentFactoryTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Document factory test.
- */
-public class DocumentFactoryTest extends AbstractAccessControlTest {
-
-    /**
-     * Tests the meta data.
-     * @throws Exception
-     */
-    public void testDocumentFactory() throws Exception {
-        Session session = RepositoryUtil.getSession(getManager(), getRequest());
-        DocumentFactory factoryA = DocumentUtil.createDocumentFactory(getManager(), session);
-
-        Publication publication = getPublication("test");
-        
-        Document docA1 = factoryA.get(publication, Publication.AUTHORING_AREA, "/index", "en");
-        Document docA2 = factoryA.get(publication, Publication.AUTHORING_AREA, "/index", "en");
-        assertSame(docA1, docA2);
-        
-        DocumentFactory factoryB = DocumentUtil.createDocumentFactory(getManager(), session);
-
-        Document docB1 = factoryB.get(publication, Publication.AUTHORING_AREA, "/index", "en");
-        
-        assertSame(docA1, docB1);
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentLocatorTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentLocatorTest.java
deleted file mode 100644
index c98d536..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentLocatorTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import junit.framework.TestCase;
-
-/**
- *
- */
-public class DocumentLocatorTest extends TestCase {
-
-    /**
-     * 
-     */
-    public void testDocumentLocator() {
-        
-        String pubId = "pub";
-        String area = "area";
-        String area2 = "area2";
-        String languageDe = "de";
-        String languageEn = "en";
-        
-        DocumentLocator root = DocumentLocator.getLocator(pubId, area, "", languageDe);
-        DocumentLocator foo = DocumentLocator.getLocator(pubId, area, "/foo", languageDe);
-        DocumentLocator fooBar = DocumentLocator.getLocator(pubId, area, "/foo/bar", languageDe);
-        DocumentLocator fooBarBaz = DocumentLocator.getLocator(pubId, area, "/foo/bar/baz", languageDe);
-
-        DocumentLocator fooEn = DocumentLocator.getLocator(pubId, area, "/foo", languageEn);
-        DocumentLocator foo2 = DocumentLocator.getLocator(pubId, area2, "/foo", languageDe);
-
-        assertEquals(foo.getParent(), root);
-        assertEquals(fooBar.getParent(), foo);
-        assertEquals(fooBarBaz.getParent(), fooBar);
-        
-        assertEquals(root.getDescendant("foo"), foo);
-        assertEquals(foo.getDescendant("bar/baz"), fooBarBaz);
-        
-        assertEquals(foo.getChild("bar"), fooBar);
-        
-        assertEquals(foo.getLanguageVersion(languageEn), fooEn);
-        
-        assertEquals(foo.getAreaVersion(area2), foo2);
-        
-    }
-    
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentManagerTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentManagerTest.java
deleted file mode 100644
index c04a9d2..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DocumentManagerTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.util.StringUtil;
-
-/**
- * Document manager test.
- */
-public class DocumentManagerTest extends AbstractAccessControlTest {
-
-    /**
-     * Do the test.
-     * @throws Exception
-     */
-    public void testDocumentManager() throws Exception {
-        DocumentManager docManager = null;
-        try {
-            docManager = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            doTestMoveAll(docManager, "/doctypes", "/tutorial/doctypes");
-            doTestMoveAll(docManager, "/tutorial/doctypes", "/doctypes");
-            doTestCopyAll(docManager, "/doctypes", "/tutorial/doctypes");
-
-            String areaName1 = "authoring";
-            String areaName2 = "live";
-            String path1 = "/tutorial";
-            String path2 = "/doctypes";
-
-            doTestCopyToArea(docManager, areaName1, areaName2, path1, path2);
-
-        } finally {
-            if (docManager != null) {
-                getManager().release(docManager);
-            }
-        }
-    }
-
-    protected void doTestCopyToArea(DocumentManager docManager, String sourceAreaName,
-            String destAreaName, String path1, String path2) throws PublicationException,
-            SiteException {
-        
-        DocumentFactory factory = getFactory();
-        Publication pub = factory.getPublication("test");
-        SiteStructure sourceArea = pub.getArea(sourceAreaName).getSite();
-        SiteStructure destArea = pub.getArea(destAreaName).getSite();
-
-        if (destArea.contains(path1)) {
-            destArea.getNode(path1).delete();
-        }
-        if (destArea.contains(path2)) {
-            destArea.getNode(path2).delete();
-        }
-        
-        assertFalse(destArea.contains(path1));
-        assertFalse(destArea.contains(path2));
-        
-        // copy second node first to test correct ordering
-        doTestCopyToArea(docManager, path2, sourceAreaName, destAreaName);
-        doTestCopyToArea(docManager, path1, sourceAreaName, destAreaName);
-
-        List sourceNodes = Arrays.asList(sourceArea.getNodes());
-
-        SiteNode authoringNode1 = sourceArea.getNode(path1);
-        assertTrue(sourceNodes.contains(authoringNode1));
-        int sourcePos1 = sourceNodes.indexOf(authoringNode1);
-
-        SiteNode sourceNode2 = sourceArea.getNode(path2);
-        int sourcePos2 = sourceNodes.indexOf(sourceNode2);
-
-        assertTrue(sourcePos1 < sourcePos2);
-
-        assertTrue(destArea.contains(path1));
-        List liveNodes = Arrays.asList(destArea.getNodes());
-        SiteNode liveNode1 = destArea.getNode(path1);
-        assertTrue(liveNodes.contains(liveNode1));
-        int livePos1 = liveNodes.indexOf(liveNode1);
-
-        SiteNode liveNode2 = destArea.getNode(path2);
-        int livePos2 = liveNodes.indexOf(liveNode2);
-
-        assertTrue(livePos1 < livePos2);
-    }
-
-    protected void doTestCopyToArea(DocumentManager docManager, String path, String areaName1,
-            String areaName2) throws PublicationException {
-        DocumentFactory factory = getFactory();
-        Publication pub = factory.getPublication("test");
-        Area area1 = pub.getArea(areaName1);
-        Document doc = area1.getSite().getNode(path).getLink("en").getDocument();
-        docManager.copyToArea(doc, areaName2);
-    }
-
-    protected void doTestCopyAll(DocumentManager docManager, String sourcePath, String targetPath)
-            throws SiteException, DocumentException, PublicationException {
-        DocumentFactory factory = getFactory();
-        Publication pub = factory.getPublication("test");
-        Area authoring = pub.getArea("authoring");
-
-        SiteNode sourceNode = authoring.getSite().getNode(sourcePath);
-        
-        NodeSet nodes = SiteUtil.getSubSite(getManager(), sourceNode);
-        Document[] docs = nodes.getDocuments();
-        Map doc2path = new HashMap();
-
-        String sourceBase = sourcePath.substring(0, sourcePath.lastIndexOf("/"));
-        String targetBase = targetPath.substring(0, targetPath.lastIndexOf("/"));
-
-        for (int i = 0; i < docs.length; i++) {
-            doc2path.put(docs[i], docs[i].getPath().substring(sourceBase.length()));
-        }
-
-        docManager.copyAll(authoring, sourcePath, authoring, targetPath);
-        for (int i = 0; i < docs.length; i++) {
-            assertTrue(docs[i].hasLink());
-            String oldPath = (String) doc2path.get(docs[i]);
-            String newPath = targetBase + oldPath;
-            assertTrue(authoring.getSite().contains(newPath));
-            SiteNode newNode = authoring.getSite().getNode(newPath);
-            Document newDoc = newNode.getLink(docs[i].getLanguage()).getDocument();
-            assertEquals(newDoc.getContentLength(), docs[i].getContentLength());
-            assertFalse(newDoc.getUUID().equals(docs[i].getUUID()));
-        }
-        
-        String[] sourceNames = getChildNames(sourceNode);
-        SiteNode targetNode = authoring.getSite().getNode(targetPath);
-        String[] targetNames = getChildNames(targetNode);
-        assertEquals(StringUtil.join(sourceNames, ","), StringUtil.join(targetNames, ","));
-    }
-
-	protected String[] getChildNames(SiteNode node) {
-		SiteNode[] sourceChildren = node.getChildren();
-        String[] names = new String[sourceChildren.length];
-        for (int i = 0; i < names.length; i++) {
-        	names[i] = sourceChildren[i].getName();
-        }
-		return names;
-	}
-
-    protected void doTestMoveAll(DocumentManager docManager, String sourcePath, String targetPath)
-            throws SiteException, DocumentException, PublicationException {
-        DocumentFactory factory = getFactory();
-        Publication pub = factory.getPublication("test");
-        Area authoring = pub.getArea("authoring");
-
-        SiteNode sourceNode = authoring.getSite().getNode(sourcePath);
-        String[] sourceNames = getChildNames(sourceNode);
-
-        NodeSet nodes = SiteUtil.getSubSite(getManager(), sourceNode);
-        Document[] docs = nodes.getDocuments();
-        Map doc2path = new HashMap();
-
-        String sourceBase = sourcePath.substring(0, sourcePath.lastIndexOf("/"));
-        String targetBase = targetPath.substring(0, targetPath.lastIndexOf("/"));
-
-        for (int i = 0; i < docs.length; i++) {
-            doc2path.put(docs[i], docs[i].getPath().substring(sourceBase.length()));
-        }
-
-        docManager.moveAll(authoring, sourcePath, authoring, targetPath);
-        for (int i = 0; i < docs.length; i++) {
-            assertTrue(docs[i].hasLink());
-            String oldPath = (String) doc2path.get(docs[i]);
-            String newPath = docs[i].getPath();
-            assertEquals(targetBase + oldPath, newPath);
-        }
-        
-        SiteNode targetNode = authoring.getSite().getNode(targetPath);
-        String[] targetNames = getChildNames(targetNode);
-        assertEquals(StringUtil.join(sourceNames, ","), StringUtil.join(targetNames, ","));
-        
-    }
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
deleted file mode 100644
index 30e1208..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.repository.RepositoryException;
-
-/**
- * Dublin Core test.
- * 
- * @version $Id$
- */
-public class DublinCoreTest extends AbstractAccessControlTest {
-
-    private static final String AREA = "authoring";
-    private static final String PATH = "/tutorial";
-    private static final String LANGUAGE = "de";
-
-    /**
-     * Test the fetching, modification and refetching of a dc core object.
-     * @throws PublicationException 
-     * @throws MetaDataException
-     * @throws RepositoryException 
-     * @throws AccessControlException 
-     * @throws RepositoryException 
-     */
-    final public void testModifySaveAndReload() throws PublicationException, MetaDataException,
-            AccessControlException, RepositoryException {
-        
-        login("lenya");
-        
-        Publication publication = getPublication("test");
-        
-        Document doc = publication.getArea(AREA).getSite().getNode(PATH).getLink(LANGUAGE).getDocument();
-        
-        doc.getRepositoryNode().lock();
-        
-        MetaData dcCore = doc.getMetaData(DublinCore.DC_NAMESPACE);
-        String title = dcCore.getFirstValue(DublinCore.ELEMENT_TITLE);
-        String subject = dcCore.getFirstValue(DublinCore.ELEMENT_SUBJECT);
-        String creator = dcCore.getFirstValue(DublinCore.ELEMENT_CREATOR);
-        
-        if (creator == null) {
-            creator = "test";
-        }
-
-        String newCreator = creator + "-test";
-        dcCore.setValue(DublinCore.ELEMENT_CREATOR, newCreator);
-
-        Document doc2 = publication.getArea(AREA).getSite().getNode(PATH).getLink(LANGUAGE).getDocument();
-
-        MetaData dcCore2 = doc2.getMetaData(DublinCore.DC_NAMESPACE);
-        assertEquals(title, dcCore2.getFirstValue(DublinCore.ELEMENT_TITLE));
-        assertEquals(subject, dcCore2.getFirstValue(DublinCore.ELEMENT_SUBJECT));
-        assertFalse(creator.equals(dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR)));
-        assertEquals(newCreator, dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR));
-        
-        doc.getRepositoryNode().unlock();
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/PublicationTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/PublicationTest.java
deleted file mode 100644
index cc8a28e..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/PublicationTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-
-/**
- * Publication test.
- */
-public class PublicationTest extends AbstractAccessControlTest {
-
-    /**
-     * Tests the publication functionality.
-     * @throws Exception
-     */
-    public void testPublication() throws Exception {
-
-        PublicationManager pubMgr = null;
-        try {
-            pubMgr = (PublicationManager) getManager().lookup(PublicationManager.ROLE);
-
-            Publication[] pubs = pubMgr.getPublications(getFactory());
-            for (int i = 0; i < pubs.length; i++) {
-                doTestPublication(pubs[i]);
-            }
-
-        } finally {
-            if (pubMgr != null) {
-                getManager().release(pubMgr);
-            }
-        }
-
-    }
-
-    protected void doTestPublication(Publication pub) throws PublicationException {
-        String contentDirPath = pub.getContentDir();
-        assertNotNull(contentDirPath);
-
-        File contentDir = new File(contentDirPath);
-
-        assertTrue(pub.exists());
-
-        String[] areaNames = pub.getAreaNames();
-        for (int i = 0; i < areaNames.length; i++) {
-            Area area = pub.getArea(areaNames[i]);
-            if (area.getDocuments().length > 0) {
-                File areaContentDir = pub.getContentDirectory(areaNames[i]);
-                assertTrue(areaContentDir.isDirectory());
-                assertEquals(new File(contentDir, areaNames[i]), areaContentDir);
-            }
-        }
-
-        String[] languages = pub.getLanguages();
-        assertTrue(languages.length > 0);
-
-        assertNotNull(pub.getDefaultLanguage());
-        assertTrue(Arrays.asList(languages).contains(pub.getDefaultLanguage()));
-
-        String[] types = pub.getResourceTypeNames();
-        assertTrue(types.length > 0);
-
-        Set typeSet = new HashSet(Arrays.asList(types));
-
-        String[] templateIds = pub.getTemplateIds();
-        for (int i = 0; i < templateIds.length; i++) {
-            Publication template = pub.getFactory().getPublication(templateIds[i]);
-            String[] templateTypes = template.getResourceTypeNames();
-            for (int t = 0; t < templateTypes.length; t++) {
-                assertTrue(typeSet.contains(templateTypes[i]));
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/TestPageEnvelope.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/TestPageEnvelope.java
deleted file mode 100644
index effd9d6..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/TestPageEnvelope.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * To change the template for this generated type comment go to Window>Preferences>Java>Code
- * Generation>Code and Comments
- */
-public class TestPageEnvelope extends PageEnvelope {
-    /**
-     * Constructs a test page envelope.
-     * @param publication The publication.
-     * @param url The document url (starting with a slash).
-     * @throws PageEnvelopeException when something goes wrong.
-     */
-    public TestPageEnvelope(Publication publication, String url, ServiceManager manager,
-            Logger logger) throws PageEnvelopeException {
-        super();
-        setContext("");
-
-        try {
-            Session session = RepositoryUtil.createSession(manager, null, false);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(manager, session);
-            setDocument(map.getFromURL(url));
-        } catch (Exception e) {
-            throw new PageEnvelopeException(e);
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/publication/file/FilePublicationTest.java b/trunk/src/impl/test/org/apache/lenya/cms/publication/file/FilePublicationTest.java
deleted file mode 100644
index e6addee..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/publication/file/FilePublicationTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.file;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.site.SiteException;
-
-/**
- * To change the template for this generated type comment go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
-public class FilePublicationTest extends AbstractAccessControlTest {
-
-    /**
-     * <code>sourceDocumentId</code> The source document id
-     */
-    public static final String sourceDocumentId = "/tutorial";
-    /**
-     * <code>destinationDocumentId</code> The destination document id
-     */
-    public static final String destinationDocumentId = "/doctypes/simple-document";
-    /**
-     * <code>sourceLanguage</code> The source language
-     */
-    public static final String sourceLanguage = "en";
-    /**
-     * <code>destinationLanguage</code> The destination language
-     */
-    public static final String destinationLanguage = "en";
-
-    /**
-     * Tests copying a document.
-     * @throws PublicationException when something went wrong.
-     * @throws DocumentException
-     * @throws SiteException
-     */
-    public void testCopyDocument() throws PublicationException, DocumentException, SiteException {
-        testCopyDocument(Publication.AUTHORING_AREA,
-                sourceDocumentId,
-                sourceLanguage,
-                Publication.AUTHORING_AREA,
-                destinationDocumentId,
-                destinationLanguage);
-        testCopyDocument(Publication.AUTHORING_AREA,
-                sourceDocumentId,
-                sourceLanguage,
-                Publication.LIVE_AREA,
-                sourceDocumentId,
-                sourceLanguage);
-    }
-
-    /**
-     * Tests copying a document.
-     * @param sourceArea The source area.
-     * @param _sourceDocumentId The source document ID.
-     * @param _sourceLanguage The source language.
-     * @param destinationArea The destination area.
-     * @param _destinationDocumentId The destination document ID.
-     * @param _destinationLanguage The destination language.
-     * @throws PublicationException when something went wrong.
-     * @throws DocumentException
-     * @throws SiteException
-     */
-    public void testCopyDocument(String sourceArea, String _sourceDocumentId,
-            String _sourceLanguage, String destinationArea, String _destinationDocumentId,
-            String _destinationLanguage) throws PublicationException, DocumentException,
-            SiteException {
-
-        getLogger().info("Copy document");
-        getLogger().info("    Source area:             [" + sourceArea + "]");
-        getLogger().info("    Source document ID:      [" + _sourceDocumentId + "]");
-        getLogger().info("    Source language:         [" + _sourceLanguage + "]");
-        getLogger().info("    Destination area:        [" + destinationArea + "]");
-        getLogger().info("    Destination document ID: [" + _destinationDocumentId + "]");
-        getLogger().info("    Destination language:    [" + _destinationLanguage + "]");
-
-        Publication publication = getPublication("test");
-        DocumentFactory map = getFactory();
-
-        Document sourceDocument = map.get(publication,
-                sourceArea,
-                _sourceDocumentId,
-                _sourceLanguage);
-        Document destinationDocument = map.get(publication,
-                destinationArea,
-                _destinationDocumentId,
-                _destinationLanguage);
-/*
-        publication.copyDocument(sourceDocument, destinationDocument);
-
-        assertTrue(destinationDocument.exists());
-
-        TreeSiteManager manager = (TreeSiteManager) publication.getSiteManager(map);
-        SiteTree destinationTree = manager.getTree(destinationArea);
-        SiteTreeNode destinationNode = destinationTree.getNode(_destinationDocumentId);
-        assertNotNull(destinationNode);
-        Label destinationLabel = destinationNode.getLabel(_destinationLanguage);
-        assertNotNull(destinationLabel);
-
-        SiteTreeNode sourceNode = destinationTree.getNode(_sourceDocumentId);
-        Label sourceLabel = sourceNode.getLabel(_sourceLanguage);
-
-        assertTrue(destinationLabel.getLabel().equals(sourceLabel.getLabel()));
-*/
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/rc/RCMLTest.java b/trunk/src/impl/test/org/apache/lenya/cms/rc/RCMLTest.java
deleted file mode 100644
index 0a9674a..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/rc/RCMLTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import java.io.PrintWriter;
-
-import org.w3c.dom.Document;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.xml.DocumentHelper;
-
-/**
- * RCML Test
- */
-public class RCMLTest extends AbstractAccessControlTest {
-
-	/**
-	 * <code>co</code> Checkout
-	 */
-	public static final short co = 0;
-	/**
-	 * <code>ci</code> Checkin
-	 */
-	public static final short ci = 1;
-    
-	private Document document = null;
-
-    /**
-     * Constructor.
-     * @param test The test to execute.
-     */
-    public RCMLTest() {
-        super();
-    }
-    
-    public void testRCML() {
-        String[] args = { "", "", "" };
-        testRCML(args);
-    }
-
-    public void testRCML(String[] args) {
-
-		if (args.length != 1) {
-			System.out.println("Usage: java RCML rcmlDirectory datafilename rootDirectory");
-
-			return;
-		}
-
-		try {
-            org.apache.lenya.cms.publication.Document doc = null;
-			doc.getRepositoryNode().checkout();
-
-			(new PrintWriter(System.out)).print(this.document);
-
-			System.out.println("\n");
-
-			if (doc.getRepositoryNode().isCheckedOut()) {
-			    System.out.println("Checked out");
-			} else {
-			    System.out.println("Not checked out");
-			}
-		} catch (Exception e) {
-			System.out.println(e);
-		}
-	    }
-
-/*    protected static final Class[] classes = {
-    };
-
-    /**
-     * Creates a test suite.
-     * @return a test suite.
-     */
-/*    public static Test getSuite() {
-        TestSuite suite = new TestSuite();
-
-        for (int i = 0; i < classes.length; i++) {
-            suite.addTestSuite(classes[i]);
-        }
-
-        return suite;
-    }
-*/
-    /** @see junit.framework.TestCase#setUp() */
-    protected void setUp() throws Exception {
-		/**
-		 * initialise the RCML-document. Delete all entries
-		 */
-        this.document = DocumentHelper.createDocument(null, "XPSRevisionControl", null);
-    }
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/rc/RevisionControllerTest.java b/trunk/src/impl/test/org/apache/lenya/cms/rc/RevisionControllerTest.java
deleted file mode 100644
index c0acd9d..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/rc/RevisionControllerTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.repository.RepositoryException;
-
-/**
- * Revision Controller test
- */
-public class RevisionControllerTest extends AbstractAccessControlTest {
-
-    /**
-     * @see <a
-     *      href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41005">Bug
-     *      41005</a>
-     * @throws Exception
-     */
-    public void testCheckIn() throws Exception {
-        login("lenya");
-
-        DocumentManager docMgr = null;
-        try {
-            docMgr = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            Document source = getPublication("test").getArea("authoring").getSite().getNode(
-                    "/links").getLink("en").getDocument();
-            Document target = docMgr.addVersion(source, "authoring", "es");
-            target.delete();
-        } finally {
-            if (docMgr != null) {
-                getManager().release(docMgr);
-            }
-        }
-
-        getFactory().getSession().commit();
-    }
-
-    public void testRevisionController() throws RepositoryException, RevisionControlException {
-
-        String[] args = { "", "", "", "" };
-
-        // TestRunner.run(getSuite());
-
-        if (args.length != 4) {
-            System.out
-                    .println("Usage: "
-                            + RevisionControllerTest.class.getName()
-                            + " username(user who checkout) source(filename without the rootDirectory of the document to checkout) username(user who checkin) destination(filename without the rootDirectory of document to checkin)");
-
-            return;
-        }
-
-        Document doc1 = null;
-        Document doc2 = null;
-
-        String identityS = args[0];
-        String source = args[1];
-        String identityD = args[2];
-        String destination = args[3];
-        //doc1.getRepositoryNode().checkout();
-        //doc2.getRepositoryNode().checkin();
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java b/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java
deleted file mode 100644
index 9fe93c7..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.simple.DocumentStore;
-
-public class SimpleSiteManagerTest extends AbstractAccessControlTest {
-
-    protected static final String PATH = "/foo/bar";
-
-    protected static final String PARENT_PATH = "/foo";
-
-    public void testSimpleSiteManager() throws Exception {
-
-        Session session = login("lenya");
-
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(getManager(), session);
-        Publication[] pubs = factory.getPublications();
-
-        for (int i = 0; i < pubs.length; i++) {
-            checkPublication(session, factory, pubs[i]);
-        }
-    }
-
-    protected void checkPublication(Session session, DocumentFactory factory, Publication pub)
-            throws ServiceException, SiteException, DocumentBuildException, PublicationException,
-            RepositoryException {
-        DocumentManager docManager = null;
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        ServiceSelector resourceTypeSelector = null;
-
-        try {
-            selector = (ServiceSelector) getManager().lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(factory, pub,
-                    Publication.AUTHORING_AREA);
-
-            docManager = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-
-            resourceTypeSelector = (ServiceSelector) getManager().lookup(
-                    ResourceType.ROLE + "Selector");
-            ResourceType type = (ResourceType) resourceTypeSelector.select("entry");
-            String contentSourceUri = "context://sitemap.xmap";
-
-            Document doc = docManager.add(factory, type, contentSourceUri, pub,
-                    Publication.AUTHORING_AREA, "en", "xml");
-
-            structure.add(PATH, doc);
-            assertTrue(structure.contains(PATH));
-            Document linkDoc = structure.getNode(PATH).getLink("en").getDocument();
-            assertSame(linkDoc, doc);
-
-            if (!(structure instanceof DocumentStore)) {
-                Link link = doc.getLink();
-                checkSetLabel(link);
-            }
-
-            SiteNode[] nodes = structure.getNodes();
-            assertTrue(nodes.length > 0);
-
-            for (int i = 0; i < nodes.length; i++) {
-
-                assertTrue(structure.contains(nodes[i].getPath()));
-
-                SiteNode node = structure.getNode(nodes[i].getPath());
-                assertNotNull(node);
-                assertEquals(nodes[i], node);
-
-                checkLinks(siteManager, node);
-            }
-            
-            doc.getLink().delete();
-            assertFalse(structure.containsByUuid(doc.getUUID(), doc.getLanguage()));
-            assertFalse(structure.contains(PATH));
-            assertFalse(structure.contains(PARENT_PATH));
-            
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                getManager().release(selector);
-            }
-            if (docManager != null) {
-                getManager().release(docManager);
-            }
-            if (resourceTypeSelector != null) {
-                getManager().release(resourceTypeSelector);
-            }
-        }
-        // session.commit();
-    }
-
-    protected void checkSetLabel(Link link) {
-        String newLabel = "New Label";
-        String oldLabel = link.getLabel();
-        assertFalse(oldLabel.equals(newLabel));
-        link.setLabel(newLabel);
-        assertTrue(link.getLabel().equals(newLabel));
-        link.setLabel(oldLabel);
-    }
-
-    protected void checkLinks(SiteManager siteManager, SiteNode node) throws SiteException {
-        String[] languages = node.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            Link link = node.getLink(languages[i]);
-            assertEquals(link.getLanguage(), languages[i]);
-            assertNotNull(link.getLabel());
-            
-            if (node.getUuid() != null) {
-                Document doc = link.getDocument();
-                assertNotNull(doc);
-    
-                String docUuid = doc.getUUID();
-                String nodeUuid = node.getUuid();
-    
-                assertNotNull(doc.getUUID());
-                assertEquals(docUuid, nodeUuid);
-                assertEquals(doc.getLanguage(), link.getLanguage());
-    
-                // it may not be allowed to insert the doc twice
-                try {
-                    siteManager.add("/sidebar", doc);
-                    assertTrue("No exception thrown", false);
-                } catch (Exception expected) {
-                }
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/LinkRewriterTest.java b/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/LinkRewriterTest.java
deleted file mode 100644
index 0ca168c..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/LinkRewriterTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Attr;
-import org.w3c.dom.NodeList;
-
-/**
- * Link rewriter test.
- */
-public class LinkRewriterTest extends AbstractAccessControlTest {
-
-    protected static final String DOCUMENT_ID = "/index";
-    protected static final String SOURCE_DOCUMENT_ID = "/concepts";
-    protected static final String TARGET_DOCUMENT_ID = "/copied";
-
-    /**
-     * Test method.
-     * @throws Exception
-     */
-    public void testLinkRewriter() throws Exception {
-/*
-        Publication pub = PublicationUtil.getPublication(getManager(), "test");
-
-        Document document = getIdentityMap().get(pub, Publication.AUTHORING_AREA, DOCUMENT_ID, "en");
-        org.w3c.dom.Document xml = DocumentHelper.readDocument(getClass().getResourceAsStream("index_en.xml"));
-        document.getRepositoryNode().lock();
-        SourceUtil.writeDOM(xml, document.getSourceURI(), getManager());
-
-        LinkRewriter rewriter = null;
-        DocumentManager docManager = null;
-        Document target = null;
-        try {
-            docManager = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-
-            Document source = getIdentityMap().get(pub,
-                    Publication.AUTHORING_AREA,
-                    SOURCE_DOCUMENT_ID,
-                    "en");
-            source.getRepositoryNode().lock();
-
-            DocumentLocator targetLoc = DocumentLocator.getLocator(pub.getId(),
-                    Publication.AUTHORING_AREA,
-                    TARGET_DOCUMENT_ID,
-                    "en");
-
-            SiteUtil.getSiteStructure(getManager(),
-                    source.getFactory(),
-                    source.getPublication(),
-                    source.getArea()).getRepositoryNode().lock();
-
-            docManager.move(source, targetLoc);
-            target = source.getFactory().get(targetLoc);
-
-            rewriter = (LinkRewriter) getManager().lookup(LinkRewriter.ROLE);
-            rewriter.rewriteLinks(source, target);
-
-        } finally {
-            if (docManager != null) {
-                getManager().release(docManager);
-            }
-            if (rewriter != null) {
-                getManager().release(rewriter);
-            }
-        }
-
-        String[] xPaths = document.getResourceType().getLinkAttributeXPaths();
-        assertTrue(xPaths.length > 0);
-
-        org.w3c.dom.Document xmlDoc = SourceUtil.readDOM(document.getSourceURI(), getManager());
-        boolean matched = false;
-
-        for (int i = 0; i < xPaths.length; i++) {
-            NodeList nodes = XPathAPI.selectNodeList(xmlDoc, xPaths[i]);
-            for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
-                Attr attribute = (Attr) nodes.item(nodeIndex);
-                String targetUrl = attribute.getValue();
-                Document targetDoc = getIdentityMap().getFromURL(targetUrl);
-                if (targetDoc.equals(target)) {
-                    matched = true;
-                }
-            }
-        }
-        assertTrue(matched);
-        */
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/index_en.xml b/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/index_en.xml
deleted file mode 100644
index 960ea40..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/site/usecases/index_en.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: index_en.xml 169299 2005-05-09 12:00:43Z jwkaltz $ -->
-  <head>
-    <title>Welcome to the Default publication</title>
-  </head>
-  <body>
-    <h1>Hello and welcome to the Lenya default publication!</h1>
-
-    <p>Apache Lenya is a Java Open-Source Content Management System
-    based on open standards such as XML and XSLT and the Apache
-    Software Stack, in particular the XML publishing framework Apache
-    Cocoon.</p>
-
-    <p>For an overview of the concepts and the terminology used in
-    Apache Lenya please see the <a href="/test/authoring/concepts.html">Concepts
-    section</a>. To see what you can do with Apache Lenya please
-    refer to the <a href="/test/authoring/features.html">Features
-    section</a>.</p>
-
-    <p>If you'd like to get a quick introduction on how to use Apache
-    Lenya CMS please go through the <a
-    href="/test/authoring/tutorial.html">tutorial</a>.</p>
-
-    <p>The purpose of this publication is</p>
-
-    <ul>
-      <li>to show beginners the basic functionality of the Apache
-      Lenya CMS,</li>
-
-      <li>to provide an "out of the box" publication that can be
-      easily adapted and used,</li>
-
-      <li>and to provide a basis for reference implementations of new
-      concepts and best practices.</li>
-
-    </ul>
-
-    <p>This publication does not go to the limit of what's possible
-    with Apache Lenya CMS, there are no fancy bells and whistles to
-    confuse you, this publication simply contains everything you need
-    to get started.</p>
-    </body>
-</html>
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/usecase/AbstractUsecaseTest.java b/trunk/src/impl/test/org/apache/lenya/cms/usecase/AbstractUsecaseTest.java
deleted file mode 100644
index 2e68e3c..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/usecase/AbstractUsecaseTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.usecase.impl.TestUsecaseInvoker;
-
-/**
- * Usecase test base class.
- */
-public abstract class AbstractUsecaseTest extends AbstractAccessControlTest {
-
-    /**
-     * The test.
-     * @throws Exception
-     */
-    public void testUsecase() throws Exception {
-
-        Session session = getSession();
-        prepareUsecase();
-
-        UsecaseInvoker invoker = null;
-        try {
-            invoker = (UsecaseInvoker) getManager().lookup(TestUsecaseInvoker.ROLE);
-            invoker.setTestSession(session);
-            invoker.invoke(getRequest().getPathInfo(), getUsecaseName(), getParameters());
-            
-            this.targetUrl = invoker.getTargetUrl();
-
-            List errorMessages = invoker.getErrorMessages();
-            for (Iterator i = errorMessages.iterator(); i.hasNext();) {
-                UsecaseMessage message = (UsecaseMessage) i.next();
-                String m = message.getMessage();
-                String[] params = message.getParameters();
-                if (params != null) {
-                    for (int j = 0; j < params.length; j++) {
-                        m += " [" + params[j] + "]";
-                    }
-                }
-                getLogger().error("Usecase error: " + m);
-            }
-
-            assertEquals(invoker.getResult(), UsecaseInvoker.SUCCESS);
-            assertEquals(invoker.getErrorMessages().size(), 0);
-        } finally {
-            if (invoker != null) {
-                getManager().release(invoker);
-            }
-        }
-
-        checkPostconditions();
-
-    }
-    
-    private String targetUrl;
-    
-    protected String getTargetUrl() {
-        if (this.targetUrl == null) {
-            throw new IllegalStateException("The usecase has not yet been executed.");
-        }
-        return this.targetUrl;
-    }
-
-    protected void prepareUsecase() throws Exception {
-    }
-
-    protected Map getParameters() {
-        return new HashMap();
-    }
-
-    protected abstract String getUsecaseName();
-
-    protected void checkPostconditions() throws Exception {
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java b/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java
deleted file mode 100644
index 5c861a7..0000000
--- a/trunk/src/impl/test/org/apache/lenya/cms/workflow/WorkflowTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.workflow;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * To change the template for this generated type comment go to Window>Preferences>Java>Code
- * Generation>Code and Comments
- */
-public class WorkflowTest extends AbstractAccessControlTest {
-
-    private static final String variableName = "is_live";
-    protected static final String URL = "/authoring/index.html";
-
-    protected String getWebappUrl() {
-        return "/test" + URL;
-    }
-
-    /**
-     * Tests the workflow.
-     * @throws Exception when something went wrong.
-     */
-    public void testWorkflow() throws Exception {
-        Publication publication = getPublication("test");
-        String url = "/" + publication.getId() + URL;
-        DocumentFactory map = getFactory();
-        Document document = map.getFromURL(url);
-
-        document.getRepositoryNode().lock();
-
-        Session session = getSession(submitSituation);
-        Workflowable workflowable = WorkflowUtil.getWorkflowable(getManager(),
-                session,
-                getLogger(),
-                document);
-        if (workflowable.getVersions().length > 0) {
-            Version version = workflowable.getLatestVersion();
-            if (version.getValue(variableName) == true) {
-                invoke(document, deactivateSituation);
-            } else if (version.getState().equals("review")) {
-                invoke(document, rejectSituation);
-            }
-        }
-
-        for (int situationIndex = 0; situationIndex < situations.length; situationIndex++) {
-            TestSituation situation = situations[situationIndex];
-            invoke(document, situation);
-        }
-
-        document.getRepositoryNode().unlock();
-
-        getLogger().info("Test completed.");
-    }
-
-    protected void invoke(Document document, TestSituation situation)
-            throws AccessControlException, RepositoryException, WorkflowException {
-        Session session = getSession(situation);
-        Workflowable instance = new DocumentWorkflowable(getManager(),
-                session,
-                document,
-                getLogger());
-        assertNotNull(instance);
-
-        String event = situation.getEvent();
-
-        getLogger().info("Event: " + event);
-
-        WorkflowUtil.invoke(getManager(), session, getLogger(), document, event);
-
-        boolean value = instance.getLatestVersion().getValue(variableName);
-
-        getLogger().info("Variable: " + variableName + " = " + value);
-        getLogger().info("------------------------------------------------------");
-
-        assertEquals(value, situation.getValue());
-    }
-
-    protected Session getSession(TestSituation situation) throws AccessControlException,
-            RepositoryException {
-        Session session = login(situation.getUser());
-        getLogger().info("User: [" + session.getIdentity().getUser() + "]");
-        return session;
-    }
-
-    private static final TestSituation submitSituation = new TestSituation("lenya", "submit", false);
-    private static final TestSituation rejectSituation = new TestSituation("alice", "reject", false);
-    private static final TestSituation deactivateSituation = new TestSituation("alice",
-            "deactivate",
-            false);
-    private static final TestSituation publishSituation = new TestSituation("alice",
-            "publish",
-            true);
-
-    private static final TestSituation[] situations = { submitSituation, rejectSituation,
-            submitSituation, publishSituation, deactivateSituation };
-
-    /**
-     * A test situation.
-     */
-    public static class TestSituation {
-        private String user;
-        private String event;
-        private boolean value;
-
-        /**
-         * Creates a new test situation.
-         * @param _user The user.
-         * @param _event The event.
-         * @param _value The variable value.
-         */
-        public TestSituation(String _user, String _event, boolean _value) {
-            this.user = _user;
-            this.event = _event;
-            this.value = _value;
-        }
-
-        /**
-         * Returns the event.
-         * @return An event.
-         */
-        public String getEvent() {
-            return this.event;
-        }
-
-        /**
-         * Returns the user.
-         * @return A string.
-         */
-        public String getUser() {
-            return this.user;
-        }
-
-        /**
-         * Returns the value.
-         * @return A value.
-         */
-        public boolean getValue() {
-            return this.value;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/impl/test/org/apache/lenya/net/InetAddressUtilTest.java b/trunk/src/impl/test/org/apache/lenya/net/InetAddressUtilTest.java
deleted file mode 100644
index 5aec774..0000000
--- a/trunk/src/impl/test/org/apache/lenya/net/InetAddressUtilTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.net;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import org.apache.cocoon.core.container.ContainerTestCase;
-
-/**
- * Inet address util test
- */
-public class InetAddressUtilTest extends ContainerTestCase {
-
-    public void testInetAddressUtil() throws UnknownHostException {
-
-        String[] args = { "195.226.6.64", "255.255.255.0", "195.226.6.70" };
-
-        if (args.length != 3) {
-            System.out.println("Usage: InetAddressUtilTest network subnet ip");
-            return;
-        }
-
-        InetAddress network = InetAddress.getByName(args[0]); // "195.226.6.64");
-        InetAddress subnet = InetAddress.getByName(args[1]); // "255.255.255.0");
-        InetAddress ip = InetAddress.getByName(args[2]); // "195.226.6.70");
-        
-        InetAddressUtil util = new InetAddressUtil(getLogger());
-        System.out.println(util.contains(network, subnet, ip));
-    }
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/transaction/MockFactory.java b/trunk/src/impl/test/org/apache/lenya/transaction/MockFactory.java
deleted file mode 100644
index 715f20f..0000000
--- a/trunk/src/impl/test/org/apache/lenya/transaction/MockFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-public class MockFactory implements IdentifiableFactory {
-    
-    private UnitOfWork unit;
-    
-    public MockFactory(UnitOfWork unit) {
-        this.unit = unit;
-    }
-    
-    public Object build(IdentityMap map, String key) throws Exception {
-        return new MockTransactionable(key, this.unit);
-    }
-
-    public String getType() {
-        return "mock";
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/transaction/MockRevisionController.java b/trunk/src/impl/test/org/apache/lenya/transaction/MockRevisionController.java
deleted file mode 100644
index c398922..0000000
--- a/trunk/src/impl/test/org/apache/lenya/transaction/MockRevisionController.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class MockRevisionController {
-    
-    private static Map histories = new HashMap();
-
-    public static History getHistory(MockTransactionable transactionable) {
-        History history = (History) histories.get(transactionable.getId());
-        if (history == null) {
-            history = new History();
-            histories.put(transactionable.getId(), history);
-        }
-        return history;
-    }
-
-    public static class History {
-        
-        public History() {
-        }
-        
-        private int version = 0;
-        private boolean checkedOut = false;
-        private String checkOutUser = null;
-        
-        public void newVersion() {
-            this.version++;
-        }
-        
-        public int getLatestVersion() {
-            return this.version;
-        }
-        
-        public boolean isCheckedOut() {
-            return this.checkedOut;
-        }
-        
-        public void checkOut(String user) {
-            this.checkedOut = true;
-            this.checkOutUser = user;
-        }
-
-        public void checkIn() {
-            this.checkedOut = false;
-            this.checkOutUser = null;
-        }
-        
-        public String getCheckOutUser() {
-            return this.checkOutUser;
-        }
-        
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/transaction/MockTransactionable.java b/trunk/src/impl/test/org/apache/lenya/transaction/MockTransactionable.java
deleted file mode 100644
index 1e740a4..0000000
--- a/trunk/src/impl/test/org/apache/lenya/transaction/MockTransactionable.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import org.apache.lenya.cms.repository.RepositoryException;
-
-public class MockTransactionable implements Transactionable {
-    
-    private String id;
-    
-    public MockTransactionable(String id, UnitOfWork unit) {
-        this.id = id;
-        this.unit = unit;
-    }
-    
-    public void write() {
-        MockRevisionController.getHistory(this).newVersion();
-    }
-    
-    public void changed() {
-    }
-
-    public void createTransactionable() throws TransactionException {
-    }
-
-    public void deleteTransactionable() throws TransactionException {
-    }
-
-    public void removed() {
-    }
-
-    public void saveTransactionable() throws TransactionException {
-    }
-
-    public void checkin() throws TransactionException {
-        MockRevisionController.getHistory(this).checkIn();
-    }
-
-    public void checkout() throws TransactionException {
-        MockRevisionController.getHistory(this).checkOut(getUserId());
-    }
-
-    public boolean hasChanged() throws TransactionException {
-        try {
-            int currentVersion = getLatestVersion();
-            int lockVersion = getLock().getVersion();
-            return currentVersion > lockVersion;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    protected int getLatestVersion() {
-        int currentVersion = MockRevisionController.getHistory(this).getLatestVersion();
-        return currentVersion;
-    }
-
-    public boolean isCheckedOut() throws TransactionException {
-        return MockRevisionController.getHistory(this).isCheckedOut();
-    }
-
-    public boolean isCheckedOutBySession() throws TransactionException {
-        String user = MockRevisionController.getHistory(this).getCheckOutUser();
-        return user != null && user.equals(getUserId());
-    }
-    
-    private String getUserId() {
-        return ((UnitOfWorkImpl) this.unit).getIdentity().getUser().getId();
-    }
-
-    private Lock lock;
-
-    public Lock getLock() {
-        return this.lock;
-    }
-
-    public boolean isLocked() throws TransactionException {
-        return this.lock != null;
-    }
-    
-    private UnitOfWork unit;
-
-    public void lock() throws TransactionException {
-        this.lock = unit.createLock(this, getLatestVersion());
-    }
-
-    public void unlock() throws TransactionException {
-        this.lock = null;
-        unit.removeLock(this);
-    }
-
-    public String getId() {
-        return this.id;
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java b/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java
deleted file mode 100644
index f60cd9a..0000000
--- a/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import java.io.File;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.User;
-
-public class MockUser implements User {
-    
-    private String id;
-    
-    public MockUser(String id) {
-        this.id = id;
-    }
-
-    public boolean authenticate(String password) {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    public void delete() throws AccessControlException {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public String getDefaultDocumentLocale() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public String getDefaultMenuLocale() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public String getEmail() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public void save() throws AccessControlException {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setDefaultDocumentLocale(String documentLocale) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setDefaultMenuLocale(String menuLocale) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setEmail(String email) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setPassword(String plainTextPassword) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public Accreditable[] getAccreditables() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public void configure(Configuration configuration) throws ConfigurationException {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public String getDescription() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public String getId() {
-        return this.id;
-    }
-
-    public String getName() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public void setConfigurationDirectory(File configurationDirectory) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setDescription(String description) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void setName(String name) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void enableLogging(Logger arg0) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void addedToGroup(Group group) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public Group[] getGroups() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public void removeFromAllGroups() {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void removedFromGroup(Group group) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public AccreditableManager getAccreditableManager() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public ItemManager getItemManager() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public boolean canChangePassword() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-}
diff --git a/trunk/src/impl/test/org/apache/lenya/transaction/TransactionTest.java b/trunk/src/impl/test/org/apache/lenya/transaction/TransactionTest.java
deleted file mode 100644
index a793643..0000000
--- a/trunk/src/impl/test/org/apache/lenya/transaction/TransactionTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import org.apache.cocoon.core.container.ContainerTestCase;
-import org.apache.lenya.ac.Identity;
-
-public class TransactionTest extends ContainerTestCase {
-
-    public void testTransaction() throws TransactionException {
-
-        Identity lenya = new Identity(getLogger());
-        lenya.addIdentifiable(new MockUser("lenya"));
-
-        Identity alice = new Identity(getLogger());
-        alice.addIdentifiable(new MockUser("alice"));
-
-        IdentityMap lenyaMap = new IdentityMapImpl(getLogger());
-        UnitOfWork lenyaUnit = new UnitOfWorkImpl(lenyaMap, lenya, getLogger());
-        IdentifiableFactory lenyaFactory = new MockFactory(lenyaUnit);
-
-        IdentityMap aliceMap = new IdentityMapImpl(getLogger());
-        UnitOfWork aliceUnit = new UnitOfWorkImpl(aliceMap, alice, getLogger());
-        IdentifiableFactory aliceFactory = new MockFactory(aliceUnit);
-
-        MockTransactionable lenyaT1 = (MockTransactionable) lenyaMap.get(lenyaFactory, "t1");
-        MockTransactionable aliceT1 = (MockTransactionable) aliceMap.get(aliceFactory, "t1");
-
-        checkDoubleLock(lenyaT1);
-        checkLockAndModify(lenyaUnit, lenyaT1, aliceT1);
-
-    }
-
-    protected void checkDoubleLock(MockTransactionable t) throws TransactionException {
-        t.lock();
-        try {
-            t.lock();
-            assertTrue("No exception thrown!", false);
-        } catch (LockException ignore) {
-        }
-        t.unlock();
-    }
-
-    protected void checkLockAndModify(UnitOfWork lenyaUnit, MockTransactionable lenyaT1,
-            MockTransactionable aliceT1) throws TransactionException {
-        lenyaT1.lock();
-        aliceT1.write();
-        try {
-            lenyaUnit.commit();
-            assertTrue("No exception thrown!", false);
-        } catch (ConcurrentModificationException ignore) {
-        }
-        lenyaT1.unlock();
-    }
-
-}
diff --git a/trunk/src/impl/test/webtest/config.xml b/trunk/src/impl/test/webtest/config.xml
deleted file mode 100644
index 034d36e..0000000
--- a/trunk/src/impl/test/webtest/config.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<config
-        host="localhost"
-        port="8888"
-        protocol="http"
-        saveresponse="true"
-        resultpath="src/test/webtest/results/"
-        verbose="true"
-        basepath="" />
\ No newline at end of file
diff --git a/trunk/src/impl/test/webtest/tests.xml b/trunk/src/impl/test/webtest/tests.xml
deleted file mode 100644
index 33ac5f1..0000000
--- a/trunk/src/impl/test/webtest/tests.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!DOCTYPE project [
-  <!ENTITY default SYSTEM "../../webapp/lenya/pubs/default/test/webtest/tests.xml">
-  <!ENTITY config SYSTEM "config.xml"> 
-]>
-
-<project name="Lenya webtest tests" default="tests">
-
-  <taskdef file="${webtest.home}/webtestTaskdefs.properties">
-    <classpath>
-      <fileset dir="${webtest.home}" includes="**/lib/*.jar"/>
-    </classpath>
-  </taskdef>
-
-  <target name="tests" depends="pubs.default"/>
-  
-  &default;
-  
-</project>
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/AccessControlException.java b/trunk/src/java/org/apache/lenya/ac/AccessControlException.java
deleted file mode 100644
index 306f726..0000000
--- a/trunk/src/java/org/apache/lenya/ac/AccessControlException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * Access control exception.
- * @version $Id$
- */
-public class AccessControlException extends Exception {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Create an AccessControlException
-     *
-     */
-    public AccessControlException() {
-        super();
-    }
-
-    /**
-     * Create an AccessControlException
-     *
-     * @param message The message.
-     */
-    public AccessControlException(String message) {
-        super(message);
-    }
-
-    /**
-     * Create an AccessControlException
-     *
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public AccessControlException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Create an AccessControlException.
-     *
-     * @param cause The cause.
-     */
-    public AccessControlException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/AccessController.java b/trunk/src/java/org/apache/lenya/ac/AccessController.java
deleted file mode 100644
index 55e55f8..0000000
--- a/trunk/src/java/org/apache/lenya/ac/AccessController.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.cocoon.environment.Request;
-
-/**
- * An access controller allows authenticating and authorizing identities.
- * @version $Id$
- */
-public interface AccessController extends Component {
-
-    /**
-     * The access control namespace URI.
-     */
-    String NAMESPACE = "http://apache.org/cocoon/lenya/ac/1.0";
-
-    /**
-     * The default prefix for the access control namespace.
-     */
-    String DEFAULT_PREFIX = "ac";
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = AccessController.class.getName();
-
-    /**
-     * Authenticates a request.
-     * @param request A request.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean authenticate(Request request) throws AccessControlException;
-
-    /**
-     * Authorizes a request inside a publication.
-     * @param request A request.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean authorize(Request request) throws AccessControlException;
-
-    /**
-     * Initializes the identity for this access controller.
-     * @param request The request that contains the identity information.
-     * @throws AccessControlException when something went wrong.
-     */
-    void setupIdentity(Request request) throws AccessControlException;
-
-    /**
-     * Returns the accreditable manager.
-     * @return An accreditable manager.
-     */
-    AccreditableManager getAccreditableManager();
-
-    /**
-     * Returns the policy manager.
-     * @return A policy manager.
-     */
-    PolicyManager getPolicyManager();
-    
-    /**
-     * @return The authorizers.
-     */
-    Authorizer[] getAuthorizers();
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/AccessControllerResolver.java b/trunk/src/java/org/apache/lenya/ac/AccessControllerResolver.java
deleted file mode 100644
index 0898ffe..0000000
--- a/trunk/src/java/org/apache/lenya/ac/AccessControllerResolver.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * An access controller resolver resolves the appropriate access controller
- * for a given Cocoon object model.
- */
-public interface AccessControllerResolver extends Component {
-    
-    /**
-     * The Avalon role.
-     */
-    String ROLE = AccessControllerResolver.class.getName();
-    
-    /**
-     * The name of the default resolver to use.
-     */
-    String DEFAULT_RESOLVER = "publication";
-
-    /**
-     * Resolves an access controller for a certain URL.
-     * @param webappUrl The URL within the web application (without context prefix).
-     * @return An access controller or <code>null</code> if no controller could be resolved.
-     * @throws AccessControlException when something went wrong.
-     */
-    AccessController resolveAccessController(String webappUrl) throws AccessControlException;
-    
-    /**
-     * Releases a resolved access controller. 
-     * @param controller The access controller to release.
-     */
-    void release(AccessController controller);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Accreditable.java b/trunk/src/java/org/apache/lenya/ac/Accreditable.java
deleted file mode 100644
index 1a6b4da..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Accreditable.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-
-/**
- * An Accreditable can be accredited with roles on a certain URI
- * using a {@link org.apache.lenya.ac.Credential}.
- */
-public interface Accreditable {
-    /**
-     * Returns the set of accreditables of this accreditable.
-     * The set contains the accreditable itself and all collections it belongs to.
-     * @return An array of accreditables.
-     */
-    Accreditable[] getAccreditables();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java b/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java
deleted file mode 100644
index aa2be82..0000000
--- a/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * An AccreditableManager combines a UserManager, a GroupManager, an IPRangeManager and a
- * RoleManager.
- * @version $Id$
- */
-public interface AccreditableManager extends Component {
-
-    /**
-     * Avalon role.
-     */
-    String ROLE = AccreditableManager.class.getName();
-
-    /**
-     * Returns the user manager of this access controller.
-     * @return A user manager.
-     * @throws AccessControlException when something went wrong.
-     */
-    UserManager getUserManager() throws AccessControlException;
-
-    /**
-     * Returns the group manager of this access controller.
-     * @return A group manager.
-     * @throws AccessControlException when something went wrong.
-     */
-    GroupManager getGroupManager() throws AccessControlException;
-
-    /**
-     * Returns the role manager of this access controller.
-     * @return A role manager.
-     * @throws AccessControlException when something went wrong.
-     */
-    RoleManager getRoleManager() throws AccessControlException;
-
-    /**
-     * Returns the IP range manager of this access controller.
-     * @return An IP range manager.
-     * @throws AccessControlException when something went wrong.
-     */
-    IPRangeManager getIPRangeManager() throws AccessControlException;
-
-    /**
-     * Attaches an item manager listener to this accreditable manager.
-     * @param listener An item manager listener.
-     */
-    void addItemManagerListener(ItemManagerListener listener);
-
-    /**
-     * Removes an item manager listener from this accreditable manager.
-     * @param listener An item manager listener.
-     */
-    void removeItemManagerListener(ItemManagerListener listener);
-    
-    /**
-     * @return A source URI to store configuration sources. This URI
-     * must point to a collection.
-     */
-    String getConfigurationCollectionUri();
-
-    /**
-     * @return The unique ID of this accreditable manager. It is used to check
-     * if two accreditables belong to the same accreditable manager.
-     */
-    String getId();
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java b/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java
deleted file mode 100644
index 45dbc3f..0000000
--- a/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-
-/**
- * Factory to produce accreditable managers.
- */
-public interface AccreditableManagerFactory {
-    
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = AccreditableManagerFactory.class.getName();
-    
-    /**
-     * @param config The configuration.
-     * @return An accreditable manager for a certain configuration.
-     * @throws ConfigurationException if the configuration failed.
-     */
-    AccreditableManager getAccreditableManager(Configuration config) throws ConfigurationException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Authenticator.java b/trunk/src/java/org/apache/lenya/ac/Authenticator.java
deleted file mode 100644
index edc1fe0..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Authenticator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.cocoon.environment.Request;
-
-/**
- * An authenticator.
- * @version $Id$
- */
-public interface Authenticator extends Component {
-
-    /**
-     * Avalon role.
-     */
-    String ROLE = Authenticator.class.getName();
-
-    /**
-     * Authenticates a request.
-     * @param accreditableManager The accreditable manager to use.
-     * @param request The request.
-     * @return <code>true</code> if the request is authenticated, <code>false</code> otherwise.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean authenticate(AccreditableManager accreditableManager, Request request)
-        throws AccessControlException;
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Authorizer.java b/trunk/src/java/org/apache/lenya/ac/Authorizer.java
deleted file mode 100644
index 002629c..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Authorizer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.cocoon.environment.Request;
-
-/**
- * An Authorizer checks if an Identity is authorized to invoke a certain request.
- * @version $Id$
- */
-public interface Authorizer extends Component {
-    
-    /**
-     * The Avalon role.
-     */
-    String ROLE = Authorizer.class.getName();
-
-    /**
-     * Authorizes an identity at a URL.
-     * @param request The request.
-     * @return <code>true</code> if the identity is authorized, <code>false</code> otherwise.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean authorize(Request request)
-        throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Credential.java b/trunk/src/java/org/apache/lenya/ac/Credential.java
deleted file mode 100644
index 5763434..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Credential.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A credential assigns a {@link Role} to an {@link Accreditable}.
- */
-public interface Credential {
-
-    /**
-     * @return The accreditable this credential applies to.
-     */
-    Accreditable getAccreditable();
-
-    /**
-     * @return The role of this credential.
-     */
-    Role getRole();
-
-    /**
-     * @return The method, one of {@link #GRANT} and {@link #DENY}.
-     */
-    String getMethod();
-    
-    /**
-     * The "grant" method.
-     */
-    String GRANT = "grant";
-    
-    /**
-     * The "deny" method.
-     */
-    String DENY = "deny";
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Group.java b/trunk/src/java/org/apache/lenya/ac/Group.java
deleted file mode 100644
index 2880984..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Group.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A group.
- * @version $Id$
- */
-public interface Group extends Identifiable, Item {
-    
-    /**
-     * Returns the members of this group.
-     * @return An array of {@link Groupable}s.
-     */
-    Groupable[] getMembers();
-    
-    /**
-     * Adds a member to this group.
-     * @param member The member to add.
-     */
-    void add(Groupable member);
-    
-    /**
-     * Removes a member from this group.
-     * @param member The member to remove.
-     */
-    void remove(Groupable member);
-    
-    /**
-     * Removes all members from this group.
-     */
-    void removeAllMembers();
-    
-    /**
-     * Returns if this group contains this member.
-     * @param member The member to check.
-     * @return A boolean value.
-     */
-    boolean contains(Groupable member);
-    
-    /**
-     * Delete a group.
-     * @throws AccessControlException if the delete failed
-     */
-    void delete() throws AccessControlException;
-    
-    /**
-     * Saves this group.
-     * @throws AccessControlException when saving failed.
-     */
-    void save() throws AccessControlException;
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/GroupManager.java b/trunk/src/java/org/apache/lenya/ac/GroupManager.java
deleted file mode 100644
index d711795..0000000
--- a/trunk/src/java/org/apache/lenya/ac/GroupManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A group manager.
- * @version $Id$
- */
-public interface GroupManager extends ItemManager {
-    
-    /**
-     * Get all groups.
-     * @return an array of groups.
-     */
-    Group[] getGroups();
-    
-    /**
-     * Add a group to this manager.
-     * @param id the ID of the group to be added.
-     * @return A group.
-     * @throws AccessControlException when the group is already contained.
-     */
-    Group add(String id) throws AccessControlException;
-    
-    /**
-     * Remove a group from this manager.
-     * @param group the group to be removed.
-     * @throws AccessControlException when the group is not contained.
-     */
-    void remove(Group group) throws AccessControlException;
-    
-    /**
-     * Get the group with the given group name.
-     *
-     * @param groupId the id of the requested group.
-     * @return a <code>Group</code> or null if there is no group with the given name
-     */
-    Group getGroup(String groupId);
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/Groupable.java b/trunk/src/java/org/apache/lenya/ac/Groupable.java
deleted file mode 100644
index d692333..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Groupable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * Generalized interface of group member objects.
- * @version $Id$
- */
-public interface Groupable {
-    
-    /**
-     * Notifies this Groupable of being added to a group.
-     * @param group The group.
-     */
-    void addedToGroup(Group group);
-
-    /**
-     * Notifies this Groupable of being removed from a group.
-     * @param group The group.
-     */
-    void removedFromGroup(Group group);
-
-    /**
-     * Returns all groups that contain this Groupable.
-     * @return A {@link Group} array.
-     */
-    Group[] getGroups();
-    
-    /**
-     * Removes this Groupable from all groups.
-     */
-    void removeFromAllGroups();
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/IPRange.java b/trunk/src/java/org/apache/lenya/ac/IPRange.java
deleted file mode 100644
index 7b54a01..0000000
--- a/trunk/src/java/org/apache/lenya/ac/IPRange.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-import java.net.InetAddress;
-
-
-/**
- * An IP range.
- */
-public interface IPRange extends Accreditable, Item, Groupable {
-    
-    /**
-     * Sets the network address.
-     * 
-     * @param address A string, e.g. 192.168.0.32
-     * 
-     * @throws AccessControlException when the conversion of the String to an
-     * InetAddress failed.
-     */
-    void setNetworkAddress(String address) throws AccessControlException;
-    
-    /**
-     * Sets the network address.
-     * 
-     * @param address A byte array of the length 4.
-     * 
-     * @throws AccessControlException when the conversion of the byte array to an
-     * InetAddress failed.
-     */
-    void setNetworkAddress(byte[] address) throws AccessControlException;
-    
-    /**
-     * Returns the network address.
-     * @return An InetAddress value.
-     */
-    InetAddress getNetworkAddress();
-    
-    /**
-     * Sets the subnet mask.
-     * 
-     * @param mask A string, e.g. 192.168.0.32
-     * 
-     * @throws AccessControlException when the conversion of the String to an
-     * InetAddress failed.
-     */
-    void setSubnetMask(String mask) throws AccessControlException;
-    
-    /**
-     * Sets the subnet mask.
-     * 
-     * @param mask A byte array of the length 4.
-     * 
-     * @throws AccessControlException when the conversion of the byte array to an
-     * InetAddress failed.
-     */
-    void setSubnetMask(byte[] mask) throws AccessControlException;
-    
-    /**
-     * Returns the subnet mask.
-     * @return An InetAddress value.
-     */
-    InetAddress getSubnetMask();
-    
-    /**
-     * Checks if this IP range contains a certain machine.
-     * @param machine The machine to check for.
-     * @return A boolean value.
-     */
-    boolean contains(Machine machine);
-
-    /**
-     * Save the IP range.
-     * @throws AccessControlException if the save failed
-     */
-    void save() throws AccessControlException;
-    
-    /**
-     * Delete an IP range.
-     * @throws AccessControlException if the delete failed
-     */
-    void delete() throws AccessControlException;
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/IPRangeManager.java b/trunk/src/java/org/apache/lenya/ac/IPRangeManager.java
deleted file mode 100644
index 0ba3a4f..0000000
--- a/trunk/src/java/org/apache/lenya/ac/IPRangeManager.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-/**
- * An IP range manager.
- */
-public interface IPRangeManager extends ItemManager {
-    
-    /**
-     * Get all IP ranges.
-     *
-     * @return an array of IP ranges.
-     */
-    IPRange[] getIPRanges();
-    
-    /**
-     * Add the given IP range
-     *
-     * @param id IP range that is to be added
-     * @return An IP range.
-     * @throws AccessControlException when the IP range is already contained.
-     */
-    IPRange add(String id) throws AccessControlException;
-    
-    /**
-     * Remove the given IP range
-     *
-     * @param range IP range that is to be removed
-     * @throws AccessControlException when the IP range is not contained.
-     */
-    void remove(IPRange range) throws AccessControlException;
-    
-    /**
-     * Get the IPRange with the given id.
-     *
-     * @param rangeId user id of requested IP range
-     * @return the requested IP range or null if there is
-     * no IP range with the given id
-     */
-    IPRange getIPRange(String rangeId);
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/Identifiable.java b/trunk/src/java/org/apache/lenya/ac/Identifiable.java
deleted file mode 100644
index 25de70c..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Identifiable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-/**
- * A marker interface to mark an {@link Accreditable} as identifiable.
- */
-public interface Identifiable extends Accreditable {
-    // implement here
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Identity.java b/trunk/src/java/org/apache/lenya/ac/Identity.java
deleted file mode 100644
index 6d34e19..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Identity.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.cocoon.environment.Session;
-
-/**
- * Identity object. Used to store the authenticated accreditables in the session.
- */
-public class Identity extends AbstractLogEnabled implements Identifiable, Serializable {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private Set identifiables = new HashSet();
-
-    /**
-     * Ctor.
-     * @param logger The logger.
-     */
-    public Identity(Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-    }
-    
-    /**
-     * Initializes this identity.
-     */
-    public void initialize() {
-        addIdentifiable(World.getInstance());
-    }
-
-    /**
-     * In the case of Tomcat the object will be serialized to TOMCAT/work/Standalone/localhost/lenya/SESSIONS.ser
-     * @param out OutputStream to hold the serialized identity
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(this.identifiables);
-    }
-
-    /**
-     * In case of Tomcat the object will be restored from TOMCAT/work/Standalone/localhost/lenya/SESSIONS.ser
-     * @param in InputStream that holds the serialized identity
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        this.identifiables = (Set) in.readObject();
-    }
-
-    /**
-     * Returns the identifiables of this identity.
-     * @return An array of identifiables.
-     */
-    public Identifiable[] getIdentifiables() {
-        return (Identifiable[]) this.identifiables.toArray(new Identifiable[this.identifiables.size()]);
-    }
-
-    /**
-     * Adds a new identifiable to this identity.
-     * @param identifiable The identifiable to add.
-     */
-    public void addIdentifiable(Identifiable identifiable) {
-        assert identifiable != null;
-        assert identifiable != this;
-        assert !this.identifiables.contains(identifiable);
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Adding identifiable: [" + identifiable + "]");
-        }
-
-        this.identifiables.add(identifiable);
-    }
-
-    /**
-     * @see Accreditable#getAccreditables()
-     */
-    public Accreditable[] getAccreditables() {
-        Set accreditables = new HashSet();
-        Identifiable[] _identifiables = getIdentifiables();
-
-        for (int i = 0; i < _identifiables.length; i++) {
-            Accreditable[] groupAccreditables = _identifiables[i].getAccreditables();
-            accreditables.addAll(Arrays.asList(groupAccreditables));
-        }
-
-        return (Accreditable[]) accreditables.toArray(new Accreditable[accreditables.size()]);
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        Accreditable[] accreditables = getAccreditables();
-
-        for (int i = 0; i < accreditables.length; i++) {
-            buf.append(" " + accreditables[i]);
-        }
-
-        String string = "[identity:" + buf.toString() + "]";
-
-        return string;
-    }
-
-    /**
-     * Checks if this identity belongs to a certain accreditable manager.
-     * @param manager The accreditable manager to check for.
-     * @return A boolean value.
-     * @throws AccessControlException if an error occurs
-     */
-    public boolean belongsTo(AccreditableManager manager) throws AccessControlException {
-        User user = getUser();
-        if (user == null) {
-            return true;
-        }
-        else {
-            String thisId = user.getAccreditableManager().getId();
-            String otherId = manager.getId();
-            return thisId.equals(otherId);
-        }
-    }
-
-    /**
-     * Returns the user of this identity.
-     * @return A user.
-     */
-    public User getUser() {
-        User user = null;
-        Identifiable[] _identifiables = getIdentifiables();
-        int i = 0;
-        while (user == null && i < _identifiables.length) {
-            if (_identifiables[i] instanceof User) {
-                user = (User) _identifiables[i];
-            }
-            i++;
-        }
-        return user;
-    }
-
-    /**
-     * Returns the machine of this identity.
-     * @return A machine.
-     */
-    public Machine getMachine() {
-        Machine machine = null;
-        Identifiable[] _identifiables = getIdentifiables();
-        int i = 0;
-        while (machine == null && i < _identifiables.length) {
-            if (_identifiables[i] instanceof Machine) {
-                machine = (Machine) _identifiables[i];
-            }
-            i++;
-        }
-        return machine;
-    }
-
-    /**
-     * Checks if this identity contains a certain identifiable.
-     * @param identifiable The identifiable to look for.
-     * @return A boolean value.
-     */
-    public boolean contains(Identifiable identifiable) {
-        return this.identifiables.contains(identifiable);
-    }
-
-    /**
-     * Fetches the identity from a session.
-     * @param session The session.
-     * @return An identity.
-     */
-    public static Identity getIdentity(Session session) {
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        return identity;
-    }
-
-    /**
-     * Removes a certain identifiable from the idenity.
-     * @param identifiable An identifiable.
-     */
-    public void removeIdentifiable(Identifiable identifiable) {
-        assert this.identifiables.contains(identifiable);
-        this.identifiables.remove(identifiable);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/InheritingPolicyManager.java b/trunk/src/java/org/apache/lenya/ac/InheritingPolicyManager.java
deleted file mode 100644
index 6e83772..0000000
--- a/trunk/src/java/org/apache/lenya/ac/InheritingPolicyManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.PolicyManager;
-
-/**
- * Policy manager which inherits credentials in a policy tree.
- * @version $Id$
- */
-public interface InheritingPolicyManager extends PolicyManager {
-
-    /**
-     * Builds a subtree policy from a file. When the file is not present, an empty policy is
-     * returned.
-     * @param controller The access controller to use.
-     * @param url The URL inside the web application.
-     * @return A policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    Policy buildSubtreePolicy(AccreditableManager controller, String url)
-            throws AccessControlException;
-
-    /**
-     * Returns the existing policies for all URL steps in bottom-up order, ending with the root policy.
-     * @param controller The accreditable manager to use.
-     * @param url The URL inside the web application.
-     * @return An array of policies.
-     * @throws AccessControlException when something went wrong.
-     */
-    Policy[] getPolicies(AccreditableManager controller, String url) throws AccessControlException;
-
-    /**
-     * Saves a Subtree policy.
-     * @param url The url to save the policy for.
-     * @param policy The policy to save.
-     * @throws AccessControlException when something went wrong.
-     */
-    void saveSubtreePolicy(String url, Policy policy) throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Item.java b/trunk/src/java/org/apache/lenya/ac/Item.java
deleted file mode 100644
index 4675334..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Item.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.LogEnabled;
-
-
-/**
- * An item can be initialized from a configuration.
- */
-public interface Item extends LogEnabled {
-    
-    /**
-     * Returns the ID.
-     * @return A string.
-     */
-    String getId();
-    
-    /**
-     * Returns the name.
-     * @return A string.
-     */
-    String getName();
-    
-    /**
-     * Sets the name.
-     * @param name A string.
-     */
-    void setName(String name);
-    
-    /**
-     * Returns the description.
-     * @return A string.
-     */
-    String getDescription();
-
-    /**
-     * Sets the description.
-     * @param description A string.
-     */
-    void setDescription(String description);
-    
-    /**
-     * Configures this item.
-     * @param configuration The configuration.
-     * @throws ConfigurationException when something went wrong.
-     */
-    void configure(Configuration configuration) throws ConfigurationException;
-    
-    /**
-     * @return The item manager this item belongs to.
-     */
-    ItemManager getItemManager();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/ItemManager.java b/trunk/src/java/org/apache/lenya/ac/ItemManager.java
deleted file mode 100644
index 7f55e71..0000000
--- a/trunk/src/java/org/apache/lenya/ac/ItemManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * Item manager.
- * @version $Id$
- */
-public interface ItemManager {
-
-    /**
-     * Adds an item manager listener.
-     * @param listener The listener to add.
-     */
-    void addItemManagerListener(ItemManagerListener listener);
-    
-    /**
-     * Removes an item manager listener.
-     * @param listener The listener to remove.
-     */
-    void removeItemManagerListener(ItemManagerListener listener);
-
-    /**
-     * @return The accreditable manager this item manager belongs to.
-     */
-    AccreditableManager getAccreditableManager();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/ItemManagerListener.java b/trunk/src/java/org/apache/lenya/ac/ItemManagerListener.java
deleted file mode 100644
index 3868570..0000000
--- a/trunk/src/java/org/apache/lenya/ac/ItemManagerListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-/**
- * This class allows listening to objects that manages items.
- */
-public interface ItemManagerListener {
-
-    /**
-	 * Called when an accreditable was added.
-	 * 
-	 * @param item The item that was added.
-	 * @throws AccessControlException when an error occurs.
-	 */
-    void itemAdded(Item item) throws AccessControlException;
-
-    /**
-	 * Called when an accreditable was removed.
-	 * 
-	 * @param item The item that was removed.
-	 * @throws AccessControlException when an error occurs.
-	 */
-    void itemRemoved(Item item) throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/ItemUtil.java b/trunk/src/java/org/apache/lenya/ac/ItemUtil.java
deleted file mode 100644
index 9442d9d..0000000
--- a/trunk/src/java/org/apache/lenya/ac/ItemUtil.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.commons.validator.EmailValidator;
-
-/**
- * Utility class for access control items.
- */
-public class ItemUtil {
-
-    /**
-     * Checks if a string is a valid ID.
-     * @param id The string to test.
-     * @return A boolean value.
-     */
-    public static boolean isValidId(String id) {
-        return id != null && id.matches("\\w+");
-    }
-    
-    /**
-     * Checks if a string is a valid e-mail address.
-     * @param email The string.
-     * @return A boolean value.
-     */
-    public static boolean isValidEmail(String email) {
-        return EmailValidator.getInstance().isValid(email);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Machine.java b/trunk/src/java/org/apache/lenya/ac/Machine.java
deleted file mode 100644
index b42f7a0..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Machine.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A machine (representing an IP address).
- * @version $Id$
- */
-public class Machine implements Identifiable, Serializable {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new machine object. This method accepts
-     * numeric IPv4 addresses like <code>"129.168.0.32"</code>,
-     * numeric IPv6 addresses like <code>"1080::8:800:200C:417A"</code>
-     * as well as hostnames (if DNS resolution is available) like
-     * <code>"localhost"</code> or <code>"www.apache.com"</code>.
-     * 
-     * @param ip a <code>String</code> like <code>"192.168.0.32"</code>,
-     *      <code>"::1"</code>, ...
-     * .
-     * @throws AccessControlException when the conversion of the
-     *      <code>String</code> to an <code>InetAddress</code> failed
-     */
-    public Machine(String ip) throws AccessControlException {
-        try {
-            setAddress(InetAddress.getByName(ip));
-        } catch(UnknownHostException uhe) {
-            throw new AccessControlException
-                ("Failed to convert address [" + ip + "]: ", uhe);
-        }
-    }
-
-    private InetAddress address;
-
-    /**
-     * @see java.lang.Object#equals(Object)
-     */
-    public boolean equals(Object otherObject) {
-        boolean equals = false;
-
-        if (otherObject instanceof Machine) {
-            Machine otherMachine = (Machine) otherObject;
-            equals = getAddress().equals(otherMachine.getAddress());
-        }
-
-        return equals;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return getAddress().hashCode();
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Accreditable#getAccreditables()
-     */
-    public Accreditable[] getAccreditables() {
-        Accreditable[] ranges = getIPRanges();
-        Accreditable[] accreditables = new Accreditable[ranges.length + 1];
-        accreditables[0] = this;
-        for (int i = 0; i < ranges.length; i++) {
-            accreditables[i+1] = ranges[i];
-        }
-        return accreditables;
-    }
-
-    /**
-     * Returns the IP address.
-     * @return The IP address.
-     */
-    public String getIp() {
-        return getAddress().getHostAddress();
-    }
-
-    /**
-     * Converts a string to an IP addres.
-     * @param string The IP address, represented by a string.
-     * @return An InetAddress object.
-     * @throws AccessControlException when something went wrong.
-     * @deprecated This method is unnecessary and does not work for IPv6.
-     *      Use <code>InetAddress.getByName(string)</code> instead!
-     */
-    public static InetAddress getAddress(String string)
-        throws AccessControlException {
-        String[] strings = string.split("\\.");
-
-        InetAddress address;
-        try {
-            byte[] numbers = new byte[strings.length];
-            for (int i = 0; i < strings.length; i++) {
-                int number = Integer.parseInt(strings[i]);
-                if (number > 127) {
-                    number = number - 256;
-                }
-                numbers[i] = (byte) number;
-            }
-
-            address = InetAddress.getByAddress(numbers);
-        } catch (final NumberFormatException e1) {
-            throw new AccessControlException(
-                    "Failed to convert address [" + string + "]: ",
-                    e1);
-        } catch (final UnknownHostException e1) {
-            throw new AccessControlException(
-                    "Failed to convert address [" + string + "]: ",
-                    e1);
-        }
-        return address;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getIp();
-    }
-
-    /**
-     * Returns the IP address.
-     * @return An IP address.
-     */
-    public InetAddress getAddress() {
-        return this.address;
-    }
-
-    /**
-     * Sets the IP address.
-     * @param _address An IP address.
-     */
-    public void setAddress(InetAddress _address) {
-        this.address = _address;
-    }
-
-    private List ipRanges = new ArrayList();
-    
-    /**
-     * Adds an IP range to this machine.
-     * @param range An IP range this machine belongs to.
-     */
-    public void addIPRange(IPRange range) {
-        assert range != null;
-        assert !this.ipRanges.contains(range);
-        this.ipRanges.add(range);
-    }
-    
-    /**
-     * Returns the IP ranges this machine belongs to.
-     * @return An array of IP ranges.
-     */
-    public IPRange[] getIPRanges() {
-        return (IPRange[]) this.ipRanges.toArray(new IPRange[this.ipRanges.size()]);
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/ModifiablePolicy.java b/trunk/src/java/org/apache/lenya/ac/ModifiablePolicy.java
deleted file mode 100644
index 29ef2d7..0000000
--- a/trunk/src/java/org/apache/lenya/ac/ModifiablePolicy.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * Modifiable policy.
- */
-public interface ModifiablePolicy extends Policy {
-
-    /**
-     * Sets if this policy requires SSL protection.
-     * 
-     * @param ssl
-     *            A boolean value.
-     */
-    void setSSL(boolean ssl);
-
-    /**
-     * Adds a role to this policy for a certain accreditable and a certain role.
-     * If a credenital exists for the accreditable, the role is added to this
-     * credential. Otherwise, a new credential is created.
-     * 
-     * @param accreditable
-     *            An accreditable.
-     * @param role
-     *            A role.
-     * @param method
-     */
-    public void addRole(Accreditable accreditable, Role role, String method);
-
-    /**
-     * Removes a role from this policy for a certain accreditable and a certain
-     * role.
-     * 
-     * @param accreditable
-     *            An accreditable.
-     * @param role
-     *            A role.
-     * @throws AccessControlException
-     *             if the accreditable-role pair is not contained.
-     */
-    public void removeRole(Accreditable accreditable, Role role)
-            throws AccessControlException;
-
-    /**
-     * Removes all roles from this policy for a certain accreditable.
-     * 
-     * @param accreditable
-     *            An accreditable.
-     * @throws AccessControlException
-     *             if the accreditable-role pair is not contained.
-     */
-    void removeRoles(Accreditable accreditable) throws AccessControlException;
-
-    /**
-     * Moves a role up the credential tree, giving it higher priority.
-     * 
-     * @param accreditable
-     * @param role
-     * @throws AccessControlException
-     */
-    public void moveRoleUp(Accreditable accreditable, Role role)
-            throws AccessControlException;
-
-    /**
-     * Moves a role down the credential tree, decreasing its priority.
-     * 
-     * @param accreditable
-     * @param role
-     * @throws AccessControlException
-     */
-    public void moveRoleDown(Accreditable accreditable, Role role)
-            throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Password.java b/trunk/src/java/org/apache/lenya/ac/Password.java
deleted file mode 100644
index 9cdabb9..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Password.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-import java.security.MessageDigest;
-
-/**
- * Encrypt plain text password
- * Example: "message digest" becomes "f96b697d7cb7938d525a2f31aaf161d0" (hexadecimal notation (32 characters))
- */
-public class Password {
-
-    /**
-     * Encrypt plain text password
-     *
-     * @param plain plain text password
-     * @return encrypted password
-     */
-    public static String encrypt(String plain) {
-        return getMD5(plain);
-    }
-
-    /**
-     * Returns the MD5 representation of a string.
-     * @param plain The plain string.
-     * @return A string.
-     */
-    public static String getMD5(String plain) {
-        MessageDigest md = null;
-        try {
-            md = MessageDigest.getInstance("MD5");
-        } catch (java.security.NoSuchAlgorithmException e) {
-            throw new RuntimeException(e);
-        }
-        return stringify(md.digest(plain.getBytes()));
-    }
-
-    /**
-     * Converts a byte buffer to a string.
-     * @param buf The buffer.
-     * @return A string.
-     */
-    private static String stringify(byte[] buf) {
-        StringBuffer sb = new StringBuffer(2 * buf.length);
-
-        for (int i = 0; i < buf.length; i++) {
-            int h = (buf[i] & 0xf0) >> 4;
-            int l = (buf[i] & 0x0f);
-            sb.append(new Character((char) ((h > 9) ? (('a' + h) - 10) : ('0' + h))));
-            sb.append(new Character((char) ((l > 9) ? (('a' + l) - 10) : ('0' + l))));
-        }
-
-        return sb.toString();
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Policy.java b/trunk/src/java/org/apache/lenya/ac/Policy.java
deleted file mode 100644
index c2d355e..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Policy.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A policy assigns roles to accreditables using credentials.
- * Additionally, SSL protection is defined.
- * 
- * @version $Id$
- */
-public interface Policy {
-    
-    /**
-     * The identity was not matched in this policy.
-     */
-    int RESULT_NOT_MATCHED = 0;
-    
-    /**
-     * The role is denied for the identity.
-     */
-    int RESULT_DENIED = 1;
-    
-    /**
-     * The role is granted for the identity.
-     */
-    int RESULT_GRANTED = 2;
-    
-    /**
-     * Checks if a certain role is granted for a certain policy.
-     * @param identity The identity.
-     * @param role The role to check.
-     * @return A result code.
-     * @throws AccessControlException when something went wrong.
-     */
-    int check(Identity identity, Role role) throws AccessControlException;
-    
-    /**
-     * Returns if this policy requires SSL protection.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean isSSLProtected() throws AccessControlException;
-    
-    /**
-     * Returns if the policy is empty. A policy is empty if it does
-     * not contain any credentials.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean isEmpty() throws AccessControlException;
-    
-    /**
-     * @param identity The identity.
-     * @return All credentials defined by this policy for this identity.
-     * @throws AccessControlException if an error occurs.
-     */
-    Credential[] getCredentials(Identity identity) throws AccessControlException;
-    
-    /**
-     * @return All credentials defined by this policy.
-     * @throws AccessControlException if an error occurs.
-     */
-    Credential[] getCredentials() throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/PolicyManager.java b/trunk/src/java/org/apache/lenya/ac/PolicyManager.java
deleted file mode 100644
index e063525..0000000
--- a/trunk/src/java/org/apache/lenya/ac/PolicyManager.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * A policy manager.
- * 
- * @version $Id$
- */
-public interface PolicyManager extends Component {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = PolicyManager.class.getName();
-
-    /**
-     * Returns the policy for a given page.
-     * @param controller The access controller.
-     * @param url The url inside the web application.
-     * @return The policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    Policy getPolicy(AccreditableManager controller, String url) throws AccessControlException;
-
-    /**
-     * Returns all granted roles for a certain identity on a certain URL.
-     * @param accreditableManager The accreditable manager.
-     * @param identity The identity.
-     * @param url The URL.
-     * @return An array of roles.
-     * @throws AccessControlException if an error occurs.
-     */
-    Role[] getGrantedRoles(AccreditableManager accreditableManager, Identity identity, String url)
-            throws AccessControlException;
-
-    /**
-     * Return all credentials for this url
-     * 
-     * @param controller The Accreditable Manager
-     * @param url The AC url
-     * @return An array of credentials
-     * @throws AccessControlException when something went wrong.
-     */
-    Credential[] getCredentials(AccreditableManager controller, String url)
-            throws AccessControlException;
-
-    /**
-     * Called when an accreditable was added. Used to create the admin interface
-     * policy. This method get invoked, when e.g. a new user is added. The user
-     * always should be able to edit her profile. Therefore the method normally
-     * grant inherit edit rights to the user profile page.
-     * 
-     * @param manager The accreditable manager the accreditable belonged to.
-     * @param accreditable The accreditable that was removed.
-     * @throws AccessControlException when something went wrong.
-     */
-    void accreditableAdded(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException;
-
-    /**
-     * Called when an accreditable was removed. Used to clean up the policies
-     * and to remove the admin interface policy.
-     * 
-     * @param manager The accreditable manager the accreditable belonged to.
-     * @param accreditable The accreditable that was removed.
-     * @throws AccessControlException when something went wrong.
-     */
-    void accreditableRemoved(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/Role.java b/trunk/src/java/org/apache/lenya/ac/Role.java
deleted file mode 100644
index 2fc823b..0000000
--- a/trunk/src/java/org/apache/lenya/ac/Role.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-/**
- * The role interface.
- * @version $Id$
- */
-public interface Role extends Item {
-    
-    /**
-     * @return if the role may be assigned to accreditables in policies.
-     */
-    boolean isAssignable();
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/RoleManager.java b/trunk/src/java/org/apache/lenya/ac/RoleManager.java
deleted file mode 100644
index d6537ec..0000000
--- a/trunk/src/java/org/apache/lenya/ac/RoleManager.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac;
-
-/**
- * Role manager.
- * @version $Id$
- */
-public interface RoleManager extends ItemManager {
-    
-    /**
-     * Get the role for the given ID.
-     *
-     * @param roleId The name of the role requested.
-     * @return a <code>Role</code> or null if no role with the given name found
-     */
-    Role getRole(String roleId);
-    
-    /**
-     * Get all roles
-     *
-     * @return an array of roles
-     */
-    Role[] getRoles();
-    
-    /**
-     * Add a role
-     *
-     * @param role Role to add
-     * @throws AccessControlException when the role is already contained.
-     */
-    void add(Role role) throws AccessControlException;
-    
-    /**
-     * Remove a role
-     *
-     * @param role Role to remove
-     * @throws AccessControlException when the role is not contained.
-     */
-    void remove(Role role) throws AccessControlException;
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/User.java b/trunk/src/java/org/apache/lenya/ac/User.java
deleted file mode 100644
index 9fe7188..0000000
--- a/trunk/src/java/org/apache/lenya/ac/User.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A user.
- * @version $Id$
- */
-public interface User extends Identifiable, Item, Groupable {
-    
-    /**
-     * Get the email address
-     *
-     * @return a <code>String</code>
-     */
-    String getEmail();
-    
-    /**
-     * Set the email address
-     *
-     * @param email the new email address
-     */
-    void setEmail(String email);
-    
-    /**
-     * Sets the password.
-     * @param plainTextPassword The plain text password.
-     */
-    void setPassword(String plainTextPassword);
-   
-    /**
-     * Checks support for changing password
-     * @return true if password change is supported
-     */
-    public abstract boolean canChangePassword();
- 
-    /**
-     * Returns the user's preferred locale for the Lenya
-     * CMS menus and CMS screens.
-     * 
-     * The locale can either be a 2 letter country code 
-     * (de, en) or a locale code according to RFC 1766 /
-     * ISO 639 / ISO 3166 (de_DE, de_CH, de_AT, en_US, ...)  
-     * @return The locale.
-     */
-    String getDefaultMenuLocale();
-    
-    /**
-     * Sets the user's preferred locale for the Lenya
-     * menu and CMS screens.
-     * 
-     * The locale can either be a 2 letter country code 
-     * (de, en) or a locale code according to RFC 1766 /
-     * ISO 639 / ISO 3166 (de_DE, de_CH, de_AT, en_US, ...)
-     * @param menuLocale The locale.
-     */
-    void setDefaultMenuLocale(String menuLocale);
-    
-    /**
-     * Returns the user's default locale of documents
-     * to be created or edited.
-     * 
-     * The locale can either be a 2 letter country code 
-     * (de, en) or a locale code according to RFC 1766 /
-     * ISO 639 / ISO 3166 (de_DE, de_CH, de_AT, en_US, ...)
-     * @return The locale.
-     */
-    String getDefaultDocumentLocale();
-    
-    /**
-     * Sets the user's default locale of documents
-     * to be created or edited.
-     * 
-     * The locale can either be a 2 letter country code 
-     * (de, en) or a locale code according to RFC 1766 /
-     * ISO 639 / ISO 3166 (de_DE, de_CH, de_AT, en_US, ...)
-     * @param documentLocale The locale.
-     */
-    void setDefaultDocumentLocale(String documentLocale); 
-    
-    /**
-     * Save the user
-     *
-     * @throws AccessControlException if the save failed
-     */
-    void save() throws AccessControlException;
-    
-    /**
-     * Delete a user
-     *
-     * @throws AccessControlException if the delete failed
-     */
-    void delete() throws AccessControlException;
-    
-    /**
-     * Authenticate a user. This is done by encrypting
-     * the given password and comparing this to the
-     * encryptedPassword.
-     *
-     * @param password to authenticate with
-     * @return true if the given password matches the password for this user
-     */
-    boolean authenticate(String password);
-    
-    /**
-     * @return The accreditable manager this accreditable belongs to.
-     */
-    AccreditableManager getAccreditableManager();
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/UserManager.java b/trunk/src/java/org/apache/lenya/ac/UserManager.java
deleted file mode 100644
index 1dd7c1e..0000000
--- a/trunk/src/java/org/apache/lenya/ac/UserManager.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * User manager.
- * @version $Id$
- */
-public interface UserManager extends ItemManager {
-    
-    /**
-     * Get all users.
-     *
-     * @return an array of users
-     */
-    User[] getUsers();
-    
-    /**
-     * Get all supported user types
-     *
-     * @return a collection of user types
-     */
-    UserType[] getUserTypes();
-
-    /**
-     * Add the given user
-     *
-     * @param user A user.
-     * @throws AccessControlException when the user is already contained.
-     */
-    void add(User user) throws AccessControlException;
-    
-    /**
-     * Remove the given user
-     *
-     * @param user User that is to be removed
-     * @throws AccessControlException when the user is not contained.
-     */
-    void remove(User user) throws AccessControlException;
-    
-    /**
-     * Get the user with the given user id.
-     *
-     * @param userId user id of requested user
-     * @return the requested user or null if there is
-     * no user with the given user id
-     */
-    User getUser(String userId);
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/ac/UserType.java b/trunk/src/java/org/apache/lenya/ac/UserType.java
deleted file mode 100644
index 939f3be..0000000
--- a/trunk/src/java/org/apache/lenya/ac/UserType.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-/**
- * A user type to be supported by the UserManager
- * Note: the types are configured through the access control configuration
- * 
- * @version $Id$
- */
-public class UserType  {
-    private String key;
-    private String className;
-    private String createUseCase;
-
-    /**
-     * Ctor.
-     */
-    public UserType() {
-	    // do nothing
-    }
-
-    /**
-     * Ctor.
-     * @param _key The key.
-     * @param _className The class name.
-     * @param _createUseCase The create usecase.
-     */
-    public UserType(String _key, String _className, String _createUseCase) {
-	  this.key = _key;
-	  this.className = _className;
-	  this.createUseCase = _createUseCase;
-    }
-
-    /**
-     * Get the key to be used for this type. 
-     * This key can be used for a dictionary entry for the user interface.
-     * @return a <code>String</code>
-     */
-    public String getKey() {
-	  return this.key;
-    }
-    
-    /**
-     * Set the key to be used for this type. 
-     * This key can be used for a dictionary entry for the user interface.
-     * @param _key the new key
-     */
-    public void setKey(String _key) {
-	  this.key = _key;
-    }
-    
-    /**
-     * Get the name of the class responsible for implementing this
-     * type of user. Note that in current version, this field is for
-     * information only; in later versions, it might be used for
-     * introspection and dynamic script creation.
-     * @see org.apache.lenya.ac.file.FileUser
-     * @see org.apache.lenya.ac.ldap.LDAPUser
-     * @return a <code>String</code> the name of the class
-     */
-    public String getClassName() {
-	  return this.className;
-    }
-    
-    /**
-     * Set the name of the class responsible for implementing this
-     * type of user. Note that in current version, this field is for
-     * information only; in later versions, it might be used for
-     * introspection and dynamic flowscript creation.
-     * @param _className the new className
-     */
-    public void setClassName(String _className) {
-	  this.className = _className;
-    }
-    
-    /**
-     * Get the createUseCase name to be used when a user of this type
-     * is to be created. 
-     * This name will be used in the flowscript (currently: user-admin.js),
-     * in order to distinguish between different types.
-     * @return a <code>String</code> the name of the use case in the flowscript
-     */
-    public String getCreateUseCase() {
-	  return this.createUseCase;
-    }
-    
-    /**
-     * Set the createUseCase name to be used when a user of this type
-     * is to be created. 
-     * This name will be used in the flowscript (currently: user-admin.js),
-     * in order to distinguish between different types.
-     * @param _createUseCase the new createUseCase
-     */
-    public void setCreateUseCase(String _createUseCase) {
-	  this.createUseCase = _createUseCase;
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/ac/World.java b/trunk/src/java/org/apache/lenya/ac/World.java
deleted file mode 100644
index baf5fbd..0000000
--- a/trunk/src/java/org/apache/lenya/ac/World.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac;
-
-import java.io.Serializable;
-import java.util.Collections;
-
-/**
- * The world.
- * @version $Id$
- */
-public final class World implements Identifiable, Serializable {
-    
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new World object.
-     */
-    private World() {
-	    // do nothing
-    }
-
-    private static World instance;
-
-    /**
-     * Returns the singleton world object.
-     * @return A world object.
-     */
-    public static World getInstance() {
-        if (instance == null) {
-            instance = new World();
-        }
-
-        return instance;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Accreditable#getAccreditables()
-     */
-    public Accreditable[] getAccreditables() {
-        return (Accreditable[]) Collections.singleton(this).toArray(new Accreditable[1]);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/ac/PolicyUtil.java b/trunk/src/java/org/apache/lenya/cms/ac/PolicyUtil.java
deleted file mode 100644
index 5d48e1a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/ac/PolicyUtil.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.List;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-
-/**
- * Policy utility class.
- */
-public final class PolicyUtil {
-
-    /**
-     * Fetches the stored roles from the request.
-     * @param request The request.
-     * @return A role array.
-     * @throws AccessControlException If the request does not contain the roles
-     *         list.
-     */
-    public static final Role[] getRoles(Request request) throws AccessControlException {
-        List roleList = (List) request.getAttribute(Role.class.getName());
-
-        if (roleList == null) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("    URI: [" + request.getRequestURI() + "]\n");
-            for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
-                String key = (String) e.nextElement();
-                buf.append("    Parameter: [" + key + "] = [" + request.getParameter(key) + "]\n");
-            }
-
-            throw new AccessControlException("Request [" + request + "] does not contain roles: \n"
-                    + buf.toString());
-        }
-
-        Role[] roles = (Role[]) roleList.toArray(new Role[roleList.size()]);
-        return roles;
-    }
-    
-    /**
-     * @param manager The service manager.
-     * @param webappUrl The web application URL.
-     * @param userId The user ID.
-     * @param logger The logger.
-     * @return A user.
-     * @throws AccessControlException if an error occurs.
-     */
-    public static final User getUser(ServiceManager manager, String webappUrl,
-            String userId, Logger logger) throws AccessControlException {
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-        AccessController controller = null;
-        try {
-            selector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
-            resolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-            controller = resolver.resolveAccessController(webappUrl);
-
-            AccreditableManager accreditableManager = controller.getAccreditableManager();
-            UserManager userManager = accreditableManager.getUserManager();
-            
-            return userManager.getUser(userId);
-        } catch (ServiceException e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (selector != null) {
-                if (resolver != null) {
-                    if (controller != null) {
-                        resolver.release(controller);
-                    }
-                    selector.release(resolver);
-                }
-                manager.release(selector);
-            }
-        }
-
-    }
-
-    /**
-     * @param manager The service manager.
-     * @param webappUrl The web application URL.
-     * @param role The ID of the role.
-     * @param logger The logger to use.
-     * @return All users which have the role on this URL.
-     * @throws AccessControlException if an error occurs.
-     */
-    public static final User[] getUsersWithRole(ServiceManager manager, String webappUrl,
-            String role, Logger logger) throws AccessControlException {
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-        AccessController controller = null;
-        try {
-            selector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
-            resolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-            controller = resolver.resolveAccessController(webappUrl);
-
-            AccreditableManager accreditableManager = controller.getAccreditableManager();
-            UserManager userManager = accreditableManager.getUserManager();
-            User[] users = userManager.getUsers();
-            List usersWithRole = new ArrayList();
-            PolicyManager policyManager = controller.getPolicyManager();
-
-            Role roleObject = accreditableManager.getRoleManager().getRole(role);
-
-            for (int i = 0; i < users.length; i++) {
-                Identity identity = new Identity(logger);
-                identity.addIdentifiable(users[i]);
-                Role[] roles = policyManager.getGrantedRoles(accreditableManager, identity,
-                        webappUrl);
-                if (Arrays.asList(roles).contains(roleObject)) {
-                    usersWithRole.add(users[i]);
-                }
-            }
-
-            return (User[]) usersWithRole.toArray(new User[usersWithRole.size()]);
-        } catch (ServiceException e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (selector != null) {
-                if (resolver != null) {
-                    if (controller != null) {
-                        resolver.release(controller);
-                    }
-                    selector.release(resolver);
-                }
-                manager.release(selector);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
deleted file mode 100644
index e7fb52d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.cocoon.acting;

-

-import java.util.HashMap;

-import java.util.Map;

-

-import org.apache.avalon.framework.parameters.Parameters;

-import org.apache.cocoon.environment.Redirector;

-import org.apache.cocoon.environment.SourceResolver;

-import org.apache.lenya.cms.repository.Node;

-

-

-/**

- * An action that tests if a document is already checked out by a given user.

- * If it isn't, a check out will be tried.

- */

-public class DiscoverCheckoutAction extends RevisionControllerAction {

-

-    /**

-	 * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)

-	 */

-	public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,

-        Parameters parameters) throws Exception {

-        super.act(redirector, resolver, objectModel, src, parameters);

-

-        HashMap actionMap = new HashMap();

-        Node node = getNode();

-

-        if (node.isCheckedOut()) {

-            actionMap.put("filename", node.getSourceURI());

-            actionMap.put("user", node.getCheckoutUserId());

-            return actionMap;

-        }

-        return null;

-    }

-}

diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java
deleted file mode 100644
index 10b98e8..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.acting.ServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Action that checks if the current URL represents an existing document.
- */
-public class LanguageExistsAction extends ServiceableAction {
-
-    /**
-     * Check if the current URL represents an existing document.
-     * @return an empty <code>Map</code> if there is a version of this document for the current
-     *         language, <code>null</code> otherwise.
-     * @throws Exception if an error occurs
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source,
-            Parameters parameters) throws Exception {
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-
-        String url = ServletHelper.getWebappURI(request);
-        if (factory.isDocument(url)) {
-            return Collections.unmodifiableMap(Collections.EMPTY_MAP);
-        }
-        else {
-            return null;
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
deleted file mode 100644
index e05391b..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Checkin document
- */
-public class ReservedCheckinAction extends RevisionControllerAction {
-    /**
-     * Checkin document
-     * @return HashMap with checkin parameters
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
-     *      org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String,
-     *      org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws Exception {
-        super.act(redirector, resolver, objectModel, src, parameters);
-
-        try {
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            Identity identity = (Identity) request.getSession().getAttribute(Identity.class.getName());
-            Session session = RepositoryUtil.createSession(this.manager, identity, true);
-            
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            String url = ServletHelper.getWebappURI(request);
-            if (factory.isDocument(url)) {
-                Node node = factory.getFromURL(url).getRepositoryNode();
-                if (node.isCheckedOutBySession(session)) {
-                    node.checkin();
-                }
-            }
-            else {
-                throw new RuntimeException("The URL [" + url + "] doesn't represent a document.");
-            }
-            
-        } catch (RepositoryException e) {
-            getLogger().error("Could not check in node: ", e);
-            Map actionMap = new HashMap();
-            actionMap.put("exception", "genericException");
-            actionMap.put("filename", getNode().getSourceURI());
-            actionMap.put("message", e.getMessage());
-            return actionMap;
-        }
-
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
deleted file mode 100644
index 6a79a2b..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.util.Assert;
-
-/**
- * Action doing reserved checkout
- */
-public class ReservedCheckoutAction extends RevisionControllerAction {
-
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws Exception {
-        super.act(redirector, resolver, objectModel, src, parameters);
-
-        HashMap actionMap = new HashMap();
-
-        //check out
-        try {
-            
-            Node node = getNode();
-            String username = getUsername();
-            
-            Assert.notNull("node", node);
-            Assert.notNull("username", username);
-
-            if (!node.isCheckedOutBySession(node.getSession())) {
-                node.checkout();
-            }
-        } catch (RepositoryException e) {
-            actionMap.put("exception", "genericException");
-            actionMap.put("filename", getNode().getSourceURI());
-            actionMap.put("message", "" + e.getMessage());
-            getLogger().error("The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
-
-            return actionMap;
-        }
-
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
deleted file mode 100644
index e08c29f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-
-
-/**
- * An action that tests if a document is already checked out by a given user.
- * If it isn't, a check out will be tried.
- */
-
-public class ReservedCheckoutTestAction extends RevisionControllerAction {
-
-    /**
-	 * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-	 */
-	public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
-        Parameters parameters) throws Exception {
-        super.act(redirector, resolver, objectModel, src, parameters);
-
-        HashMap actionMap = new HashMap();
-
-        try {
-            Node node = getNode();
-
-			if (!node.isCheckedOut() || !node.getCheckoutUserId().equals(getUsername())) {
-				//check out
-			    getNode().checkout();
-			}
-		} catch (RepositoryException e) {
-			actionMap.put("exception", "RepositoryException");
-			actionMap.put("filename", getNode().getSourceURI());
-
-			return actionMap;
-		} catch (Exception e) {
-			actionMap.put("exception", "genericException");
-			actionMap.put("filename", getNode().getSourceURI());
-			actionMap.put("message", e.getMessage());
-			getLogger().error(".act(): The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
-
-			return actionMap;
-		}
-        return null;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java
deleted file mode 100644
index 24fe72d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ResourceExistsAction.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.acting.AbstractAction;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.TraversableSource;
-
-
-/**
- * This action simply checks to see if a given resource exists. It checks
- * whether the specified in the src attribute source exists or not.
- * The action returns empty <code>Map</code> if it exists, null otherwise.
- * <p>Instead of src attribute, source can be specified using
- * parameter named 'url' (this is old syntax).
- * <p>In order to differentiate between files and directories, the type can be specified
- * using the parameter 'type' (&lt;map:parameter name="type" value="file"/&gt; or
- * &lt;map:parameter name="type" value="directory"/&gt;). The parameter 'type' is optional.
- * <p>
- * <strong>Note:</strong> {@link org.apache.cocoon.selection.ResourceExistsSelector}
- * should be preferred to this component, as the semantics of a Selector better
- * match the supplied functionality.
- */
-public class ResourceExistsAction extends AbstractAction implements ThreadSafe {
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source,
-        Parameters parameters) throws Exception {
-        String url = parameters.getParameter("url", source);
-        String type = parameters.getParameter("type", "resource");
-        Source src = null;
-
-        try {
-            src = resolver.resolveURI(url);
-            
-            if (src.exists()) {
-                
-                boolean isCollection = false;
-                if (src instanceof TraversableSource) {
-                    TraversableSource traversableSource = (TraversableSource) src;
-                    isCollection = traversableSource.isCollection();
-                }
-                
-                boolean exists = type.equals("resource")
-                    || type.equals("file") && !isCollection
-                    || type.equals("directory") && isCollection;
-                
-                if (exists) {
-                    getLogger().debug(type + " exists: " + src.getURI());
-                    return Collections.EMPTY_MAP;
-                }
-            }
-            getLogger().debug(".act(): Resource " + source + " as type \"" + type +
-                "\" does not exist");
-        } finally {
-            if (src != null) {
-                resolver.release(src);
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java b/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
deleted file mode 100644
index 818ee80..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.acting;
-
-import java.io.File;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.acting.ServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.rc.RCEnvironment;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-
-/**
- * Revision controller action.
- * 
- * @version $Id: RevisionControllerAction.java 487290 2006-12-14 18:18:35Z
- *          andreas $
- */
-public class RevisionControllerAction extends ServiceableAction {
-
-    private String rcmlDirectory = null;
-    private String backupDirectory = null;
-    private String username = null;
-    private Node node = null;
-
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
-     *      org.apache.cocoon.environment.SourceResolver, java.util.Map,
-     *      java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws Exception {
-        // Get request object
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        if (request == null) {
-            getLogger().error(".act(): No request object");
-
-            return null;
-        }
-
-        PageEnvelope envelope = null;
-        Publication publication;
-
-        try {
-            publication = PublicationUtil.getPublication(this.manager, request);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-        org.apache.lenya.cms.repository.Session repoSession = RepositoryUtil.getSession(
-                this.manager, request);
-
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, repoSession);
-        Document document = null;
-
-        try {
-            publication = PublicationUtil.getPublication(this.manager, objectModel);
-            envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(factory, objectModel,
-                    publication);
-            document = envelope.getDocument();
-        } catch (Exception e) {
-            getLogger().error("Resolving page envelope failed: ", e);
-            throw e;
-        }
-
-        // get Parameters for RC
-        String publicationPath = publication.getDirectory().getCanonicalPath();
-        RCEnvironment rcEnvironment = RCEnvironment.getInstance(publication.getServletContext()
-                .getCanonicalPath(), getLogger());
-        this.rcmlDirectory = rcEnvironment.getRCMLDirectory();
-        this.rcmlDirectory = publicationPath + File.separator + this.rcmlDirectory;
-        this.backupDirectory = rcEnvironment.getBackupDirectory();
-        this.backupDirectory = publicationPath + File.separator + this.backupDirectory;
-
-        // Get session
-        Session session = request.getSession(false);
-
-        if (session == null) {
-            getLogger().error(".act(): No session object");
-
-            return null;
-        }
-
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        getLogger().debug(".act(): Identity: " + identity);
-
-        // FIXME: hack because of the uri for the editor bitflux. The filename
-        // cannot be get from
-        // the page-envelope
-
-        String documentid = document.getPath();
-        int bx = documentid.lastIndexOf("-bxe");
-
-        if (bx > 0) {
-            String language = document.getLanguage();
-
-            int l = documentid.length();
-            int bxLength = "-bxe".length();
-            int lang = documentid.lastIndexOf("_", bx);
-            int langLength = bx - lang;
-
-            if (bx > 0 && bx + bxLength <= l) {
-                documentid = documentid.substring(0, bx) + documentid.substring(bx + bxLength, l);
-
-                if (lang > 0 && langLength + lang < l) {
-                    language = documentid.substring(lang + 1, lang + langLength);
-                    documentid = documentid.substring(0, lang)
-                            + documentid.substring(lang + langLength, l - bxLength);
-                }
-            }
-
-            Document srcDoc = factory.get(publication, document.getArea(), documentid, language);
-            this.node = srcDoc.getRepositoryNode();
-
-        } else {
-            this.node = document.getRepositoryNode();
-        }
-
-        this.username = null;
-
-        if (identity != null) {
-            User user = identity.getUser();
-            if (user != null) {
-                this.username = user.getId();
-            }
-        } else {
-            getLogger().error(".act(): No identity yet");
-        }
-
-        getLogger().debug(".act(): Username: " + this.username);
-
-        return null;
-    }
-
-    /**
-     * Get the node.
-     * @return the node
-     */
-    protected Node getNode() {
-        return this.node;
-    }
-
-    /**
-     * Get the user name.
-     * @return the user name
-     */
-    protected String getUsername() {
-        return this.username;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/context/ContextUtility.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/context/ContextUtility.java
deleted file mode 100644
index 94b4c5a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/context/ContextUtility.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.components.context;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Response;
-
-/**
- * Utility class for getting the context, request, response and
- * object model of the current request.
- */
-public class ContextUtility extends AbstractLogEnabled implements
-        Component, Contextualizable {
-    /**
-     * The component's role.
-     */
-    public static final String ROLE = ContextUtility.class.getName();
-
-    protected Context context;
-
-    
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    /**
-     * Get the context object of the current request.
-     * @return The context object of the current request.
-     */
-    public Context getContext() {
-        return context;
-    }
-    
-    /**
-     * Get the request object of the current request.
-     * @return The request object of the current request.
-     */
-    public Request getRequest() {
-        return ContextHelper.getRequest(context);
-    }
-    
-    /**
-     * Get the response object of the current request.
-     * @return The response object of the current request.
-     */
-    public Response getResponse() {
-        return ContextHelper.getResponse(context);
-    }
-    
-    /**
-     * Get the object model of the current request.
-     * @return The object model of the current request.
-     */
-    public Map getObjectModel() {
-        return ContextHelper.getObjectModel(context);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
deleted file mode 100644
index b0978b4..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.io.File;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.Context;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Abstract superclass for classes which need access to the page envelope.
- * 
- * The web application URL can be provided in the attribute name, separated by a colon (":").
- */
-public abstract class AbstractPageEnvelopeModule extends OperationModule {
-
-    /**
-     * Get the the page envelope for the given objectModel.
-     * @param objectModel the objectModel for which the page enevelope is requested.
-     * @param name The attribute name.
-     * @return a <code>PageEnvelope</code>
-     * @throws ConfigurationException if the page envelope could not be instantiated.
-     */
-    protected PageEnvelope getEnvelope(Map objectModel, String name) throws ConfigurationException {
-
-        String webappUrl = null;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        PageEnvelope envelope = (PageEnvelope) request.getAttribute(PageEnvelope.class.getName());
-        if (envelope == null) {
-
-            String[] snippets = name.split(":");
-            if (snippets.length > 1) {
-                webappUrl = snippets[1];
-            } else {
-                webappUrl = ServletHelper.getWebappURI(request);
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Resolving page envelope for URL [" + webappUrl + "]");
-            }
-
-            String contextPath = request.getContextPath();
-            Context context = ObjectModelHelper.getContext(objectModel);
-            String servletContextPath = context.getRealPath("");
-
-            try {
-                DocumentFactory factory = getDocumentFactory();
-                Publication pub = null;
-                String pubId = new URLInformation(webappUrl).getPublicationId();
-                if (pubId != null && factory.existsPublication(pubId)) {
-                    pub = factory.getPublication(pubId);
-                }
-                envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(
-                        factory,
-                        contextPath,
-                        webappUrl,
-                        new File(servletContextPath),
-                        pub);
-            } catch (Exception e) {
-                throw new ConfigurationException("Resolving page envelope failed: ", e);
-            }
-            request.setAttribute(PageEnvelope.class.getName(), envelope);
-        }
-        return envelope;
-    }
-
-    /**
-     * @param name The original attribute name.
-     * @return The attribute name without URL attachment.
-     */
-    protected String getAttributeName(String name) {
-        final String[] snippets = name.split(":");
-        return snippets[0];
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java
deleted file mode 100644
index 583cf0c..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DateConverterModule.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-
-/**
- * The DateConverterModule converts a date string from one format into 
- * another format. 
- * The conversion is defined by the nested elements &lt;src-pattern/&gt; and 
- * &lt;pattern/&gt; of the module declaration.
- *
- */
-public class DateConverterModule extends AbstractInputModule implements ThreadSafe {
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
-        
-        String srcPattern = (String) this.settings.get("src-pattern");
-        String pattern = (String) this.settings.get("pattern");
-        
-        if (modeConf != null) {
-            srcPattern = modeConf.getChild("src-pattern").getValue(srcPattern);
-            pattern = modeConf.getChild("pattern").getValue(pattern);
-        }
-
-        if (srcPattern==null) {
-            throw new ConfigurationException("Source date pattern not specified.");
-        }
-        if (pattern==null) {
-            throw new ConfigurationException("Date pattern not specified.");
-        }
-        
-        try {
-            SimpleDateFormat srcFormat = new SimpleDateFormat(srcPattern); 
-            SimpleDateFormat format = new SimpleDateFormat(pattern);
-            Date date = srcFormat.parse(name);
-            return format.format(date);
-        } catch (Exception e) {
-            throw new ConfigurationException("Could not convert date: "+name, e);
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
deleted file mode 100644
index a2701c9..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id:$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Input module to get document information.
- * {doc-info:{publication-id}:{area}:{uuid}:{document-language}:{property}} where {property} may be:
- * <ul>
- * <li><strong><code>contentLength</code></strong> - the content length (number of bytes).</li>
- * <li><strong><code>expires</code></strong> - the expiration date in ISO 8601 format.</li>
- * <li><strong><code>lastModified</code></strong> - the last modification date in ISO 8601
- * format.</li>
- * <li><strong><code>mimeType</code></strong> - the MIME type</li>
- * <li><strong><code>nodeName</code></strong> - the name of the node in the site structure</li>
- * <li><strong><code>path</code></strong> - the path in the site structure (starting with a
- * slash) or an empty string if the document is not referenced in the site structure.</li>
- * <li><strong><code>resourceType</code></strong> - the name of the resource type</li>
- * <li><strong><code>sourceExtension</code></strong> - the source extension</li>
- * <li><strong><code>visibleInNav</code></strong> - <code>true</code> if the document's node
- * is visible in the navigation, <code>false</code> otherwise.</li>
- * <li><strong><code>webappUrl</code></strong> - the web application URL of the document or
- * an empty string if the document is not referenced in the site structure.</li>
- * </ul>
- */
-public class DocumentInfoModule extends AbstractInputModule implements Serviceable {
-
-    protected ServiceManager manager;
-
-    // Input module parameters:
-    protected final static String PARAM_PUBLICATION_ID = "publication-id";
-    protected final static String PARAM_AREA = "area";
-    protected final static String PARAM_UUID = "uuid";
-    protected final static String PARAM_DOCUMENT_LANGUAGE = "document-language";
-    protected final static String PARAM_PROPERTY = "property";
-    protected final static String PARAM_REVISION = "revision";
-    protected final static int MIN_MANDATORY_PARAMS = 5;
-
-    protected final static String UUID = "uuid";
-    protected final static String LANGUAGE = "language";
-    protected final static String PATH = "path";
-    protected final static String NODE_NAME = "nodeName";
-    protected final static String WEBAPP_URL = "webappUrl";
-    protected final static String DOCUMENT_URL = "documentUrl";
-    protected final static String RESOURCE_TYPE = "resourceType";
-    protected final static String LAST_MODIFIED = "lastModified";
-    protected final static String MIME_TYPE = "mimeType";
-    protected final static String CONTENT_LENGTH = "contentLength";
-    protected final static String SOURCE_EXTENSION = "sourceExtension";
-    protected final static String EXPIRES = "expires";
-    protected final static String VISIBLE_IN_NAVIGATION = "visibleInNav";
-
-    protected final static String[] PARAMS = { PARAM_PUBLICATION_ID, PARAM_AREA, PARAM_UUID,
-            PARAM_DOCUMENT_LANGUAGE, PARAM_PROPERTY, PARAM_REVISION };
-
-    protected final static String META_RESOURCE_TYPE = "resourceType";
-    protected final static String META_EXPIRES = "expires";
-
-    protected SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
-    
-    /**
-     * Parse the parameters and return a document.
-     * @param publicationId The publication ID.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @param language The document language.
-     * @param revision The revision.
-     * @param objectModel The object model.
-     * @return The document object created.
-     * @throws ConfigurationException
-     */
-    protected Document getDocument(String publicationId, String area, String uuid, String language,
-            int revision, Map objectModel) throws ConfigurationException {
-        Document document = null;
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory docFactory = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication pub = docFactory.getPublication(publicationId);
-            document = docFactory.get(pub, area, uuid, language, revision);
-        } catch (Exception e) {
-            throw new ConfigurationException("Error getting document [" + publicationId + ":"
-                    + area + ":" + uuid + ":" + language + "]: " + e.getMessage(), e);
-        }
-        return document;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object value = null;
-
-        InputModuleParameters params = new InputModuleParameters(name, PARAMS, MIN_MANDATORY_PARAMS);
-        
-        try {
-            int rev = -1;
-            if (params.isParameter(PARAM_REVISION)) {
-                String revision = params.getParameter(PARAM_REVISION);
-                if (!revision.equals("")) {
-                    rev = Integer.valueOf(revision).intValue();
-                }
-            }
-
-            Document document = getDocument(params.getParameter(PARAM_PUBLICATION_ID), params
-                    .getParameter(PARAM_AREA), params.getParameter(PARAM_UUID), params
-                    .getParameter(PARAM_DOCUMENT_LANGUAGE), rev, objectModel);
-            
-            String attribute = params.getParameter(PARAM_PROPERTY);
-
-            if (attribute.equals(RESOURCE_TYPE)) {
-                value = document.getResourceType().getName();
-            } else if (attribute.equals(LAST_MODIFIED)) {
-                value = this.dateFormat.format(new Date(document.getLastModified()));
-            } else if (attribute.equals(MIME_TYPE)) {
-                value = document.getMimeType();
-            } else if (attribute.equals(CONTENT_LENGTH)) {
-                value = Long.toString(document.getContentLength());
-            } else if (attribute.equals(SOURCE_EXTENSION)) {
-                value = document.getSourceExtension();
-            } else if (attribute.equals(LANGUAGE)) {
-                value = document.getLanguage();
-            } else if (attribute.equals(PATH)) {
-                value = document.getPath();
-            } else if (attribute.equals(NODE_NAME)) {
-                value = document.getName();
-            } else if (attribute.equals(UUID)) {
-                value = document.getUUID();
-            } else if (attribute.equals(WEBAPP_URL)) {
-                value = document.getCanonicalWebappURL();
-            } else if (attribute.equals(DOCUMENT_URL)) {
-                value = document.getCanonicalDocumentURL();
-            } else if (attribute.equals(EXPIRES)) {
-                try {
-                    Date expires = document.getExpires();
-                    value = this.dateFormat.format(expires);
-                } catch (DocumentException e) {
-                    throw new ConfigurationException("Error getting expires date from document.", e);
-                }
-            } else if (attribute.equals(VISIBLE_IN_NAVIGATION)) {
-                value = Boolean.toString(isVisibleInNavigation(document));
-            } else {
-                throw new ConfigurationException("Attribute '" + attribute + "' not supported ["
-                        + name + "]");
-            }
-        } catch (ConfigurationException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ConfigurationException("Error getting input module parameters.", e);
-        }
-
-        return value;
-    }
-
-    protected boolean isVisibleInNavigation(Document document) throws ConfigurationException {
-        try {
-            return document.getLink().getNode().isVisible();
-        } catch (DocumentException e) {
-            throw new ConfigurationException("Obtaining navigation visibility failed [" + document
-                    + "]: " + e.getMessage(), e);
-        }
-
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java
deleted file mode 100644
index 43fda03..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentURLModule.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.publication.util.DocumentHelper;
-
-/**
- * <p>
- * This module constructs the document url taking into account difference in the language .version
- * being created and used.
- * </p>
- * <p>
- * Example:
- * <code>{document-url:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}}</code>
- * </p>
- * @version $Id$
- */
-public class DocumentURLModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        String url;
-
-        final String[] attributes = name.split(":");
-
-        if (attributes.length < 3) {
-            throw new ConfigurationException("Invalid number of parameters: " + attributes.length
-                    + ". Expected 3 (area, document-uuid, language)");
-        }
-
-        final String area = attributes[0];
-        final String uuid = attributes[1];
-        final String language = attributes[2];
-
-        try {
-            DocumentHelper helper = new DocumentHelper(this.manager, objectModel);
-            url = helper.getDocumentUrl(uuid, area, language);
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-        }
-
-        return url;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-        return objects;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java
deleted file mode 100644
index a972be2..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/FallbackModule.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-
-/**
- * <p>
- * This module checks if a file exists in a publiation, and if not, it chooses the core file. The
- * attribute name must a path relatively to the <code>webapps/lenya/lenya</code> directory.
- * </p>
- * <p>
- * Example: <code>{fallback:xslt/style.xsl}</code> looks if
- * <code>lenya/pubs/(publication-id)/lenya/xslt/style.xsl</code> exists, and if not, it uses
- * <code>lenya/xslt/style.xsl</code>.
- * 
- * @version $Id$
- */
-public class FallbackModule extends AbstractPageEnvelopeModule {
-
-    private String[] baseUris;
-
-    /**
-     * <code>PATH_PREFIX</code> The path prefix from the webapp
-     */
-    public static final String PATH_PREFIX = "lenya/";
-
-    protected static final String ELEMENT_PATH = "directory";
-
-    protected static final String ATTRIBUTE_SRC = "src";
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration conf) throws ConfigurationException {
-        super.configure(conf);
-
-        Configuration[] pathConfigs = conf.getChildren(ELEMENT_PATH);
-        List baseUriList = new ArrayList();
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            Source source = null;
-            for (int i = 0; i < pathConfigs.length; i++) {
-                String uri = pathConfigs[i].getAttribute(ATTRIBUTE_SRC);
-                try {
-                    source = resolver.resolveURI(uri);
-                    if (source.exists()) {
-                        File file = SourceUtil.getFile(source);
-                        if (file.isDirectory()) {
-                            baseUriList.add(uri);
-                        } else {
-                            getLogger().warn("Omitting path [" + uri + "] (not a directory).");
-                        }
-                    } else {
-                        getLogger().warn("Omitting path [" + uri + "] (does not exist).");
-                    }
-                } catch (Exception e) {
-                    getLogger().error("Could not resolve path [" + uri + "]: ", e);
-                    throw e;
-                } finally {
-                    if (source != null) {
-                        resolver.release(source);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new ConfigurationException("Configuring failed: ", e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-        this.baseUris = (String[]) baseUriList.toArray(new String[baseUriList.size()]);
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Resolving file for path [" + name + "]");
-        }
-
-        String resolvedUri = resolveURI(name, objectModel);
-        return resolvedUri;
-    }
-
-    /**
-     * Resolves the URI for a certain path.
-     * @param path The path.
-     * @param objectModel The object model.
-     * @return A string.
-     * @throws ConfigurationException if an error occurs.
-     */
-    protected String resolveURI(final String path, Map objectModel) throws ConfigurationException {
-        String resolvedUri = null;
-        String checkedUris = "\n";
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            String[] _baseUris = getBaseURIs(objectModel, path);
-            Source source = null;
-            int i = 0;
-            while (resolvedUri == null && i < _baseUris.length) {
-                String uri = _baseUris[i] + "/" + path;
-
-                checkedUris += uri + "\n";
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Trying to resolve URI [" + uri + "]");
-                }
-
-                try {
-                    source = resolver.resolveURI(uri);
-                    if (source.exists()) {
-                        resolvedUri = uri;
-                    } else {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Skipping URI [" + uri + "] (does not exist).");
-                        }
-                    }
-                } catch (Exception e) {
-                    getLogger().error("Could not resolve URI [" + uri + "]: ", e);
-                    throw e;
-                } finally {
-                    if (source != null) {
-                        resolver.release(source);
-                    }
-                }
-                i++;
-            }
-
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + path + "] failed: ", e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-        if (resolvedUri == null) {
-            /*
-            throw new ConfigurationException("Could not resolve file for path [" + path + "]."
-                    + "\nChecked URIs:" + checkedUris);
-            */
-            resolvedUri = this.baseUris[this.baseUris.length - 1] + "/" + path;
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("No URI resolved, choosing last defined URI: [" + resolvedUri + "]");
-            }
-        }
-        else {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Resolved URI: [" + resolvedUri + "]");
-            }
-        }
-        return resolvedUri;
-    }
-
-    /**
-     * Returns the base directory URIs in the order they should be traversed.
-     * @param objectModel The object model.
-     * @param attributeName The name of the module attribute.
-     * @return An array of strings.
-     * @throws ConfigurationException if an error occurs.
-     */
-    protected String[] getBaseURIs(Map objectModel, String attributeName) throws ConfigurationException {
-        return this.baseUris;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java
deleted file mode 100644
index 2ab073d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/InputModuleParameters.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id:$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-
-/**
- * Input module parameter class.
- * Parses input module parameters and offers accessors for the parameters.
- * The parameters are expected to be separated by ":".
- */
-public class InputModuleParameters {
-    
-    protected final static char PARAM_SEPARATOR = ':';
-    
-    protected Parameters params;
-    protected final String[] paramList;
-    
-    /**
-     * Parse input module parameters. 
-     * @param parameters Parameter to be parsed.
-     * @param paramList List of expected parameters.
-     * @param minParams Minimum number of parameters expected.
-     * @throws ConfigurationException if there is an error parsing the parameters.
-     */
-    public InputModuleParameters(String parameters, final String[] paramList, int minParams)
-    throws ConfigurationException
-    {
-        params = new Parameters();
-        this.paramList = (String[])paramList.clone();
-        parseParameters(parameters, minParams);
-    }
-    
-    /**
-     * Parse parameters according to the parameter list passed.
-     * @param parameters
-     * @param minParams Minimum number of parameters.
-     * @return Parameters object initialized with parsed parameters.
-     * @throws ConfigurationException
-     */
-    protected Parameters parseParameters(String parameters, int minParams)
-    throws ConfigurationException
-    {
-        // Parse parameters
-        int start = 0;
-        int end = parameters.indexOf(PARAM_SEPARATOR);
-        for (int i=0; i<paramList.length; i++) {
-            if (end != -1) {
-                String paramToken = parameters.substring(start, end);
-                params.setParameter(paramList[i], paramToken);
-                start = end+1;
-                end = parameters.indexOf(PARAM_SEPARATOR, start+1);
-            } else {
-                if ((i+1) < minParams) {
-                    // A mandatory parameter is missing.
-                    throw new ConfigurationException("Error parsing parameters: mandatory parameter '"
-                            + paramList[i] + "' not found [" + parameters + "]");
-                } else if (i == 0) {
-                    // Zero or one parameter passed.
-                    if (parameters.length() != 0) {
-                        params.setParameter(paramList[i], parameters);
-                    }
-                    break;
-                } else {
-                    // All parameters parsed except the last one.
-                    String paramToken = parameters.substring(start);
-                    if (paramToken.length() != 0) {
-                        params.setParameter(paramList[i], paramToken);
-                    }
-                    break;
-                }
-            }
-        }
-        return params;
-    }
-    
-    /**
-     * Get a parameter.
-     * @param param Name of requested parameter.
-     * @return Requested parameter.
-     * @throws ParameterException if the specified parameter cannot be found
-     */
-    public String getParameter(String param) throws ParameterException
-    {
-        return params.getParameter(param);
-    }
-    
-    /**
-     * Does a parameter with given name exists?
-     * @param param Parameter name.
-     * @return True if parameters exists, otherwise false.
-     */
-    public boolean isParameter(String param) {
-        return params.isParameter(param);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
deleted file mode 100644
index cb8c6fe..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: DublinCoreModule.java 169299 2005-05-09 12:00:43Z jwkaltz $  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.metadata.Element;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.MetaDataRegistry;
-import org.apache.lenya.cms.publication.Document;
-
-/**
- * <p>
- * Input module to access meta data values. Use the name of the element as
- * input module parameter.
- * </p>
- * <p>Configuration:</p>
- * <pre>
- *  &lt;component-instance logger="sitemap.modules.input.dublincore" name="[...]"
- *    class="org.apache.lenya.cms.cocoon.components.modules.input.MetaDataModule"
- *    namespace="[namespace URI of the element set]"/&gt;
- * </pre>
- * <p>Usage examples:</p>
- * <ul>
- * <li><code>{dublincore:title}</code></li>
- * <li><code>{myMetData:myElementName}</code></li>
- * </ul>
- */
-public class MetaDataModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object value;
-
-        MetaData metaData = getCustomMetaData(objectModel);
-
-        if (!metaData.isValidAttribute(name)) {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported!");
-        }
-
-        try {
-            value = metaData.getFirstValue(name);
-        } catch (MetaDataException e) {
-            throw new ConfigurationException("Obtaining custom meta data value for [" + name
-                    + "] failed: ", e);
-        }
-
-        return value;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-            Element[] elements = registry.getElementSet(this.namespaceUri).getElements();
-            String[] keys = new String[elements.length];
-            for (int i = 0; i < keys.length; i++) {
-                keys[i] = elements[i].getName();
-            }
-            return Arrays.asList(keys).iterator();
-        } catch (Exception e) {
-            throw new ConfigurationException(e.getMessage(), e);
-        }
-        finally {
-            this.manager.release(registry);
-        }
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] values;
-        MetaData metaData = getCustomMetaData(objectModel);
-
-        if (!metaData.isValidAttribute(name)) {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported!");
-        }
-
-        try {
-            values = metaData.getValues(name);
-        } catch (MetaDataException e) {
-            throw new ConfigurationException("Obtaining custom meta data value for [" + name
-                    + "] failed: ", e);
-        }
-
-        return values;
-    }
-
-    protected MetaData getCustomMetaData(Map objectModel) throws ConfigurationException {
-        // FIXME: There seems to be no reason to pass the attribute name to get the page envelope.
-        Document document = getEnvelope(objectModel, "").getDocument();
-        if (document == null) {
-            throw new ConfigurationException("There is no document for this page envelope!");
-        }
-        MetaData metaData = null;
-        try {
-            metaData = document.getMetaData(this.namespaceUri);
-        } catch (MetaDataException e) {
-            throw new ConfigurationException("Obtaining custom meta data value for ["
-                    + document + "] failed: ", e);
-        }
-        return metaData;
-    }
-
-    private String namespaceUri;
-    
-    public void configure(Configuration conf) throws ConfigurationException {
-        super.configure(conf);
-        this.namespaceUri = conf.getAttribute("namespace");
-    }
-    
-    
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java
deleted file mode 100644
index 1c3d08d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/OperationModule.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Super class for operation-based input modules.
- * 
- * @version $Id$
- */
-public class OperationModule extends AbstractInputModule implements Serviceable,
-        Initializable, Contextualizable {
-
-    /**
-     * Ctor.
-     */
-    public OperationModule() {
-        super();
-    }
-
-    private DocumentFactory documentIdentityMap;
-
-    private Request request;
-
-    protected DocumentFactory getDocumentFactory() {
-        if (this.documentIdentityMap == null) {
-            try {
-                Session session = RepositoryUtil.getSession(this.manager, this.request);
-                this.documentIdentityMap = DocumentUtil.createDocumentFactory(this.manager, session);
-            } catch (RepositoryException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.documentIdentityMap;
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Initializable#initialize()
-     */
-    public void initialize() throws Exception {
-        // do nothing
-    }
-
-    public void contextualize(Context context) throws ContextException {
-        this.request = ContextHelper.getRequest(context);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
deleted file mode 100644
index c6a1b49..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.StringUtils;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Input module wrapping the page envelope. This module provides publication
- * related information such as document-uuid, area, publication-id.
- * 
- * @see org.apache.lenya.cms.publication.PageEnvelope
- * @deprecated use DocumentInfoModule instead.
- */
-public class PageEnvelopeModule extends AbstractPageEnvelopeModule {
-
-    protected static final String URI_PARAMETER_DOCTYPE = "doctype";
-    
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object getAttribute(final String attributeName, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        final String name = getAttributeName(attributeName);
-
-        if (!Arrays.asList(PageEnvelope.PARAMETER_NAMES).contains(name)) {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported!");
-        }
-
-        PageEnvelope envelope = getEnvelope(objectModel, attributeName);
-        Object value = null;
-
-        try {
-            if (name.equals(PageEnvelope.AREA)) {
-                value = envelope.getArea();
-            } else if (name.equals(PageEnvelope.CONTEXT)) {
-                value = envelope.getContext();
-            } else if (name.equals(PageEnvelope.IS_PUBLICATION)) {
-                value = Boolean.toString(envelope.getPublication() != null);
-            } else if (name.equals(PageEnvelope.PUBLICATION_ID)) {
-                Publication pub = envelope.getPublication();
-                value = pub != null ? pub.getId() : "";
-            } else if (name.equals(PageEnvelope.PUBLICATION)) {
-                value = envelope.getPublication();
-            } else if (name.equals(PageEnvelope.PUBLICATION_LANGUAGES_CSV)) {
-                value = StringUtils.join(envelope.getPublication().getLanguages(), ',');
-            } else if (name.equals(PageEnvelope.DEFAULT_LANGUAGE)) {
-                value = envelope.getPublication().getDefaultLanguage();
-            } else if (name.equals(PageEnvelope.LANGUAGE)) {
-                value = envelope.getLanguage();
-            } else if (name.equals(PageEnvelope.BREADCRUMB_PREFIX)) {
-                value = envelope.getPublication().getBreadcrumbPrefix();
-            } else if (name.equals(PageEnvelope.DOCUMENT_PATH)) {
-                value = getPath(envelope, objectModel);
-            } else {
-                Document document = envelope.getDocument();
-                if (document != null) {
-                    if (name.equals(PageEnvelope.DOCUMENT)) {
-                        value = document;
-                    } else if (name.equals(PageEnvelope.DOCUMENT_ID)) {
-                        getLogger().warn(
-                                "This attribute [ " + name + " ] is deprecated."
-                                        + " Use document-path or document-uuid instead!");
-                        value = document.getUUID();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_PARENT)) {
-                        value = document.getLocator().getParent().getPath();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_NAME)) {
-                        value = document.getName();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LABEL)) {
-                        value = document.getLink().getLabel();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_URL)) {
-                        value = document.getCanonicalDocumentURL();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_URL_WITHOUT_LANGUAGE)) {
-                        value = document.getCanonicalWebappURL();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_FILE)) {
-                        value = document.getFile();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_EXTENSION)) {
-                        value = document.getExtension();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_SOURCE_EXTENSION)) {
-                        value = document.getSourceExtension();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_UUID)) {
-                        value = document.getUUID();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGE)) {
-                        value = document.getLanguage();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGES)) {
-                        value = document.getLanguages();
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LANGUAGES_CSV)) {
-                        value = StringUtils.join(document.getLanguages(), ',');
-                    } else if (name.equals(PageEnvelope.DOCUMENT_LASTMODIFIED)) {
-                        Date date = new Date(document.getLastModified());
-                        value = new SimpleDateFormat(DATE_FORMAT).format(date);
-                    } else if (name.equals(PageEnvelope.DOCUMENT_TYPE)) {
-                        ResourceType resourceType = document.getResourceType();
-                        if (resourceType == null) {
-                            value = null;
-                        } else {
-                            value = resourceType.getName();
-                        }
-                    }
-                }
-            }
-        } catch (final Exception e) {
-            throw new ConfigurationException("Getting attribute for name [" + name + "] failed: ",
-                    e);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Returning [" + name + "] = [" + value + "]");
-        }
-
-        return value;
-    }
-
-    protected String getPath(PageEnvelope envelope, Map objectModel) throws SiteException {
-        String path;
-        Document doc = envelope.getDocument();
-        if (doc == null) {
-            Publication pub = envelope.getPublication();
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            String url = ServletHelper.getWebappURI(request);
-            DocumentLocator loc;
-            try {
-                loc = pub.getDocumentBuilder().getLocator(pub.getFactory(), url);
-            } catch (DocumentBuildException e) {
-                throw new SiteException(e);
-            }
-            path = loc.getPath();
-        } else {
-            path = doc.getLocator().getPath();
-        }
-        return path;
-    }
-
-    /**
-     * <code>DATE_FORMAT</code> The date format
-     */
-    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss Z";
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Arrays.asList(PageEnvelope.PARAMETER_NAMES).iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationFallbackModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationFallbackModule.java
deleted file mode 100644
index e94a8e8..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationFallbackModule.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Publication Fallback Module
- */
-public class PublicationFallbackModule extends FallbackModule {
-
-    /**
-     * Ctor.
-     */
-    public PublicationFallbackModule() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.components.modules.input.FallbackModule#getBaseURIs(java.util.Map,
-     *      java.lang.String)
-     */
-    protected String[] getBaseURIs(Map objectModel, String name) throws ConfigurationException {
-        String[] superUris = super.getBaseURIs(objectModel, name);
-        String[] uris = new String[superUris.length + 1];
-
-        PageEnvelope envelope = getEnvelope(objectModel, name);
-        String publicationId = envelope.getPublication().getId();
-
-        String publicationUri = "context://" + Publication.PUBLICATION_PREFIX_URI + "/"
-                + publicationId + "/lenya";
-        uris[0] = publicationUri;
-
-        for (int i = 0; i < superUris.length; i++) {
-            uris[i + 1] = superUris[i];
-        }
-
-        return uris;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java
deleted file mode 100644
index 16174d3..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * This module uses publication templating to resolve the real path for a resource. The current
- * publication ID can be provided as a parameter: <code>{fallback:{pub-id}:foo/bar}</code>. This
- * is especially useful for cocoon:// request which are triggered from non-environment components
- * (e.g. the scheduler).
- * 
- * @version $Id$
- */
-public class PublicationTemplateFallbackModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * Ctor.
-     */
-    public PublicationTemplateFallbackModule() {
-        super();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(final String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Resolving publication template for file [" + name + "]");
-        }
-
-        String resolvedUri = null;
-
-        try {
-            String targetUri = null;
-
-            // check if publication ID is provided in attribute name
-            if (name.indexOf(":") > -1) {
-                String[] parts = name.split(":");
-                if (parts.length > 2) {
-                    throw new RuntimeException("The attribute may not contain more than one colons!");
-                }
-                String publicationId = parts[0];
-                targetUri = parts[1];
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Publication ID provided explicitely: [" + publicationId
-                            + "]");
-                }
-
-            } else {
-                targetUri = name;
-            }
-
-            SourceResolver resolver = null;
-            try {
-                resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-                resolvedUri = resolver.resolveURI("fallback://" + targetUri).getURI();
-            } finally {
-                if (resolver != null) {
-                    this.manager.release(resolver);
-                }
-            }
-            
-        } catch (final Exception e) {
-            String message = "Resolving path [" + name + "] failed: ";
-            getLogger().error(message, e);
-            throw new ConfigurationException(message, e);
-        }
-        return resolvedUri;
-    }
-
-    /**
-     * Returns the base URI for a certain publication.
-     * @param publication The publication.
-     * @return A string.
-     */
-    public static String getBaseURI(Publication publication) {
-        String publicationUri = "context://" + Publication.PUBLICATION_PREFIX_URI + "/"
-                + publication.getId();
-        return publicationUri;
-    }
-
-    /**
-     * Returns the base URI for a certain publication including the prefix "lenya".
-     * @param publication The publication.
-     * @return A string.
-     */
-    protected String getLenyaBaseURI(Publication publication) {
-        String publicationUri = "context://" + Publication.PUBLICATION_PREFIX_URI + "/"
-                + publication.getId() + "/lenya";
-        return publicationUri;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java
deleted file mode 100644
index c40ab46..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Checks if a certain resource exists and returns either the string "true" or "false".
- * @version $Id$
- */
-public class ResourceExistsModule extends AbstractInputModule implements Serviceable, Disposable {
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        String resourceURI = name;
-
-        Source source = null;
-        boolean exists = false;
-        try {
-            source = this.resolver.resolveURI(resourceURI);
-            exists = source.exists();
-        } catch (SourceNotFoundException e) {
-            exists = false;
-        } catch (Exception e) {
-            getLogger().warn("Exception resolving resource [" + resourceURI + "]", e);
-            exists = false;
-        } finally {
-            if (source != null) {
-                this.resolver.release(source);
-            }
-        }
-
-        return Boolean.toString(exists);
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    private ServiceManager manager;
-    private SourceResolver resolver;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-        this.resolver = (SourceResolver) _manager.lookup(SourceResolver.ROLE);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        super.dispose();
-        this.manager.release(this.resolver);
-        this.resolver = null;
-        this.manager = null;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object result = this.getAttribute(name, modeConf, objectModel);
-        return (result == null ? null : new Object[] { result });
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java b/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
deleted file mode 100644
index 56c3326..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceTypeModule.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.StringUtils;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * <p>
- * Resource type module.
- * </p>
- * <p>
- * The syntax is either <code>{resource-type:&lt;attribute&gt;}</code> (which uses the resource
- * type of the currenlty requested document) or
- * <code>{resource-type:&lt;name&gt;:&lt;attribute&gt;}</code> (which allows to access an
- * arbitrary resource type).
- * </p>
- * <p>
- * Attributes:
- * </p>
- * <ul>
- * <li><strong><code>expires</code></strong> - the expiration date in RFC 822/1123 format, see
- * {@link org.apache.lenya.cms.publication.ResourceType#getExpires()}</li>
- * <li><strong><code>schemaUri</code></strong> - see
- * {@link org.apache.lenya.xml.Schema#getURI()}</li>
- * <li><strong><code>httpSchemaUri</code></strong> - the URI to request the schema over HTTP, without Proxy and context (use {proxy:} around it).</li>
- * <li><strong><code>supportsFormat:{format}</code></strong> - true if the resource type
- * supports this format, false otherwise</li>
- * </ul>
- */
-public class ResourceTypeModule extends AbstractInputModule implements Serviceable {
-
-    protected static final String SCHEMA_URI = "schemaUri";
-    protected static final String HTTP_SCHEMA_URI = "httpSchemaUri";
-    protected static final String EXPIRES = "expires";
-    protected static final String SUPPORTS_FORMAT = "supportsFormat";
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object value = null;
-
-        try {
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            Session session = RepositoryUtil.getSession(this.manager, request);
-
-            ResourceType resourceType;
-            Publication pub = null;
-            String attribute;
-
-            String[] steps = name.split(":");
-            if (steps.length == 1) {
-                DocumentFactory docFactory = DocumentUtil.createDocumentFactory(this.manager,
-                        session);
-                String webappUrl = ServletHelper.getWebappURI(request);
-                Document document = docFactory.getFromURL(webappUrl);
-                pub = document.getPublication();
-
-                attribute = name;
-                resourceType = document.getResourceType();
-            } else {
-                attribute = steps[1];
-                String resourceTypeName = steps[0];
-
-                ServiceSelector selector = null;
-                try {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-                    resourceType = (ResourceType) selector.select(resourceTypeName);
-                } finally {
-                    this.manager.release(selector);
-                }
-            }
-
-            if (attribute.startsWith("format-")) {
-                String[] formatSteps = name.split("-");
-                String format = formatSteps[1];
-                value = resourceType.getFormatURI(format);
-            } else if (attribute.equals(SCHEMA_URI)) {
-                value = resourceType.getSchema().getURI();
-            } else if (attribute.equals(HTTP_SCHEMA_URI)) {
-                String uri = resourceType.getSchema().getURI();
-                value = transformFallbackUriToHttp(pub.getId(), uri);
-            } else if (attribute.equals(EXPIRES)) {
-                Date expires = resourceType.getExpires();
-                SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss zzz");
-                value = sdf.format(expires);
-            } else if (attribute.equals(SUPPORTS_FORMAT)) {
-                String format = steps[steps.length - 1];
-                String[] formats = resourceType.getFormats();
-                return Boolean.toString(Arrays.asList(formats).contains(format));
-            } else {
-                throw new ConfigurationException("Attribute [" + name + "] not supported!");
-            }
-
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-        }
-
-        return value;
-    }
-
-    /**
-     * Transforms a fallback URI for resources into a HTTP URL.
-     * 
-     * Currently only supports module urls:
-     * 
-     * fallback://lenya/modules/foo/resources/schemas/bar.rng ->
-     * prefix/pubid/modules/foo/schemas/bar.rng
-     * 
-     * FIXME: allow other kind of fallback URIs
-     * 
-     * @param pubid publication id of the current document
-     * @param prefix prefix which will be prepended to the resulting URL
-     * @param uri fallback uri, must start with fallback://
-     * @return A string.
-     * @throws ConfigurationException
-     */
-    protected String transformFallbackUriToHttp(String pubid, String uri)
-            throws ConfigurationException {
-        if (uri.startsWith("fallback://lenya/modules/")) {
-            String path = StringUtils.substringAfter(uri, "fallback://lenya/modules/");
-            String module = StringUtils.substringBefore(path, "/");
-            path = StringUtils.substringAfter(path, module + "/resources");
-            return "/" + pubid + "/modules/" + module + path;
-        } else {
-            throw new ConfigurationException("Don't know how to create HTTP URL from : " + uri);
-        }
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java b/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
deleted file mode 100644
index ae95fab..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.flow;
-
-import java.util.Map;
-
-import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeException;
-import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Flowscript utility class.
- * @version $Id$
- */
-public interface FlowHelper {
-	
-    /**
-     * The Avalon Role.
-     */
-    String ROLE = FlowHelper.class.getName();
-
-    /**
-     * Returns the current page envelope.
-     * @param cocoon The FOM_Cocoon object.
-     * @return A page envelope.
-     * @throws PageEnvelopeException when something went wrong.
-     */
-    PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException;
-
-    /**
-     * Returns the request URI of the current request.
-     * @param cocoon The FOM_Cocoon object.
-     * @return A string.
-     */
-    String getRequestURI(FOM_Cocoon cocoon);
-
-    /**
-     * Returns the request object of the current request.
-     * @param cocoon The FOM_Cocoon object.
-     * @return A request object.
-     */
-    Request getRequest(FOM_Cocoon cocoon);
-
-    /**
-     * Returns the Cocoon Object Model
-     * @param cocoon The Flow Object Model of Cocoon
-     * @return The object model
-     */
-    Map getObjectModel(FOM_Cocoon cocoon);
-
-    /**
-     * Returns a DocumentHelper instance.
-     * @param cocoon The Flow Object Model of Cocoon
-     * @return The document helper
-     * @see DocumentHelper
-     */
-    DocumentHelper getDocumentHelper(FOM_Cocoon cocoon);
-
-    /**
-     * Resolves the request parameter value for a specific name. The parameter
-     * names are encoded as <code>{name}:{value}.{axis}</code>. This is a
-     * workaround for the &lt;input type="image"/&gt; bug in Internet Explorer.
-     * @param cocoon The FOM_Cocoon object.
-     * @param parameterName The request parameter name.
-     * @return A string.
-     */
-    String getImageParameterValue(FOM_Cocoon cocoon, String parameterName);
-
-    /**
-     * Trigger a workflow event for the document associated with the current
-     * PageEnvelope.
-     * @param cocoon The Cocoon Flow Object Model
-     * @param event The name of the workflow event to trigger.
-     * @throws WorkflowException If an workflow error occurs
-     * @throws PageEnvelopeException Page envelope can not operate properly.
-     * @throws AccessControlException If an access control violation occurs.
-     */
-    void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
-            PageEnvelopeException, AccessControlException;
-
-    /**
-     * Checkis in the current document from the PageEnvelope context.
-     * @param cocoon The Cocoon Flow Object Model
-     * @param backup Wether a new revision should be created.
-     * @throws FileReservedCheckInException
-     * @throws Exception
-     */
-    void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws FileReservedCheckInException,
-            Exception;
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java b/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
deleted file mode 100644
index f81d932..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.flow;
-
-import java.util.Enumeration;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeException;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Flowscript utility class. The FOM_Cocoon object is not passed in the constructor to avoid errors.
- * This way, not the initial, but the current FOM_Cocoon object is used by the methods.
- */
-public class FlowHelperImpl extends AbstractLogEnabled implements FlowHelper, Serviceable {
-
-    /**
-     * Ctor.
-     */
-    public FlowHelperImpl() {
-        // do nothing
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getPageEnvelope(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
-     */
-    public PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException {
-        Request request = getRequest(cocoon);
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-            PageEnvelopeFactory factory = PageEnvelopeFactory.getInstance();
-            Publication publication = PublicationUtil.getPublication(this.manager, request);
-            return factory.getPageEnvelope(map, cocoon.getObjectModel(), publication);
-        } catch (Exception e) {
-            throw new PageEnvelopeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getRequestURI(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
-     */
-    public String getRequestURI(FOM_Cocoon cocoon) {
-        return cocoon.getRequest().getRequestURI();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getRequest(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
-     */
-    public Request getRequest(FOM_Cocoon cocoon) {
-        return cocoon.getRequest();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getObjectModel(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
-     */
-    public Map getObjectModel(FOM_Cocoon cocoon) {
-        return cocoon.getObjectModel();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getDocumentHelper(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
-     */
-    public DocumentHelper getDocumentHelper(FOM_Cocoon cocoon) {
-        return new DocumentHelper(this.manager, cocoon.getObjectModel());
-    }
-
-    /**
-     * <code>SEPARATOR</code> The separator
-     */
-    public static final String SEPARATOR = ":";
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getImageParameterValue(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
-     *      java.lang.String)
-     */
-    public String getImageParameterValue(FOM_Cocoon cocoon, String parameterName) {
-
-        getLogger().debug("Resolving parameter value for name [" + parameterName + "]");
-
-        Request request = cocoon.getRequest();
-        String value = request.getParameter(parameterName);
-
-        if (value == null) {
-            String prefix = parameterName + SEPARATOR;
-            Enumeration e = request.getParameterNames();
-            while (e.hasMoreElements() && value == null) {
-                String name = (String) e.nextElement();
-                if (name.startsWith(prefix)) {
-                    getLogger().debug("Complete parameter name: [" + name + "]");
-                    value = name.substring(prefix.length(), name.length() - 2);
-                    getLogger().debug("Resolved value: [" + value + "]");
-                }
-            }
-        }
-
-        return value;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#triggerWorkflow(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
-     *      java.lang.String)
-     */
-    public void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
-            PageEnvelopeException, AccessControlException {
-        Document document = getPageEnvelope(cocoon).getDocument();
-        Request request = getRequest(cocoon);
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            WorkflowUtil.invoke(this.manager, session, getLogger(), document, event);
-        } catch (Exception e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#reservedCheckIn(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
-     *      boolean)
-     */
-    public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup)
-            throws FileReservedCheckInException, Exception {
-        final PageEnvelope pageEnvelope = getPageEnvelope(cocoon);
-        Node node = pageEnvelope.getDocument().getRepositoryNode();
-        node.checkin();
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java b/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java
deleted file mode 100644
index 9fc6470..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.generation;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.caching.CacheableProcessingComponent;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.generation.ServiceableGenerator;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.excalibur.source.impl.validity.TimeStampValidity;
-import org.apache.excalibur.xml.dom.DOMParser;
-import org.apache.lenya.cms.cocoon.source.RepositorySource;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.repository.ContentHolder;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * <p>
- * Generates the meta data of a document. The <code>src</code> attribute must be
- * a {@link RepositorySource} URI (e.g., <code>lenya-document:...</code>).
- * </p>
- * <p>
- * Example output:
- * </p>
- * 
- * <pre>
- *  &lt;lenya:metadata xmlns:lenya=&quot;http://apache.org/cocoon/lenya/metadata/1.0&quot;&gt;
- *  &lt;elements xmlns=&quot;http://purl.org/dc/elements/1.1/&quot;&gt;
- *  &lt;title&gt;Search&lt;/title&gt;
- *  &lt;date&gt;2006-06-12 13:43:14&lt;/date&gt;
- *  &lt;language&gt;en&lt;/language&gt;
- *  &lt;creator&gt;lenya&lt;/creator&gt;
- *  &lt;/elements&gt;
- *  &lt;elements xmlns=&quot;http://apache.org/lenya/metadata/document/1.0&quot;&gt;
- *  &lt;extension&gt;xml&lt;/extension&gt;
- *  &lt;resourceType&gt;usecase&lt;/resourceType&gt;
- *  &lt;contentType&gt;xml&lt;/contentType&gt;
- *  &lt;/elements&gt;
- *  &lt;/lenya:metadata&gt;
- * </pre>
- */
-public class LenyaMetaDataGenerator extends ServiceableGenerator implements
-        CacheableProcessingComponent {
-
-    /** Node and attribute names */
-    protected AttributesImpl attributes;
-
-    /** Metadata */
-    protected static final String ROOT_META_NODE_NAME = "meta";
-
-    /** The URI of the namespace of the metadata */
-    protected static final String URI_META = "http://apache.org/cocoon/lenya/metadata/1.0";
-
-    /** The namespace prefix for this namespace */
-    protected static final String PREFIX_META = "lenya";
-
-    /** The parser for the XML snippets to be included. */
-    protected DOMParser parser = null;
-    
-    private String src;
-    
-    /** The repository content holder to generate the meta data for */
-    private ContentHolder content;
-
-    /**
-     * Recycle this component. All instance variables are set to <code>null</code>.
-     */
-    public void recycle() {
-        this.content = null;
-        this.src = null;
-        this.parser = null;
-        super.recycle();
-    }
-    
-    /**
-     * Serviceable
-     * 
-     * @param manager the ComponentManager
-     * 
-     * @throws ServiceException in case a component could not be found
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        super.service(manager);
-        this.parser = (DOMParser) manager.lookup(DOMParser.ROLE);
-        this.attributes = new AttributesImpl();
-    }
-
-    /**
-     * Setup the file generator. Try to get the last modification date of the source for caching.
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
-            throws ProcessingException, SAXException, IOException {
-        
-        super.setup(resolver, objectModel, src, par);
-        this.src = src;
-        
-        RepositorySource source = null;
-        try {
-            source = (RepositorySource) resolver.resolveURI(src);
-            this.content = source.getContent();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        finally {
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-    }
-
-    /**
-     * Generate the unique key. This key must be unique inside the space of this component.
-     * 
-     * @return The generated key hashes the src
-     */
-    public Serializable getKey() {
-        return this.src;
-    }
-
-    /**
-     * Generate the validity object.
-     * 
-     * @return The generated validity object or <code>null</code> if the component is currently
-     *         not cacheable.
-     */
-    public SourceValidity getValidity() {
-        long lastModified;
-        try {
-            lastModified = this.content.getLastModified();
-        } catch (Exception e) {
-            getLogger().error("Error determining last modification date", e);
-            return null;
-        }
-        return new TimeStampValidity(lastModified);
-    }
-
-    /**
-     * Generate XML data.
-     */
-    public void generate() throws IOException, SAXException, ProcessingException {
-        startNodeRoot();
-        performIncludesMeta();
-        endNodeRoot();
-    }
-
-    private void performIncludesMeta() throws SAXException, ProcessingException {
-
-        try {
-            String[] namespaces = this.content.getMetaDataNamespaceUris();
-            for (int i = 0; i < namespaces.length; i++) {
-                this.contentHandler.startPrefixMapping("", namespaces[i]);
-                startNodeMeta(namespaces[i]);
-                parseMetaData(namespaces[i]);
-                endNodeMeta(namespaces[i]);
-                this.contentHandler.endPrefixMapping("");
-            }
-        } catch (MetaDataException e) {
-            throw new ProcessingException(e);
-        }
-
-    }
-
-    private void parseMetaData(String namespace) throws ProcessingException, SAXException {
-        MetaData metaData = getMetaData(namespace);
-        String[] names = metaData.getAvailableKeys();
-        for (int i = 0; i < names.length; i++) {
-            String[] values;
-            try {
-                values = metaData.getValues(names[i]);
-            } catch (MetaDataException e) {
-                throw new ProcessingException(e);
-            }
-            for (int j = 0; j < values.length; j++) {
-                this.contentHandler.startElement(namespace, names[i], names[i],
-                        new AttributesImpl());
-                char[] valueChars = values[j].toCharArray();
-                this.contentHandler.characters(valueChars, 0, valueChars.length);
-                this.contentHandler.endElement(namespace, names[i], names[i]);
-            }
-        }
-    }
-
-    private void endNodeRoot() throws SAXException {
-        this.contentHandler.endElement(URI_META, "metadata", PREFIX_META + ":metadata");
-        this.contentHandler.endPrefixMapping(PREFIX_META);
-        this.contentHandler.endDocument();
-    }
-
-    private void startNodeRoot() throws SAXException {
-        this.contentHandler.startDocument();
-        this.contentHandler.startPrefixMapping(PREFIX_META, URI_META);
-        this.contentHandler.startElement(URI_META, "metadata", PREFIX_META + ":metadata",
-                attributes);
-    }
-
-    private void startNodeMeta(String namespace) throws SAXException {
-        this.contentHandler.startElement(namespace, "elements", "elements", attributes);
-    }
-
-    private void endNodeMeta(String namespace) throws SAXException {
-        this.contentHandler.endElement(namespace, "elements", "elements");
-    }
-
-    protected MetaData getMetaData(String namespaceUri) throws ProcessingException {
-        try {
-            return this.content.getMetaData(namespaceUri);
-        } catch (Exception e1) {
-            throw new ProcessingException("Obtaining meta data value for [" + this.content
-                    + "] failed: ", e1);
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/selection/LastModSourceSelector.java b/trunk/src/java/org/apache/lenya/cms/cocoon/selection/LastModSourceSelector.java
deleted file mode 100644
index e9b407f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/selection/LastModSourceSelector.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.selection;
-
-import org.apache.cocoon.selection.Selector;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-
-import java.util.Map;
-
-/**
- * <p>
- * Last Modified Source Selector.
- * </p>
- * 
- * <pre>
- *  &lt;map:selector name="last-mod" src="org.apache.lenya.cms.cocoon.selection.LastModSourceSelector"/&gt;
- *
- *   &lt;map:select type="last-mod"&gt;
- *      &lt;map:parameter name="compare-to" value="{sourceToCompareTo}"/&gt;
- *
- *      &lt;map:when test="cachedsource"&gt;
- *         &lt;!-- executes iff cachedsource last-modified  &gt; courceToCompareTo last-modified --&gt;
- *         &lt;map:read src="{cachedsource}" mime-type="text/xml; charset=utf-8"/&gt;
- *      &lt;/map:when&gt;
- *      &lt;map:otherwise&gt;
- *         &lt;map:read src="{sourceToCompareTo}" mime-type="text/xml; charset=utf-8"/&gt;
- *      &lt;/map:otherwise&gt;
- *   &lt;/map:select&gt;
- * </pre>
- */
-
-public class LastModSourceSelector extends AbstractLogEnabled
-                 implements ThreadSafe, Serviceable, Disposable, Selector {
-
-    private ServiceManager manager;
-    private SourceResolver resolver;
-    private Source source = null;
-    private Source compare = null;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-        this.resolver = (SourceResolver)manager.lookup(SourceResolver.ROLE);
-    }
-
-    public void dispose() {
-        if (null != this.source) {
-            resolver.release(this.source);
-            this.source = null;
-        }
-        if (null != this.compare) {
-            resolver.release(this.compare);
-            this.compare = null;
-        }
-        this.manager.release(this.resolver);
-        this.resolver = null;
-        this.manager = null;
-    }
-
-    public boolean select(String expression, Map objectModel, Parameters parameters) {
-        String sourceToCompare = parameters.getParameter("compare-to",null);
-        String compareToSource = expression;
-        long sourceModDate = 0;
-        long compareModDate = 0;
-        try {
-            source = resolver.resolveURI(sourceToCompare);
-            sourceModDate = source.getLastModified();
-            compare = resolver.resolveURI(compareToSource);
-            compareModDate = compare.getLastModified();
-        } catch (SourceNotFoundException e) {
-            return false;
-        } catch (Exception e) {
-            getLogger().warn("Exception resolving resource ", e);
-            return false;
-        }
-        boolean isNewer = (compareModDate > sourceModDate);        
-
-        return (sourceToCompare != null && isNewer);
-        
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/serialization/LinkSerializer.java b/trunk/src/java/org/apache/lenya/cms/cocoon/serialization/LinkSerializer.java
deleted file mode 100644
index 9a41a81..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/serialization/LinkSerializer.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.serialization;
-
-import org.apache.cocoon.serialization.Serializer;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.xml.xlink.ExtendedXLinkPipe;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-
-/**
- * Link serializer.
- * TODO: add meaningful javadocs
- */
-public class LinkSerializer extends ExtendedXLinkPipe implements Serializer {
-
-    private PrintStream out;
-
-    /**
-     * Set the {@link OutputStream} where the requested resource should be serialized.
-     */
-    public void setOutputStream(OutputStream out) throws IOException {
-        this.out = new PrintStream(out);
-    }
-
-    /**
-     * Get the mime-type of the output of this <code>Component</code>.
-     */
-    public String getMimeType() {
-        return Constants.LINK_CONTENT_TYPE;
-    }
-
-    public void simpleLink(String href, String role, String arcrole, String title, String show,
-            String actuate, String uri, String name, String raw, Attributes attr)
-            throws SAXException {
-        print(href);
-        super.simpleLink(href, role, arcrole, title, show, actuate, uri, name, raw, attr);
-    }
-
-    public void startLocator(String href, String role, String title, String label, String uri,
-            String name, String raw, Attributes attr) throws SAXException {
-        if (traversable(href)) {
-            print(href);
-        }
-        super.startLocator(href, role, title, label, uri, name, raw, attr);
-    }
-
-    private boolean traversable(String href) {
-        if (href.length() == 0)
-            return false;
-        if (href.charAt(0) == '#')
-            return false;
-        if (href.indexOf("://") != -1)
-            return false;
-        if (href.startsWith("mailto:"))
-            return false;
-        if (href.startsWith("news:"))
-            return false;
-        if (href.startsWith("javascript:"))
-            return false;
-        return true;
-    }
-
-    private void print(String href) {
-        int ankerPos = href.indexOf('#');
-        if (ankerPos == -1) {
-            // TODO: Xalan encodes international characters into URL encoding
-            out.println(href);
-        } else {
-            out.println(href.substring(0, ankerPos));
-        }
-    }
-
-    /**
-     * Test if the component wants to set the content length
-     */
-    public boolean shouldSetContentLength() {
-        return false;
-    }
-
-    /**
-     * Recyclable
-     */
-    public void recycle() {
-        super.recycle();
-        this.out = null;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
deleted file mode 100644
index 0e6d4fc..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.excalibur.source.URIAbsolutizer;
-import org.apache.lenya.cms.module.ModuleManager;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationManager;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.publication.templating.AllExistingSourceResolver;
-import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
-
-/**
- * Aggregate all existing fallback URIs by merging their XML content under
- * the document element of the first encountered source.
- */
-public class AggregatingFallbackSourceFactory extends AbstractLogEnabled implements SourceFactory,
-        Serviceable, Contextualizable, URIAbsolutizer {
-
-    public Source getSource(final String location, Map parameters) throws IOException,
-            MalformedURLException {
-
-        // Remove the protocol and the first '//'
-        int pos = location.indexOf("://");
-
-        if (pos == -1) {
-            throw new RuntimeException("The location [" + location
-                    + "] does not contain the string '://'");
-        }
-
-        String path = location.substring(pos + 3);
-        String publicationId = null;
-
-        // allow for template-fallback://{pubid}//{path} for the sake of the
-        // cocoon use-store
-        if (path.indexOf("//") > 1) {
-            pos = path.indexOf("//");
-            publicationId = path.substring(0, pos);
-            path = path.substring(pos + 2, path.length());
-        }
-
-        if (path.length() == 0) {
-            throw new RuntimeException("The path after the protocol must not be empty!");
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Location:     [" + location + "]");
-            getLogger().debug("Path:         [" + path + "]");
-        }
-
-        PublicationTemplateManager templateManager = null;
-        try {
-            templateManager = (PublicationTemplateManager) this.manager
-                    .lookup(PublicationTemplateManager.ROLE);
-
-            Request request = ContextHelper.getRequest(this.context);
-
-            if (publicationId == null) {
-                String webappUrl = request.getRequestURI().substring(
-                        request.getContextPath().length());
-
-                URLInformation info = new URLInformation(webappUrl);
-                publicationId = info.getPublicationId();
-            }
-
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-
-            String[] uris;
-
-            if (factory.existsPublication(publicationId)) {
-                Publication pub = factory.getPublication(publicationId);
-                AllExistingSourceResolver resolver = new AllExistingSourceResolver();
-                templateManager.visit(pub, path, resolver);
-                uris = resolver.getUris();
-            } else {
-                uris = new String[0];
-            }
-            
-            List allUris = new ArrayList();
-            allUris.addAll(Arrays.asList(uris));
-            
-            String contextSourceUri = null;
-            if (path.startsWith("lenya/modules/")) {
-                ModuleManager moduleMgr = null;
-                try {
-                    moduleMgr = (ModuleManager) this.manager.lookup(ModuleManager.ROLE);
-                    final String moduleShortcut = path.split("/")[2];
-                    String baseUri = moduleMgr.getBaseURI(moduleShortcut);
-                    final String modulePath = path.substring(("lenya/modules/" + moduleShortcut).length());
-                    contextSourceUri = baseUri + modulePath;
-                } finally {
-                    if (moduleMgr != null) {
-                        this.manager.release(moduleMgr);
-                    }
-                }
-            } else {
-                contextSourceUri = "context://" + path;
-            }
-            if (org.apache.lenya.cms.cocoon.source.SourceUtil.exists(contextSourceUri, this.manager)) {
-                allUris.add(contextSourceUri);
-            }
-
-            String[] aggregateUris = (String[]) allUris.toArray(new String[allUris.size()]); 
-            return new AggregatingSource(location, aggregateUris, this.manager);
-
-        } catch (Exception e) {
-            throw new RuntimeException("Resolving path [" + location + "] failed: ", e);
-        } finally {
-            if (templateManager != null) {
-                this.manager.release(templateManager);
-            }
-        }
-    }
-
-    public void release(Source source) {
-    }
-
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    private Context context;
-
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    public String absolutize(String baseURI, String location) {
-        return SourceUtil.absolutize(baseURI, location, true);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingSource.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingSource.java
deleted file mode 100644
index 38c4bed..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingSource.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package org.apache.lenya.cms.cocoon.source;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.source.impl.MultiSourceValidity;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * 
- */
-public class AggregatingSource implements Source {
-
-    private String uri;
-    private String[] sourceUris;
-    private ServiceManager manager;
-
-    /**
-     * @param uri
-     * @param uris
-     * @param manager
-     */
-    public AggregatingSource(String uri, String[] uris, ServiceManager manager) {
-        this.manager = manager;
-        this.sourceUris = (String[])uris.clone();
-        this.uri = uri;
-    }
-
-    public String toString() {
-        return getURI();
-    }
-
-    protected void loadDom() {
-        try {
-            for (int i = 0; i < sourceUris.length; i++) {
-                Document sourceDom = SourceUtil.readDOM(sourceUris[i], this.manager);
-
-                if (sourceDom == null) {
-                    throw new RuntimeException("The source [" + sourceUris[i]
-                            + "] doesn't contain XML.");
-                }
-
-                Element docElement = sourceDom.getDocumentElement();
-                if (this.dom == null) {
-                    String namespaceUri = docElement.getNamespaceURI();
-                    String prefix = docElement.getPrefix();
-                    String localName = docElement.getLocalName();
-
-                    if (namespaceUri == null) {
-                        this.dom = DocumentHelper.createDocument(null, localName, null);
-                    } else {
-                        NamespaceHelper helper = new NamespaceHelper(namespaceUri, prefix,
-                                localName);
-                        this.dom = helper.getDocument();
-                    }
-                }
-
-                Element[] elements = DocumentHelper.getChildren(docElement);
-                for (int e = 0; e < elements.length; e++) {
-                    Element clone = (Element) this.dom.importNode(elements[e], true);
-                    this.dom.getDocumentElement().appendChild(clone);
-                }
-            }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private Document dom;
-    private byte[] data;
-
-    protected Document getDom() {
-        if (this.dom == null) {
-            loadDom();
-        }
-        return this.dom;
-    }
-
-    protected byte[] getData() {
-        if (this.data == null) {
-            Document dom = getDom();
-            if (dom != null) {
-                ByteArrayOutputStream out = new ByteArrayOutputStream();
-                try {
-                    DocumentHelper.writeDocument(dom, out);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-                this.data = out.toByteArray();
-            }
-        }
-        return this.data;
-    }
-
-    public boolean exists() {
-        return this.sourceUris.length > 0;
-    }
-
-    public long getContentLength() {
-        return getData().length;
-    }
-
-    public InputStream getInputStream() throws IOException, SourceNotFoundException {
-        if (!exists()) {
-            throw new RuntimeException(this + " does not exist!");
-        }
-        return new ByteArrayInputStream(getData());
-    }
-
-    public long getLastModified() {
-        long lastModified = 0;
-        for (int i = 0; i < this.sourceUris.length; i++) {
-            try {
-                lastModified = Math.max(lastModified, SourceUtil.getLastModified(sourceUris[i],
-                        this.manager));
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return lastModified;
-    }
-
-    public String getMimeType() {
-        return "application/xml";
-    }
-
-    public String getScheme() {
-        return "aggregate-template";
-    }
-
-    public String getURI() {
-        return this.uri;
-    }
-
-    private SourceValidity validity;
-
-    public SourceValidity getValidity() {
-        if (this.validity == null) {
-            SourceResolver resolver = null;
-            try {
-                resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-                MultiSourceValidity aggregatedValidity = new MultiSourceValidity(resolver, 0);
-                for (int i = 0; i < this.sourceUris.length; i++) {
-                    Source source = null;
-                    try {
-                        source = resolver.resolveURI(this.sourceUris[i]);
-                        aggregatedValidity.addSource(source);
-                    } finally {
-                        if (source != null) {
-                            resolver.release(source);
-                        }
-                    }
-                }
-                aggregatedValidity.close();
-                this.validity = aggregatedValidity;
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (resolver != null) {
-                    this.manager.release(resolver);
-                }
-            }
-        }
-        return this.validity;
-    }
-
-    public void refresh() {
-        this.dom = null;
-        this.data = null;
-        this.validity = null;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java
deleted file mode 100644
index ae6c941..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.excalibur.source.URIAbsolutizer;
-import org.apache.lenya.cms.module.ModuleManager;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.publication.templating.ExistingSourceResolver;
-import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
-import org.apache.lenya.cms.publication.templating.VisitingSourceResolver;
-
-/**
- * <p>
- * Source factory following the fallback principle.
- * </p>
- * <p>
- * The ID of the current publication can be passed in the URL (<code>fallback:pub://path</code),
- * this is necessary as a workaround for bug 40564.
- * </p>
- * 
- * @version $Id$
- */
-public class FallbackSourceFactory extends AbstractLogEnabled implements SourceFactory,
-        Serviceable, Contextualizable, URIAbsolutizer {
-
-    /**
-     * Ctor.
-     */
-    public FallbackSourceFactory() {
-        super();
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
-     */
-    public Source getSource(final String location, Map parameters) throws IOException,
-            MalformedURLException {
-
-        // Remove the protocol and the first '//'
-        int pos = location.indexOf("://");
-
-        if (pos == -1) {
-            throw new RuntimeException("The location [" + location
-                    + "] does not contain the string '://'");
-        }
-        
-        String path = location.substring(pos + 3);
-        
-        String publicationId = null;
-        
-        // extract publication ID
-        String prefix = location.substring(0, pos);
-        StringTokenizer tokens = new StringTokenizer(prefix, ":");
-        if (tokens.countTokens() > 1) {
-            tokens.nextToken();
-            publicationId = tokens.nextToken();
-        }
-        
-        // remove query string
-        int questionMarkIndex = path.indexOf("?");
-        if (questionMarkIndex > -1) {
-            path = path.substring(0, questionMarkIndex);
-        }
-        
-        if (path.length() == 0) {
-            throw new RuntimeException("The path after the protocol must not be empty!");
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Location:     [" + location + "]");
-            getLogger().debug("Path:         [" + path + "]");
-        }
-
-        PublicationTemplateManager templateManager = null;
-        SourceResolver sourceResolver = null;
-        Source source = null;
-        try {
-            sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            templateManager = (PublicationTemplateManager) this.manager.lookup(PublicationTemplateManager.ROLE);
-
-            Request request = ContextHelper.getRequest(this.context);
-            
-            if (publicationId == null) {
-                String webappUrl = request.getRequestURI().substring(request.getContextPath().length());
-
-                URLInformation info = new URLInformation(webappUrl);
-                publicationId = info.getPublicationId();
-            }
-
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            if (factory.existsPublication(publicationId)) {
-                Publication pub = factory.getPublication(publicationId);
-                VisitingSourceResolver resolver = getSourceVisitor();
-                templateManager.visit(pub, path, resolver);
-                source = resolver.getSource();
-            }
-
-            if (source == null) {
-                if (path.startsWith("lenya/modules/")) {
-                    ModuleManager moduleMgr = null;
-                    try {
-                        moduleMgr = (ModuleManager) this.manager.lookup(ModuleManager.ROLE);
-                        final String moduleShortcut = path.split("/")[2];
-                        String baseUri = moduleMgr.getBaseURI(moduleShortcut);
-                        final String modulePath = path.substring(("lenya/modules/" + moduleShortcut).length());
-                        source = sourceResolver.resolveURI(baseUri + modulePath);
-                    } finally {
-                        if (moduleMgr != null) {
-                            this.manager.release(moduleMgr);
-                        }
-                    }
-                } else {
-                    String contextUri = "context://" + path;
-                    source = sourceResolver.resolveURI(contextUri);
-                }
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Resolved source:  [" + source.getURI() + "]");
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException("Resolving path [" + location + "] failed: ", e);
-        } finally {
-            if (templateManager != null) {
-                this.manager.release(templateManager);
-            }
-            if (sourceResolver != null) {
-                this.manager.release(sourceResolver);
-            }
-        }
-
-        return source;
-    }
-
-    protected VisitingSourceResolver getSourceVisitor() {
-        return new ExistingSourceResolver();
-    }
-
-    private org.apache.avalon.framework.context.Context context;
-
-    /** The ServiceManager */
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(org.apache.avalon.framework.context.Context _context)
-            throws ContextException {
-        this.context = _context;
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
-     */
-    public void release(Source source) {
-        // In fact, this method should never be called as this factory
-        // returns a source object from a different factory. So that
-        // factory should release the source
-        if (null != source) {
-            if (this.getLogger().isDebugEnabled()) {
-                this.getLogger().debug("Releasing source " + source.getURI());
-            }
-            SourceResolver resolver = null;
-            try {
-                resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-                resolver.release(source);
-            } catch (ServiceException ignore) {
-                // ignore the exception
-            } finally {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.excalibur.source.URIAbsolutizer#absolutize(java.lang.String,
-     *      java.lang.String)
-     */
-    public String absolutize(String baseURI, String location) {
-        return SourceUtil.absolutize(baseURI, location, true);
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
deleted file mode 100644
index 0068970..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.flow.FlowHelper;
-import org.apache.cocoon.components.modules.input.JXPathHelper;
-import org.apache.cocoon.components.modules.input.JXPathHelperConfiguration;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.Query;
-
-/**
- * A factory for the "lenya" scheme (virtual protocol), which is used to resolve any src="lenya:..."
- * attributes in sitemaps. This implementation constructs the path to the source document from the
- * page envelope and delegates any further resolving to the "context" source resolver of Cocoon.
- * 
- * @version $Id$
- */
-public class LenyaSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
-        Contextualizable, Serviceable {
-
-    protected static final String SCHEME = "lenya:";
-
-    /** fallback if no configuration is available */
-    protected static final String DEFAULT_DELEGATION_SCHEME = "context:";
-    protected static final String DEFAULT_DELEGATION_PREFIX = "/"
-            + Publication.PUBLICATION_PREFIX_URI;
-
-    private Context context;
-    private ServiceManager manager;
-
-    /**
-     * Used for resolving the object model.
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context _context) throws ContextException {
-        this.context = _context;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
-     */
-    public Source getSource(final String location, final Map parameters)
-            throws MalformedURLException, IOException, SourceException {
-
-        String sessionName = null;
-        
-        String[] uriAndQuery = location.split("\\?");
-        if (uriAndQuery.length > 1) {
-            Query query = new Query(uriAndQuery[1]);
-            sessionName = query.getValue("session");
-        }
-
-        Session session;
-        try {
-            session = getSession(sessionName);
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Creating repository source for URI [" + location + "]");
-        }
-
-        return new RepositorySource(this.manager, location, session, getLogger());
-
-    }
-
-    protected Session getSession(String sessionName) throws RepositoryException {
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Session session;
-        if (sessionName == null) {
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            session = RepositoryUtil.getSession(this.manager, request);
-        } else if (sessionName.equals("usecase")) {
-            session = getUsecaseSession(objectModel);
-        } else {
-            throw new RepositoryException("Invalid session: [" + sessionName + "]");
-        }
-
-        return session;
-    }
-
-    protected Session getUsecaseSession(Map objectModel) throws RepositoryException {
-        try {
-            Configuration config = new DefaultConfiguration("foo");
-            JXPathHelperConfiguration helperConfig = JXPathHelper.setup(config);
-            Object contextObject = FlowHelper.getContextObject(objectModel);
-            return (Session) JXPathHelper.getAttribute("usecase/session", config, helperConfig,
-                    contextObject);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    /**
-     * Does nothing because the delegated factory does this.
-     * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
-     */
-    public void release(Source source) {
-        // do nothing
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java
deleted file mode 100644
index bdaccba..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PipedInputStream;
-import java.io.PipedOutputStream;
-import java.net.MalformedURLException;
-import java.util.Collection;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.ModifiableTraversableSource;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.excalibur.source.impl.AbstractSource;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.ContentHolder;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.Query;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Repository source.
- * 
- * @version $Id$
- */
-public class RepositorySource extends AbstractSource implements ModifiableTraversableSource {
-
-    private ServiceManager manager;
-    private ContentHolder content;
-    private Session session;
-    private Logger logger;
-    protected static final String SCHEME = "lenya";
-
-    /**
-     * @param manager The service manager.
-     * @param uri The source URI.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @throws SourceException if an error occurs.
-     * @throws MalformedURLException if an error occurs.
-     */
-    public RepositorySource(ServiceManager manager, String uri, Session session, Logger logger)
-            throws SourceException, MalformedURLException {
-        this.manager = manager;
-        this.logger = logger;
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("Init RepositorySource: " + uri);
-
-        if (session == null) {
-            throw new IllegalArgumentException("The repository session must not be null!");
-        }
-        this.session = session;
-
-        if (uri == null) {
-            throw new MalformedURLException("The source URI must not be null!");
-        }
-
-        setSystemId(uri);
-
-        // Scheme
-        int start = 0;
-        int end = uri.indexOf(':');
-        if (end == -1)
-            throw new MalformedURLException("Malformed uri for xmodule source (cannot find scheme) : "
-                    + uri);
-
-        String scheme = uri.substring(start, end);
-        if (!SCHEME.equals(scheme))
-            throw new MalformedURLException("Malformed uri for a xmodule source : " + uri);
-
-        setScheme(scheme);
-
-        NodeFactory factory = null;
-        try {
-            factory = (NodeFactory) this.manager.lookup(NodeFactory.ROLE);
-            
-            String sourceUri;
-            int revisionNumber = -1;
-            
-            int questionMarkIndex = uri.indexOf("?");
-            if (questionMarkIndex > -1) {
-                sourceUri = uri.substring(0, questionMarkIndex);
-                Query query = new Query(uri.substring(questionMarkIndex + 1));
-                String revisionString = query.getValue("rev", null);
-                if (revisionString != null) {
-                    
-                    ContextUtility util = null;
-                    try {
-                        util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-                        Request request = util.getRequest();
-                        String webappUrl = ServletHelper.getWebappURI(request);
-                        
-                        Publication pub = PublicationUtil.getPublication(this.manager, request);
-                        Document currentDoc = pub.getFactory().getFromURL(webappUrl);
-                        if (currentDoc.getSourceURI().equals(sourceUri)) {
-                            revisionNumber = Integer.valueOf(revisionString).intValue();
-                        }
-                    }
-                    finally {
-                        if (util != null) {
-                            this.manager.release(util);
-                        }
-                    }
-                }
-            }
-            else {
-                sourceUri = uri;
-            }
-            
-            if (revisionNumber == -1) {
-                this.content = (ContentHolder) session.getRepositoryItem(factory, sourceUri);
-            }
-            else {
-                Node node = (Node) session.getRepositoryItem(factory, sourceUri);
-                this.content = node.getHistory().getRevision(revisionNumber);
-            }
-            
-        } catch (Exception e) {
-            throw new SourceException("Creating repository node failed: ", e);
-        } finally {
-            if (factory != null) {
-                this.manager.release(factory);
-            }
-        }
-    }
-
-    /**
-     * @return The repository node which is accessed by this source.
-     */
-    public Node getNode() {
-        
-        if (!(this.content instanceof Node)) {
-            throw new RuntimeException("This operation can only be invoked on nodes, not on revisions.");
-        }
-        
-        return (Node) this.content;
-    }
-
-    protected Logger getLogger() {
-        return this.logger;
-    }
-
-    /**
-     * @see org.apache.excalibur.source.ModifiableSource#getOutputStream()
-     */
-    public OutputStream getOutputStream() throws IOException {
-        try {
-            return getNode().getOutputStream();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.excalibur.source.ModifiableSource#delete()
-     */
-    public void delete() {
-        try {
-            getNode().delete();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.excalibur.source.ModifiableSource#canCancel(java.io.OutputStream)
-     */
-    public boolean canCancel(OutputStream arg0) {
-        return false;
-    }
-
-    /**
-     * @see org.apache.excalibur.source.ModifiableSource#cancel(java.io.OutputStream)
-     */
-    public void cancel(OutputStream arg0) throws IOException {
-    }
-
-    /**
-     * @see org.apache.excalibur.source.Source#exists()
-     */
-    public boolean exists() {
-        try {
-            if (getContent().exists()) {
-                return true;
-            } else {
-                return isCollection();
-            }
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.excalibur.source.Source#getInputStream()
-     */
-    public InputStream getInputStream() throws IOException, SourceNotFoundException {
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("Get InputStream for " + getURI());
-        if (!exists()) {
-            throw new SourceNotFoundException("The source [" + getURI() + "] does not exist!");
-        }
-        try {
-            return getContent().getInputStream();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected InputStream convert(org.w3c.dom.Document edoc) throws IOException {
-
-        final org.w3c.dom.Document doc = edoc;
-        final PipedOutputStream pos = new PipedOutputStream();
-        PipedInputStream pis = new PipedInputStream();
-        pis.connect(pos);
-
-        (new Thread(new Runnable() {
-
-            public void run() {
-                try {
-                    transform(doc, pos);
-                } catch (TransformerException e) {
-                    throw new RuntimeException("Failed to tranform org.w3c.dom.Document to PipedOutputStream",
-                            e);
-                } finally {
-                    try {
-                        pos.close();
-                    } catch (Exception ignore) {
-                        ignore.printStackTrace();
-                    }
-                }
-            }
-        },
-                getClass().getName() + ".convert(org.w3c.dom.Document edoc)")).start();
-
-        return pis;
-    }
-
-    void transform(org.w3c.dom.Document edoc, PipedOutputStream pos) throws TransformerException {
-
-        TransformerFactory tFactory = TransformerFactory.newInstance();
-        Transformer transformer = tFactory.newTransformer();
-
-        transformer.setOutputProperty("encoding", "UTF-8");
-        transformer.setOutputProperty("indent", "yes");
-
-        transformer.transform(new DOMSource(edoc), new StreamResult(pos));
-
-    }
-    
-    /**
-     * @return The content of this source.
-     */
-    public ContentHolder getContent() {
-        return this.content;
-    }
-
-    /**
-     * @see org.apache.excalibur.source.Source#getContentLength()
-     */
-    public long getContentLength() {
-        try {
-            return getContent().getContentLength();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.excalibur.source.Source#getLastModified()
-     */
-    public long getLastModified() {
-        try {
-            return getContent().getLastModified();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @return The source URI.
-     */
-    public String getSourceURI() {
-        return getContent().getSourceURI();
-    }
-
-    /**
-     * @see org.apache.excalibur.source.Source#getMimeType()
-     */
-    public String getMimeType() {
-        try {
-            return getContent().getMimeType();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * 
-     */
-    public Source getParent() {
-        getLogger().warn("getParent() not implemented yet!");
-        return null;
-    }
-
-    /**
-     * 
-     */
-    public void makeCollection() {
-        getLogger().warn("RepositorySource().makeCollection() not implemented yet!");
-    }
-
-    /**
-     * 
-     */
-    public String getName() {
-        // Quick and dirty
-        String name = new java.io.File(getURI()).getName();
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("getName(): URI: " + name);
-        return name;
-    }
-
-    /**
-     * 
-     */
-    public Source getChild(String name) {
-        getLogger().warn("getChild() not implemented yet!");
-        return null;
-    }
-
-    /**
-     * 
-     */
-    public Collection getChildren() {
-        try {
-            Collection children = getNode().getChildren();
-            java.util.Iterator iterator = children.iterator();
-            java.util.Vector newChildren = new java.util.Vector();
-            while (iterator.hasNext()) {
-                Node child = (Node) iterator.next();
-                newChildren.add(new RepositorySource(this.manager,
-                        child.getSourceURI(),
-                        this.session,
-                        getLogger()));
-            }
-            return newChildren;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * 
-     */
-    public boolean isCollection() {
-        try {
-            return getNode().isCollection();
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-    
-    private SourceValidity validity;
-
-    public SourceValidity getValidity() {
-        if (this.validity == null) {
-            this.validity = new RepositorySourceValidity(this);
-        }
-        return this.validity;
-    }
-    
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySourceValidity.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySourceValidity.java
deleted file mode 100644
index f20b439..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySourceValidity.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import org.apache.excalibur.source.SourceValidity;
-
-/**
- * Validity for repository sources.
- */
-public class RepositorySourceValidity implements SourceValidity {
-
-    private static final long serialVersionUID = 1L;
-
-    private String sourceUri;
-    private long lastModified;
-
-    /**
-     * @param source The source this validity is for.
-     */
-    public RepositorySourceValidity(RepositorySource source) {
-        this.sourceUri = source.getSourceURI();
-        this.lastModified = source.getLastModified();
-    }
-
-    public int isValid() {
-        return SourceValidity.UNKNOWN;
-    }
-
-    public int isValid(SourceValidity validity) {
-        if (validity instanceof RepositorySourceValidity) {
-            RepositorySourceValidity repoValidity = (RepositorySourceValidity) validity;
-            String repoValidityUri = repoValidity.getSourceURI();
-
-            if (!repoValidityUri.equals(this.sourceUri)) {
-                throw new RuntimeException("Wrong source URI: [" + repoValidityUri
-                        + "] instead of [" + this.sourceUri + "]!");
-            }
-            if (this.lastModified >= repoValidity.getLastModified()) {
-                return SourceValidity.VALID;
-            } else {
-                return SourceValidity.INVALID;
-            }
-        } else {
-            return SourceValidity.INVALID;
-        }
-    }
-
-    protected long getLastModified() {
-        return this.lastModified;
-    }
-
-    protected String getSourceURI() {
-        return this.sourceUri;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSource.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSource.java
deleted file mode 100644
index 279a39f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSource.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.util.StringTokenizer;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.excalibur.source.impl.validity.TimeStampValidity;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.util.Query;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Source for the site:/ protocol.
- */
-public class SiteSource extends AbstractLogEnabled implements Source {
-
-    private ServiceManager manager;
-    private Source delegate;
-    private String scheme;
-    private String uri;
-
-    /**
-     * @param manager The service manager.
-     * @param request The cocoon request.
-     * @param location The source URI.
-     * @param logger The logger.
-     */
-    public SiteSource(ServiceManager manager, Request request, String location, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-
-        this.manager = manager;
-        this.uri = location;
-
-        String areaName = null;
-        String pubId;
-
-        StringTokenizer locationSteps = new StringTokenizer(location, "?");
-        String completePath = locationSteps.nextToken();
-
-        String relativePath;
-        try {
-
-            this.scheme = completePath.substring(0, completePath.indexOf(":") + 1);
-            final String absolutePath = completePath.substring(scheme.length());
-            if (absolutePath.startsWith("//")) {
-                final String fullPath = absolutePath.substring(2);
-                StringTokenizer steps = new StringTokenizer(fullPath, "/");
-                pubId = steps.nextToken();
-                areaName = steps.nextToken();
-                String prefix = pubId + "/" + areaName;
-                relativePath = fullPath.substring(prefix.length());
-            } else if (absolutePath.startsWith("/")) {
-                String webappUrl = ServletHelper.getWebappURI(request);
-                URLInformation info = new URLInformation(webappUrl);
-                pubId = info.getPublicationId();
-                areaName = info.getArea();
-                relativePath = absolutePath;
-            } else {
-                throw new MalformedURLException("The path [" + absolutePath
-                        + "] must start with at least one slash.");
-            }
-
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            Publication pub = factory.getPublication(pubId);
-            SiteStructure site = pub.getArea(areaName).getSite();
-
-            String[] steps = relativePath.substring(1).split("/");
-
-            String language = steps[0];
-            String prefix = "/" + language;
-            String path = relativePath.substring(prefix.length());
-
-            if (site.contains(path, language)) {
-                Document doc = site.getNode(path).getLink(language).getDocument();
-                if (locationSteps.hasMoreTokens()) {
-                    Query query = new Query(locationSteps.nextToken());
-                    String format = query.getValue("format");
-                    if (format != null) {
-                        this.delegate = getFormatSource(doc, format);
-                    }
-                }
-                if (this.delegate == null) {
-                    String lenyaURL = doc.getSourceURI();
-                    Session session = RepositoryUtil.getSession(this.manager, request);
-                    this.delegate = new RepositorySource(manager, lenyaURL, session, getLogger());
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-    
-    public boolean exists() {
-        return this.delegate != null;
-    }
-
-    public long getContentLength() {
-        return this.delegate == null ? 0 : this.delegate.getContentLength();
-    }
-
-    public InputStream getInputStream() throws IOException, SourceNotFoundException {
-        return this.delegate.getInputStream();
-    }
-
-    public long getLastModified() {
-        return this.delegate == null ? 0 : this.delegate.getLastModified();
-    }
-
-    public String getMimeType() {
-        return this.delegate == null ? "" : this.delegate.getMimeType();
-    }
-
-    public String getScheme() {
-        return this.scheme;
-    }
-
-    public String getURI() {
-        return this.uri;
-    }
-
-    public SourceValidity getValidity() {
-        return this.delegate.getValidity();
-    }
-
-    public void refresh() {
-        if (this.delegate != null) {
-            this.delegate.refresh();
-        }
-    }
-
-    protected Source getFormatSource(Document doc, String format) throws DocumentException,
-            ServiceException, MalformedURLException, IOException {
-        String formatBaseUri = doc.getResourceType().getFormatURI(format);
-        String formatUri = formatBaseUri + "/" + doc.getPublication().getId() + "/" + doc.getArea()
-                + "/" + doc.getUUID() + "/" + doc.getLanguage();
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            return resolver.resolveURI(formatUri);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSourceFactory.java
deleted file mode 100644
index c130c6e..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SiteSourceFactory.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-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.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceFactory;
-
-/**
- * <p>
- * This source factory allows to access documents based on their path in the site structure.
- * </p>
- * <p>
- * Relative addressing refers to the current publication and area.
- * </p>
- * <p>
- * Syntax:
- * </p>
- * <ul>
- * <li>Absolute: <code>site://{pubId}/{area}/{language}{path}</code></li>
- * <li>Relative: <code>site:/{language}{path}</code></li>
- * </ul>
- * <p>
- * Usage examples:
- * </p>
- * <ul>
- * <li><code>site://default/authoring/en/news/today</code></li>
- * <li><code>site:/en/news/today</code></li>
- * </ul>
- */
-public class SiteSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
-        Contextualizable, Serviceable, Configurable {
-
-    protected static final String SCHEME = "site";
-
-    private Context context;
-    private ServiceManager manager;
-
-    /**
-     * Used for resolving the object model.
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
-     */
-    public Source getSource(String location, Map parameters) throws MalformedURLException,
-            IOException, SourceException {
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        return new SiteSource(this.manager, request, location, getLogger());
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
-     */
-    public void release(Source source) {
-        // Source will be released by delegated source factory.
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
deleted file mode 100644
index 408dabe..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
+++ /dev/null
@@ -1,611 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.excalibur.source.ModifiableSource;
-import org.apache.excalibur.source.ModifiableTraversableSource;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.xml.DocumentHelper;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-/**
- * @version $Id$
- */
-public final class SourceUtil {
-
-    /**
-     * <p>
-     * Copies one Source to another using a source buffer i.e. the source Source
-     * is buffered before it is copied to its final destination.
-     * </p>
-     * <p>
-     * The optional buffering is sometimes useful, if the source Source somehow
-     * depends on the destination Source. This situation may occur e.g. if
-     * source Source is a Cocoon pipeline.
-     * </p>
-     * <p>
-     * <em>NOTE:</em> o.a.e..s.SourceUtil.copy does not close streams on an
-     * exception!!
-     * </p>
-     * @param source
-     * @param destination
-     * @param useBuffer If true, the source data will be read into a buffer
-     *        before it is written to the final destination.
-     * @throws IOException If an error occures.
-     */
-    public static void copy(Source source, ModifiableSource destination, boolean useBuffer)
-            throws IOException {
-        InputStream sourceInputStream = null;
-        OutputStream destOutputStream = null;
-        try {
-            sourceInputStream = source.getInputStream();
-            destOutputStream = destination.getOutputStream();
-
-            if (useBuffer) {
-                final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-                IOUtils.copy(sourceInputStream, sourceBos);
-                IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-            } else {
-                IOUtils.copy(sourceInputStream, destOutputStream);
-            }
-        } finally {
-            if (destOutputStream != null) {
-                destOutputStream.flush();
-                destOutputStream.close();
-            }
-            if (sourceInputStream != null) {
-                sourceInputStream.close();
-            }
-        }
-    }
-
-    /**
-     * Copies one Source to another. The source Source is optionally buffered.
-     * @param resolver The SourceResolver to use for lookin up Sources.
-     * @param sourceUri The source to be copied.
-     * @param destUri The URI to copy to.
-     * @param useBuffer If true, the source Source is buffered before copied to
-     *        the final destination.
-     * @throws IOException If an error occures.
-     * @throws SourceException If the destination is not modifiable.
-     * @see #copy(Source, ModifiableSource, boolean)
-     */
-    public static void copy(SourceResolver resolver, String sourceUri, String destUri,
-            boolean useBuffer) throws IOException, SourceException {
-        Source source = null;
-        Source dest = null;
-        try {
-            source = resolver.resolveURI(sourceUri);
-            dest = resolver.resolveURI(destUri);
-
-            if (!(dest instanceof ModifiableSource))
-                throw new SourceException("Destination '" + dest.getURI() + "' is not modifiable.");
-
-            copy(source, (ModifiableSource) dest, useBuffer);
-        } finally {
-            if (source != null)
-                resolver.release(source);
-            if (dest != null)
-                resolver.release(dest);
-        }
-    }
-
-    /**
-     * Copies a Source without buffering.
-     * @param resolver A SourceResolver instance.
-     * @param sourceUri The source URI to copy from.
-     * @param destUri The destination URI to copy to.
-     * @throws IOException If an error occures.
-     * @see #copy(SourceResolver, String, String, boolean)
-     */
-    public static void copy(SourceResolver resolver, String sourceUri, String destUri)
-            throws IOException {
-        copy(resolver, sourceUri, destUri, false);
-    }
-
-    /**
-     * Copies a Source without buffering.
-     * @param manager A service manager.
-     * @param sourceUri The source URI to copy from.
-     * @param destUri The destination URI to copy to.
-     * @throws IOException If an error occures.
-     * @throws ServiceException
-     * @see #copy(SourceResolver, String, String, boolean)
-     */
-    public static void copy(ServiceManager manager, String sourceUri, String destUri)
-            throws IOException, ServiceException {
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            copy(resolver, sourceUri, destUri, false);
-        } finally {
-            if (resolver != null) {
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Reads a DOM from a source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @return A document or <code>null</code> if the source does not exist.
-     * @throws ServiceException if an error occurs.
-     * @throws SourceNotFoundException if an error occurs.
-     * @throws ParserConfigurationException if an error occurs.
-     * @throws SAXException if an error occurs.
-     * @throws IOException if an error occurs.
-     */
-    public static Document readDOM(String sourceUri, ServiceManager manager)
-            throws ServiceException, SourceNotFoundException, ParserConfigurationException,
-            SAXException, IOException {
-        SourceResolver resolver = null;
-        Source source = null;
-        Document document = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-
-            if (source.exists()) {
-                document = DocumentHelper.readDocument(source.getInputStream());
-            }
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-        return document;
-    }
-
-    /**
-     * Writes a DOM to a source.
-     * @param document The document.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws TransformerConfigurationException if an error occurs.
-     * @throws TransformerException if an error occurs.
-     * @throws ServiceException if the source resolver could not be obtained.
-     * @throws MalformedURLException if the source URI is not valid.
-     * @throws IOException if an error occurs.
-     */
-    public static void writeDOM(Document document, String sourceUri, ServiceManager manager)
-            throws TransformerConfigurationException, TransformerException, ServiceException,
-            MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        ModifiableSource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (ModifiableSource) resolver.resolveURI(sourceUri);
-
-            OutputStream oStream = source.getOutputStream();
-            writeDOM(document, oStream);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @param document The XML document.
-     * @param oStream The output stream.
-     * @throws TransformerConfigurationException if an error occurs.
-     * @throws TransformerException if an error occurs.
-     * @throws IOException if an error occurs.
-     */
-    public static void writeDOM(Document document, OutputStream oStream)
-            throws TransformerConfigurationException, TransformerException, IOException {
-        DocumentHelper.writeDocument(document, oStream);
-        if (oStream != null) {
-            oStream.flush();
-            try {
-                oStream.close();
-            } catch (Throwable t) {
-                throw new RuntimeException("Could not write document: ", t);
-            }
-        }
-    }
-
-    /**
-     * Deletes a source if it exists.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws ServiceException if an error occurs.
-     * @throws MalformedURLException if an error occurs.
-     * @throws IOException if an error occurs.
-     */
-    public static void delete(String sourceUri, ServiceManager manager) throws ServiceException,
-            MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        ModifiableTraversableSource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (ModifiableTraversableSource) resolver.resolveURI(sourceUri);
-            if (source.exists()) {
-                source.delete();
-            }
-
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Deletes all empty collections in a subtree.
-     * @param sourceUri The root source URI.
-     * @param manager The service manager.
-     * @throws ServiceException
-     * @throws MalformedURLException
-     * @throws IOException
-     */
-    public static void deleteEmptyCollections(String sourceUri, ServiceManager manager)
-            throws ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        ModifiableTraversableSource source = null;
-        try {
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (ModifiableTraversableSource) resolver.resolveURI(sourceUri);
-            if (source.isCollection()) {
-                for (Iterator i = source.getChildren().iterator(); i.hasNext();) {
-                    ModifiableTraversableSource child = (ModifiableTraversableSource) i.next();
-                    deleteEmptyCollections(child.getURI(), manager);
-                }
-                if (source.getChildren().size() == 0) {
-                    source.delete();
-                }
-            }
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Checks if a source exists.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @return A boolean value.
-     * @throws ServiceException if an error occurs.
-     * @throws MalformedURLException if an error occurs.
-     * @throws IOException if an error occurs.
-     */
-    public static boolean exists(String sourceUri, ServiceManager manager) throws ServiceException,
-            MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-
-            return source.exists();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Returns the last modification date of a source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @return A long value.
-     * @throws ServiceException if an error occurs.
-     * @throws MalformedURLException if an error occurs.
-     * @throws IOException if an error occurs.
-     */
-    public static long getLastModified(String sourceUri, ServiceManager manager)
-            throws ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-
-            return source.getLastModified();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Checks out a repository source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws RepositoryException If an error occurs.
-     * @throws ServiceException If an error occurs.
-     * @throws MalformedURLException If an error occurs.
-     * @throws IOException If an error occurs.
-     */
-    public static void checkout(String sourceUri, ServiceManager manager)
-            throws RepositoryException, ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        RepositorySource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-
-            source.getNode().checkout();
-
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Checks in a transactionable source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws RepositoryException If an error occurs.
-     * @throws ServiceException If an error occurs.
-     * @throws MalformedURLException If an error occurs.
-     * @throws IOException If an error occurs.
-     */
-    public static void checkin(String sourceUri, ServiceManager manager)
-            throws RepositoryException, ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        RepositorySource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-
-            source.getNode().checkin();
-
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Locks a transactionable source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws RepositoryException If an error occurs.
-     */
-    public static void lock(String sourceUri, ServiceManager manager) throws RepositoryException {
-        SourceResolver resolver = null;
-        RepositorySource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-
-            source.getNode().lock();
-
-        } catch (RepositoryException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Unlocks a transactionable source.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @throws RepositoryException If an error occurs.
-     */
-    public static void unlock(String sourceUri, ServiceManager manager) throws RepositoryException {
-        SourceResolver resolver = null;
-        RepositorySource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-
-            source.getNode().unlock();
-
-        } catch (RepositoryException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Registers a source as dirty.
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     */
-    public static void registerDirty(String sourceUri, ServiceManager manager) {
-        SourceResolver resolver = null;
-        RepositorySource source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-            source.getNode().registerDirty();
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @return A content length.
-     * @throws ServiceException
-     * @throws MalformedURLException
-     * @throws IOException
-     */
-    public static long getContentLength(String sourceUri, ServiceManager manager)
-            throws ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-
-            return source.getContentLength();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @param sourceUri The source URI.
-     * @param manager The service manager.
-     * @return A mime type.
-     * @throws ServiceException
-     * @throws IOException
-     * @throws MalformedURLException
-     */
-    public static String getMimeType(String sourceUri, ServiceManager manager)
-            throws ServiceException, MalformedURLException, IOException {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-
-            return source.getMimeType();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @param resolver
-     * @param sourceUri
-     * @param destOutputStream
-     * @throws MalformedURLException
-     * @throws IOException
-     */
-    public static void copy(SourceResolver resolver, String sourceUri, OutputStream destOutputStream) throws MalformedURLException, IOException {
-        boolean useBuffer = true;
-        InputStream sourceInputStream = null;
-        Source source = null;
-        try {
-            source = resolver.resolveURI(sourceUri);
-            sourceInputStream = source.getInputStream();
-
-            if (useBuffer) {
-                final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-                IOUtils.copy(sourceInputStream, sourceBos);
-                IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-            } else {
-                IOUtils.copy(sourceInputStream, destOutputStream);
-            }
-        } finally {
-            if (destOutputStream != null) {
-                destOutputStream.flush();
-                destOutputStream.close();
-            }
-            if (sourceInputStream != null) {
-                sourceInputStream.close();
-            }
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/TemplateFallbackSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/TemplateFallbackSourceFactory.java
deleted file mode 100644
index efd3fc9..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/TemplateFallbackSourceFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import org.apache.lenya.cms.publication.templating.ExistingAncestorSourceResolver;
-import org.apache.lenya.cms.publication.templating.VisitingSourceResolver;
-
-/**
- * Source factory following the fallback principle, resolving the existing ancestor of the existing resource.
- * For more information about the URL syntax, see {@link FallbackSourceFactory}.
- * 
- * @version $Id: FallbackSourceFactory.java 264153 2005-08-29 15:11:14Z andreas $
- */
-public class TemplateFallbackSourceFactory extends FallbackSourceFactory {
-
-    protected VisitingSourceResolver getSourceVisitor() {
-        return new ExistingAncestorSourceResolver();
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSource.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSource.java
deleted file mode 100644
index aeff3e7..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSource.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-//package org.apache.cocoon.components.source.impl;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.util.MIMEUtils;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceValidity;
-
-/**
-  * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
-  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
-  * @version CVS $Id: ZipSource.java 30932 2004-07-29 17:35:38Z vgritsenko $
-  * @since 2.1.4 
-  */
-public class ZipSource extends AbstractLogEnabled implements Source {
-
-    Source archive;
-    String documentName;
-
-    /**
-     * Ctor.
-     * @param archive The archive source.
-     * @param fileName The filename.
-     */
-    public ZipSource(Source archive, String fileName) {
-        this.archive = archive;
-        this.documentName = fileName;
-    }
-
-    public boolean exists() {
-        if(!this.archive.exists()) {
-            return false;
-        }
-        ZipInputStream zipStream = null;
-        ZipEntry document = null;
-        boolean found = false;
-        try {
-            zipStream = new ZipInputStream(this.archive.getInputStream());
-            do {
-                document = zipStream.getNextEntry();
-                if (document != null) {
-                    if (document.getName().equals(this.documentName)) {
-                        found = true;
-                    } else {
-                        zipStream.closeEntry();
-                    }
-                }
-            } while (document != null && found == false);
-        } catch(IOException ioe) {
-            return false;
-        } finally {
-            try {
-                zipStream.close();
-            } catch (IOException ioe) {
-                this.getLogger().error("Error while closing ZipInputStream: " + this.documentName);
-            }
-        } 
-        return found;
-    }
-    
-    public InputStream getInputStream()
-        throws IOException, SourceNotFoundException {
-
-        ZipInputStream zipStream =
-            new ZipInputStream(this.archive.getInputStream());
-        ZipEntry document = null;
-        boolean found = false;
-        do {
-            document = zipStream.getNextEntry();
-            if (document != null) {
-                if (document.getName().equals(this.documentName)) {
-                    found = true;
-                } else {
-                    // go to next entry
-                    zipStream.closeEntry();
-                }
-            }
-        } while (document != null && found == false);
-
-        if (document == null) {
-            throw new SourceNotFoundException(
-                "The document "
-                    + documentName
-                    + " is not in the archive "
-                    + this.archive.getURI());
-        }
-
-        // now we will extract the document and write it into a byte array
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        byte[] buffer = new byte[8192];
-        int length = -1;
-        while (zipStream.available() > 0) {
-            length = zipStream.read(buffer, 0, 8192);
-            if (length > 0) {
-                baos.write(buffer, 0, length);
-            }
-        }
-        zipStream.close();
-        baos.flush();
-
-        // return an input stream
-        return new ByteArrayInputStream(baos.toByteArray());
-    }
-
-    public String getURI() {
-        return this.archive.getURI() + "/" + this.documentName;
-    }
-
-    public String getScheme() {
-        return ZipSourceFactory.ZIP_SOURCE_SCHEME;
-    }
-
-    public SourceValidity getValidity() {
-        return this.archive.getValidity();
-    }
-
-    public void refresh() {
-    }
-
-    public String getMimeType() {
-        String ext = this.documentName.substring( this.documentName.lastIndexOf(".") );
-        return MIMEUtils.getMIMEType( ext );
-    }
-
-    public long getContentLength() {
-        return -1;
-    }
-
-    public long getLastModified() {
-        return this.archive.getLastModified();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSourceFactory.java b/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSourceFactory.java
deleted file mode 100644
index 73376ea..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/source/ZipSourceFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.source.impl;
-package org.apache.lenya.cms.cocoon.source;
-
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.excalibur.source.SourceResolver;
-
-
-/** Implementation of a {@link Source} that gets its content from
-  * and ZIP archive.
-  * 
-  * A ZIP source can be reached using the zip:// pseudo-protocol. The syntax is
-  * zip://myFile.xml@myZip.zip (zip://[file]@[archive])
-  * 
-  * @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
-  * @version CVS $Id: ZipSourceFactory.java 30932 2004-07-29 17:35:38Z vgritsenko $
-  * @since 2.1.4
-  */ 
-public class ZipSourceFactory extends AbstractLogEnabled
-    implements SourceFactory, ThreadSafe, Serviceable {
-
-    protected ServiceManager manager;
-    /**
-     * The URL scheme, including the colon.
-     */
-    public static final String ZIP_SOURCE_SCHEME = "zip:";
-
-    public Source getSource(String location, Map parameters)
-        throws IOException, MalformedURLException {
-        
-        if ( this.getLogger().isDebugEnabled() ) {
-            this.getLogger().debug("Processing " + location);
-        }
-        
-        // syntax checks
-        int separatorPos = location.indexOf('@');
-        if (separatorPos == -1) {
-            throw new MalformedURLException("@ required in URI: " + location);
-        }
-        int protocolEnd = location.indexOf("://");
-        if (protocolEnd == -1) {
-            throw new MalformedURLException("URI does not contain '://' : " + location);
-        }
-
-        // get the source of the archive and return the ZipSource passing
-        // a source retrieved from the SourceResolver
-        String documentName = location.substring(protocolEnd + 3, separatorPos);
-        Source archive;
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver)this.manager.lookup( SourceResolver.ROLE );
-            archive = resolver.resolveURI(location.substring(separatorPos + 1));            
-        } catch (ServiceException se) {
-            throw new SourceException("SourceResolver is not available.", se);
-        } finally {
-            this.manager.release(resolver);
-        }
-        return new ZipSource(archive, documentName);
-    }
-
-
-    public void release(Source source) {
-        // not necessary here
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/MetaDataTransformer.java b/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/MetaDataTransformer.java
deleted file mode 100644
index 21a0775..0000000
--- a/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/MetaDataTransformer.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.apache.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Meta data transformer.
- */
-public class MetaDataTransformer extends AbstractSAXTransformer implements
-        Disposable {
-    /**
-     * The namespace for the meta data is http://apache.org/lenya/meta/1.0
-     */
-    static public final String NAMESPACE_URI = "http://apache.org/lenya/meta/1.0/";
-
-    /**
-     * The namespace prefix for this namespace.
-     */
-    static public final String PREFIX = "meta";
-
-    /**
-     * The value element is getting the value for a specific ns and key. It is
-     * the only method implemented so far.
-     */
-    static public final String VALUE_ELEMENT = "value";
-
-    /**
-     * ELEMENT_ATT - which meta data key do we want to look up
-     */
-    static public final String ELEMENT_ATT = "element";
-
-    /**
-     * NS_ATT - in which namespace should we look
-     */
-    static public final String NS_ATT = "ns";
-
-    /**
-     * UUID_ATT - for which uuid?
-     */
-    static public final String UUID_ATT = "uuid";
-
-    /**
-     * LANG_ATT - in which language this is optional (when not found use
-     * publication default)
-     */
-    static public final String LANG_ATT = "lang";
-
-    /** Helper for lenya document retrival */
-    protected String publicationId = null;
-
-    protected String area = null;
-
-    protected String language = null;
-
-    protected String uuid = null;
-
-    protected Publication pub;
-
-    private DocumentFactory factory;
-
-    /**
-     * Setup the MetaDataTransformer.
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src,
-            Parameters par) throws ProcessingException, SAXException,
-            IOException {
-        super.setup(resolver, objectModel, src, par);
-        this.publicationId = par.getParameter("pubid", null);
-        if (this.publicationId == null) {
-            throw new ProcessingException(
-                    "The pubid is not set! Please set like e.g. <map:parameter name='pubid' value='{request-param:pubid}'/>");
-        }
-
-        this.area = par.getParameter("area", null);
-        if (this.area == null) {
-            throw new ProcessingException(
-                    "The area is not set! Please set like e.g. <map:parameter name='area' value='{request-param:area}'/>");
-        }
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        factory = DocumentUtil.getDocumentFactory(this.manager, request);
-        try {
-            pub = factory.getPublication(this.publicationId);
-        } catch (PublicationException e) {
-            throw new ProcessingException(
-                    "Error geting publication id / area from page envelope", e);
-        }
-    }
-
-    public void startElement(String uri, String name, String raw,
-            Attributes attr) throws SAXException {
-        if (NAMESPACE_URI.equals(uri)) {
-            if (VALUE_ELEMENT.equals(name)) {
-                String lang = null, uuid = null, ns = null, key = null;
-                for (int i = 0; i < attr.getLength(); i++) {
-                    String localName = attr.getLocalName(i);
-                    String value = attr.getValue(i);
-                    if (ELEMENT_ATT.equals(localName))
-                        key = value;
-                    else if (NS_ATT.equals(localName))
-                        ns = value;
-                    else if (UUID_ATT.equals(localName))
-                        uuid = value;
-                    else if (LANG_ATT.equals(localName))
-                        lang = value;
-                }//end for
-                if(uuid==null||ns==null||key==null)
-                    throw new SAXException("Error by setting up the transformation. Please fix the calling code.");
-                if (lang==null)
-                    lang=pub.getDefaultLanguage();
-                try {
-                    Document document = pub.getArea(area).getDocument(uuid, lang);
-                    MetaData metaData = document.getMetaData(ns);
-                    String [] returnValue=metaData.getValues(key);
-                    if (returnValue.length>1){
-                        for (int i = 0; i < returnValue.length; i++) {
-                            AttributesImpl attributes = new AttributesImpl();
-                            attributes.addAttribute("", VALUE_ELEMENT, VALUE_ELEMENT, "CDATA", returnValue[i]);
-                            attributes.addAttribute("", ELEMENT_ATT, ELEMENT_ATT, "CDATA", key);
-                            this.contentHandler.startElement(ns, VALUE_ELEMENT, PREFIX+":"+VALUE_ELEMENT, attributes);
-                            this.contentHandler.endElement(ns, VALUE_ELEMENT, PREFIX+":"+VALUE_ELEMENT);
-                        }
-                    }else if (returnValue.length==1){
-                        this.contentHandler.characters(returnValue[0].toCharArray(), 0, returnValue[0].toCharArray().length);
-                    }
-                } catch (PublicationException e) {
-                    throw new SAXException("Error by getting document for [ "+lang+"/"+uuid+" ]");
-                } catch (MetaDataException e) {
-                    throw new SAXException("Error by getting meta data with ns [ "+ns+" ] for document for [ "+lang+"/"+uuid+" ]");
-                }
-                
-            } else {
-                String warn = "Could not find method for " + name
-                        + ". Ignoring.";
-                getLogger().warn(warn);
-            }
-        } else {
-            super.startElement(uri, name, raw, attr);
-        }
-    }
-
-    public void endElement(String uri, String name, String raw)
-            throws SAXException {
-        if (!NAMESPACE_URI.equals(uri)) {
-            super.endElement(uri, name, raw);
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/Element.java b/trunk/src/java/org/apache/lenya/cms/metadata/Element.java
deleted file mode 100644
index 7c748a4..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/Element.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * A meta data element.
- */
-public interface Element {
-
-    /**
-     * @return the name of the element.
-     */
-    String getName();
-
-    /**
-     * @return if the element can have multiple values.
-     */
-    boolean isMultiple();
-
-    /**
-     * @return the description of the element.
-     */
-    String getDescription();
-
-    /**
-     * @return if the element value can be edited.
-     */
-    boolean isEditable();
-
-    /**
-     * Copy all values if the meta data are copied.
-     */
-    int ONCOPY_COPY = 0;
-    
-    /**
-     * Don't copy the values of this element if the meta data are copied.
-     */
-    int ONCOPY_IGNORE = 1;
-
-    /**
-     * Delete all values of this element if the meta data are copied.
-     */
-    int ONCOPY_DELETE = 2;
-
-    /**
-     * @return The action to be taken when meta data are copied from one owner to another.
-     */
-    int getActionOnCopy();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java b/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java
deleted file mode 100644
index bbc1a61..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Definition of a set of meta data elements.
- */
-public interface ElementSet {
-    
-    /**
-     * @return The supported elements.
-     */
-    Element[] getElements();
-    
-    /**
-     * @param name The name.
-     * @return The element.
-     * @throws MetaDataException if the element with this name does not exist.
-     */
-    Element getElement(String name) throws MetaDataException;
-    
-    /**
-     * @return The namespace URI of this element set.
-     */
-    String getNamespaceUri();
-    
-    /**
-     * Checks if an element with a certain name is contained.
-     * @param name The name.
-     * @return A boolean value.
-     */
-    boolean containsElement(String name);
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/MetaData.java b/trunk/src/java/org/apache/lenya/cms/metadata/MetaData.java
deleted file mode 100644
index 2207aa4..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/MetaData.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Generic meta data interface.
- * 
- * @version $Id$
- */
-public interface MetaData {
-    
-    /**
-     * Returns the values for a certain key.
-     * @param key The key.
-     * @return An array of strings.
-     * @throws MetaDataException when something went wrong.
-     */
-    String[] getValues(String key) throws MetaDataException;
-
-    /**
-     * Returns the first value for a certain key.
-     * @param key The key.
-     * @return A string or <code>null</code> if no value is set for this key.
-     * @throws MetaDataException if an error occurs.
-     */
-    String getFirstValue(String key) throws MetaDataException;
-    
-    /**
-     * Get all available keys.
-     * @return The keys available in this MetaData object.
-     */
-    String[] getAvailableKeys();
-    
-    /**
-     * Sets the value for a certain key. All existing values will be removed.
-     * @param key The key.
-     * @param value The value to set.
-     * @throws MetaDataException when something went wrong.
-     */
-    void setValue(String key, String value) throws MetaDataException;
-    
-    /**
-     * Addds a value for a certain key. The existing values will not be removed.
-     * @param key The key.
-     * @param value The value to add.
-     * @throws MetaDataException if there's already a value set and the element doesn't support multiple values.
-     */
-    void addValue(String key, String value) throws MetaDataException;
-
-    /**
-     * Replace the contents of the current meta data by the contents of other.
-     * @param other The other meta data manager.
-     * @throws MetaDataException if an error occurs.
-     */
-    void replaceBy(MetaData other) throws MetaDataException;
-    
-    /**
-     * Replace the contents of the current meta data by the contents of other.
-     * All meta data is replaced, disregarding the rules given by element.getActionOnCopy().
-     * @param other The other meta data manager.
-     * @throws MetaDataException if an error occurs.
-     */
-    void forcedReplaceBy(MetaData other) throws MetaDataException;
-    
-    /**
-     * @return All keys that can be used.
-     */
-    String[] getPossibleKeys();
-    
-    /**
-     * Checks if a key represents a valid metadata attribute.
-     * @param key The key.
-     * @return A boolean value.
-     */
-    boolean isValidAttribute(String key);
-    
-    /**
-     * Get last modification date.
-     * @return last modification date
-     * @throws MetaDataException if an error occurs.
-     */
-     long getLastModified() throws MetaDataException;
-     
-     /**
-     * @return The element set this meta data object belongs to.
-     */
-    ElementSet getElementSet();
-    
-    /**
-     * Removes all values for a certain key.
-     * @param key The key.
-     * @throws MetaDataException if the key is not supported.
-     */
-    void removeAllValues(String key) throws MetaDataException;
-     
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataException.java b/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataException.java
deleted file mode 100644
index fdec9dd..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Meta data exception.
- */
-public class MetaDataException extends Exception {
-
-    /**
-     * 
-     */
-    public MetaDataException() {
-        super();
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     */
-    public MetaDataException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    /**
-     * @param arg0
-     */
-    public MetaDataException(String arg0) {
-        super(arg0);
-    }
-
-    /**
-     * @param arg0
-     */
-    public MetaDataException(Throwable arg0) {
-        super(arg0);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java b/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
deleted file mode 100644
index 16ba4c5..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Owner of meta-data.
- *
- * @version $Id$
- */
-public interface MetaDataOwner {
-
-    /**
-     * Returns a meta data object.
-     * @param namespaceUri The namespace URI.
-     * @return A meta data object.
-     * @throws MetaDataException if an error occurs.
-     */
-    MetaData getMetaData(String namespaceUri) throws MetaDataException;
-    
-    /**
-     * Returns the URIs of the meta data currently supported by the owner.
-     * @return An array of strings.
-     * @throws MetaDataException if an error occurs.
-     */
-    String[] getMetaDataNamespaceUris() throws MetaDataException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java b/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
deleted file mode 100644
index cc64b44..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata;
-
-/**
- * Meta data registry.
- */
-public interface MetaDataRegistry {
-    
-    /**
-     * The Avalon role.
-     */
-    String ROLE = MetaDataRegistry.class.getName();
-
-    /**
-     * @param namespaceUri The namespace URI of the element set.
-     * @return the element set.
-     * @throws MetaDataException if an error occurs. 
-     */
-    ElementSet getElementSet(String namespaceUri) throws MetaDataException;
-    
-    /**
-     * Checks if an element set is registered.
-     * @param namespaceUri The namespace URI.
-     * @return A boolean value.
-     * @throws MetaDataException if an error occurs.
-     */
-    boolean isRegistered(String namespaceUri) throws MetaDataException;
-    
-    /**
-     * Register an element set.
-     * @param namespaceUri The namespace URI.
-     * @param elementSet The element set.
-     * @throws MetaDataException if a set is already registered for this name.
-     */
-    void register(String namespaceUri, ElementSet elementSet) throws MetaDataException;
-    
-    /**
-     * @return The registered namespace URIs.
-     * @throws MetaDataException if an error occurs.
-     */
-    String[] getNamespaceUris() throws MetaDataException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java b/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
deleted file mode 100644
index 772c9eb..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata.dublincore;
-
-import org.apache.lenya.cms.metadata.MetaData;
-
-/**
- * <p>
- * Dublin core metadata interface.
- * </p>
- * <p>
- * The descriptions are citing the <a href="http://www.dublincore.org">Dublin Core website </a>.
- * </p>
- * 
- * @version $Id$
- */
-public interface DublinCore extends MetaData {
-
-    /**
-     * The dublin core elements namespace.
-     */
-    String DC_NAMESPACE = "http://purl.org/dc/elements/1.1/";
-    
-    /**
-     * The dublin core terms namespace. 
-     */
-    String DCTERMS_NAMESPACE = "http://purl.org/dc/terms/";
-    
-    /**
-     * A name given to the resource. Typically, Title will be a name by which the resource is
-     * formally known.
-     */
-    static final String ELEMENT_TITLE = "title";
-
-    /**
-     * An entity primarily responsible for making the content of the resource. Examples of Creator
-     * include a person, an organization, or a service. Typically, the name of a Creator should be
-     * used to indicate the entity.
-     */
-    static final String ELEMENT_CREATOR = "creator";
-
-    /**
-     * A topic of the content of the resource. Typically, Subject will be expressed as keywords, key
-     * phrases or classification codes that describe a topic of the resource. Recommended best
-     * practice is to select a value from a controlled vocabulary or formal classification scheme.
-     */
-    static final String ELEMENT_SUBJECT = "subject";
-
-    /**
-     * An account of the content of the resource. Examples of Description include, but is not
-     * limited to: an abstract, table of contents, reference to a graphical representation of
-     * content or a free-text account of the content.
-     */
-    static final String ELEMENT_DESCRIPTION = "description";
-
-    /**
-     * An entity responsible for making the resource available. Examples of Publisher include a
-     * person, an organization, or a service. Typically, the name of a Publisher should be used to
-     * indicate the entity.
-     */
-    static final String ELEMENT_PUBLISHER = "publisher";
-
-    /**
-     * An entity responsible for making contributions to the content of the resource. Examples of
-     * Contributor include a person, an organization, or a service. Typically, the name of a
-     * Contributor should be used to indicate the entity.
-     */
-    static final String ELEMENT_CONTRIBUTOR = "contributor";
-
-    /**
-     * A date of an event in the lifecycle of the resource. Typically, Date will be associated with
-     * the creation or availability of the resource. Recommended best practice for encoding the date
-     * value is defined in a profile of ISO 8601 [W3CDTF] and includes (among others) dates of the
-     * form YYYY-MM-DD.
-     */
-    static final String ELEMENT_DATE = "date";
-
-    /**
-     * The nature or genre of the content of the resource. Type includes terms describing general
-     * categories, functions, genres, or aggregation levels for content. Recommended best practice
-     * is to select a value from a controlled vocabulary (for example, the DCMI Type Vocabulary
-     * [DCT1]). To describe the physical or digital manifestation of the resource, use the FORMAT
-     * element.
-     */
-    static final String ELEMENT_TYPE = "type";
-
-    /**
-     * The physical or digital manifestation of the resource. Typically, Format may include the
-     * media-type or dimensions of the resource. Format may be used to identify the software,
-     * hardware, or other equipment needed to display or operate the resource. Examples of
-     * dimensions include size and duration. Recommended best practice is to select a value from a
-     * controlled vocabulary (for example, the list of Internet Media Types [MIME] defining computer
-     * media formats).
-     */
-    static final String ELEMENT_FORMAT = "format";
-
-    /**
-     * An unambiguous reference to the resource within a given context. Recommended best practice is
-     * to identify the resource by means of a string or number conforming to a formal identification
-     * system. Formal identification systems include but are not limited to the Uniform Resource
-     * Identifier (URI) (including the Uniform Resource Locator (URL)), the Digital Object
-     * Identifier (DOI) and the International Standard Book Number (ISBN).
-     */
-    static final String ELEMENT_IDENTIFIER = "identifier";
-
-    /**
-     * A Reference to a resource from which the present resource is derived. The present resource
-     * may be derived from the Source resource in whole or in part. Recommended best practice is to
-     * identify the referenced resource by means of a string or number conforming to a formal
-     * identification system.
-     */
-    static final String ELEMENT_SOURCE = "source";
-
-    /**
-     * A language of the intellectual content of the resource. Recommended best practice is to use
-     * RFC 3066 [RFC3066] which, in conjunction with ISO639 [ISO639]), defines two- and three-letter
-     * primary language tags with optional subtags. Examples include "en" or "eng" for English,
-     * "akk" for Akkadian", and "en-GB" for English used in the United Kingdom.
-     */
-    static final String ELEMENT_LANGUAGE = "language";
-
-    /**
-     * A reference to a related resource. Recommended best practice is to identify the referenced
-     * resource by means of a string or number conforming to a formal identification system.
-     */
-    static final String ELEMENT_RELATION = "relation";
-
-    /**
-     * The extent or scope of the content of the resource. Typically, Coverage will include spatial
-     * location (a place name or geographic coordinates), temporal period (a period label, date, or
-     * date range) or jurisdiction (such as a named administrative entity). Recommended best
-     * practice is to select a value from a controlled vocabulary (for example, the Thesaurus of
-     * Geographic Names [TGN]) and to use, where appropriate, named places or time periods in
-     * preference to numeric identifiers such as sets of coordinates or date ranges.
-     */
-    static final String ELEMENT_COVERAGE = "coverage";
-
-    /**
-     * Information about rights held in and over the resource. Typically, Rights will contain a
-     * rights management statement for the resource, or reference a service providing such
-     * information. Rights information often encompasses Intellectual Property Rights (IPR),
-     * Copyright, and various Property Rights. If the Rights element is absent, no assumptions may
-     * be made about any rights held in or over the resource.
-     */
-    static final String ELEMENT_RIGHTS = "rights";
-
-    /**
-     * A summary of the content of the resource.
-     */
-    static final String TERM_ABSTRACT = "abstract";
-
-    /**
-     * Information about who can access the resource or an indication of its security status. Access
-     * Rights may include information regarding access or restrictions based on privacy, security or
-     * other regulations.
-     */
-    static final String TERM_ACCESSRIGHTS = "accessRights";
-
-    /**
-     * Any form of the title used as a substitute or alternative to the formal title of the
-     * resource. This qualifier can include Title abbreviations as well as translations.
-     */
-    static final String TERM_ALTERNATIVE = "alternative";
-
-    /**
-     * A class of entity for whom the resource is intended or useful. A class of entity may be
-     * determined by the creator or the publisher or by a third party.
-     */
-    static final String TERM_AUDIENCE = "audience";
-
-    /**
-     * Date (often a range) that the resource will become or did become available.
-     */
-    static final String TERM_AVAILABLE = "available";
-
-    /**
-     * A bibliographic reference for the resource. Recommended practice is to include sufficient
-     * bibliographic detail to identify the resource as unambiguously as possible, whether or not
-     * the citation is in a standard form.
-     */
-    static final String TERM_BIBLIOGRAPHICCITATION = "bibliographicCitation";
-
-    /**
-     * A reference to an established standard to which the resource conforms.
-     */
-    static final String TERM_CONFORMSTO = "conformsTo";
-
-    /**
-     * Date of creation of the resource.
-     */
-    static final String TERM_CREATED = "created";
-
-    /**
-     * Date of acceptance of the resource (e.g. of thesis by university department, of article by
-     * journal, etc.).
-     */
-    static final String TERM_DATEACCEPTED = "dateAccepted";
-
-    /**
-     * Date of a statement of copyright.
-     */
-    static final String TERM_DATECOPYRIGHTED = "dateCopyrighted";
-
-    /**
-     * Date of submission of the resource (e.g. thesis, articles, etc.).
-     */
-    static final String TERM_DATESUBMITTED = "dateSubmitted";
-
-    /**
-     * A general statement describing the education or training context. Alternatively, a more
-     * specific statement of the location of the audience in terms of its progression through an
-     * education or training context.
-     */
-    static final String TERM_EDUCATIONLEVEL = "educationLevel";
-
-    /**
-     * The size or duration of the resource.
-     */
-    static final String TERM_EXTENT = "extent";
-
-    /**
-     * The described resource pre-existed the referenced resource, which is essentially the same
-     * intellectual content presented in another format.
-     */
-    static final String TERM_HASFORMAT = "hasFormat";
-
-    /**
-     * The described resource includes the referenced resource either physically or logically.
-     */
-    static final String TERM_HASPART = "hasPart";
-
-    /**
-     * The described resource has a version, edition, or adaptation, namely, the referenced
-     * resource.
-     */
-    static final String TERM_HASVERSION = "hasVersion";
-
-    /**
-     * The described resource is the same intellectual content of the referenced resource, but
-     * presented in another format.
-     */
-    static final String TERM_ISFORMATOF = "isFormatOf";
-
-    /**
-     * The described resource is a physical or logical part of the referenced resource.
-     */
-    static final String TERM_ISPARTOF = "isPartOf";
-
-    /**
-     * The described resource is referenced, cited, or otherwise pointed to by the referenced
-     * resource.
-     */
-    static final String TERM_ISREFERENCEDBY = "isReferencedBy";
-
-    /**
-     * The described resource is supplanted, displaced, or superseded by the referenced resource.
-     */
-    static final String TERM_ISREPLACEDBY = "isReplacedBy";
-
-    /**
-     * The described resource is required by the referenced resource, either physically or
-     * logically.
-     */
-    static final String TERM_ISREQUIREDBY = "isRequiredBy";
-
-    /**
-     * Date of formal issuance (e.g., publication) of the resource.
-     */
-    static final String TERM_ISSUED = "issued";
-
-    /**
-     * The described resource is a version, edition, or adaptation of the referenced resource.
-     * Changes in version imply substantive changes in content rather than differences in format.
-     */
-    static final String TERM_ISVERSIONOF = "isVersionOf";
-
-    /**
-     * A legal document giving official permission to do something with the resource. Recommended
-     * best practice is to identify the license using a URI. Examples of such licenses can be found
-     * at http://creativecommons.org/licenses/.
-     */
-    static final String TERM_LICENSE = "license";
-
-    /**
-     * A class of entity that mediates access to the resource and for whom the resource is intended
-     * or useful. The audiences for a resource are of two basic classes: (1) an ultimate beneficiary
-     * of the resource, and (2) frequently, an entity that mediates access to the resource. The
-     * mediator element refinement represents the second of these two classes.
-     */
-    static final String TERM_MEDIATOR = "mediator";
-
-    /**
-     * The material or physical carrier of the resource.
-     */
-    static final String TERM_MEDIUM = "medium";
-
-    /**
-     * Date on which the resource was changed.
-     */
-    static final String TERM_MODIFIED = "modified";
-
-    /**
-     * The described resource references, cites, or otherwise points to the referenced resource.
-     */
-    static final String TERM_REFERENCES = "references";
-
-    /**
-     * The described resource supplants, displaces, or supersedes the referenced resource.
-     */
-    static final String TERM_REPLACES = "replaces";
-
-    /**
-     * The described resource requires the referenced resource to support its function, delivery, or
-     * coherence of content.
-     */
-    static final String TERM_REQUIRES = "requires";
-
-    /**
-     * A person or organization owning or managing rights over the resource. Recommended best
-     * practice is to use the URI or name of the Rights Holder to indicate the entity.
-     */
-    static final String TERM_RIGHTSHOLDER = "rightsHolder";
-
-    /**
-     * Spatial characteristics of the intellectual content of the resource.
-     */
-    static final String TERM_SPATIAL = "spatial";
-
-    /**
-     * A list of subunits of the content of the resource.
-     */
-    static final String TERM_TABLEOFCONTENTS = "tableOfContents";
-
-    /**
-     * Temporal characteristics of the intellectual content of the resource.
-     */
-    static final String TERM_TEMPORAL = "temporal";
-
-    /**
-     * Date (often a range) of validity of a resource.
-     */
-    static final String TERM_VALID = "valid";
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java b/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
deleted file mode 100644
index deb9fe6..0000000
--- a/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.metadata.dublincore;

-

-import org.apache.lenya.cms.metadata.MetaData;

-import org.apache.lenya.cms.metadata.MetaDataException;

-import org.apache.lenya.cms.metadata.MetaDataOwner;

-import org.apache.lenya.cms.publication.Document;

-

-/**

- * Helper class to access dublin core meta data.

- */

-public class DublinCoreHelper {

-

-    /**

-     * @param owner The owner.

-     * @return The dublin core title or <code>null</code> if the title is not set.

-     * @throws MetaDataException if the owner has no dublin core meta data.

-     */

-    public static String getTitle(MetaDataOwner owner) throws MetaDataException {

-        return getDublinCore(owner).getFirstValue(DublinCore.ELEMENT_TITLE);

-    }

-    

-    /**

-     * @param doc The document.

-     * @param fallbackToUuid If the dublin core title is <code>null</code>, the document's UUID is returned.

-     * @return The dublin core title.

-     * @throws MetaDataException if the document has no dublin core meta data.

-     */

-    public static String getTitle(Document doc, boolean fallbackToUuid) throws MetaDataException {

-        String title = DublinCoreHelper.getTitle(doc);

-        return title == null ? doc.getUUID() : title;

-    }

-    

-    protected static MetaData getDublinCore(MetaDataOwner owner) throws MetaDataException {

-        return owner.getMetaData(DublinCore.DC_NAMESPACE);

-    }

-    

-}

diff --git a/trunk/src/java/org/apache/lenya/cms/module/ModuleException.java b/trunk/src/java/org/apache/lenya/cms/module/ModuleException.java
deleted file mode 100644
index dee3225..0000000
--- a/trunk/src/java/org/apache/lenya/cms/module/ModuleException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.module;
-
-/**
- * Module exception.
- */
-public class ModuleException extends Exception {
-
-    /**
-     * 
-     */
-    public ModuleException() {
-        super();
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     */
-    public ModuleException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    /**
-     * @param arg0
-     */
-    public ModuleException(String arg0) {
-        super(arg0);
-    }
-
-    /**
-     * @param arg0
-     */
-    public ModuleException(Throwable arg0) {
-        super(arg0);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/module/ModuleManager.java b/trunk/src/java/org/apache/lenya/cms/module/ModuleManager.java
deleted file mode 100644
index f76d3eb..0000000
--- a/trunk/src/java/org/apache/lenya/cms/module/ModuleManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.module;
-
-/**
- * Module manager.
- */
-public interface ModuleManager {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = ModuleManager.class.getName();
-    
-    /**
-     * Returns the base URI of a module directory.
-     * @param moduleShortcut The module shortcut.
-     * @return A string.
-     * @throws ModuleException if there is no module for this shortcut.
-     */
-    String getBaseURI(String moduleShortcut) throws ModuleException;
-
-    /**
-     * Returns a listing of all module id (shortcuts)
-     * @return Map
-     */
-    String[] getModuleIds();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java b/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
deleted file mode 100644
index dac3e0f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.avalon.framework.activity.Startable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-
-/**
- * Abstract repository listener implementation which registeres with the observation
- * registry at startup.
- */
-public abstract class AbstractRepositoryListener extends AbstractLogEnabled implements Serviceable,
-        Startable, ThreadSafe, RepositoryListener {
-    
-    public void start() throws Exception {
-        ObservationRegistry registry = null;
-        try {
-            registry = (ObservationRegistry) this.manager.lookup(ObservationRegistry.ROLE);
-            registry.registerListener(this);
-        } finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-    }
-
-    public void stop() throws Exception {
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java b/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java
deleted file mode 100644
index d88799a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Document-related event.
- */
-public class DocumentEvent extends RepositoryEvent {
-
-    private String pubId;
-    private String area;
-    private String uuid;
-    private String language;
-    private ResourceType resourceType;
-
-
-    /**
-     * The change action.
-     */
-    public static final Object CHANGED = "changed";
-    /**
-     * The removal action.
-     */
-    public static final Object REMOVED = "removed";
-
-    /**
-     * Ctor.
-     * @param session The session.
-     * @param pubId The publication ID.
-     * @param area The area.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @param resourceType The resource type.
-     * @param descriptor More information about the event, for example
-     *        {@link #CHANGED} or {@link #REMOVED}.
-     */
-    public DocumentEvent(Session session, String pubId, String area, String uuid, String language,
-            ResourceType resourceType, Object descriptor) {
-        super(session, descriptor);
-        this.pubId = pubId;
-        this.area = area;
-        this.uuid = uuid;
-        this.language = language;
-        this.resourceType = resourceType;
-    }
-
-    /**
-     * @return The area.
-     */
-    public String getArea() {
-        return area;
-    }
-
-    /**
-     * @return The publication ID.
-     */
-    public String getPublicationId() {
-        return pubId;
-    }
-
-    /**
-     * @return The UUID.
-     */
-    public String getUuid() {
-        return uuid;
-    }
-
-    /**
-     * @return The language.
-     */
-    public String getLanguage() {
-        return language;
-    }
-
-    /**
-     * @return The resource type.
-     */
-    public ResourceType getResourceType() {
-        return this.resourceType;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/ObservationException.java b/trunk/src/java/org/apache/lenya/cms/observation/ObservationException.java
deleted file mode 100644
index 01c1ce9..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/ObservationException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-/**
- * Observation-specific exception.
- */
-public class ObservationException extends Exception {
-
-    private static final long serialVersionUID = -4025029670092614593L;
-
-    /**
-     * 
-     */
-    public ObservationException() {
-        super();
-    }
-
-    /**
-     * @param arg0
-     * @param arg1
-     */
-    public ObservationException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    /**
-     * @param arg0
-     */
-    public ObservationException(String arg0) {
-        super(arg0);
-    }
-
-    /**
-     * @param arg0
-     */
-    public ObservationException(Throwable arg0) {
-        super(arg0);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java b/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java
deleted file mode 100644
index a81f54d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.lenya.cms.publication.Document;
-
-/**
- * Observation registry.
- */
-public interface ObservationRegistry extends RepositoryListener {
-
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = ObservationRegistry.class.getName();
-
-    /**
-     * @param listener The listener.
-     * @param document The document to listen to.
-     * @throws ObservationException if the listener is already registered for this document.
-     */
-    void registerListener(RepositoryListener listener, Document document) throws ObservationException;
-    
-    /**
-     * Registers a listener which is notified for all events.
-     * @param listener The listener.
-     * @throws ObservationException if the listener is already registered.
-     */
-    void registerListener(RepositoryListener listener) throws ObservationException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java b/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java
deleted file mode 100644
index d52daa7..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.Assert;
-
-/**
- * A repository event provides additional information if a document was added, changed, or removed.
- */
-public class RepositoryEvent {
-
-    private Session session;
-    private Object descriptor = null;
-
-    /**
-     * Ctor.
-     * @param session The session.
-     * @param descriptor More information about the event.
-     */
-    public RepositoryEvent(Session session, Object descriptor) {
-        
-        Assert.notNull("session", session);
-        this.session = session;
-        
-        Assert.notNull("descriptor", descriptor);
-        this.descriptor = descriptor;
-    }
-    
-    /**
-     * @return The session.
-     */
-    public Session getSession() {
-        return this.session;
-    }
-
-    /**
-     * @return The descriptor.
-     */
-    public Object getDescriptor() {
-        return this.descriptor;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java b/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
deleted file mode 100644
index 1bf0d54..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Factory to create repository events.
- */
-public class RepositoryEventFactory {
-
-    /**
-     * Creates a repository event for a node.
-     * @param manager The service manager.
-     * @param session The session.
-     * @param logger The logger.
-     * @param descriptor The descriptor.
-     * @return An event.
-     */
-    public static final RepositoryEvent createEvent(ServiceManager manager,
-            Session session, Logger logger, Object descriptor) {
-            return new RepositoryEvent(session, descriptor);
-    }
-
-    /**
-     * Creates a repository event for a node.
-     * @param manager The service manager.
-     * @param doc The document.
-     * @param logger The logger.
-     * @param descriptor The descriptor.
-     * @return An event.
-     */
-    public static final RepositoryEvent createEvent(ServiceManager manager, Document doc,
-            Logger logger, Object descriptor) {
-        try {
-            return new DocumentEvent(doc.getRepositoryNode().getSession(), doc.getPublication()
-                    .getId(), doc.getArea(), doc.getUUID(), doc.getLanguage(), doc
-                    .getResourceType(), descriptor);
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    /**
-     * Creates a repository event for a node.
-     * @param manager The service manager.
-     * @param node The node.
-     * @param logger The logger.
-     * @param descriptor The descriptor.
-     * @return An event.
-     */
-    public static final RepositoryEvent createEvent(ServiceManager manager, Node node,
-            Logger logger, Object descriptor) {
-        RepositoryEvent event;
-        Document doc = null;
-        if (!node.getSourceURI().endsWith("meta")) {
-            doc = getDocument(manager, node, logger);
-        }
-        if (doc != null) {
-            event = createEvent(manager, doc, logger, descriptor);
-        } else {
-            event = new RepositoryEvent(node.getSession(), descriptor);
-        }
-        return event;
-    }
-
-    /**
-     * @param manager The service manager.
-     * @param node The node.
-     * @param logger The logger.
-     * @return The document represented by the node or <code>null</code> if
-     *         the node doesn't represent a document.
-     */
-    protected static final Document getDocument(ServiceManager manager, Node node, Logger logger) {
-
-        final String sourceUri = node.getSourceURI();
-        if (sourceUri.endsWith(".xml")) {
-            return null;
-        }
-
-        Document doc = null;
-
-        if (!sourceUri.startsWith("lenya://")) {
-            throw new IllegalStateException("The source URI [" + sourceUri
-                    + "] doesn't start with lenya://");
-        }
-
-        String path = sourceUri.substring("lenya://lenya/pubs/".length());
-
-        String[] steps = path.split("/");
-        String pubId = steps[0];
-        String area = steps[2];
-
-        try {
-
-            DocumentFactory factory = DocumentUtil
-                    .createDocumentFactory(manager, node.getSession());
-            Publication pub = factory.getPublication(pubId);
-            String docPath = path.substring((pubId + "/content/" + area).length());
-
-            String uuid = docPath.substring(1, docPath.length() - "/en".length());
-            String language = docPath.substring(docPath.length() - "en".length());
-
-            doc = factory.get(pub, area, uuid, language);
-
-            if (doc == null) {
-                // this happens if the node was not a document node
-                logger.info("No document found for node [" + sourceUri + "]");
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return doc;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java b/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java
deleted file mode 100644
index 463d023..0000000
--- a/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-/**
- * Listener to repository events.
- */
-public interface RepositoryListener {
-
-    /**
-     * Called when an event was fired.
-     * @param event The event.
-     */
-    void eventFired(RepositoryEvent event);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/Area.java b/trunk/src/java/org/apache/lenya/cms/publication/Area.java
deleted file mode 100644
index f80bf39..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/Area.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * An area.
- */
-public interface Area {
-
-    /**
-     * @return The name of the area ("authoring", "live", etc.).
-     */
-    String getName();
-    
-    /**
-     * @return The publication the area belongs to.
-     */
-    Publication getPublication();
-    
-    /**
-     * @return The site structure of the area.
-     */
-    SiteStructure getSite();
-    
-    /**
-     * @param uuid The UUID.
-     * @param language The language.
-     * @return A document.
-     * @throws PublicationException if the document is not contained.
-     */
-    Document getDocument(String uuid, String language) throws PublicationException;
-    
-    /**
-     * Checks if a document is contained.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean contains(String uuid, String language);
-
-    /**
-     * @return All documents in this area.
-     */
-    Document[] getDocuments();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java b/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
deleted file mode 100644
index 3be08bb..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * Default document builder implementation.
- * 
- * @version $Id$
- */
-public class DefaultDocumentBuilder extends AbstractLogEnabled implements DocumentBuilder,
-        Serviceable, ThreadSafe {
-
-    /**
-     * Ctor.
-     */
-    public DefaultDocumentBuilder() {
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * Removes all "."-separated extensions from a URL (e.g.,
-     * <code>/foo.print.html</code> is transformed to <code>/foo</code>).
-     * @param url The URL to trim.
-     * @return A URL string.
-     */
-    protected String removeExtensions(String url) {
-        int dotIndex = url.indexOf(".");
-        if (dotIndex > -1) {
-            url = url.substring(0, dotIndex);
-        }
-        return url;
-    }
-
-    /**
-     * Returns the language of a URL.
-     * @param urlWithoutSuffix The URL without the suffix.
-     * @return A string.
-     */
-    protected String getLanguage(String urlWithoutSuffix) {
-
-        String language = "";
-        String url = urlWithoutSuffix;
-
-        int languageSeparatorIndex = url.lastIndexOf("_");
-        if (languageSeparatorIndex > -1) {
-            String suffix = url.substring(languageSeparatorIndex + 1);
-            if (suffix.length() <= 5) {
-                language = suffix;
-            }
-        }
-        return language;
-    }
-
-    /**
-     * Returns the extension of a URL.
-     * @param url The URL.
-     * @return The extension.
-     */
-    protected String getExtension(String url) {
-        int startOfSuffix = url.lastIndexOf('.');
-        String suffix = "";
-
-        if ((startOfSuffix > -1) && !url.endsWith(".")) {
-            suffix = url.substring(startOfSuffix + 1);
-        }
-
-        return suffix;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentBuilder#isDocument(DocumentFactory,
-     *      String)
-     */
-    public boolean isDocument(DocumentFactory factory, String url) throws DocumentBuildException {
-        try {
-            DocumentLocator locator = getLocatorWithoutCheck(factory, url);
-            if (locator != null) {
-                Publication pub = factory.getPublication(locator.getPublicationId());
-                String path = locator.getPath();
-                Area area = pub.getArea(locator.getArea());
-                if (area.getSite().contains(path)) {
-                    SiteNode node = area.getSite().getNode(path);
-                    if (node.hasLink(locator.getLanguage())) {
-                        return true;
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new DocumentBuildException(e);
-        }
-
-        return false;
-    }
-
-    /**
-     * Builds the canonical document URL.
-     * @param factory The document factory.
-     * @param locator The document locator.
-     * @return A string.
-     */
-    protected String buildCanonicalDocumentUrl(DocumentFactory factory, DocumentLocator locator) {
-
-        String languageSuffix = "";
-        String language = locator.getLanguage();
-
-        Publication pub;
-        try {
-            pub = factory.getPublication(locator.getPublicationId());
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-
-        if (!language.equals(pub.getDefaultLanguage())) {
-            languageSuffix = "_" + language;
-        }
-
-        String url = locator.getPath() + languageSuffix + ".html";
-        return url;
-    }
-
-    public String buildCanonicalUrl(DocumentFactory factory, DocumentLocator doc) {
-
-        String documentUrl = buildCanonicalDocumentUrl(factory, doc);
-        String url = "/" + doc.getPublicationId() + "/" + doc.getArea() + documentUrl;
-        return url;
-    }
-
-    public DocumentLocator getLocator(DocumentFactory factory, String webappUrl)
-            throws DocumentBuildException {
-
-        DocumentLocator locator = getLocatorWithoutCheck(factory, webappUrl);
-        if (locator == null) {
-            throw new DocumentBuildException("The webapp URL [" + webappUrl
-                    + "] does not refer to a document!");
-        }
-        return locator;
-    }
-
-    /**
-     * Creates a document locator for a webapp URL without checking if the
-     * webapp URL refers to a locator first.
-     * @param factory The document factory.
-     * @param webappUrl The webapp URL.
-     * @return A document locator or <code>null</code> if the URL doesn't
-     *         refer to a locator.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    protected DocumentLocator getLocatorWithoutCheck(DocumentFactory factory, String webappUrl)
-            throws DocumentBuildException {
-
-        if (!webappUrl.startsWith("/")) {
-            return null;
-        }
-        if (webappUrl.substring(1).split("/").length < 3) {
-            return null;
-        }
-
-        URLInformation info = new URLInformation(webappUrl);
-
-        Publication publication;
-        try {
-            publication = PublicationUtil.getPublicationFromUrl(this.manager, factory, webappUrl);
-        } catch (PublicationException e) {
-            throw new DocumentBuildException(e);
-        }
-
-        String documentURL = info.getDocumentUrl();
-
-        documentURL = removeExtensions(documentURL);
-
-        String language = getLanguage(documentURL);
-        String fullLanguage = "".equals(language) ? "" : ("_" + language);
-        documentURL = documentURL.substring(0, documentURL.length() - fullLanguage.length());
-
-        if ("".equals(language)) {
-            language = publication.getDefaultLanguage();
-        }
-
-        String path = documentURL;
-
-        if (!path.startsWith("/")) {
-            throw new DocumentBuildException("Path [" + path + "] does not start with '/'!");
-        }
-
-        return DocumentLocator.getLocator(publication.getId(), info.getArea(), path, language);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentBuilder#isValidDocumentName(java.lang.String)
-     */
-    public boolean isValidDocumentName(String documentName) {
-        return documentName.matches("[a-zA-Z0-9\\-]+");
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java b/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
deleted file mode 100644
index 70fe502..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-
-/**
- * Default DocumentIdToPathMapper implementation.
- * 
- * @version $Id$
- */
-public class DefaultDocumentIdToPathMapper implements DocumentIdToPathMapper,
-        PathToDocumentIdMapper {
-
-    /**
-     * The file name.
-     */
-    public static final String BASE_FILENAME_PREFIX = "index";
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentIdToPathMapper#getFile(org.apache.lenya.cms.publication.Publication,
-     *      java.lang.String, java.lang.String, java.lang.String)
-     */
-    public File getFile(Publication publication, String area, String uuid, String language) {
-        File file = new File(getDirectory(publication, area), getPath(uuid, language));
-        return file;
-    }
-
-    protected File getDirectory(Publication publication, String area) {
-
-        File file = new File(publication.getDirectory(), Publication.CONTENT_PATH + File.separator
-                + area);
-
-        return file;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentIdToPathMapper#getPath(java.lang.String,
-     *      java.lang.String)
-     */
-    public String getPath(String uuid, String language) {
-        if (uuid.startsWith("/")) {
-            return uuid.substring(1) + "/" + getFilename(language);
-        }
-        else {
-            return uuid + "/" + language;
-        }
-    }
-
-    /**
-     * Constructs the filename for a given language.
-     * 
-     * @param language The language.
-     * @return A string value.
-     */
-    protected String getFilename(String language) {
-        String languageSuffix = "";
-        if (language != null && !"".equals(language)) {
-            languageSuffix = "_" + language;
-        }
-        return BASE_FILENAME_PREFIX + languageSuffix;
-    }
-
-    /**
-     * Returns the document ID for a certain file.
-     * @param publication The publication.
-     * @param area The area.
-     * @param file The file representing the document.
-     * @return A string.
-     * @throws DocumentDoesNotExistException when the document referenced by the file does not
-     *             exist.
-     */
-    public String getDocumentId(Publication publication, String area, File file)
-            throws DocumentDoesNotExistException {
-
-        String fileName = file.getAbsolutePath();
-        String contentDirName = publication.getContentDirectory(area).getAbsolutePath();
-        if (fileName.startsWith(contentDirName)) {
-            // trim everything up to the documentId
-            String relativeFileName = fileName.substring(contentDirName.length());
-            // trim everything after the documentId
-            relativeFileName = relativeFileName.substring(0,
-                    relativeFileName.lastIndexOf(File.separator));
-            // and replace the os specific separator by '/'
-            return relativeFileName.replace(File.separatorChar, '/');
-        }
-        // Document does not seem to exist
-        throw new DocumentDoesNotExistException("No document associated with file" + fileName);
-    }
-
-    /**
-     * Returns the language for a certain file
-     * 
-     * @param file the document file
-     * 
-     * @return the language for the given document file or null if the file has no language.
-     */
-    public String getLanguage(File file) {
-        String fileName = file.getName();
-        String language = null;
-
-        int lastDotIndex = fileName.lastIndexOf(".");
-        String suffix = fileName.substring(lastDotIndex);
-
-        // check if the file is of the form index.html or index_en.html
-
-        if (fileName.startsWith(BASE_FILENAME_PREFIX) && fileName.endsWith(suffix)) {
-            String languageSuffix = fileName.substring(BASE_FILENAME_PREFIX.length(),
-                    fileName.indexOf(suffix));
-            if (languageSuffix.length() > 0) {
-                // trim the leading '_'
-                language = languageSuffix.substring(1);
-            }
-        }
-        return language;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/Document.java b/trunk/src/java/org/apache/lenya/cms/publication/Document.java
deleted file mode 100644
index aada0d1..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/Document.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Date;
-
-import org.apache.lenya.cms.metadata.MetaDataOwner;
-import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.site.Link;
-
-/**
- * A CMS document.
- * @version $Id$
- */
-public interface Document extends MetaDataOwner, RepositoryItem {
-    
-    /**
-     * The document namespace URI.
-     */
-    String NAMESPACE = "http://apache.org/cocoon/lenya/document/1.0";
-    
-    /**
-     * The default namespace prefix.
-     */
-    String DEFAULT_PREFIX = "lenya";
-    
-    /**
-     * The transactionable type for document objects.
-     */
-    String TRANSACTIONABLE_TYPE = "document";
-    
-    /**
-     * <code>DOCUMENT_META_SUFFIX</code> The suffix for document meta Uris
-     */
-    final String DOCUMENT_META_SUFFIX = ".meta";
-    
-    /**
-     * Returns the date at which point the requested document is considered expired
-     * @return a string in RFC 1123 date format
-     * @throws DocumentException if an error occurs.
-     */
-    Date getExpires() throws DocumentException;
-
-    /**
-     * Returns the document name of this document.
-     * @return the document-name of this document.
-     */
-    String getName();
-    
-    /**
-     * Returns the publication this document belongs to.
-     * @return A publication object.
-     */
-    Publication getPublication();
-    
-    /**
-     * Returns the canonical web application URL.
-     * @return A string.
-     */
-    String getCanonicalWebappURL();
-
-    /**
-     * Returns the canonical document URL.
-     * @return A string.
-     */
-    String getCanonicalDocumentURL();
-
-    /**
-     * Returns the language of this document.
-     * Each document has one language associated to it. 
-     * @return A string denoting the language.
-     */
-    String getLanguage();
-
-    /**
-     * Returns all the languages this document is available in.
-     * A document has one associated language (@see Document#getLanguage)
-     * but there are possibly a number of other languages for which a 
-     * document with the same document-uuid is also available in. 
-     * 
-     * @return An array of strings denoting the languages.
-     * 
-     * @throws DocumentException if an error occurs
-     */
-    String[] getLanguages() throws DocumentException;
-
-    /**
-     * Returns the date of the last modification of this document.
-     * @return A date denoting the date of the last modification.
-     * @throws DocumentException if an error occurs.
-     */
-    long getLastModified() throws DocumentException;
-
-    /**
-     * Returns the area this document belongs to.
-     * @return The area.
-     */
-    String getArea();
-
-    /**
-     * Returns the file for this document.
-     * @return A file object.
-     * @deprecated This implies the usage of a filesystem based storage. Use {@link #getSourceURI()} instead.
-     */
-    File getFile();
-
-    /**
-     * Returns the extension in the URL without the dot.
-     * @return A string.
-     */
-    String getExtension();
-
-    /**
-     * Returns the UUID.
-     * @return A string.
-     */
-    String getUUID();
-    
-    /**
-     * Check if a document with the given document-uuid, language and in the given
-     * area actually exists.
-     * 
-     * @return true if the document exists, false otherwise
-     * 
-     * @throws DocumentException if an error occurs
-     */
-    boolean exists() throws DocumentException;
-    
-    /**
-     * Check if a document exists with the given document-uuid and the given area
-     * independently of the given language.
-     * 
-     * @return true if a document with the given document-uuid and area exists, false otherwise
-     * 
-     * @throws DocumentException if an error occurs
-     */
-    boolean existsInAnyLanguage() throws DocumentException;
-    
-    /**
-     * Returns the identity map this document belongs to.
-     * @return A document identity map.
-     */
-    DocumentFactory getFactory();
-    
-    /**
-     * Returns the URI to resolve the document's source.
-     * The source can only be used for read-only access.
-     * For write access, use {@link #getOutputStream()}.
-     * @return A string.
-     */
-    String getSourceURI();
-    
-    /**
-     * @return The output stream to write the document content to.
-     */
-    OutputStream getOutputStream();
-    
-    /**
-     * Accepts a document visitor.
-     * @param visitor The visitor.
-     * @throws PublicationException if an error occurs.
-     */
-    void accept(DocumentVisitor visitor) throws PublicationException;
-
-    /**
-     * Deletes the document.
-     * @throws DocumentException if an error occurs.
-     */
-    void delete() throws DocumentException;
-    
-    /**
-     * @return The repository node that represents this document.
-     */
-    Node getRepositoryNode();
-
-    /**
-     * @return The resource type of this document (formerly known as doctype)
-     * @throws DocumentException if an error occurs.
-     */
-    ResourceType getResourceType() throws DocumentException;
-    
-    /**
-     * @param resourceType The resource type of this document.
-     */
-    void setResourceType(ResourceType resourceType);
-    
-    /**
-     * @return The source extension used by this document, without the dot.
-     */
-    String getSourceExtension();
-    
-    /**
-     * @param extension The source extension used by this document, without the dot.
-     */
-    void setSourceExtension(String extension);
-    
-    /**
-     * Sets the mime type of this document.
-     * @param mimeType The mime type.
-     * @throws DocumentException if an error occurs.
-     */
-    void setMimeType(String mimeType) throws DocumentException;
-    
-    /**
-     * @return The mime type of this document.
-     * @throws DocumentException if an error occurs.
-     */
-    String getMimeType() throws DocumentException;
-    
-    /**
-     * @return The content length of the document.
-     * @throws DocumentException if an error occurs.
-     */
-    long getContentLength() throws DocumentException;
-    
-    /**
-     * @return The document identifier for this document.
-     */
-    DocumentIdentifier getIdentifier();
-    
-    /**
-     * This is a shortcut to getLink().getNode().getPath().
-     * @return The path of this document in the site structure.
-     * @throws DocumentException if the document is not linked in the site structure.
-     */
-    String getPath() throws DocumentException;
-
-    /**
-     * Checks if a certain translation (language version) of this document exists.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean existsTranslation(String language);
-    
-    /**
-     * Returns a certain translation (language version) of this document.
-     * @param language The language.
-     * @return A document.
-     * @throws DocumentException if the language version doesn't exist.
-     */
-    Document getTranslation(String language) throws DocumentException;
-    
-    /**
-     * Checks if this document exists in a certain area.
-     * @param area The area.
-     * @return A boolean value.
-     */
-    boolean existsAreaVersion(String area);
-    
-    /**
-     * Returns the document in a certain area.
-     * @param area The area.
-     * @return A document.
-     * @throws DocumentException if the area version doesn't exist.
-     */
-    Document getAreaVersion(String area) throws DocumentException;
-
-    /**
-     * Checks if a translation of this document exists in a certain area.
-     * @param area The area.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean existsVersion(String area, String language);
-    
-    /**
-     * Returns a translation of this document in a certain area.
-     * @param area The area.
-     * @param language The language.
-     * @return A document.
-     * @throws DocumentException if the area version doesn't exist.
-     */
-    Document getVersion(String area, String language) throws DocumentException;
-    
-    /**
-     * @return A document locator.
-     */
-    DocumentLocator getLocator();
-    
-    /**
-     * @return The link to this document in the site structure.
-     * @throws DocumentException if the document is not referenced in the site structure.
-     */
-    Link getLink() throws DocumentException;
-    
-    /**
-     * @return The area the document belongs to.
-     */
-    Area area();
-
-    /**
-     * @return if the document is linked in the site structure.
-     */
-    boolean hasLink();
-
-    /**
-     * @return The input stream to obtain the document's content.
-     */
-    InputStream getInputStream();
-    
-    /**
-     * @return The revision number of this document.
-     */
-    int getRevisionNumber();
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuildException.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuildException.java
deleted file mode 100644
index 59ebdb8..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuildException.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-/**
- * Document build exception.
- *
- * @version $Id$
- */
-public class DocumentBuildException extends PublicationException {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Constructor.
-     */
-    public DocumentBuildException() {
-        super();
-    }
-
-    /**
-     * Constructor.
-     * @param message A message.
-     */
-    public DocumentBuildException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor.
-     * @param cause The cause of the exception.
-     */
-    public DocumentBuildException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Constructor.
-     * @param message A message.
-     * @param cause The cause of the exception.
-     */
-    public DocumentBuildException(String message, Throwable cause) {
-        super(message, cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java
deleted file mode 100644
index e04b34d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-/**
- * A document builder builds a document from a URL.
- */
-public interface DocumentBuilder {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = DocumentBuilder.class.getName();
-    
-    /**
-     * Returns a document for a web application URL.
-     * @param factory The factory.
-     * @param webappUrl The web application URL.
-     * @return A document identifier.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    DocumentLocator getLocator(DocumentFactory factory, String webappUrl) throws DocumentBuildException;
-
-    /**
-     * Checks if an URL corresponds to a CMS document.
-     * @param factory The document factory.
-     * @param url The URL of the form /{publication-id}/...
-     * @return A boolean value.
-     * @throws DocumentBuildException when something went wrong.
-     */
-    boolean isDocument(DocumentFactory factory, String url) throws DocumentBuildException;
-
-    /**
-     * Builds an URL corresponding to a CMS document.
-     * @param factory The document factory.
-     * @param locator The locator.
-     * @return a String The corresponding URL.
-     */
-    String buildCanonicalUrl(DocumentFactory factory, DocumentLocator locator);
-
-    /**
-     * Checks if a document name is valid.
-     * @param documentName The document name.
-     * @return A boolean value.
-     */
-    boolean isValidDocumentName(String documentName);
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentDoesNotExistException.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentDoesNotExistException.java
deleted file mode 100644
index 7f4f15c..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentDoesNotExistException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-/**
- * Document does not exist exception
- */
-public class DocumentDoesNotExistException extends DocumentException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new DocumentDoesNotExistException
-     * 
-     */
-    public DocumentDoesNotExistException() {
-        super();
-    }
-
-    /**
-     * Creates a new DocumentDoesNotExistException
-     * @param message the exception message
-     */
-    public DocumentDoesNotExistException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new DocumentDoesNotExistException
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public DocumentDoesNotExistException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new DocumentDoesNotExistException
-     * @param cause the cause of the exception
-     */
-    public DocumentDoesNotExistException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentException.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentException.java
deleted file mode 100644
index 35ab77d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentException.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-/**
- * Document exception
- */
-public class DocumentException extends PublicationException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new DocumentException
-     * 
-     */
-    public DocumentException() {
-        super();
-    }
-
-    /**
-     * Creates a new DocumentException
-     * 
-     * @param message the exception message
-     */
-    public DocumentException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new DocumentException
-     * 
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public DocumentException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new DocumentException
-     * 
-     * @param cause the cause of the exception
-     */
-    public DocumentException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
deleted file mode 100644
index 07ba614..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * A DocumentIdentityMap avoids the multiple instanciation of a document object.
- * 
- * @version $Id$
- */
-public interface DocumentFactory extends RepositoryItemFactory {
-
-    /**
-     * Returns a document.
-     * @param identifier The identifier of the document.
-     * @return A document.
-     * @throws DocumentBuildException if the document does not exist.
-     */
-    Document get(DocumentIdentifier identifier) throws DocumentBuildException;
-    
-    /**
-     * Returns a document.
-     * @param publication The publication.
-     * @param area The area.
-     * @param uuid The document ID.
-     * @param language The language.
-     * @return A document.
-     * @throws DocumentBuildException if the document does not exist.
-     */
-    Document get(Publication publication, String area, String uuid, String language)
-            throws DocumentBuildException;
-
-    /**
-     * Returns a revision of a document.
-     * @param publication The publication.
-     * @param area The area.
-     * @param uuid The document ID.
-     * @param language The language.
-     * @param revision The revision..
-     * @return A document.
-     * @throws DocumentBuildException if the document does not exist.
-     */
-    Document get(Publication publication, String area, String uuid, String language, int revision)
-            throws DocumentBuildException;
-
-    /**
-     * Returns the document identified by a certain web application URL.
-     * @param webappUrl The web application URL.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    Document getFromURL(String webappUrl) throws DocumentBuildException;
-
-    /**
-     * Builds a clone of a document for another language.
-     * @param document The document to clone.
-     * @param language The language of the target document.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     * @deprecated use {@link DocumentLocator#getLanguageVersion(String)} instead.
-     */
-    Document getLanguageVersion(Document document, String language) throws DocumentBuildException;
-
-    /**
-     * Builds a clone of a document for another area.
-     * @param document The document to clone.
-     * @param area The area of the target document.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     * @deprecated use {@link DocumentLocator#getAreaVersion(String)} instead.
-     */
-    Document getAreaVersion(Document document, String area) throws DocumentBuildException;
-
-    /**
-     * Builds a document for the default language.
-     * @param publication The publication.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    Document get(Publication publication, String area, String uuid)
-            throws DocumentBuildException;
-
-    /**
-     * Checks if a webapp URL represents a document.
-     * @param webappUrl A web application URL.
-     * @return A boolean value.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    boolean isDocument(String webappUrl) throws DocumentBuildException;
-    
-    /**
-     * @return The session.
-     */
-    Session getSession();
-    
-    /**
-     * @param locator The locator.
-     * @return A document.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    Document get(DocumentLocator locator) throws DocumentBuildException;
-    
-    /**
-     * @param id The publication ID.
-     * @return A publication.
-     * @throws PublicationException if the publication does not exist.
-     */
-    Publication getPublication(String id) throws PublicationException;
-    
-    /**
-     * @return All publications.
-     */
-    Publication[] getPublications();
-    
-    /**
-     * @param id The publication ID.
-     * @return If a publication with this ID exists.
-     */
-    boolean existsPublication(String id);
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactoryBuilder.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactoryBuilder.java
deleted file mode 100644
index 8124157..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactoryBuilder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Document factory builder.
- */
-public interface DocumentFactoryBuilder {
-
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = DocumentFactoryBuilder.class.getName();
-
-    /**
-     * Creates a new document factory.
-     * @param session The session.
-     * @return A document identity map.
-     */
-    DocumentFactory createDocumentFactory(Session session);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdToPathMapper.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdToPathMapper.java
deleted file mode 100644
index b2bd56f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdToPathMapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-
-/**
- * Document Id to Path mapper interface
- */
-public interface DocumentIdToPathMapper {
-
-    /**
-     * Compute the document-path for a given publication, area and document-uuid. The file separator
-     * is the slash (/).
-     * 
-     * @param uuid the UUID of the document
-     * @param language the language of the document
-     * 
-     * @return the path to the document, without publication ID and area
-     */
-    String getPath(String uuid, String language);
-
-    /**
-     * Compute the document-path for a given publication, area, document-uuid and language
-     * 
-     * @param publication the publication of the document
-     * @param area the area of the document
-     * @param uuid the uuid of the document
-     * @param language the language of the document
-     * 
-     * @return the path to the document
-     */
-    File getFile(Publication publication, String area, String uuid, String language);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java
deleted file mode 100644
index 38cac3e..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-/**
- * Value object to identify documents.
- */
-public class DocumentIdentifier {
-
-    private String publicationId;
-    private String area;
-    private String language;
-    private String uuid;
-
-    /**
-     * Ctor.
-     * @param pubId The publication ID.
-     * @param area The area.
-     * @param uuid The document UUID.
-     * @param language The language.
-     */
-    public DocumentIdentifier(String pubId, String area, String uuid, String language) {
-
-        if (uuid.startsWith("/") && uuid.split("-").length == 4) {
-            throw new IllegalArgumentException("The UUID [" + uuid + "] must not begin with a '/'!");
-        }
-        if (uuid.indexOf("/") > 0) {
-            throw new IllegalArgumentException("The UUID [" + uuid
-                    + "] must not contain a '/' after the first position!");
-        }
-
-        this.publicationId = pubId;
-        this.area = area;
-        this.language = language;
-        this.uuid = uuid;
-    }
-
-    /**
-     * @return The UUID.
-     */
-    public String getUUID() {
-        return this.uuid;
-    }
-
-    /**
-     * @return The area.
-     */
-    public String getArea() {
-        return area;
-    }
-
-    /**
-     * @return The language.
-     */
-    public String getLanguage() {
-        return language;
-    }
-
-    /**
-     * @return The publication ID.
-     */
-    public String getPublicationId() {
-        return publicationId;
-    }
-
-    public boolean equals(Object obj) {
-        return (obj instanceof DocumentIdentifier) && obj.hashCode() == hashCode();
-    }
-
-    public int hashCode() {
-        return getKey().hashCode();
-    }
-
-    protected String getKey() {
-        return this.publicationId + ":" + this.area + ":" + this.uuid + ":" + this.language;
-    }
-
-    public String toString() {
-        return getKey();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java
deleted file mode 100644
index c5b3bca..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.Map;
-import java.util.WeakHashMap;
-
-/**
- * A DocumentLocator describes a document based on its path in the site structure. The actual
- * document doesn't have to exist.
- */
-public class DocumentLocator {
-
-    private static Map locators = new WeakHashMap();
-
-    /**
-     * Returns a specific document locator.
-     * @param pubId The publication ID.
-     * @param area The area of the document.
-     * @param path The path of the document in the site structure.
-     * @param language The language of the document.
-     * @return A document locator.
-     */
-    public static DocumentLocator getLocator(String pubId, String area, String path, String language) {
-        String key = DocumentLocator.getKey(pubId, area, path, language);
-        DocumentLocator locator = (DocumentLocator) locators.get(key);
-        if (locator == null) {
-            locator = new DocumentLocator(pubId, area, path, language);
-            locators.put(key, locator);
-        }
-        return locator;
-    }
-
-    protected static final String getKey(String pubId, String area, String path, String language) {
-        return pubId + ":" + area + ":" + path + ":" + language;
-    }
-
-    private String pubId;
-    private String area;
-    private String path;
-    private String language;
-
-    protected DocumentLocator(String pubId, String area, String path, String language) {
-        this.path = path;
-        this.pubId = pubId;
-        this.area = area;
-        this.language = language;
-    }
-
-    /**
-     * @return The area of the document.
-     */
-    public String getArea() {
-        return area;
-    }
-
-    /**
-     * @return The language of the document.
-     */
-    public String getLanguage() {
-        return language;
-    }
-
-    /**
-     * @return The path of the document in the site structure.
-     */
-    public String getPath() {
-        return path;
-    }
-
-    /**
-     * @return The publication ID.
-     */
-    public String getPublicationId() {
-        return pubId;
-    }
-
-    /**
-     * Returns a locator with the same publication ID, area, and language, but a different path in
-     * the site structure.
-     * @param path The path.
-     * @return A document locator.
-     */
-    public DocumentLocator getPathVersion(String path) {
-        return DocumentLocator.getLocator(getPublicationId(), getArea(), path, getLanguage());
-    }
-
-    /**
-     * Returns a descendant of this locator.
-     * @param relativePath The relative path which must not begin with a slash and must not be
-     *            empty.
-     * @return A document locator.
-     */
-    public DocumentLocator getDescendant(String relativePath) {
-        if (relativePath.length() == 0) {
-            throw new IllegalArgumentException("The relative path must not be empty!");
-        }
-        if (relativePath.startsWith("/")) {
-            throw new IllegalArgumentException("The relative path must not start with a slash!");
-        }
-        return getPathVersion(getPath() + "/" + relativePath);
-    }
-
-    /**
-     * Returns a child of this locator.
-     * @param step The relative path to the child, it must not contain a slash.
-     * @return A document locator.
-     */
-    public DocumentLocator getChild(String step) {
-        if (step.indexOf("/") > -1) {
-            throw new IllegalArgumentException("The step [" + step + "] must not contain a slash!");
-        }
-        return getDescendant(step);
-    }
-
-    /**
-     * Returns the parent of this locator.
-     * @return A document locator or <code>null</code> if this is the root locator.
-     */
-    public DocumentLocator getParent() {
-        int lastSlashIndex = getPath().lastIndexOf("/");
-        if (lastSlashIndex > -1) {
-            String parentPath = getPath().substring(0, lastSlashIndex);
-            return getPathVersion(parentPath);
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Returns the parent of this locator.
-     * @param defaultPath The path of the locator to return if this is the root locator.
-     * @return A document locator.
-     */
-    public DocumentLocator getParent(String defaultPath) {
-        DocumentLocator parent = getParent();
-        if (parent != null) {
-            return parent;
-        } else {
-            return getPathVersion(defaultPath);
-        }
-    }
-
-    /**
-     * Returns a locator with the same publication ID, area, and path, but with a different
-     * language.
-     * @param language The language.
-     * @return A document locator.
-     */
-    public DocumentLocator getLanguageVersion(String language) {
-        return DocumentLocator.getLocator(getPublicationId(), getArea(), getPath(), language);
-    }
-
-    protected String getKey() {
-        return DocumentLocator.getKey(getPublicationId(), getArea(), getPath(), getLanguage());
-    }
-
-    public boolean equals(Object obj) {
-        if (!(obj instanceof DocumentLocator)) {
-            return false;
-        }
-        DocumentLocator locator = (DocumentLocator) obj;
-        return locator.getKey().equals(getKey());
-    }
-
-    public int hashCode() {
-        return getKey().hashCode();
-    }
-
-    public String toString() {
-        return getKey();
-    }
-
-    /**
-     * Returns a locator with the same publication ID, path, and language, but with a different
-     * area.
-     * @param area The area.
-     * @return A document locator.
-     */
-    public DocumentLocator getAreaVersion(String area) {
-        return DocumentLocator.getLocator(getPublicationId(), area, getPath(), getLanguage());
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java
deleted file mode 100644
index 7eead02..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.lenya.cms.publication.util.DocumentSet;
-
-/**
- * Helper to manage documents. It takes care of attachments etc.
- * 
- * @version $Id$
- */
-public interface DocumentManager {
-
-    /**
-     * The Avalon component role.
-     */
-    String ROLE = DocumentManager.class.getName();
-
-    /**
-     * Checks if a document exists.
-     * @param factory The document factory.
-     * @param pub The publication.
-     * @param area The area.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @return A boolean value.
-     * @throws PublicationException if an error occurs.
-     */
-    boolean exists(DocumentFactory factory, Publication pub, String area, String uuid,
-            String language) throws PublicationException;
-
-    /**
-     * Copies a document from one location to another location.
-     * @param sourceDocument The document to copy.
-     * @param destination The destination document.
-     * @throws PublicationException if a document which destinationDocument depends on does not
-     *             exist.
-     */
-    void copy(Document sourceDocument, DocumentLocator destination) throws PublicationException;
-
-    /**
-     * Copies a document to another area.
-     * @param sourceDocument The document to copy.
-     * @param destinationArea The destination area.
-     * @throws PublicationException if a document which the destination document depends on does not
-     *             exist.
-     */
-    void copyToArea(Document sourceDocument, String destinationArea) throws PublicationException;
-
-    /**
-     * Copies a document set to another area.
-     * @param documentSet The document set to copy.
-     * @param destinationArea The destination area.
-     * @throws PublicationException if a document which one of the destination documents depends on
-     *             does not exist.
-     */
-    void copyToArea(DocumentSet documentSet, String destinationArea) throws PublicationException;
-
-    /**
-     * Creates a new document in the same publication the <code>parentDocument</code> belongs to
-     * with the given parameters:
-     * 
-     * @param sourceDocument The document to initialize the contents and meta data from.
-     * @param area The target area.
-     * @param path The target path.
-     * @param language The target language.
-     * @param extension The extension to use for the document source.
-     * @param navigationTitle navigation title
-     * @param visibleInNav determines the visibility of a node in the navigation
-     * @return The added document.
-     * 
-     * @throws DocumentBuildException if the document can not be created
-     * @throws PublicationException if the document is already contained.
-     */
-    Document add(Document sourceDocument, String area, String path, String language,
-            String extension, String navigationTitle, boolean visibleInNav)
-            throws DocumentBuildException, PublicationException;
-
-    /**
-     * Creates a new document with the given parameters:
-     * @param factory The document factory.
-     * @param resourceType the document type (aka resource type) of the new document
-     * @param contentSourceUri The URI to read the content from.
-     * @param pub The publication.
-     * @param area The area.
-     * @param path The path.
-     * @param language The language.
-     * @param extension The extension to use for the document source, without the leading dot.
-     * @param navigationTitle The navigation title.
-     * @param visibleInNav The navigation visibility.
-     * @return The added document.
-     * 
-     * @throws DocumentBuildException if the document can not be created
-     * @throws PublicationException if the document is already contained.
-     */
-    Document add(DocumentFactory factory, ResourceType resourceType, String contentSourceUri,
-            Publication pub, String area, String path, String language, String extension,
-            String navigationTitle, boolean visibleInNav) throws DocumentBuildException,
-            PublicationException;
-
-    /**
-     * Creates a new document without adding it to the site structure.
-     * @param factory The document factory.
-     * @param resourceType the document type (aka resource type) of the new document
-     * @param contentSourceUri The URI to read the content from.
-     * @param pub The publication.
-     * @param area The area.
-     * @param language The language.
-     * @param extension The extension to use for the document source, without the leading dot.
-     * @return The added document.
-     * 
-     * @throws DocumentBuildException if the document can not be created
-     * @throws PublicationException if the document is already contained.
-     */
-    Document add(DocumentFactory factory, ResourceType resourceType, String contentSourceUri,
-            Publication pub, String area, String language, String extension)
-            throws DocumentBuildException, PublicationException;
-
-    /**
-     * Adds a new version of a document with a different language and / or in a different area.
-     * 
-     * @param sourceDocument The document to initialize the contents and meta data from.
-     * @param area The area.
-     * @param language The language of the new document.
-     * @return The added document.
-     * 
-     * @throws DocumentBuildException if the document can not be created
-     * @throws PublicationException if the document is already contained.
-     */
-    Document addVersion(Document sourceDocument, String area, String language)
-            throws DocumentBuildException, PublicationException;
-
-    /**
-     * Adds a new version of a document with a different language and / or in a different area.
-     * 
-     * @param sourceDocument The document to initialize the contents and meta data from.
-     * @param area The area.
-     * @param language The language of the new document.
-     * @param addToSite If the new version should be added to the site structure.
-     * @return The added document.
-     * 
-     * @throws DocumentBuildException if the document can not be created
-     * @throws PublicationException if the document is already contained.
-     */
-    Document addVersion(Document sourceDocument, String area, String language, boolean addToSite)
-            throws DocumentBuildException, PublicationException;
-
-    /**
-     * Deletes a document from the content repository and from the site structure.
-     * @param document The document to delete.
-     * @throws PublicationException when something went wrong.
-     */
-    void delete(Document document) throws PublicationException;
-
-    /**
-     * Moves a document from one location to another.
-     * @param sourceDocument The source document.
-     * @param destination The destination document.
-     * @throws PublicationException if a document which the destination document depends on does not
-     *             exist.
-     */
-    void move(Document sourceDocument, DocumentLocator destination) throws PublicationException;
-
-    /**
-     * Moves a document set from one location to another. A source is moved to the destination of
-     * the same position in the set.
-     * @param sources The source documents.
-     * @param destinations The destination documents.
-     * @throws PublicationException if a document which the destination document depends on does not
-     *             exist.
-     */
-    void move(DocumentSet sources, DocumentSet destinations) throws PublicationException;
-
-    /**
-     * Copies a document set from one location to another. A source is copied to the destination of
-     * the same position in the set.
-     * @param sources The source documents.
-     * @param destinations The destination documents.
-     * @throws PublicationException if a document which the destination document depends on does not
-     *             exist.
-     */
-    void copy(DocumentSet sources, DocumentSet destinations) throws PublicationException;
-
-    /**
-     * Moves a document to another location, incl. all requiring documents. If a sitetree is used,
-     * this means that the whole subtree is moved.
-     * @param sourceArea The source area.
-     * @param sourcePath The source path.
-     * @param targetArea The target area.
-     * @param targetPath The target path.
-     * @throws PublicationException if an error occurs.
-     */
-    void moveAll(Area sourceArea, String sourcePath, Area targetArea, String targetPath)
-            throws PublicationException;
-
-    /**
-     * Moves all language versions of a document to another location.
-     * @param sourceArea The source area.
-     * @param sourcePath The source path.
-     * @param targetArea The target area.
-     * @param targetPath The target path.
-     * @throws PublicationException if the documents could not be moved.
-     */
-    void moveAllLanguageVersions(Area sourceArea, String sourcePath, Area targetArea,
-            String targetPath) throws PublicationException;
-
-    /**
-     * Copies a document to another location, incl. all requiring documents. If a sitetree is used,
-     * this means that the whole subtree is copied.
-     * @param sourceArea The source area.
-     * @param sourcePath The source path.
-     * @param targetArea The target area.
-     * @param targetPath The target path.
-     * @throws PublicationException if an error occurs.
-     */
-    void copyAll(Area sourceArea, String sourcePath, Area targetArea, String targetPath)
-            throws PublicationException;
-
-    /**
-     * Copies all language versions of a document to another location.
-     * @param sourceArea The source area.
-     * @param sourcePath The source path.
-     * @param targetArea The target area.
-     * @param targetPath The target path.
-     * @throws PublicationException if the documents could not be copied.
-     */
-    void copyAllLanguageVersions(Area sourceArea, String sourcePath, Area targetArea,
-            String targetPath) throws PublicationException;
-
-    /**
-     * Deletes a document, incl. all requiring documents. If a sitetree is used, this means that the
-     * whole subtree is deleted.
-     * @param document The document.
-     * @throws PublicationException if an error occurs.
-     */
-    void deleteAll(Document document) throws PublicationException;
-
-    /**
-     * Deletes all language versions of a document.
-     * @param document The document.
-     * @throws PublicationException if the documents could not be copied.
-     */
-    void deleteAllLanguageVersions(Document document) throws PublicationException;
-
-    /**
-     * Deletes a set of documents.
-     * @param documents The documents.
-     * @throws PublicationException if an error occurs.
-     */
-    void delete(DocumentSet documents) throws PublicationException;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/DocumentUtil.java b/trunk/src/java/org/apache/lenya/cms/publication/DocumentUtil.java
deleted file mode 100644
index 4035b68..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/DocumentUtil.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Document utility class.
- */
-public final class DocumentUtil {
-
-    private static DocumentFactoryBuilder builder;
-
-    /**
-     * Creates a document factory.
-     * @param manager The service manager.
-     * @param session The session.
-     * @return a document factory.
-     */
-    public static final DocumentFactory createDocumentFactory(ServiceManager manager,
-            Session session) {
-        DocumentFactoryBuilder builder = getBuilder(manager);
-        return builder.createDocumentFactory(session);
-    }
-
-    protected static DocumentFactoryBuilder getBuilder(ServiceManager manager) {
-        if (DocumentUtil.builder == null) {
-            try {
-                DocumentUtil.builder = (DocumentFactoryBuilder) manager.lookup(DocumentFactoryBuilder.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return DocumentUtil.builder;
-    }
-
-    /**
-     * Returns a document factory for the session which is attached to the
-     * request. If no session exists, it is created.
-     * @param manager The service manager.
-     * @param request The request.
-     * @return A document factory.
-     */
-    public static DocumentFactory getDocumentFactory(ServiceManager manager, Request request) {
-        Session session;
-        try {
-            session = RepositoryUtil.getSession(manager, request);
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-        return createDocumentFactory(manager, session);
-    }
-
-    /**
-     * Returns the currently requested document or <code>null</code> if no
-     * document is requested.
-     * @param manager The service manager.
-     * @param request The request.
-     * @return A document.
-     * @throws RepositoryException if an error occurs.
-     * @throws DocumentBuildException if an error occurs.
-     */
-    public static Document getCurrentDocument(ServiceManager manager, Request request)
-            throws RepositoryException, DocumentBuildException {
-        Session session = RepositoryUtil.getSession(manager, request);
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(manager, session);
-        String url = ServletHelper.getWebappURI(request);
-        Document doc = null;
-        if (factory.isDocument(url)) {
-            doc = factory.getFromURL(url);
-        }
-        return doc;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/IdentityDocumentIdToPathMapper.java b/trunk/src/java/org/apache/lenya/cms/publication/IdentityDocumentIdToPathMapper.java
deleted file mode 100644
index 1dc97dd..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/IdentityDocumentIdToPathMapper.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-
-/**
- * Identity Document Id to path mapper
- */
-public class IdentityDocumentIdToPathMapper implements DocumentIdToPathMapper {
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentIdToPathMapper#getFile(org.apache.lenya.cms.publication.Publication,
-     *      java.lang.String, java.lang.String, java.lang.String)
-     */
-    public File getFile(Publication publication, String area, String documentId, String language) {
-        File areaDirectory = new File(publication.getDirectory(), Publication.CONTENT_PATH
-                + File.separator + area);
-        File file = new File(areaDirectory, getPath(documentId, language));
-        return file;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.DocumentIdToPathMapper#getPath(java.lang.String,
-     *      java.lang.String)
-     */
-    public String getPath(String documentId, String language) {
-        assert documentId.startsWith("/");
-        // remove leading slash
-        documentId = documentId.substring(1);
-        return documentId + getSuffix(language);
-    }
-
-    /**
-     * Constructs the filename for a given language.
-     * @param language The language.
-     * @return A string value.
-     */
-    protected String getSuffix(String language) {
-        String languageSuffix = "";
-        if (language != null && !"".equals(language)) {
-            languageSuffix = "_" + language;
-        }
-        return languageSuffix;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java b/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java
deleted file mode 100644
index d432d5d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-
-import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.rc.RCEnvironment;
-
-/**
- * A page envelope carries a set of information that are needed during the presentation of a
- * document.
- */
-public class PageEnvelope {
-    /**
-     * The names of the page envelope parameters.
-     */
-    public static final String[] PARAMETER_NAMES = { PageEnvelope.AREA, PageEnvelope.CONTEXT,
-            PageEnvelope.PUBLICATION_ID, PageEnvelope.PUBLICATION, PageEnvelope.IS_PUBLICATION,
-            PageEnvelope.PUBLICATION_LANGUAGES_CSV, PageEnvelope.DOCUMENT,
-            PageEnvelope.DOCUMENT_ID, PageEnvelope.DOCUMENT_PARENT, PageEnvelope.DOCUMENT_NAME,
-            PageEnvelope.DOCUMENT_LABEL, PageEnvelope.DOCUMENT_URL,
-            PageEnvelope.DOCUMENT_URL_WITHOUT_LANGUAGE, PageEnvelope.DOCUMENT_PATH,
-            PageEnvelope.DOCUMENT_EXTENSION, PageEnvelope.DOCUMENT_SOURCE_EXTENSION,
-            PageEnvelope.DOCUMENT_UUID, PageEnvelope.DOCUMENT_TYPE, PageEnvelope.DEFAULT_LANGUAGE,
-            PageEnvelope.DOCUMENT_LANGUAGE, PageEnvelope.DOCUMENT_LANGUAGES,
-            PageEnvelope.DOCUMENT_LANGUAGES_CSV, PageEnvelope.DOCUMENT_LASTMODIFIED,
-            PageEnvelope.BREADCRUMB_PREFIX, PageEnvelope.SSL_PREFIX, PageEnvelope.LANGUAGE };
-    /**
-     * <code>PUBLICATION_ID</code> The publication id
-     */
-    public static final String PUBLICATION_ID = "publication-id";
-    /**
-     * <code>PUBLICATION</code> The publication
-     */
-    public static final String PUBLICATION = "publication";
-    /**
-     * <code>IS_PUBLICATION</code> If the current URL refers to a publication ("true" or "false").
-     */
-    public static final String IS_PUBLICATION = "is-publication";
-    /**
-     * <code>PUBLICATION_LANGUAGES_CSV</code> A list of the publication's languages,
-     * comma-seperated
-     */
-    public static final String PUBLICATION_LANGUAGES_CSV = "publication-languages-csv";
-    /**
-     * <code>CONTEXT</code> The context prefix
-     */
-    public static final String CONTEXT = "context-prefix";
-    /**
-     * <code>AREA</code> The area
-     */
-    public static final String AREA = "area";
-    /**
-     * <code>DEFAULT_LANGUAGE</code> The default language of the publication
-     */
-    public static final String DEFAULT_LANGUAGE = "default-language";
-    /**
-     * <code>DOCUMENT</code> The current document
-     */
-    public static final String DOCUMENT = "document";
-    /**
-     * <code>DOCUMENT_ID</code> The document id of the current document
-     */
-    public static final String DOCUMENT_ID = "document-id";
-    /**
-     * <code>DOCUMENT_PARENT</code> The document id of the parent document
-     */
-    public static final String DOCUMENT_PARENT = "document-parent";
-    /**
-     * <code>DOCUMENT_NAME</code> The name of the current document
-     */
-    public static final String DOCUMENT_NAME = "document-name";
-    /**
-     * <code>DOCUMENT_TYPE</code> The type of the current document
-     */
-    public static final String DOCUMENT_TYPE = "document-type";
-    /**
-     * <code>DOCUMENT_LABEL</code> The label of the current document
-     */
-    public static final String DOCUMENT_LABEL = "document-label";
-    /**
-     * <code>DOCUMENT_URL</code> The URL of the current document
-     */
-    public static final String DOCUMENT_URL = "document-url";
-    /**
-     * <code>DOCUMENT_URL_WITHOUT_LANGUAGE</code> The URL of the current document without a
-     * language extension.
-     */
-    public static final String DOCUMENT_URL_WITHOUT_LANGUAGE = "document-url-without-language";
-    /**
-     * <code>DOCUMENT_FILE</code> The file of the current document
-     */
-    public static final String DOCUMENT_FILE = "document-file";
-    /**
-     * <code>DOCUMENT_PATH</code> The path of the current document
-     */
-    public static final String DOCUMENT_PATH = "document-path";
-    /**
-     * <code>DOCUMENT_EXTENSION</code> The extension of the current document
-     */
-    public static final String DOCUMENT_EXTENSION = "document-extension";
-    /**
-     * <code>DOCUMENT_SOURCE_EXTENSION</code> The source extension of the current document
-     */
-    public static final String DOCUMENT_SOURCE_EXTENSION = "document-source-extension";
-    /**
-     * <code>DOCUMENT_UUID</code> The uuid of the current document
-     */
-    public static final String DOCUMENT_UUID = "document-uuid";
-    /**
-     * <code>DOCUMENT_LANGUAGE</code> The language of the current document
-     */
-    public static final String DOCUMENT_LANGUAGE = "document-language";
-    /**
-     * This attribute returns the document language if the document exists, or the
-     * default language otherwise. This makes it suitable for 404 pages.
-     */
-    public static final String LANGUAGE = "language";
-    /**
-     * <code>DOCUMENT_LANGUAGES</code> The languages the current document is available in
-     */
-    public static final String DOCUMENT_LANGUAGES = "document-languages";
-    /**
-     * <code>DOCUMENT_LANGUAGES_CSV</code> The languages the current document is available in,
-     * comma-seperated
-     */
-    public static final String DOCUMENT_LANGUAGES_CSV = "document-languages-csv";
-    /**
-     * <code>DOCUMENT_LASTMODIFIED</code> The last modified date of the current document
-     */
-    public static final String DOCUMENT_LASTMODIFIED = "document-lastmodified";
-    /**
-     * <code>BREADCRUMB_PREFIX</code> The breadcrumb prefix of the publication, used for
-     * navigation
-     */
-    public static final String BREADCRUMB_PREFIX = "breadcrumb-prefix";
-    /**
-     * <code>SSL_PREFIX</code> The SSL prefix of the publication
-     */
-    public static final String SSL_PREFIX = "ssl-prefix";
-    /**
-     * <code>NAMESPACE</code> The page envelope namespace
-     */
-    public static final String NAMESPACE = "http://apache.org/cocoon/lenya/page-envelope/1.0";
-    /**
-     * <code>DEFAULT_PREFIX</code> The default prefix
-     */
-    public static final String DEFAULT_PREFIX = "lenya";
-
-    private String context;
-    private String area;
-    private Publication publication;
-
-    /**
-     * Constructor.
-     */
-    protected PageEnvelope() {
-    }
-
-    /**
-     * Creates a page envelope from an object model.
-     * @param map The identity map to use.
-     * @param contextPath The servlet context prefix.
-     * @param webappUrl The web application URL.
-     * @param servletContext The servlet context directory.
-     * @param publication The publication.
-     * @throws PageEnvelopeException when something went wrong.
-     */
-    public PageEnvelope(DocumentFactory map, String contextPath,
-            String webappUrl, File servletContext, Publication publication)
-            throws PageEnvelopeException {
-        this.factory = map;
-        this.context = contextPath;
-        this.webappUrl = webappUrl;
-        this.publication = publication;
-    }
-
-    private String webappUrl;
-
-    private DocumentFactory factory;
-
-    /**
-     * Returns the document factory.
-     * @return A document factory.
-     */
-    public DocumentFactory getDocumentFactory() {
-        return this.factory;
-    }
-
-    /**
-     * Creates the message to report when creating the envelope failed.
-     * @param request The request.
-     * @return A string.
-     */
-    protected String createExceptionMessage(Request request) {
-        return "Resolving page envelope failed:" + "\n  URI: " + request.getRequestURI()
-                + "\n  Context: " + getContext() + "\n  Publication ID: "
-                + getPublication().getId() + "\n  Area: " + this.document.getArea()
-                + "\n  Document UUID: " + this.document.getUUID();
-    }
-
-    /**
-     * Returns the publication of this PageEnvelope.
-     * @return a <code>Publication</code> value
-     */
-    public Publication getPublication() {
-        /*
-         * if (this.publication == null) { try { Publication pub =
-         * PublicationManagerImpl.getInstance(new ConsoleLogger()) .getPublication(this.webappUrl,
-         * this.servletContext); if (pub.exists()) { this.publication = pub; if
-         * (getIdentityMap().isDocument(this.webappUrl)) { Document _document =
-         * getIdentityMap().getFromURL(this.webappUrl); setDocument(_document); } } } catch
-         * (Exception e) { throw new RuntimeException(e); } }
-         */
-        return this.publication;
-    }
-
-    /**
-     * @return The current area.
-     */
-    public String getArea() {
-        if (this.area == null) {
-            URLInformation info = new URLInformation(this.webappUrl);
-            this.area = info.getArea();
-        }
-        return this.area;
-    }
-
-    /**
-     * Returns the rcEnvironment.
-     * 
-     * @return a <code>RCEnvironment</code> value
-     * @deprecated We should detach the RC environment from the page envelope.
-     */
-    public RCEnvironment getRCEnvironment() {
-        return RCEnvironment.getInstance(getPublication().getServletContext().getAbsolutePath(),
-                new ConsoleLogger());
-    }
-
-    /**
-     * Returns the context, e.g. "/lenya".
-     * @return a <code>String</code> value
-     */
-    public String getContext() {
-        return this.context;
-    }
-
-    /**
-     * Returns the document-path.
-     * @return a <code>File<code> value
-     */
-    public String getDocumentPath() {
-        return getPublication().getPathMapper().getPath(getDocument().getUUID(),
-                getDocument().getLanguage());
-    }
-
-    /**
-     * @param string The context.
-     */
-    protected void setContext(String string) {
-        this.context = string;
-    }
-
-    private Document document;
-    private boolean documentChecked = false;
-
-    /**
-     * Returns the document or <code>null</code> if the current URL does not represent a document.
-     * @return A document
-     */
-    public Document getDocument() {
-        if (!documentChecked) {
-            try {
-                documentChecked = true;
-                if (getDocumentFactory().isDocument(this.webappUrl)) {
-                    this.document = getDocumentFactory().getFromURL(this.webappUrl);
-                }
-            } catch (final Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.document;
-    }
-
-    /**
-     * Sets the document.
-     * @param _document A document.
-     */
-    public void setDocument(Document _document) {
-        this.document = _document;
-    }
-    
-    /**
-     * @return The document language or the default language if the document doesn't exist.
-     * @see #LANGUAGE
-     */
-    public String getLanguage() {
-        Document document = getDocument();
-        if (document == null) {
-            Publication pub = getPublication();
-            if (pub == null) {
-                throw new RuntimeException("The language attribute can't be used outside a publication.");
-            }
-            return pub.getDefaultLanguage();
-        } else {
-            return document.getLanguage();
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java b/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java
deleted file mode 100644
index 8bc9443..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-
-/**
- * This exception is thrown when the creation of a {@link PageEnvelope} object fails.
- */
-public class PageEnvelopeException extends Exception {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new PageEnvelopeException.
-     */
-    public PageEnvelopeException() {
-	    // do nothing
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * @param message the exception message
-     */
-    public PageEnvelopeException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public PageEnvelopeException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * @param cause  the cause of the exception
-     */
-    public PageEnvelopeException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeFactory.java b/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeFactory.java
deleted file mode 100644
index 3264648..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelopeFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-import java.util.Map;
-
-import org.apache.cocoon.environment.Context;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Common entry point for creating page envelopes.
- */
-public class PageEnvelopeFactory {
-    /**
-     * Creates a new PageEnvelopeFactory.
-     */
-    protected PageEnvelopeFactory() {
-        // do nothing
-    }
-
-    private static PageEnvelopeFactory instance;
-
-    /**
-     * Returns the singleton PageEnvelopeFactory.
-     * @return The factory.
-     */
-    public static PageEnvelopeFactory getInstance() {
-        if (instance == null) {
-            instance = new PageEnvelopeFactory();
-        }
-        return instance;
-    }
-
-    /**
-     * Returns the page envelope for the object model of a Cocoon component.
-     * @param map The document identity map to use.
-     * @param objectModel The object model.
-     * @param pub The publication.
-     * @return A page envelope.
-     * @throws PageEnvelopeException if something went wrong.
-     */
-    public PageEnvelope getPageEnvelope(DocumentFactory map, Map objectModel, Publication pub)
-            throws PageEnvelopeException {
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        String contextPath = request.getContextPath();
-        Context context = ObjectModelHelper.getContext(objectModel);
-        String webappUrl = ServletHelper.getWebappURI(request);
-        String servletContextPath = context.getRealPath("");
-        return getPageEnvelope(map, contextPath, webappUrl, new File(servletContextPath), pub);
-    }
-
-    /**
-     * Creates a page envelope.
-     * @param map The document identity map to use.
-     * @param contextPath The servlet context prefix.
-     * @param webappUrl The web application URL.
-     * @param servletContext The servlet context directory.
-     * @param pub The publication.
-     * @return A page envelope.
-     * @throws PageEnvelopeException if something went wrong.
-     */
-    public PageEnvelope getPageEnvelope(DocumentFactory map, String contextPath, String webappUrl,
-            File servletContext, Publication pub) throws PageEnvelopeException {
-        PageEnvelope envelope = new PageEnvelope(map, contextPath, webappUrl, servletContext, pub);
-        return envelope;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java b/trunk/src/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
deleted file mode 100644
index 2eb4f3e..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-
-/**
- * This interface is basically the reverse of DocumentIdToPathMapper.
- */
-public interface PathToDocumentIdMapper {
-
-    /**
-     * Compute the document-id for a given file.
-     * @param publication the publication where the file is.
-     * @param area the area where the file is.
-     * @param file the file that is associated with the document
-     * @return the document-id of the document associated with the given file.
-     * @throws DocumentDoesNotExistException if there is no document associated with this file.
-     */
-    String getDocumentId(Publication publication, String area, File file)
-        throws DocumentDoesNotExistException;
-        
-    /**
-     * Returns the language for a given file
-     * @param file the document file
-     * @return the language for the given document file or null if the file
-     * has no language.
-     */
-    public String getLanguage(File file);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/Proxy.java b/trunk/src/java/org/apache/lenya/cms/publication/Proxy.java
deleted file mode 100644
index 93b9f96..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/Proxy.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-/**
- * <p>
- * An object of this class represents a proxy configuration.
- * </p>
- * <p>
- * Configuration example (<code>$PUB_HOME/config/publication.xml</code>):
- * </p>
- * <pre>
- * &lt;proxies&gt;
- *   &lt;proxy area="live" ssl="true" url="https://www.host.com/ssl/default"/&gt;
- *   &lt;proxy area="live" ssl="false" url="http://www.host.com/default"/&gt;
- *   &lt;proxy area="authoring" ssl="true" url="https://www.host.com/lenya/default/authoring"/&gt;
- *   &lt;proxy area="authoring" ssl="false" url="http://www.host.com/lenya/default/authoring"/&gt;
- * &lt;proxies;&gt;
- * </pre>
- * 
- * @version $Id$
- */
-public class Proxy {
-
-    private String url;
-
-    /**
-     * Returns the absolute URL of a particular document.
-     * @param document The document.
-     * @return A string.
-     */
-    public String getURL(Document document) {
-        return getUrl() + document.getCanonicalDocumentURL();
-    }
-
-    /**
-     * Returns the proxy URL.
-     * @return A string.
-     */
-    public String getUrl() {
-        return this.url;
-    }
-
-    /**
-     * Sets the proxy URL.
-     * @param _url The url to set.
-     */
-    public void setUrl(String _url) {
-        this.url = _url;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Proxy URL=[" + getUrl() + "]";
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/Publication.java b/trunk/src/java/org/apache/lenya/cms/publication/Publication.java
deleted file mode 100644
index d2b1aef..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/Publication.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import java.io.File;
-
-import org.apache.lenya.cms.repository.RepositoryItem;
-
-/**
- * A Lenya publication.
- */
-public interface Publication extends RepositoryItem {
-
-    /**
-     * <code>AUTHORING_AREA</code> The authoring area
-     */
-    String AUTHORING_AREA = "authoring";
-    /**
-     * <code>DAV_AREA</code> The webDAV authoring area
-     */
-    String DAV_AREA = "webdav";
-    /**
-     * <code>STAGING_AREA</code> The staging area
-     */
-    String STAGING_AREA = "staging";
-    /**
-     * <code>LIVE_AREA</code> The live area
-     */
-    String LIVE_AREA = "live";
-    /**
-     * <code>ARCHIVE_AREA</code> The archive area
-     */
-    String ARCHIVE_AREA = "archive";
-    /**
-     * <code>TRASH_AREA</code> The trash area
-     */
-    String TRASH_AREA = "trash";
-    /**
-     * <code>PUBLICATION_PREFIX</code> The publication prefix
-     */
-    String PUBLICATION_PREFIX = "lenya" + File.separator + "pubs";
-    /**
-     * <code>PUBLICATION_PREFIX_URI</code> The publication prefix URI
-     */
-    String PUBLICATION_PREFIX_URI = "lenya/pubs";
-    /**
-     * <code>CONFIGURATION_PATH</code> The configuration path
-     */
-    String CONFIGURATION_PATH = "config";
-    /**
-     * <code>CONTENT_PATH</code> The content path
-     */
-    String CONTENT_PATH = "content";
-    /**
-     * <code>PENDING_PATH</code> The pending path
-     */
-    String PENDING_PATH = "pending";
-    /**
-     * <code>DELETE_PATH</code> The delete path
-     */
-    String DELETE_PATH = "delete";
-    
-    /**
-     * The item type.
-     */
-    String ITEM_TYPE = "publication";
-
-    /**
-     * Returns the publication ID.
-     * @return A string value.
-     */
-    String getId();
-    
-    /**
-     * @return The name of the publication as specified in the configuration file.
-     */
-    String getName();
-
-    /**
-     * Returns the servlet context this publication belongs to (usually, the
-     * <code>webapps/lenya</code> directory).
-     * @return A <code>File</code> object.
-     */
-    File getServletContext();
-
-    /**
-     * @return if this publication exists.
-     */
-    boolean exists();
-
-    /**
-     * Returns the publication directory.
-     * @return A <code>File</code> object.
-     */
-    File getDirectory();
-
-    /**
-     * Return the directory of a specific area.
-     * @param area a <code>File</code> representing the root of the area content directory.
-     * @return the directory of the given content area.
-     */
-    File getContentDirectory(String area);
-
-    /**
-     * Set the path mapper
-     * @param mapper The path mapper
-     */
-    void setPathMapper(DefaultDocumentIdToPathMapper mapper);
-
-    /**
-     * Returns the path mapper.
-     * @return a <code>DocumentIdToPathMapper</code>
-     */
-    DocumentIdToPathMapper getPathMapper();
-
-    /**
-     * Get the default language
-     * @return the default language
-     */
-    String getDefaultLanguage();
-
-    /**
-     * Set the default language
-     * @param language the default language
-     */
-    void setDefaultLanguage(String language);
-
-    /**
-     * Get all available languages for this publication
-     * @return an <code>Array</code> of languages
-     */
-    String[] getLanguages();
-
-    /**
-     * Get the breadcrumb prefix. It can be used as a prefix if a publication is part of a larger
-     * site
-     * @return the breadcrumb prefix
-     */
-    String getBreadcrumbPrefix();
-
-    /**
-     * Returns the hint of the site manager service that is used by this publication.
-     * @return A hint to use for service selection.
-     */
-    String getSiteManagerHint();
-
-    /**
-     * Returns the document builder of this instance.
-     * @return A hint to use for service selection.
-     */
-    DocumentBuilder getDocumentBuilder();
-
-    /**
-     * Returns the publication template instantiator hint. If the publication does not allow
-     * templating, <code>null</code> is returned.
-     * @return A hint to use for service selection.
-     */
-    String getInstantiatorHint();
-
-    /**
-     * Returns the content dir.
-     * If the publication does not specify a content dir, then <code>null</code> is returned.
-     * @return A base directory where all the content is located.
-     */
-    String getContentDir();
-
-    /**
-     * Returns the proxy which is used for a particular document's area
-     * (see {@link #getProxy(String, boolean)}).
-     * @param document The document.
-     * @param isSslProtected A boolean value.
-     * @return A proxy.
-     */
-    Proxy getProxy(Document document, boolean isSslProtected);
-
-    /**
-     * <p>
-     * Returns the proxy which is used for the given area and the ssl parameter.
-     * </p>
-     * <p>
-     * If no proxy is defined in the publication configuration file, a default proxy
-     * with the URL <code>{contextPath}/{pubId}/{area}</code> is returned.
-     * </p>
-     * <p>
-     * If the area string is "root", the global proxy is returned. If no global proxy
-     * is defined, a default global proxy with the URL <code>{contextPath}</code>
-     * is returned. 
-     * </p>
-     * @param area area
-     * @param isSslProtected A boolean value.
-     * @return A proxy.
-     */
-    Proxy getProxy(String area, boolean isSslProtected);
-
-    /**
-     * @return The templates of the publication.
-     */
-    String[] getTemplateIds();
-
-    /**
-     * @return the URI base for this publication
-     */
-    String getSourceURI();
-
-    /**
-     * @param area The area.
-     * @return the URI base under which contents in this publication are accessed
-     */
-    String getContentURI(String area);
-
-    /**
-     * @param resourceType The resource type or <code>null</code> if no workflow is registered for
-     *            this resource type.
-     * @return The workflow schema to use for this resource type.
-     */
-    String getWorkflowSchema(ResourceType resourceType);
-    
-    /**
-     * @return The resource types that are supported by this publication.
-     */
-    String[] getResourceTypeNames();
-    
-    /**
-     * @param name The name.
-     * @return An area object.
-     * @throws PublicationException if an error occurs.
-     */
-    Area getArea(String name) throws PublicationException;
-    
-    /**
-     * @return The names of all available areas.
-     */
-    String[] getAreaNames();
-    
-    /**
-     * @return The document factory.
-     */
-    public DocumentFactory getFactory();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PublicationException.java b/trunk/src/java/org/apache/lenya/cms/publication/PublicationException.java
deleted file mode 100644
index 0d78c0a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PublicationException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-import org.apache.lenya.cms.repository.RepositoryException;
-
-/**
- * Publication Exception
- */
-public class PublicationException extends RepositoryException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Creates a new PublicationException.
-     */
-    public PublicationException() {
-        super();
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * @param message the exception message
-     */
-    public PublicationException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public PublicationException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * @param cause the cause of the exception
-     */
-    public PublicationException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PublicationManager.java b/trunk/src/java/org/apache/lenya/cms/publication/PublicationManager.java
deleted file mode 100644
index bcb4c83..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PublicationManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-/**
- * Publication manager.
- */
-public interface PublicationManager {
-
-    /**
-     * The service's role.
-     */
-    String ROLE = PublicationManager.class.getName();
-    
-    /**
-     * @param factory The factory.
-     * @return All publications.
-     */
-    Publication[] getPublications(DocumentFactory factory);
-    
-    /**
-     * @param factory The factory.
-     * @param id The publication ID.
-     * @return A publication.
-     * @throws PublicationException if the publication does not exist.
-     */
-    Publication getPublication(DocumentFactory factory, String id) throws PublicationException;
-    
-    /**
-     * @return The IDs of all available publications.
-     */
-    String[] getPublicationIds();
-    
-    /**
-     * Adds a publication.
-     * @param id The publication ID.
-     * @throws PublicationException if the publication already exists.
-     */
-    void addPublication(String id) throws PublicationException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/PublicationUtil.java b/trunk/src/java/org/apache/lenya/cms/publication/PublicationUtil.java
deleted file mode 100644
index 213affa..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/PublicationUtil.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.Arrays;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Publication utility.
- */
-public class PublicationUtil {
-
-    /**
-     * Creates a new publication. The publication ID is resolved from the request URI. The servlet
-     * context path is resolved from the context object.
-     * @param manager The service manager.
-     * @param objectModel The object model of the Cocoon component.
-     * @return a <code>Publication</code>
-     * @throws PublicationException if there was a problem creating the publication.
-     */
-    public static Publication getPublication(ServiceManager manager, Map objectModel)
-            throws PublicationException {
-        return getPublication(manager, ObjectModelHelper.getRequest(objectModel));
-    }
-
-    /**
-     * Creates a new publication based on a request.
-     * @param manager The service manager.
-     * @param request A request.
-     * @return A publication.
-     * @throws PublicationException if there was a problem creating the publication.
-     */
-    public static Publication getPublication(ServiceManager manager, Request request)
-            throws PublicationException {
-        Session session;
-        try {
-            session = RepositoryUtil.getSession(manager, request);
-        } catch (RepositoryException e) {
-            throw new PublicationException(e);
-        }
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(manager, session);
-        String webappUrl = ServletHelper.getWebappURI(request);
-        return getPublicationFromUrl(manager, factory, webappUrl);
-    }
-
-    /**
-     * Creates a publication from a webapp URL and a servlet context directory.
-     * @param manager The service manager.
-     * @param factory The factory.
-     * @param webappUrl The URL within the web application (without context prefix)
-     * @return A publication
-     * @throws PublicationException when something went wrong
-     */
-    public static Publication getPublicationFromUrl(ServiceManager manager,
-            DocumentFactory factory, String webappUrl) throws PublicationException {
-        URLInformation info = new URLInformation(webappUrl);
-        String pubId = info.getPublicationId();
-        return factory.getPublication(pubId);
-    }
-
-    /**
-     * Returns a list of all available publications.
-     * @param manager The service manager.
-     * @param factory The document factory.
-     * @return An array of publications.
-     * @throws PublicationException if an error occurs.
-     */
-    public static Publication[] getPublications(ServiceManager manager, DocumentFactory factory)
-            throws PublicationException {
-        PublicationManager pubManager = null;
-        try {
-            pubManager = (PublicationManager) manager.lookup(PublicationManager.ROLE);
-            return pubManager.getPublications(factory);
-        } catch (ServiceException e) {
-            throw new PublicationException(e);
-        } finally {
-            if (pubManager != null) {
-                manager.release(pubManager);
-            }
-        }
-    }
-
-    /**
-     * Checks if a publication id is valid.
-     * @param id
-     * @return true if the id contains only lowercase letters and/or numbers, and is not an empty
-     *         string.
-     */
-    public static boolean isValidPublicationID(String id) {
-        return id.matches("[a-z0-9]+");
-    }
-
-    private static final String[] areas = { Publication.AUTHORING_AREA, Publication.DAV_AREA,
-            Publication.STAGING_AREA, Publication.LIVE_AREA, Publication.ARCHIVE_AREA,
-            Publication.TRASH_AREA };
-
-    /**
-     * Returns if a given string is a valid area name.
-     * @param area The area string to test.
-     * @return A boolean value.
-     */
-    public static boolean isValidArea(String area) {
-        return area != null && Arrays.asList(areas).contains(area);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/ResourceType.java b/trunk/src/java/org/apache/lenya/cms/publication/ResourceType.java
deleted file mode 100644
index c0895dd..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/ResourceType.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.util.Date;
-
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.Schema;
-
-/**
- * @version $Id:$
- */
-public interface ResourceType {
-
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = ResourceType.class.getName();
-
-    /**
-     * Prefix for translating the resource type name, e.g.
-     * &lt;i18n:text&gt;resourceType-&lt;jx:out
-     * value="${resourceType.getName()}"/&gt;&lt;/i18n:text&gt;
-     */
-    String I18N_PREFIX = "resourceType-";
-
-    /**
-     * Returns the date at which point the requested resource is considered
-     * expired
-     * @return a string in RFC 1123 date format
-     */
-    Date getExpires();
-
-    /**
-     * Returns the name of this document type.
-     * @return A string value.
-     */
-    String getName();
-
-    /**
-     * @return The source URI of the RelaxNG schema.
-     */
-    Schema getSchema();
-
-    /**
-     * Returns an array of XPaths representing attributes to be rewritten when a
-     * document URL has changed.
-     * @return An array of strings.
-     */
-    String[] getLinkAttributeXPaths();
-
-    /**
-     * @return The names of all available samples. The first one is the default sample.
-     */
-    String[] getSampleNames();
-
-    /**
-     * @param name The name.
-     * @return The sample with the specified name.
-     */
-    Sample getSample(String name);
-
-    /**
-     * @param name The name of the resource type.
-     */
-    void setName(String name);
-
-    /**
-     * @return All supported formats.
-     */
-    String[] getFormats();
-
-    /**
-     * @param format The format.
-     * @return The URI to get the formatted content at.
-     */
-    String getFormatURI(String format);
-
-    /**
-     * A resource type sample.
-     */
-    public static class Sample {
-        
-        protected Sample(String name, String mimeType, String uri) {
-            Assert.notNull("name", name);
-            this.name = name;
-            Assert.notNull("mimeType", mimeType);
-            this.mimeType = mimeType;
-            Assert.notNull("uri", uri);
-            this.uri = uri;
-        }
-
-        private String name;
-        private String mimeType;
-        private String uri;
-
-        /**
-         * @return The name of the sample.
-         */
-        public String getName() {
-            return this.name;
-        }
-
-        /**
-         * @return The MIME type of the sample.
-         */
-        public String getMimeType() {
-            return this.mimeType;
-        }
-
-        /**
-         * @return The URI of the sample source.
-         */
-        public String getUri() {
-            return this.uri;
-        }
-
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/SingleLanguageIdentityMapper.java b/trunk/src/java/org/apache/lenya/cms/publication/SingleLanguageIdentityMapper.java
deleted file mode 100644
index a9fd0dc..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/SingleLanguageIdentityMapper.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-/**
- * Single Language Identity mapper.
- * Similar to the {@link DefaultDocumentIdToPathMapper}, but doesn't add 
- * a language suffix to the source URIs. This is useful for publications
- * which do not have multiple language version of the same document,
- * such as the "blog" publication.
- * @version $Id$
- */
-public class SingleLanguageIdentityMapper extends IdentityDocumentIdToPathMapper {
-
-    /**
-     * The parameter <code>language</code> is ignored, since this mapper is used for situations where only one language version of a document exists
-     * @see org.apache.lenya.cms.publication.IdentityDocumentIdToPathMapper#getSuffix(java.lang.String)
-     */
-    protected String getSuffix(String language) {
-        return "";
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/URLInformation.java b/trunk/src/java/org/apache/lenya/cms/publication/URLInformation.java
deleted file mode 100644
index bc8f53d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/URLInformation.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication;
-
-/**
- * This class resolves all Lenya-specific information from a webapp URL.
- */
-public class URLInformation {
-
-    private String publicationId = null;
-    private String area = null;
-    private String completeArea = null;
-    private String documentUrl = null;
-
-    private String url;
-
-    /**
-     * Returns the area (without the "webdav" prefix).
-     * @return A string.
-     */
-    public String getArea() {
-        if (this.area == null) {
-            String completeArea = getCompleteArea();
-            if (Publication.DAV_AREA.equals(completeArea)) {
-                this.area = Publication.AUTHORING_AREA;
-            } else {
-                this.area = completeArea;
-            }
-        }
-        return this.area;
-    }
-
-    /**
-     * Returns the complete area (including the "webdav" prefix).
-     * @return A string.
-     */
-    public String getCompleteArea() {
-        String pubId = getPublicationId();
-        if (this.completeArea == null && pubId != null) {
-            String pubUrl = this.url.substring(pubId.length());
-            if (pubUrl.startsWith("/")) {
-                this.completeArea = extractBeforeSlash(pubUrl.substring(1));
-            } else {
-                this.completeArea = null;
-            }
-        }
-        return this.completeArea;
-    }
-
-    /**
-     * Returns the document URL.
-     * @return A string.
-     */
-    public String getDocumentUrl() {
-        if (this.documentUrl == null) {
-            String pubId = getPublicationId();
-            String area = getCompleteArea();
-            if (pubId != null && area != null) {
-                String prefix = pubId + "/" + area;
-                this.documentUrl = this.url.substring(prefix.length());
-            }
-        }
-        return this.documentUrl;
-    }
-
-    /**
-     * Returns the publication ID.
-     * @return A string.
-     */
-    public String getPublicationId() {
-        if (this.publicationId == null) {
-            this.publicationId = extractBeforeSlash(this.url);
-        }
-        return this.publicationId;
-    }
-
-    protected String extractBeforeSlash(String remaining) {
-
-        if (remaining.length() == 0) {
-            return null;
-        }
-
-        String step;
-        int slashIndex = remaining.indexOf('/');
-        if (slashIndex == -1) {
-            step = remaining;
-        } else {
-            step = remaining.substring(0, slashIndex);
-        }
-        return step;
-    }
-
-    /**
-     * Ctor.
-     * @param webappUrl A webapp URL (without context prefix).
-     */
-    public URLInformation(String webappUrl) {
-
-        if (!webappUrl.startsWith("/")) {
-            throw new RuntimeException("The URL [" + webappUrl + "] doesn't start with a slash!");
-        }
-
-        this.url = webappUrl.substring(1);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/AllExistingSourceResolver.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/AllExistingSourceResolver.java
deleted file mode 100644
index 3c5f4bc..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/AllExistingSourceResolver.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Source visitor to obtain all existing sources.
- */
-public class AllExistingSourceResolver implements SourceVisitor {
-
-    public void visit(SourceResolver resolver, String sourceUri) {
-        Source source = null;
-        try {
-            source = resolver.resolveURI(sourceUri);
-            if (source.exists()) {
-                this.uris.add(sourceUri);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-    }
-
-    private List uris = new ArrayList();
-
-    /**
-     * @return All existing source URIs.
-     */
-    public String[] getUris() {
-        return (String[]) this.uris.toArray(new String[this.uris.size()]);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingAncestorSourceResolver.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingAncestorSourceResolver.java
deleted file mode 100644
index 1fdf614..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingAncestorSourceResolver.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Source visitor to obtain the first existing source.
- * 
- * @version $Id: ExistingSourceResolver.java 179568 2005-06-02 09:27:26Z jwkaltz $
- */
-public class ExistingAncestorSourceResolver implements VisitingSourceResolver {
-
-    private Source source;
-
-    /**
-     * Ctor.
-     */
-    public ExistingAncestorSourceResolver() {
-        super();
-    }
-
-    /**
-     * @return the ancestor of the first existing source.
-     */
-    public Source getSource() {
-        return this.source;
-    }
-
-    private int matches = 0;
-
-    public void visit(SourceResolver resolver, String sourceUri) {
-        Source source = null;
-        try {
-            source = resolver.resolveURI(sourceUri);
-            if (source.exists()) {
-                matches++;
-                if (matches == 2) {
-                    this.source = source;
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingSourceResolver.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingSourceResolver.java
deleted file mode 100644
index cedc91c..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/ExistingSourceResolver.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Source visitor to obtain the first existing source.
- * 
- * @version $Id$
- */
-public class ExistingSourceResolver implements VisitingSourceResolver {
-
-    private Source source;
-
-    /**
-     * Ctor.
-     */
-    public ExistingSourceResolver() {
-        super();
-    }
-
-    /**
-     * @return the first existing source.
-     */
-    public Source getSource() {
-        return this.source;
-    }
-
-    public void visit(SourceResolver resolver, String sourceUri) {
-        if (this.source == null) {
-            Source source = null;
-            try {
-                source = resolver.resolveURI(sourceUri);
-                if (source.exists()) {
-                    this.source = source;
-                }
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (source != null) {
-                    resolver.release(source);
-                }
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/Instantiator.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/Instantiator.java
deleted file mode 100644
index aae205a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/Instantiator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Object to create an instance of a templating-enabled publication.
- * 
- * @version $Id$
- */
-public interface Instantiator {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = Instantiator.class.getName();
-
-    /**
-     * Instantiate a publication.
-     * @param templatePublication The template publication.
-     * @param newPublicationId The ID of the new publication instance.
-     * @param newPublicationName The name of the new publication.
-     * @throws Exception if an error occurs.
-     */
-    void instantiate(Publication templatePublication, String newPublicationId,
-            String newPublicationName) throws Exception;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManager.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManager.java
deleted file mode 100644
index 4fcf508..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManager.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * <p>
- * Component to manage publication templates.
- * </p>
- * <p>
- * When a source is obtained, the traversing order is
- * </p>
- * <ol>
- * <li>the publication itself,</li>
- * <li>all its templates,</li>
- * <li>the core.</li>
- * </ol>
- * @version $Id$
- */
-public interface PublicationTemplateManager {
-
-    /**
-     * The avalon role.
-     */
-    String ROLE = PublicationTemplateManager.class.getName();
-
-    /**
-     * <p>
-     * Visits the versions of a source in traversing order. The source doesn't have to exist to be
-     * visited.
-     * </p>
-     * @param publication The original publication.
-     * @param path The path of the source, relatively to the publication directory.
-     * @param visitor The visitor.
-     */
-    void visit(Publication publication, String path, SourceVisitor visitor);
-
-    /**
-     * Visits the publications in traversing order. The core is not visited.
-     * @param publication The original publication.
-     * @param visitor The visitor.
-     */
-    void visit(Publication publication, PublicationVisitor visitor);
-
-    /**
-     * Returns the hint for the publiation which declares a service.
-     * @param publication The original publication.
-     * @param selector The service selector.
-     * @param originalHint The original hint.
-     * @return An object.
-     * @throws ServiceException if an error occurs.
-     */
-    Object getSelectableHint(Publication publication, ServiceSelector selector, String originalHint)
-            throws ServiceException;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationVisitor.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationVisitor.java
deleted file mode 100644
index d7a93c7..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationVisitor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Publication visitor interface.
- * 
- * @version $Id$
- */
-public interface PublicationVisitor {
-    
-    /**
-     * Visits a publication.
-     * @param publication The publication.
-     */
-    void visit(Publication publication);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/SourceVisitor.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/SourceVisitor.java
deleted file mode 100644
index 0515695..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/SourceVisitor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * @version $Id$
- */
-public interface SourceVisitor {
-
-    /**
-     * Visits a source. We pass the resolver and the URI so that the visitor can
-     * decide if it wants to resolve the source (mainly for performance
-     * reasons).
-     * @param resolver The resolver.
-     * @param sourceUri The source URI.
-     */
-    void visit(SourceResolver resolver, String sourceUri);
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/TemplatingException.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/TemplatingException.java
deleted file mode 100644
index f7403c6..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/TemplatingException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-/**
- * @version $Id$
- */
-public class TemplatingException extends RuntimeException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public TemplatingException() {
-        super();
-    }
-    
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public TemplatingException(String message) {
-        super(message);
-    }
-    
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public TemplatingException(String message, Throwable cause) {
-        super(message, cause);
-    }
-    
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public TemplatingException(Throwable cause) {
-        super(cause);
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/templating/VisitingSourceResolver.java b/trunk/src/java/org/apache/lenya/cms/publication/templating/VisitingSourceResolver.java
deleted file mode 100644
index 905449a..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/templating/VisitingSourceResolver.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import org.apache.excalibur.source.Source;
-
-/**
- * URI resolver.
- */
-public interface VisitingSourceResolver extends SourceVisitor {
-
-    /**
-     * @return The resolved source.
-     */
-    Source getSource();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java b/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
deleted file mode 100644
index 41fec6e..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.util;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Helper class to handle documents from XSP.
- */
-public class DocumentHelper {
-
-    private Map objectModel;
-    private DocumentFactory identityMap;
-    private Publication publication;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param _objectModel The Cocoon object model.
-     */
-    public DocumentHelper(ServiceManager manager, Map _objectModel) {
-        this.objectModel = _objectModel;
-        try {
-            this.publication = PublicationUtil.getPublication(manager, _objectModel);
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-        Request request = ObjectModelHelper.getRequest(_objectModel);
-        Session session;
-        try {
-            session = RepositoryUtil.getSession(manager, request);
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-        this.identityMap = DocumentUtil.createDocumentFactory(manager, session);
-    }
-
-    /**
-     * Creates a document URL. <br/>If the document ID is null, the current document ID is used.
-     * <br/>If the document area is null, the current area is used. <br/>If the language is null,
-     * the current language is used.
-     * @param uuid The target document UUID.
-     * @param documentArea The target area.
-     * @param language The target language.
-     * @return A string.
-     * @throws ProcessingException if something went wrong.
-     */
-    public String getDocumentUrl(String uuid, String documentArea, String language)
-            throws ProcessingException {
-
-        String url = null;
-
-        try {
-            Request request = ObjectModelHelper.getRequest(this.objectModel);
-            String webappUrl = ServletHelper.getWebappURI(request);
-            Document envDocument = this.identityMap.getFromURL(webappUrl);
-            if (uuid == null) {
-                uuid = envDocument.getUUID();
-            }
-
-            if (documentArea == null) {
-                URLInformation info = new URLInformation(webappUrl);
-                String completeArea = info.getCompleteArea();
-                documentArea = completeArea;
-            }
-
-            if (language == null) {
-                language = envDocument.getLanguage();
-            }
-
-            Document document = this.identityMap.get(this.publication, documentArea, uuid, language);
-            url = document.getCanonicalWebappURL();
-
-            String contextPath = request.getContextPath();
-            if (contextPath == null) {
-                contextPath = "";
-            }
-
-            url = contextPath + url;
-        } catch (final DocumentBuildException e) {
-            throw new ProcessingException(e);
-        }
-
-        return url;
-
-    }
-
-    /**
-     * Returns the complete URL of the parent document. If the document is a top-level document, the
-     * /index document is chosen. If the parent does not exist in the appropriate language, the
-     * default language is chosen.
-     * @return A string.
-     * @throws ProcessingException when something went wrong.
-     */
-    public String getCompleteParentUrl() throws ProcessingException {
-
-        String parentUrl;
-        String contextPath;
-        try {
-            Request request = ObjectModelHelper.getRequest(this.objectModel);
-            String webappUrl = ServletHelper.getWebappURI(request);
-            Document document = this.identityMap.getFromURL(webappUrl);
-
-            contextPath = request.getContextPath();
-
-            DocumentLocator parentLocator = document.getLocator().getParent("/index");
-            Document parent = this.identityMap.get(parentLocator);
-            parentUrl = parent.getCanonicalWebappURL();
-        } catch (final DocumentBuildException e) {
-            throw new ProcessingException(e);
-        }
-        if (contextPath == null) {
-            contextPath = "";
-        }
-
-        return contextPath + parentUrl;
-    }
-
-    /**
-     * Returns an existing language version of a document. If the document exists in the default
-     * language, the default language version is returned. Otherwise, a random language version is
-     * returned. If no language version exists, a DocumentException is thrown.
-     * 
-     * @param document The document.
-     * @return A document.
-     * @throws DocumentException when an error occurs.
-     */
-    public static Document getExistingLanguageVersion(Document document) throws DocumentException {
-        return getExistingLanguageVersion(document, document.getPublication().getDefaultLanguage());
-    }
-
-    /**
-     * Returns an existing language version of a document. If the document exists in the preferred
-     * language, this version is returned. Otherwise, if the document exists in the default
-     * language, the default language version is returned. Otherwise, a random language version is
-     * returned. If no language version exists, a DocumentException is thrown.
-     * 
-     * @param document The document.
-     * @param preferredLanguage The preferred language.
-     * @return A document.
-     * @throws DocumentException when an error occurs.
-     */
-    public static Document getExistingLanguageVersion(final Document document,
-            String preferredLanguage) throws DocumentException {
-
-        Publication publication = document.getPublication();
-
-        String[] languages = document.getLanguages();
-
-        if (languages.length == 0) {
-            throw new DocumentException("The document [" + document
-                    + "] does not exist in any language!");
-        }
-
-        List languageList = Arrays.asList(languages);
-
-        String existingLanguage = null;
-
-        if (languageList.contains(preferredLanguage)) {
-            existingLanguage = preferredLanguage;
-        } else if (languageList.contains(publication.getDefaultLanguage())) {
-            existingLanguage = publication.getDefaultLanguage();
-        } else {
-            existingLanguage = languages[0];
-        }
-
-        Document existingVersion = null;
-        try {
-            existingVersion = document.getTranslation(existingLanguage);
-        } catch (DocumentException e) {
-            throw new DocumentException(e);
-        }
-
-        return existingVersion;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java b/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java
deleted file mode 100644
index 64715eb..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Helper class for the policy GUI.
- */
-public class DocumentLanguagesHelper {
-
-    private DocumentFactory factory;
-    private ServiceManager manager;
-    private Publication pub;
-    private String url;
-    private String contextPath;
-
-    /**
-     * Create a new DocumentlanguageHelper.
-     * @param objectModel the objectModel
-     * @param manager The service manager.
-     * @throws ProcessingException if the page envelope could not be created.
-     */
-    public DocumentLanguagesHelper(Map objectModel, ServiceManager manager)
-            throws ProcessingException {
-
-        this.manager = manager;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        this.url = ServletHelper.getWebappURI(request);
-        this.contextPath = request.getContextPath();
-
-        try {
-            Session session = RepositoryUtil.getSession(manager, request);
-            this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
-
-            this.pub = PublicationUtil.getPublication(manager, objectModel);
-        } catch (Exception e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    /**
-     * @return The requested language.
-     * @throws ProcessingException if an error occurs.
-     */
-    public String getLanguage() throws ProcessingException {
-        try {
-            return getLocator().getLanguage();
-        } catch (DocumentBuildException e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    /**
-     * All available languages for the current URL.
-     * @return A string array.
-     * @throws ProcessingException
-     */
-    public String[] getLanguages() throws ProcessingException {
-        List availableLanguages = new ArrayList();
-
-        try {
-            DocumentLocator locator = getLocator();
-            String[] languages = pub.getLanguages();
-            for (int i = 0; i < languages.length; i++) {
-                DocumentLocator version = locator.getLanguageVersion(languages[i]);
-                Publication pub = factory.getPublication(locator.getPublicationId());
-                if (pub.getArea(version.getArea()).getSite().contains(version.getPath(), version.getLanguage())) {
-                    availableLanguages.add(languages[i]);
-                }
-            }
-
-        } catch (Exception e) {
-            throw new ProcessingException(e);
-        }
-        return (String[]) availableLanguages.toArray(new String[availableLanguages.size()]);
-    }
-
-    /**
-     * Compute the URL for a given language and the parameters given in the contructor.
-     * @param language the language
-     * @return the url for the given language
-     * @throws ProcessingException if the document for the given language could not be created.
-     */
-    public String getUrl(String language) throws ProcessingException {
-        Document doc = getDocument(language);
-        return this.contextPath + doc.getCanonicalWebappURL();
-    }
-
-    /**
-     * Create a document for a given language and the parameters given in the contructor.
-     * @param language the language
-     * @return the document with the given language
-     * @throws ProcessingException if the document for the given language could not be created.
-     */
-    protected Document getDocument(String language) throws ProcessingException {
-        Document document;
-        try {
-            DocumentLocator locator = getLocator();
-            DocumentLocator version = locator.getLanguageVersion(language);
-            document = this.factory.get(version);
-        } catch (Exception e) {
-            throw new ProcessingException(e);
-        }
-        return document;
-    }
-
-    protected DocumentLocator getLocator() throws DocumentBuildException {
-        DocumentLocator locator = this.pub.getDocumentBuilder().getLocator(this.factory, this.url);
-        return locator;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java b/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java
deleted file mode 100644
index 67ae82e..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.util;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * An ordered set of documents without duplicates.
- */
-public class DocumentSet {
-
-    /**
-     * Ctor.
-     */
-    public DocumentSet() {
-        // do nothing
-    }
-
-    /**
-     * Ctor.
-     * 
-     * @param _documents The initial documents.
-     */
-    public DocumentSet(Document[] _documents) {
-        for (int i = 0; i < _documents.length; i++) {
-            add(_documents[i]);
-        }
-    }
-
-    private List documents = new ArrayList();
-
-    /**
-     * Returns the list object that stores the documents.
-     * 
-     * @return A list.
-     */
-    protected List getList() {
-        return this.documents;
-    }
-
-    /**
-     * Returns the documents contained in this set.
-     * 
-     * @return An array of documents.
-     */
-    public Document[] getDocuments() {
-        return (Document[]) this.documents.toArray(new Document[this.documents.size()]);
-    }
-
-    /**
-     * Adds a document to this set.
-     * 
-     * @param document The document to add.
-     * @throws IllegalArgumentException if the document is <code>null</code> or already contained.
-     */
-    public void add(Document document) {
-        if (document == null) {
-            throw new IllegalArgumentException("The document is null!");
-        }
-        if (this.documents.contains(document)) {
-            throw new IllegalArgumentException("The document [" + document
-                    + "] is already contained!");
-        }
-        this.documents.add(document);
-    }
-
-    /**
-     * Adds a document set to this set.
-     * 
-     * @param set The documents to add.
-     */
-    public void addAll(DocumentSet set) {
-        assert set != null;
-        Document[] documents = set.getDocuments();
-        for (int i = 0; i < documents.length; i++) {
-            if (!contains(documents[i])) {
-                add(documents[i]);
-            }
-        }
-    }
-
-    /**
-     * @param document The document.
-     * @return if the document is contained.
-     */
-    public boolean contains(Document document) {
-        return getList().contains(document);
-    }
-
-    /**
-     * Checks if this set is empty.
-     * 
-     * @return A boolean value.
-     */
-    public boolean isEmpty() {
-        return getList().isEmpty();
-    }
-
-    /**
-     * Visits the set.
-     * 
-     * @param visitor The visitor.
-     * @throws PublicationException if an error occurs during visiting.
-     */
-    public void visit(DocumentVisitor visitor) throws PublicationException {
-        Document[] resources = getDocuments();
-        for (int i = 0; i < resources.length; i++) {
-            resources[i].accept(visitor);
-        }
-    }
-
-    /**
-     * Removes a document.
-     * 
-     * @param resource The document.
-     * @throws PublicationException if an error occurs.
-     */
-    public void remove(Document resource) throws PublicationException {
-        if (resource == null) {
-            throw new IllegalArgumentException("The resource is null!");
-        }
-        if (!getList().contains(resource)) {
-            throw new IllegalArgumentException("The resource [" + resource + "] is not contained!");
-        }
-        getList().remove(resource);
-    }
-    
-    /**
-     * Removes all documents in a set from this set.
-     * @param set The set.
-     * @throws PublicationException if an error occurs.
-     */
-    public void removeAll(DocumentSet set) throws PublicationException {
-        Document[] documents = set.getDocuments();
-        for (int i = 0; i < documents.length; i++) {
-            remove(documents[i]);
-        }
-    }
-
-    /**
-     * Removes all documents.
-     */
-    public void clear() {
-        getList().clear();
-    }
-
-    /**
-     * Reverses the document order.
-     */
-    public void reverse() {
-        Collections.reverse(getList());
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentVisitor.java b/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentVisitor.java
deleted file mode 100644
index eea3de0..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentVisitor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.util;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * Visitor for resources.
- * 
- */
-public interface DocumentVisitor {
-
-    /**
-     * Visits a resource.
-     * @param document The resource.
-     * @throws PublicationException if something went wrong.
-     */
-    void visitDocument(Document document) throws PublicationException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/publication/util/LanguageVersions.java b/trunk/src/java/org/apache/lenya/cms/publication/util/LanguageVersions.java
deleted file mode 100644
index 4a597dc..0000000
--- a/trunk/src/java/org/apache/lenya/cms/publication/util/LanguageVersions.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.publication.util;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-
-/**
- * Document set containing all language versions of a document.
- */
-public class LanguageVersions extends DocumentSet {
-
-    /**
-     * Ctor.
-     * @param document The document.
-     * @throws DocumentException when something went wrong.
-     */
-    public LanguageVersions(Document document) throws DocumentException {
-        String[] languages = document.getLanguages();
-        add(document);
-
-        for (int i = 0; i < languages.length; i++) {
-            if (!document.getLanguage().equals(languages[i])) {
-                Document languageVersion;
-                try {
-                    languageVersion = document.getFactory()
-                            .getLanguageVersion(document, languages[i]);
-                } catch (DocumentBuildException e) {
-                    throw new DocumentException(e);
-                }
-                add(languageVersion);
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/CheckInEntry.java b/trunk/src/java/org/apache/lenya/cms/rc/CheckInEntry.java
deleted file mode 100644
index 77454df..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/CheckInEntry.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-
-/**
- * A checkin entry
- */
-public class CheckInEntry extends RCMLEntry {
-    /**
-     * Creates a new CheckInEntry object.
-     * @param sessionId The session ID.
-     * @param identity The identity to use
-     * @param time The time
-     * @param version The version number.
-     * @param backup If this entry has a backup.
-     */
-    public CheckInEntry(String sessionId, String identity, long time, int version, boolean backup) {
-        super(sessionId, identity, time);
-        setType(RCML.ci);
-        this.version = version;
-        this.backup = backup;
-    }
-    
-    /**
-     * @return The version number.
-     */
-    public int getVersion() {
-        return this.version;
-    }
-
-    private int version = 0;
-    private boolean backup;
-    
-    public boolean hasBackup() {
-        return this.backup;
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/CheckOutEntry.java b/trunk/src/java/org/apache/lenya/cms/rc/CheckOutEntry.java
deleted file mode 100644
index e687792..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/CheckOutEntry.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-/**
- * A Checkout entry
- */
-public class CheckOutEntry extends RCMLEntry {
-    /**
-     * Creates a new CheckOutEntry object.
-     * @param sessionId The session ID.
-     * @param identity The identity
-     * @param time The time
-     */
-    public CheckOutEntry(String sessionId, String identity, long time) {
-        super(sessionId, identity, time);
-        setType(RCML.co);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java b/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java
deleted file mode 100644
index e55e4a5..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import java.util.Date;
-
-
-/**
- * Reserved check-in exception
- */
-public class FileReservedCheckInException extends Exception {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private String source = null;
-    private Date date = null;
-    private String username = null;
-    private String typeString = null;
-    private short type;
-
-    /**
-     * Creates a new FileReservedCheckInException object.
-     *
-     * @param _source The source document
-     * @param rcml The RCML
-     *
-     * @throws Exception if an error occurs
-     */
-    public FileReservedCheckInException(String _source, RCML rcml)
-        throws Exception {
-        this.source = _source;
-
-        try {
-            RCMLEntry rcmlEntry = rcml.getLatestEntry();
-
-            this.username = rcmlEntry.getIdentity();
-            this.date = new Date(rcmlEntry.getTime());
-            this.type = rcmlEntry.getType();
-
-            if (this.type == RCML.co) {
-                this.typeString = "Checkout";
-            } else {
-                this.typeString = "Checkin";
-            }
-        } catch (Exception exception) {
-            throw new Exception("Unable to create FileReservedCheckInException object!");
-        }
-    }
-
-    /**
-     * Returns the exception message
-     * @return The exception message
-     */
-    public String getMessage() {
-        return "Unable to check in the file " + this.source + " because of a " + this.typeString +
-        " by user " + this.username + " at " + this.date;
-    }
-    /**
-     * Get the date
-     * @return the date
-     */
-    public Date getDate() {
-        return new Date(this.date.getTime());
-    }
-
-    /**
-     * Get the typeString
-     * @return the type string
-     */
-    public String getTypeString() {
-        return this.typeString;
-    }
-
-    /**
-     * Get the user name.
-     * @return the user name
-     */
-    public String getUsername() {
-        return this.username;
-    }
-
-    /**
-     * Get the source
-     * @return The source
-     */
-    public String getSource() {
-        return this.source;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java b/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java
deleted file mode 100644
index 8b86efe..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import java.util.Date;
-
-
-/**
- * Exception for already checked out files
- */
-public class FileReservedCheckOutException extends Exception {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private String source = null;
-    private Date checkOutDate = null;
-    private String checkOutUsername = null;
-
-    /**
-     * Creates a new FileReservedCheckOutException object.
-     * @param _source The source
-     * @param rcml The RCML
-     * @throws Exception if an error occurs
-     */
-    public FileReservedCheckOutException(String _source, RCML rcml)
-        throws Exception {
-        this.source = _source;
-
-        try {
-            CheckOutEntry coe = rcml.getLatestCheckOutEntry();
-
-            this.checkOutUsername = coe.getIdentity();
-            this.checkOutDate = new Date(coe.getTime());
-        } catch (Exception e) {
-            throw new Exception("Unable to create FileReservedCheckOutException object!");
-        }
-    }
-    
-    /**
-     * Get the date of the checkout.
-     * @return the date of the checkout
-     */
-    public Date getCheckOutDate() {
-        return new Date(this.checkOutDate.getTime());
-    }
-
-    /**
-     * Get the source of the checkout.
-     * @return the source of the checkout
-     */
-    public String getSource() {
-        return this.source;
-    }
-
-    /**
-     * Get the user name who did this checkout.
-     * @return the user name of this checkout
-     */
-    public String getCheckOutUsername() {
-        return this.checkOutUsername;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/RCEnvironment.java b/trunk/src/java/org/apache/lenya/cms/rc/RCEnvironment.java
deleted file mode 100644
index 52c2915..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/RCEnvironment.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-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.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.xml.sax.SAXException;
-
-/**
- * Helper class that holds the revision controller configuration
- */
-public class RCEnvironment extends AbstractLogEnabled implements Configurable {
-    
-    /**
-     * <code>CONFIGURATION_FILE</code> The configuration file
-     */
-    public static final String CONFIGURATION_FILE = "lenya" + File.separator + "config" +
-        File.separator + "rc" + File.separator + "revision-controller.xconf";
-    /**
-     * <code>RCML_DIRECTORY</code> The RCML directory
-     */
-    public static final String RCML_DIRECTORY = "rcml-directory";
-    /**
-     * <code>BACKUP_DIRECTORY</code> The backup directory
-     */
-    public static final String BACKUP_DIRECTORY = "backup-directory";
-    private String rcmlDirectory;
-    private String backupDirectory;
-    
-    private static Map instances = new HashMap();
-    
-    /**
-     * Returns the singleton RC environment for this context path.
-     * @param contextPath The context path (the Lenya webapp directory).
-     * @param logger The logger.
-     * @return An RC environment.
-     */
-    public static RCEnvironment getInstance(String contextPath, Logger logger) {
-        RCEnvironment instance = (RCEnvironment) instances.get(contextPath); 
-        if (instance == null) {
-            instance = new RCEnvironment(contextPath, logger);
-            instances.put(contextPath, instance);
-        }
-        return instance;
-    }
-
-    /**
-     * Creates a new RCEnvironment object from the context path
-     * @param contextPath The context path
-     * @param logger The logger.
-     */
-    public RCEnvironment(String contextPath, Logger logger) {
-        enableLogging(logger);
-        getLogger().debug("context path:" + contextPath);
-
-        String configurationFilePath = contextPath + "/" + CONFIGURATION_FILE;
-        getLogger().debug("configuration file path:" + configurationFilePath);
-
-        File configurationFile = new File(configurationFilePath);
-
-        try {
-            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-            Configuration configuration = builder.buildFromFile(configurationFile);
-            configure(configuration);
-        } catch (final ConfigurationException e) {
-            getLogger().error("Cannot load revision controller configuration! ", e);
-        } catch (final SAXException e) {
-            getLogger().error("Cannot load revision controller configuration! ", e);
-        } catch (final IOException e) {
-            getLogger().error("Cannot load revision controller configuration! ", e);
-        }
-    }
-
-    /**
-     @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)     
-     */
-    public void configure(org.apache.avalon.framework.configuration.Configuration configuration)
-        throws ConfigurationException {
-        // revision controller
-        setRCMLDirectory(configuration.getChild("rcmlDirectory").getAttribute("href"));
-        setBackupDirectory(configuration.getChild("backupDirectory").getAttribute("href"));
-
-        getLogger().debug("CONFIGURATION:\nRCML Directory: href=" + getRCMLDirectory());
-        getLogger().debug("CONFIGURATION:\nBackup Directory: href=" + getBackupDirectory());
-    }
-
-    /**
-     * Get the RCML directory
-     * @return The RCML directory
-     */
-    public String getRCMLDirectory() {
-        return this.rcmlDirectory;
-    }
-
-	/**
-	 * Set the rcml directory
-	 * @param rcmlDir the path to the rcml directory
-	 */
-    protected void setRCMLDirectory(String rcmlDir) {
-        this.rcmlDirectory = rcmlDir;
-    }
-
-    /**
-     * Get the backup directory
-     * @return The backup directory
-     */
-    public String getBackupDirectory() {
-        return this.backupDirectory;
-    }
-
-	/**
-	 * Set the backup directory
-	 * @param backupDir path to the backup directory
-	 */
-    protected void setBackupDirectory(String backupDir) {
-        this.backupDirectory = backupDir;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/RCML.java b/trunk/src/java/org/apache/lenya/cms/rc/RCML.java
deleted file mode 100644
index 2d9424d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/RCML.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-import java.util.Vector;
-
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * An object of this class handles the revisions of a node. The node is passed as a parameter so an
- * RCML object can be shared between sessions for synchronization purposes.
- */
-public interface RCML {
-
-    /**
-     * <code>co</code> Checkout
-     */
-    short co = 0;
-    /**
-     * <code>ci</code> Checkin
-     */
-    short ci = 1;
-
-    /**
-     * Check the RCML in.
-     * @param node The node.
-     * @param backup If a backup shall be created.
-     * @param newVersion If the revision number should be increased.
-     * @throws RevisionControlException if an error occurs.
-     */
-    void checkIn(Node node, boolean backup, boolean newVersion) throws RevisionControlException;
-
-    /**
-     * Check the RCML out with restriction to the current session.
-     * @param node The node.
-     * @throws RevisionControlException if an error occurs.
-     */
-    void checkOut(Node node) throws RevisionControlException;
-
-    /**
-     * Check the RCML out.
-     * @param node The node.
-     * @param restrictedToSession If only the current session may check the node in, or all sessions
-     *        belonging to this user.
-     * @throws RevisionControlException if an error occurs.
-     */
-    void checkOut(Node node, boolean restrictedToSession) throws RevisionControlException;
-
-    /**
-     * get the latest check out
-     * @return CheckOutEntry The entry of the check out
-     * @throws RevisionControlException if an error occurs
-     */
-    CheckOutEntry getLatestCheckOutEntry() throws RevisionControlException;
-
-    /**
-     * get the latest check in
-     * @return CheckInEntry The entry of the check in
-     * @throws RevisionControlException if an error occurs
-     */
-    CheckInEntry getLatestCheckInEntry() throws RevisionControlException;
-
-    /**
-     * get the latest entry (a check out or check in)
-     * @return RCMLEntry The entry of the check out/in
-     * @throws RevisionControlException if an error occurs
-     */
-    RCMLEntry getLatestEntry() throws RevisionControlException;
-
-    /**
-     * get all check in and check out
-     * @return Vector of all check out and check in entries in this RCML-file
-     * @throws RevisionControlException if an error occurs
-     */
-    Vector getEntries() throws RevisionControlException;
-
-    /**
-     * get all backup entries
-     * @return Vector of all entries in this RCML-file with a backup
-     * @throws Exception if an error occurs
-     */
-    Vector getBackupEntries() throws Exception;
-
-    /**
-     * Creates a backup.
-     * @param time The time.
-     * @throws RevisionControlException
-     */
-    void makeBackup(long time) throws RevisionControlException;
-
-    /**
-     * Restores a backup.
-     * @param node The node to restore the backup to.
-     * @param time The time.
-     * @throws RevisionControlException
-     */
-    void restoreBackup(Node node, long time) throws RevisionControlException;
-
-    /**
-     * Prune the list of entries and delete the corresponding backups. Limit the number of entries
-     * to the value maximalNumberOfEntries (2maxNumberOfRollbacks(configured)+1)
-     * @throws Exception if an error occurs
-     */
-    void pruneEntries() throws Exception;
-
-    /**
-     * Check if the document is dirty
-     * @return boolean dirty
-     */
-    boolean isDirty();
-
-    /**
-     * get the time's value of the backups
-     * @return String[] the times
-     * @throws Exception if an error occurs
-     */
-    String[] getBackupsTime() throws Exception;
-
-    /**
-     * delete the RCML file and the directory if this one is empty
-     * @return boolean true, if the file was deleted
-     */
-    boolean delete();
-
-    /**
-     * Delete all revisions.
-     * @throws RevisionControlException if an error occurs.
-     */
-    void deleteRevisions() throws RevisionControlException;
-
-    /**
-     * @param node The target node.
-     * @param otherNode The source node.
-     * @throws RevisionControlException if an error occurs.
-     */
-    void copyFrom(Node node, Node otherNode) throws RevisionControlException;
-
-    /**
-     * @return if the RCML is checked out.
-     * @throws RevisionControlException if an error occurs.
-     */
-    boolean isCheckedOut() throws RevisionControlException;
-
-    /**
-     * @param session The session.
-     * @return if the RCML is checked out by this session.
-     * @throws RevisionControlException if an error occurs.
-     */
-    boolean isCheckedOutBySession(Session session) throws RevisionControlException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/RCMLEntry.java b/trunk/src/java/org/apache/lenya/cms/rc/RCMLEntry.java
deleted file mode 100644
index 321874d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/RCMLEntry.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-/**
- * A RCML entry
- */
-public class RCMLEntry {
-	
-    private String identity = null;
-    private long time = 0;
-    private short type = 0;
-    private String sessionId;
-
-    /**
-     * Creates a new RCMLEntry object.
-     * @param sessionId The session ID.
-     * @param _identity The identity of the person for this RCML
-     * @param _time The time of the checkin / checkout
-     */
-    public RCMLEntry(String sessionId, String _identity, long _time) {
-        this.identity = _identity;
-        this.time = _time;
-        this.sessionId = sessionId;
-    }
-    
-    /**
-     * Get the identity of the creator (i.e. the user name)
-     * FIXME: this should be changed to an o.a.l.ac.Identity object
-     * @return the identity
-     */
-    public String getIdentity() {
-        return this.identity;
-    }
-
-    /**
-     * Get the creation time.
-     * @return the time
-     */
-    public long getTime() {
-        return this.time;
-    }
-
-    /**
-     * Get the type (checkin or checkout).
-     * @see org.apache.lenya.cms.rc.RCML.ci
-     * @see org.apache.lenya.cms.rc.RCML.co
-     * @return the type
-     */
-    public short getType() {
-        return this.type;
-    }
-    
-    /**
-     * Set the type (checkin or checkout).
-     * @see org.apache.lenya.cms.rc.RCML.ci
-     * @see org.apache.lenya.cms.rc.RCML.co
-     * @param s the type
-     */
-    protected void setType(short s) {
-        this.type = s;
-    }
-    
-    public String getSessionId() {
-        return this.sessionId;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/rc/RevisionControlException.java b/trunk/src/java/org/apache/lenya/cms/rc/RevisionControlException.java
deleted file mode 100644
index 9abf361..0000000
--- a/trunk/src/java/org/apache/lenya/cms/rc/RevisionControlException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.rc;
-
-/**
- * A revision control exception.
- */
-public class RevisionControlException extends Exception {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public RevisionControlException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public RevisionControlException(String message) {
-        super(message);
-    }
-
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public RevisionControlException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public RevisionControlException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/ContentHolder.java b/trunk/src/java/org/apache/lenya/cms/repository/ContentHolder.java
deleted file mode 100644
index 48db35f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/ContentHolder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.lenya.cms.repository;
-
-import java.io.InputStream;
-
-import org.apache.lenya.cms.metadata.MetaDataOwner;
-
-/**
- * Super interface for nodes and revisions.
- */
-public interface ContentHolder extends MetaDataOwner {
-
-    /**
-     * @return The last modification date. The date is measured in milliseconds
-     *         since the epoch (00:00:00 GMT, January 1, 1970), and is 0 if it's
-     *         unknown.
-     * @throws RepositoryException if the node does not exist.
-     */
-    long getLastModified() throws RepositoryException;
-
-    /**
-     * @return The content length.
-     * @throws RepositoryException if the node does not exist.
-     */
-    long getContentLength() throws RepositoryException;
-
-    /**
-     * Accessor for the source URI of this node
-     * @return the source URI
-     */
-    String getSourceURI();
-
-    /**
-     * @return if the item exists.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean exists() throws RepositoryException;
-
-    /**
-     * @return The input stream.
-     * @throws RepositoryException if the node does not exist.
-     */
-    InputStream getInputStream() throws RepositoryException;
-
-    /**
-     * @return The MIME type.
-     * @throws RepositoryException if the node does not exist.
-     */
-    String getMimeType() throws RepositoryException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/History.java b/trunk/src/java/org/apache/lenya/cms/repository/History.java
deleted file mode 100644
index 89d7765..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/History.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * The revision history of a node.
- */
-public interface History {
-    
-    /**
-     * @return The available revision numbers in descending order (starting with the newest one).
-     */
-    int[] getRevisionNumbers();
-    
-    /**
-     * @return The latest revision.
-     */
-    Revision getLatestRevision();
-    
-    /**
-     * @param number A revision number.
-     * @return A revision.
-     * @throws RepositoryException if no revision with this number exists.
-     */
-    Revision getRevision(int number) throws RepositoryException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/Node.java b/trunk/src/java/org/apache/lenya/cms/repository/Node.java
deleted file mode 100644
index 4a3531f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/Node.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.io.OutputStream;
-import java.util.Collection;
-
-/**
- * A repository node is used to persist a {@link Persistable}.
- * 
- * @version $Id$
- */
-public interface Node extends RepositoryItem, ContentHolder {
-
-    /**
-     * @return The session this node belongs to.
-     */
-    Session getSession();
-
-    /**
-     * The protocol with which to find Lenya nodes
-     */
-    String LENYA_PROTOCOL = "lenya://";
-
-    /**
-     * The identifiable type.
-     */
-    String IDENTIFIABLE_TYPE = "node";
-
-    /**
-     * @return if the node exists.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean exists() throws RepositoryException;
-
-    /**
-     * @return if the node is a collection.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean isCollection() throws RepositoryException;
-
-    /**
-     * @return children
-     * @throws RepositoryException if an error occurs.
-     */
-    public Collection getChildren() throws RepositoryException;
-
-    /**
-     * @return The output stream.
-     * @throws RepositoryException if the node does not exist.
-     */
-    OutputStream getOutputStream() throws RepositoryException;
-
-    /**
-     * Locks the node.
-     * @throws RepositoryException if an error occurs.
-     */
-    void lock() throws RepositoryException;
-
-    /**
-     * Unlocks the node.
-     * @throws RepositoryException if an error occurs.
-     */
-    void unlock() throws RepositoryException;
-
-    /**
-     * Checks out the node with restriction to the current session..
-     * @throws RepositoryException if an error occurs.
-     */
-    void checkout() throws RepositoryException;
-
-    /**
-     * Checks out the node with the possibility to allow other sessions to check it in.
-     * This is a workaround for the current WYSIWYG editor infrastructure, which can't
-     * use the same session for opening and saving a node.
-     * @param restrictedToSession if the check-out is restricted to the current session.
-     * @throws RepositoryException if an error occurs.
-     */
-    void checkout(boolean restrictedToSession) throws RepositoryException;
-
-    /**
-     * Checks in the node.
-     * @throws RepositoryException if the node is not checked out or is checked
-     *         out by a different session.
-     */
-    void checkin() throws RepositoryException;
-
-    /**
-     * Checks in the node even if it is checked out by a different session.
-     * @throws RepositoryException if the node is not checked out.
-     */
-    void forceCheckIn() throws RepositoryException;
-
-    /**
-     * Registers the node as dirty.
-     * @throws RepositoryException if an error occurs.
-     */
-    void registerDirty() throws RepositoryException;
-
-    /**
-     * @return if the node is checked out.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean isCheckedOut() throws RepositoryException;
-
-    /**
-     * @return The ID of the user who has checked out this node.
-     * @throws RepositoryException if the node is not checked out.
-     */
-    String getCheckoutUserId() throws RepositoryException;
-
-    /**
-     * Checks if the node is checked out by a certain session. We pass the session
-     * as a parameter to allow the check for nodes from the shared item store.
-     * @param session The session.
-     * @return if the node is checked out by a specific session.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean isCheckedOutBySession(Session session) throws RepositoryException;
-
-    /**
-     * @param source The node to copy the revisions from.
-     * @throws RepositoryException if an error occurs.
-     */
-    void copyRevisionsFrom(Node source) throws RepositoryException;
-
-    /**
-     * @param revisionNumber The revision number to roll back.
-     * @throws RepositoryException if this revision doesn't exist.
-     */
-    void rollback(int revisionNumber) throws RepositoryException;
-
-    /**
-     * @return if the node is locked.
-     * @throws RepositoryException if an error occurs.
-     */
-    boolean isLocked() throws RepositoryException;
-
-    /**
-     * Registers the node as removed.
-     * @throws RepositoryException if an error occurs.
-     */
-    void registerRemoved() throws RepositoryException;
-
-    /**
-     * @return The revision history.
-     */
-    History getHistory();
-
-    /**
-     * Delete this node.
-     * @throws RepositoryException if an error occurs.
-     */
-    void delete() throws RepositoryException;
-    
-    /**
-     * @param persistable The object which is persisted using the node.
-     * @throws RepositoryException if the node already has an item.
-     */
-    void setPersistable(Persistable persistable) throws RepositoryException;
-    
-    /**
-     * @return The object which is persisted using this node or <code>null</code>
-     * if no object is registered.
-     */
-    Persistable getPersistable();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/NodeFactory.java b/trunk/src/java/org/apache/lenya/cms/repository/NodeFactory.java
deleted file mode 100644
index b438d09..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/NodeFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * Factory to produce repository nodes.
- * @version $Id:$
- */
-public interface NodeFactory extends RepositoryItemFactory {
-
-    /**
-     * The role of the service.
-     */
-    String ROLE = NodeFactory.class.getName();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/Persistable.java b/trunk/src/java/org/apache/lenya/cms/repository/Persistable.java
deleted file mode 100644
index 837b4ee..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/Persistable.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * An object which can be persisted to a node.
- */
-public interface Persistable {
-
-    /**
-     * Save the content of the persistable object to the node. This method is called by the node
-     * before the session is committed.
-     * @throws RepositoryException if the object couldn't be saved.
-     */
-    void save() throws RepositoryException;
-    
-    /**
-     * @return if the persistable object has been modified, i.e. if it needs to be saved.
-     */
-    boolean isModified();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryException.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryException.java
deleted file mode 100644
index 104ba59..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.lenya.transaction.TransactionException;
-
-/**
- * Repository exception.
- * @version $Id:$
- */
-public class RepositoryException extends TransactionException {
-
-    /**
-     * Ctor.
-     */
-    public RepositoryException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param arg0
-     * @param arg1
-     */
-    public RepositoryException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    /**
-     * Ctor.
-     * @param arg0
-     */
-    public RepositoryException(String arg0) {
-        super(arg0);
-    }
-
-    /**
-     * Ctor.
-     * @param arg0
-     */
-    public RepositoryException(Throwable arg0) {
-        super(arg0);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItem.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItem.java
deleted file mode 100644
index 3ebb5ef..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItem.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * Marker interface for repository items.
- */
-public interface RepositoryItem {
-    
-    /**
-     * @return The session this item belongs to.
-     */
-    Session getSession();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java
deleted file mode 100644
index 6099d6f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * Interface for repository item factories.
- */
-public interface RepositoryItemFactory {
-    
-    /**
-     * @return The item type.
-     */
-    String getItemType();
-
-    /**
-     * @param session The current session.
-     * @param key The key.
-     * @return A repository item.
-     * @throws RepositoryException if an error occurs.
-     */
-    RepositoryItem buildItem(Session session, String key) throws RepositoryException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
deleted file mode 100644
index 0c35c2d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.lenya.transaction.IdentifiableFactory;
-import org.apache.lenya.transaction.IdentityMap;
-
-/**
- * Wraps a repository item factory to resemble an identifiable factory.
- */
-public class RepositoryItemFactoryWrapper implements IdentifiableFactory {
-    
-    private RepositoryItemFactory delegate;
-    private Session session;
-    
-    /**
-     * Ctor.
-     * @param delegate The factory to wrap.
-     * @param session The session.
-     */
-    public RepositoryItemFactoryWrapper(RepositoryItemFactory delegate, Session session) {
-        this.delegate = delegate;
-        this.session = session;
-    }
-
-    public Object build(IdentityMap map, String key) throws Exception {
-        return delegate.buildItem(this.session, key);
-    }
-
-    public String getType() {
-        return this.delegate.getItemType();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManager.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManager.java
deleted file mode 100644
index f946307..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManager.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.lenya.ac.Identity;
-
-/**
- * Repository manager.
- * @version $Id:$
- */
-public interface RepositoryManager {
-
-    /**
-     * The role of the service.
-     */
-    String ROLE = RepositoryManager.class.getName();
-    
-    /**
-     * @param identity The identity the session belongs to.
-     * @param modifiable Determines if the repository items in this session should be modifiable.
-     * @return A session.
-     * @throws RepositoryException if an error occurs.
-     */
-    Session createSession(Identity identity, boolean modifiable) throws RepositoryException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
deleted file mode 100644
index 978248d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.ac.Identity;
-
-/**
- * Repository manager implementation.
- * @version $Id:$
- */
-public class RepositoryManagerImpl extends AbstractLogEnabled implements RepositoryManager,
-        Serviceable {
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public Session createSession(Identity identity, boolean modifiable) throws RepositoryException {
-        return new SessionImpl(identity, modifiable, this.manager, getLogger());
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryUtil.java b/trunk/src/java/org/apache/lenya/cms/repository/RepositoryUtil.java
deleted file mode 100644
index 3cbd014..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/RepositoryUtil.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.Identity;
-
-/**
- * Repository utility class.
- */
-public class RepositoryUtil {
-
-    /**
-     * Returns the session attached to the request or creates a session.
-     * @param manager The service manager.
-     * @param request The request.
-     * @return A session.
-     * @throws RepositoryException if an error occurs.
-     */
-    public static Session getSession(ServiceManager manager, Request request)
-            throws RepositoryException {
-        Session session = (Session) request.getAttribute(Session.class.getName());
-        if (session == null) {
-            Identity identity = getIdentity(request);
-            // attach a read-only repository session to the HTTP request
-            session = createSession(manager, identity, false);
-            request.setAttribute(Session.class.getName(), session);
-        } else if (session.getIdentity() == null) {
-            Identity identity = getIdentity(request);
-            if (identity != null) {
-                session.setIdentity(identity);
-            }
-        }
-        return session;
-    }
-
-    protected static Identity getIdentity(Request request) {
-        org.apache.cocoon.environment.Session cocoonSession = request.getSession();
-        Identity identity = (Identity) cocoonSession.getAttribute(Identity.class.getName());
-        return identity;
-    }
-
-    /**
-     * Creates a session.
-     * @param manager The service manager.
-     * @param identity The identity.
-     * @param modifiable Determines if the repository items in this session should be modifiable.
-     * @return a session.
-     * @throws RepositoryException if an error occurs.
-     */
-    public static Session createSession(ServiceManager manager, Identity identity, boolean modifiable)
-            throws RepositoryException {
-        RepositoryManager repoMgr = null;
-        Session session;
-        try {
-            repoMgr = (RepositoryManager) manager.lookup(RepositoryManager.ROLE);
-            session = repoMgr.createSession(identity, modifiable);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-            manager.release(repoMgr);
-        }
-        return session;
-    }
-
-    /**
-     * Removes the repository session from the servlet session.
-     * @param manager The service manager.
-     * @param request The current request.
-     */
-    public static void removeSession(ServiceManager manager, Request request) {
-        request.removeAttribute(Session.class.getName());
-        /*
-        org.apache.cocoon.environment.Session session = request.getSession(false);
-        if (session != null) {
-            session.removeAttribute(Session.class.getName());
-        }
-        */
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/Revision.java b/trunk/src/java/org/apache/lenya/cms/repository/Revision.java
deleted file mode 100644
index 1805bab..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/Revision.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * A revision.
- */
-public interface Revision extends ContentHolder {
-    
-    /**
-     * @return The revision number.
-     */
-    int getNumber();
-    
-    /**
-     * @return The time when this revision was created.
-     */
-    long getTime();
-    
-    /**
-     * @return The ID of the user who created this revision.
-     */
-    String getUserId();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/Session.java b/trunk/src/java/org/apache/lenya/cms/repository/Session.java
deleted file mode 100644
index 9780f48..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/Session.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryListener;
-import org.apache.lenya.transaction.ConcurrentModificationException;
-import org.apache.lenya.transaction.UnitOfWork;
-
-/**
- * Repository session.
- */
-public interface Session extends UnitOfWork {
-
-    /**
-     * @return the identity this session belongs to.
-     */
-    Identity getIdentity();
-
-    /**
-     * Commits the transaction.
-     * @throws RepositoryException if an error occurs.
-     * @throws ConcurrentModificationException if a transactionable has been
-     *         modified by another session.
-     */
-    void commit() throws RepositoryException, ConcurrentModificationException;
-
-    /**
-     * Rolls the transaction back.
-     * @throws RepositoryException if an error occurs.
-     */
-    void rollback() throws RepositoryException;
-
-    /**
-     * @param factory The factory.
-     * @param key The key.
-     * @return The item for the specific key.
-     * @throws RepositoryException if an error occurs.
-     */
-    RepositoryItem getRepositoryItem(RepositoryItemFactory factory, String key)
-            throws RepositoryException;
-
-    /**
-     * @param listener The listener to add.
-     * @throws RepositoryException if the listener is already registered.
-     */
-    void addListener(RepositoryListener listener) throws RepositoryException;
-
-    /**
-     * Checks if a listener is registered.
-     * @param listener The listener.
-     * @return A boolean value.
-     */
-    boolean isListenerRegistered(RepositoryListener listener);
-
-    /**
-     * @param event The event to add to the queue.
-     */
-    void enqueueEvent(RepositoryEvent event);
-
-    /**
-     * @param identity The identity.
-     */
-    void setIdentity(Identity identity);
-
-    /**
-     * @return if the repository items in this session can be modified.
-     */
-    boolean isModifiable();
-
-    /**
-     * @return The ID of this session.
-     */
-    String getId();
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java b/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java
deleted file mode 100644
index 3d0dec3..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.observation.ObservationRegistry;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryListener;
-import org.apache.lenya.transaction.ConcurrentModificationException;
-import org.apache.lenya.transaction.IdentityMap;
-import org.apache.lenya.transaction.IdentityMapImpl;
-import org.apache.lenya.transaction.Lock;
-import org.apache.lenya.transaction.Lockable;
-import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.transaction.TransactionLock;
-import org.apache.lenya.transaction.Transactionable;
-import org.apache.lenya.transaction.UnitOfWork;
-import org.apache.lenya.transaction.UnitOfWorkImpl;
-import org.apache.lenya.util.Assert;
-
-/**
- * Repository session.
- */
-public class SessionImpl extends AbstractLogEnabled implements Session {
-
-    protected static final String UNMODIFIABLE_SESSION_ID = "unmodifiable";
-    private ServiceManager manager;
-    private Identity identity;
-
-    /**
-     * Ctor.
-     * @param identity The identity.
-     * @param modifiable Determines if the repository items in this session can be modified.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public SessionImpl(Identity identity, boolean modifiable, ServiceManager manager, Logger logger) {
-
-        ContainerUtil.enableLogging(this, logger);
-
-        Assert.notNull("service manager", manager);
-        this.manager = manager;
-
-        this.identityMap = new IdentityMapImpl(logger);
-        this.identity = identity;
-        this.id = modifiable ? createUuid() : UNMODIFIABLE_SESSION_ID;
-
-        ObservationRegistry registry = null;
-        try {
-            registry = (ObservationRegistry) this.manager.lookup(ObservationRegistry.ROLE);
-            addListener(registry);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-
-        if (modifiable) {
-            this.unitOfWork = new UnitOfWorkImpl(this.identityMap, this.identity, getLogger());
-        }
-    }
-
-    protected String createUuid() {
-        String id;
-        UUIDGenerator generator = null;
-        try {
-
-            generator = (UUIDGenerator) this.manager.lookup(UUIDGenerator.ROLE);
-            id = generator.nextUUID();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (generator == null) {
-                this.manager.release(generator);
-            }
-        }
-        return id;
-    }
-
-    public Identity getIdentity() {
-        return this.identity;
-    }
-
-    private UnitOfWork unitOfWork;
-    private SharedItemStore sharedItemStore;
-
-    /**
-     * @return The unit of work.
-     */
-    protected UnitOfWork getUnitOfWork() {
-        if (this.unitOfWork == null) {
-            throw new RuntimeException("This session [" + getId() + "] is not modifiable!");
-        }
-        return this.unitOfWork;
-    }
-
-    private boolean committing = false;
-
-    /**
-     * Commits the transaction.
-     * @throws RepositoryException if an error occurs.
-     * @throws ConcurrentModificationException if a transactionable has been modified by another
-     *         session.
-     */
-    public synchronized void commit() throws RepositoryException, ConcurrentModificationException {
-
-        savePersistables();
-        
-        this.committing = true;
-
-        try {
-            synchronized (TransactionLock.LOCK) {
-                
-                getUnitOfWork().commit();
-                getSharedItemStore().clear();
-            }
-        } catch (ConcurrentModificationException e) {
-            throw e;
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-
-        for (Iterator i = this.events.iterator(); i.hasNext();) {
-            RepositoryEvent event = (RepositoryEvent) i.next();
-            for (Iterator l = this.listeners.iterator(); l.hasNext();) {
-                RepositoryListener listener = (RepositoryListener) l.next();
-                listener.eventFired(event);
-            }
-        }
-        this.events.clear();
-        this.committing = false;
-    }
-
-    /**
-     * Save all persistable objects to their nodes.
-     * @throws RepositoryException if an error occurs.
-     */
-    protected void savePersistables() throws RepositoryException {
-        Object[] objects = getIdentityMap().getObjects();
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i] instanceof Node) {
-                Node node = (Node) objects[i];
-                Persistable persistable = node.getPersistable();
-                if (persistable != null && persistable.isModified()) {
-                    persistable.save();
-                }
-            }
-        }
-    }
-
-    /**
-     * Rolls the transaction back.
-     * @throws RepositoryException if an error occurs.
-     */
-    public void rollback() throws RepositoryException {
-        try {
-            synchronized (TransactionLock.LOCK) {
-                getUnitOfWork().rollback();
-            }
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-        this.events.clear();
-    }
-
-    protected SharedItemStore getSharedItemStore() {
-        if (this.sharedItemStore == null) {
-            try {
-                this.sharedItemStore = (SharedItemStore) this.manager.lookup(SharedItemStore.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.sharedItemStore;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.repository.Session#getRepositoryItem(org.apache.lenya.cms.repository.RepositoryItemFactory,
-     *      java.lang.String)
-     */
-    public RepositoryItem getRepositoryItem(RepositoryItemFactory factory, String key)
-            throws RepositoryException {
-        RepositoryItemFactoryWrapper wrapper = new RepositoryItemFactoryWrapper(factory, this);
-        return (RepositoryItem) getIdentityMap().get(wrapper, key);
-    }
-
-    public void registerNew(Transactionable object) throws TransactionException {
-        getUnitOfWork().registerNew(object);
-    }
-
-    public void registerDirty(Transactionable object) throws TransactionException {
-        getUnitOfWork().registerDirty(object);
-    }
-
-    public void registerRemoved(Transactionable object) throws TransactionException {
-        getUnitOfWork().registerRemoved(object);
-    }
-
-    /**
-     * @param identity The identity.
-     */
-    public void setIdentity(Identity identity) {
-        this.identity = identity;
-    }
-
-    public boolean isDirty(Transactionable transactionable) {
-        return getUnitOfWork().isDirty(transactionable);
-    }
-
-    public Lock createLock(Lockable lockable, int version) throws TransactionException {
-        return getUnitOfWork().createLock(lockable, version);
-    }
-
-    public void removeLock(Lockable lockable) throws TransactionException {
-        getUnitOfWork().removeLock(lockable);
-    }
-
-    private Set listeners = new HashSet();
-
-    public void addListener(RepositoryListener listener) throws RepositoryException {
-        if (this.listeners.contains(listener)) {
-            throw new RepositoryException("The listener [" + listener
-                    + "] is already registered for node [" + this + "]!");
-        }
-        this.listeners.add(listener);
-    }
-
-    public boolean isListenerRegistered(RepositoryListener listener) {
-        return this.listeners.contains(listener);
-    }
-
-    private List events = new ArrayList();
-    private IdentityMap identityMap;
-
-    public synchronized void enqueueEvent(RepositoryEvent event) {
-        if (!isModifiable()) {
-            throw new RuntimeException("Can't enqueue event in unmodifiable session!");
-        }
-        if (committing) {
-            throw new RuntimeException(
-                    "No events can be queued while the session is being committed. Event: ["
-                            + event.getDescriptor() + "]");
-        }
-        Assert.isTrue("event belongs to session", event.getSession() == this);
-        this.events.add(event);
-    }
-
-    protected IdentityMap getIdentityMap() {
-        return this.identityMap;
-    }
-
-    public boolean isModifiable() {
-        return this.unitOfWork != null;
-    }
-
-    private String id;
-
-    public String getId() {
-        return this.id;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/SharedItemStore.java b/trunk/src/java/org/apache/lenya/cms/repository/SharedItemStore.java
deleted file mode 100644
index e84e9ee..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/SharedItemStore.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * Store for read-only items which are shared by all sessions for performance reasons.
- */
-public interface SharedItemStore extends Session {
-
-    /**
-     * The service role.
-     */
-    String ROLE = SharedItemStore.class.getName();
-    
-    /**
-     * Clears the store when a session has been committed.
-     */
-    void clear();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/repository/UUIDGenerator.java b/trunk/src/java/org/apache/lenya/cms/repository/UUIDGenerator.java
deleted file mode 100644
index d5dc976..0000000
--- a/trunk/src/java/org/apache/lenya/cms/repository/UUIDGenerator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-/**
- * UUID generator.
- */
-public interface UUIDGenerator {
-
-    /**
-     * The service role.
-     */
-    String ROLE = UUIDGenerator.class.getName();
-
-    /**
-     * @return A new UUID.
-     */
-    public String nextUUID();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/AbstractLink.java b/trunk/src/java/org/apache/lenya/cms/site/AbstractLink.java
deleted file mode 100644
index 9b09306..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/AbstractLink.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* @version $Id$ */
-
-package org.apache.lenya.cms.site;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * The AbstractLink class encapsulates a string label and a associated language.
- */
-public abstract class AbstractLink implements Link {
-    private String label = null;
-    private String language = null;
-
-    /**
-     * Creates a new AbstractLink object.
-     * @param factory The document factory.
-     * @param node The site node.
-     * @param _label the actual label
-     * @param _language the language
-     */
-    public AbstractLink(DocumentFactory factory, SiteNode node, String _label, String _language) {
-        this.label = _label;
-        this.language = _language;
-        this.factory = factory;
-        this.node = node;
-    }
-
-    /**
-     * Get the actual label of the AbstractLink object
-     * 
-     * @return the actual label as a String
-     */
-    public String getLabel() {
-        return this.label;
-    }
-
-    /**
-     * Get the language of this AbstractLink object
-     * 
-     * @return the language
-     */
-
-    public String getLanguage() {
-        return this.language;
-    }
-
-    /**
-     * (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getLabel() + " " + getLanguage();
-    }
-
-    /**
-     * (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        boolean equals = false;
-
-        if (getClass().isInstance(obj)) {
-            AbstractLink otherLabel = (AbstractLink) obj;
-            equals = getLabel().equals(otherLabel.getLabel())
-                    && getLanguage().equals(otherLabel.getLanguage());
-        }
-
-        return equals;
-    }
-
-    /**
-     * (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return getLabel().hashCode() + getLanguage().hashCode();
-    }
-
-    private SiteNode node;
-    private DocumentFactory factory;
-
-    public Document getDocument() {
-        SiteNode node = getNode();
-        String uuid = node.getUuid();
-        if (uuid == null) {
-            throw new UnsupportedOperationException("The node [" + node + "] has no UUID.");
-        }
-        Publication pub = node.getStructure().getPublication();
-        String area = node.getStructure().getArea();
-        try {
-            return this.factory.get(pub, area, uuid, getLanguage());
-        } catch (DocumentBuildException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public SiteNode getNode() {
-        return this.node;
-    }
-    
-    public void setLabel(String label) {
-        this.label = label;
-        save();
-    }
-
-    protected void save() {}
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java b/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java
deleted file mode 100644
index 98af2f8..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.publication.DocumentFactory;
-
-/**
- * Abstract base class for site managers.
- * 
- * @version $Id$
- */
-public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager, Serviceable {
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-    
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     */
-    public AbstractSiteManager() {
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#sortAscending(org.apache.lenya.cms.publication.util.DocumentSet)
-     */
-    public SiteNode[] sortAscending(SiteNode[] nodes) throws SiteException {
-        if (nodes.length > 0) {
-
-            DocumentFactory map = nodes[0].getStructure().getPublication().getFactory();
-            if (!check(map, new NodeSet(this.manager, nodes))) {
-                throw new SiteException("The dependence relation is not a strict partial order!");
-            }
-
-            SiteNode[] sortedNodes = (SiteNode[]) Arrays.asList(nodes).toArray(new SiteNode[nodes.length]);
-            Arrays.sort(sortedNodes, new NodeComparator(map));
-            return sortedNodes;
-        }
-        else {
-            return  nodes;
-        }
-    }
-
-    /**
-     * Checks if the dependence relation is a strict partial order.
-     * 
-     * @param map The identity map to operate on.
-     * @param set The document set to check.
-     * @return A boolean value.
-     * @throws SiteException when something went wrong.
-     */
-    protected boolean check(DocumentFactory map, NodeSet set) throws SiteException {
-        boolean isStrictPartialOrder = isIrreflexive(map, set) && isAntisymmetric(map, set)
-                && isTransitive(map, set);
-        return isStrictPartialOrder;
-    }
-
-    /**
-     * Checks if the dependence relation is antisymmetric.
-     * 
-     * @param map The identity map to operate on.
-     * @param set The document set to check.
-     * @return A boolean value.
-     * @throws SiteException when something went wrong.
-     */
-    protected boolean isAntisymmetric(DocumentFactory map, NodeSet set) throws SiteException {
-        SiteNode[] resources = set.getNodes();
-        boolean isAntisymmetric = true;
-        for (int i = 0; i < resources.length; i++) {
-            for (int j = i + 1; j < resources.length; j++) {
-                if (requires(map, resources[i], resources[j])
-                        && requires(map, resources[j], resources[i])
-                        && !(resources[i] == resources[j])) {
-                    isAntisymmetric = false;
-                }
-            }
-        }
-        return isAntisymmetric;
-    }
-
-    /**
-     * Checks if the dependence relation is transitive.
-     * 
-     * @param map The identity map to operate on.
-     * @param set The document set to check.
-     * @return A boolean value.
-     * @throws SiteException when something went wrong.
-     */
-    protected boolean isTransitive(DocumentFactory map, NodeSet set) throws SiteException {
-        SiteNode[] resources = set.getNodes();
-        boolean isTransitive = true;
-        for (int i = 0; i < resources.length; i++) {
-            for (int j = i + 1; j < resources.length; j++) {
-                for (int k = j + 1; k < resources.length; k++) {
-                    if (requires(map, resources[i], resources[j])
-                            && requires(map, resources[j], resources[k])
-                            && !requires(map, resources[i], resources[k])) {
-                        isTransitive = false;
-                    }
-                }
-            }
-        }
-        return isTransitive;
-    }
-
-    /**
-     * Checks if the dependence relation is irreflexive.
-     * 
-     * @param map The identity map to operate on.
-     * @param set The document set.
-     * @return A boolean value
-     * @throws SiteException
-     */
-    protected boolean isIrreflexive(DocumentFactory map, NodeSet set) throws SiteException {
-        SiteNode[] resources = set.getNodes();
-        boolean isIrreflexive = true;
-        for (int i = 0; i < resources.length; i++) {
-            if (requires(map, resources[i], resources[i])) {
-                isIrreflexive = false;
-            }
-        }
-        return isIrreflexive;
-    }
-
-    /**
-     * Compares nodes according to the dependence relation.
-     */
-    public class NodeComparator implements Comparator {
-
-        /**
-         * Ctor.
-         * 
-         * @param map The identity map to operate on.
-         */
-        public NodeComparator(DocumentFactory map) {
-            this.map = map;
-        }
-
-        private DocumentFactory map;
-
-        /**
-         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-         */
-        public int compare(Object arg0, Object arg1) {
-            int result = 0;
-            if (arg0 instanceof SiteNode && arg1 instanceof SiteNode) {
-                SiteNode doc1 = (SiteNode) arg0;
-                SiteNode doc2 = (SiteNode) arg1;
-
-                try {
-                    if (AbstractSiteManager.this.requires(map, doc1, doc2)) {
-                        result = 1;
-                    }
-                    if (AbstractSiteManager.this.requires(map, doc2, doc1)) {
-                        result = -1;
-                    }
-                } catch (SiteException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-            return result;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteNode.java b/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteNode.java
deleted file mode 100644
index a437281..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteNode.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import java.util.Arrays;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.util.Assert;
-
-/**
- * Abstract site node implementation.
- */
-public abstract class AbstractSiteNode extends AbstractLogEnabled implements SiteNode {
-
-    private String path;
-    private SiteStructure structure;
-    private String uuid;
-
-    protected AbstractSiteNode(Publication publication, SiteStructure structure, String path,
-            String uuid, Logger logger) {
-        
-        ContainerUtil.enableLogging(this, logger);
-
-        Assert.notNull("structure", structure);
-        this.structure = structure;
-
-        Assert.notNull("path", path);
-        Assert.isTrue("path starts with /", path.startsWith("/"));
-        this.path = path;
-
-        Assert.notNull("uuid", uuid);
-        this.uuid = uuid;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public SiteStructure getStructure() {
-        return this.structure;
-    }
-
-    public boolean equals(Object obj) {
-        if (obj == null || !(obj instanceof SiteNode)) {
-            return false;
-        }
-        String thisKey = getKey(getStructure().getPublication(),
-                getStructure().getArea(),
-                getPath());
-        SiteNode node = (SiteNode) obj;
-        String nodeKey = getKey(node.getStructure().getPublication(),
-                node.getStructure().getArea(),
-                node.getPath());
-        return thisKey.equals(nodeKey);
-    }
-
-    public int hashCode() {
-        return getKey(getStructure().getPublication(), getStructure().getArea(), getPath()).hashCode();
-    }
-
-    protected static String getKey(Publication pub, String area, String docId) {
-        return pub.getId() + ":" + area + ":" + docId;
-    }
-
-    public SiteNode getParent() throws SiteException {
-        String id = getPath().substring(1);
-        String[] steps = id.split("/");
-        if (steps.length == 1) {
-            throw new SiteException("The node [" + getPath() + "] is a top-level node.");
-        } else {
-            int lastIndex = id.lastIndexOf("/");
-            String parentId = id.substring(0, lastIndex);
-            return getStructure().getNode("/" + parentId);
-        }
-    }
-    
-    public boolean isTopLevel() {
-        return getPath().lastIndexOf("/") == 0;
-    }
-
-    public String getUuid() {
-        return this.uuid;
-    }
-
-    public boolean hasLink(String language) {
-        return Arrays.asList(getLanguages()).contains(language);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/Link.java b/trunk/src/java/org/apache/lenya/cms/site/Link.java
deleted file mode 100644
index d7e3f14..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/Link.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import org.apache.lenya.cms.publication.Document;
-
-/**
- * A link in the site structure references a document.
- * A site node contains a link for each translation.
- */
-public interface Link {
-
-    /**
-     * @return The language of this link.
-     */
-    String getLanguage();
-    
-    /**
-     * @return The document this link points to.
-     */
-    Document getDocument();
-
-    /**
-     * @return The node this link belongs to.
-     */
-    SiteNode getNode();
-
-    /**
-     * @return The label of this link.
-     */
-    String getLabel();
-    
-    /**
-     * @param label The new label.
-     */
-    void setLabel(String label);
-    
-    /**
-     * Removes the link.
-     */
-    void delete();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/NodeIterator.java b/trunk/src/java/org/apache/lenya/cms/site/NodeIterator.java
deleted file mode 100644
index 29c05e8..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/NodeIterator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.lenya.util.Assert;
-
-/**
- * Node iterator.
- */
-public class NodeIterator {
-
-    private Iterator delegate;
-    
-    /**
-     * @param collection The collection to iterate over.
-     */
-    public NodeIterator(Collection collection) {
-        Assert.notNull("collection", collection);
-        this.delegate = collection.iterator();
-    }
-    
-    /**
-     * @param nodes The nodes to iterate over.
-     */
-    public NodeIterator(SiteNode[] nodes) {
-        Assert.notNull("nodes", nodes);
-        this.delegate = Arrays.asList(nodes).iterator();
-    }
-    
-    /**
-     * @return A site node.
-     * @see Iterator#next()
-     */
-    public SiteNode next() {
-        return (SiteNode) this.delegate.next();
-    }
-    
-    /**
-     * @return A boolean value.
-     * @see Iterator#hasNext()
-     */
-    public boolean hasNext() {
-        return this.delegate.hasNext();
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java b/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java
deleted file mode 100644
index 44d11c3..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.util.DocumentSet;
-
-/**
- * A set containing nodes.
- */
-public class NodeSet {
-
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     */
-    public NodeSet(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param _nodes The initial nodes.
-     */
-    public NodeSet(ServiceManager manager, SiteNode[] _nodes) {
-        this(manager);
-        for (int i = 0; i < _nodes.length; i++) {
-            add(_nodes[i]);
-        }
-    }
-
-    /**
-     * Ctor.
-     * @param documents The corresponding documents to derive nodes from.
-     */
-    public NodeSet(DocumentSet documents) {
-        Document[] docs = documents.getDocuments();
-        for (int i = 0; i < docs.length; i++) {
-            SiteNode node;
-            try {
-                node = docs[i].getLink().getNode();
-            } catch (DocumentException e) {
-                throw new RuntimeException(e);
-            }
-            if (!contains(node)) {
-                add(node);
-            }
-        }
-    }
-
-    /**
-     * @param node A node.
-     * @return If the node is contained.
-     */
-    public boolean contains(SiteNode node) {
-        return getSet().contains(node);
-    }
-
-    private Set nodes = new HashSet();
-
-    /**
-     * Returns the list object that stores the documents.
-     * @return A list.
-     */
-    protected Set getSet() {
-        return this.nodes;
-    }
-
-    /**
-     * Returns the documents contained in this set.
-     * 
-     * @return An array of documents.
-     */
-    public SiteNode[] getNodes() {
-        return (SiteNode[]) this.nodes.toArray(new SiteNode[this.nodes.size()]);
-    }
-
-    /**
-     * Adds a node to this set.
-     * @param node The node to add.
-     */
-    public void add(SiteNode node) {
-        assert node != null;
-        assert !this.nodes.contains(node);
-        this.nodes.add(node);
-    }
-
-    /**
-     * Checks if this set is empty.
-     * @return A boolean value.
-     */
-    public boolean isEmpty() {
-        return getSet().isEmpty();
-    }
-
-    /**
-     * Removes a node.
-     * @param resource The node.
-     */
-    public void remove(SiteNode resource) {
-        assert resource != null;
-        assert getSet().contains(resource);
-        getSet().remove(resource);
-    }
-
-    /**
-     * Removes all nodes.
-     */
-    public void clear() {
-        getSet().clear();
-    }
-
-    /**
-     * @return An iterator iterating in ascending order.
-     */
-    public NodeIterator ascending() {
-        SiteNode[] nodes = getNodesAscending();
-        return new NodeIterator(nodes);
-    }
-
-    /**
-     * @return An iterator iterating in descending order.
-     */
-    public NodeIterator descending() {
-        SiteNode[] nodes = getNodesAscending();
-        List list = Arrays.asList(nodes);
-        Collections.reverse(list);
-        return new NodeIterator(list);
-    }
-
-    protected SiteNode[] getNodesAscending() {
-        if (isEmpty()) {
-            return new SiteNode[0];
-        }
-        
-        SiteNode[] nodes;
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(getNodes()[0].getStructure()
-                    .getPublication()
-                    .getSiteManagerHint());
-            nodes = siteManager.sortAscending(getNodes());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                manager.release(selector);
-            }
-        }
-        return nodes;
-    }
-
-    /**
-     * @return All documents referenced by this node set.
-     */
-    public Document[] getDocuments() {
-        List documents = new ArrayList();
-        for (NodeIterator i = ascending(); i.hasNext(); ) {
-            SiteNode node = i.next();
-            String[] langs = node.getLanguages();
-            for (int l = 0; l < langs.length; l++) {
-                try {
-                    documents.add(node.getLink(langs[l]).getDocument());
-                } catch (SiteException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-        return (Document[]) documents.toArray(new Document[documents.size()]);
-    }
-
-    /**
-     * Adds all nodes from a node set to this.
-     * @param set The set.
-     */
-    public void addAll(NodeSet set) {
-        this.nodes.addAll(set.getSet());
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/SiteException.java b/trunk/src/java/org/apache/lenya/cms/site/SiteException.java
deleted file mode 100644
index a0acfc3..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/SiteException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * Site structure management exception.
- * 
- * @version $Id$
- */
-public class SiteException extends PublicationException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public SiteException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public SiteException(String message) {
-        super(message);
-    }
-
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public SiteException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public SiteException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java b/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
deleted file mode 100644
index 51b1613..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * <p>
- * A site structure management component.
- * </p>
- * 
- * <p>
- * A site manager has a dependence relation, which is always applied to documents of a single
- * language. This means a document may not require a document of another language. Dependence on a
- * set of resources must be a strict partial order <strong>&lt; </strong>:
- * </p>
- * <ul>
- * <li><em>irreflexive:</em> d <strong>&lt; </strong>d does not hold for any resource d</li>
- * <li><em>antisymmetric:</em> d <strong>&lt; </strong>e and e <strong>&lt; </strong>d implies
- * d=e</li>
- * <li><em>transitive:</em> d <strong>&lt; </strong>e and e <strong>&lt; </strong>f implies d
- * <strong>&lt; </strong>f</li>
- * </ul>
- * 
- * @version $Id$
- */
-public interface SiteManager {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = SiteManager.class.getName();
-
-    /**
-     * Checks if a resource requires another one.
-     * @param map The identity map to operate on.
-     * @param dependingResource The depending resource.
-     * @param requiredResource The required resource.
-     * @return A boolean value.
-     * @throws SiteException if an error occurs.
-     */
-    boolean requires(DocumentFactory map, SiteNode dependingResource, SiteNode requiredResource)
-            throws SiteException;
-
-    /**
-     * Returns the resources which are required by a certain resource.
-     * 
-     * @param map The identity map to operate on.
-     * @param locator The depending locator.
-     * @return An array of resources.
-     * @throws SiteException if an error occurs.
-     */
-    DocumentLocator[] getRequiredResources(DocumentFactory map, DocumentLocator locator) throws SiteException;
-
-    /**
-     * Returns the resources which require a certain resource.
-     * 
-     * @param map The identity map to operate on.
-     * @param resource The required resource.
-     * @return An array of resources.
-     * @throws SiteException if an error occurs.
-     */
-    SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource) throws SiteException;
-
-    /**
-     * Adds a document to the site structure.
-     * @param path The path.
-     * @param document The document to add.
-     * @throws SiteException if the document is already contained.
-     */
-    void add(String path, Document document) throws SiteException;
-
-    /**
-     * Sets a document to the site structure.
-     * @param path The path.
-     * @param document The document to add.
-     * @throws SiteException if the document is already contained or if the path doesn't exist.
-     */
-    void set(String path, Document document) throws SiteException;
-
-    /**
-     * Checks if the site structure contains a certain resource in a certain area.
-     * 
-     * @param resource The resource.
-     * @return A boolean value.
-     * @throws SiteException if an error occurs.
-     */
-    boolean contains(Document resource) throws SiteException;
-
-    /**
-     * Checks if the site structure contains any language version of a certain resource in a certain
-     * area.
-     * 
-     * @param resource The resource.
-     * @return A boolean value.
-     * @throws SiteException if an error occurs.
-     */
-    boolean containsInAnyLanguage(Document resource) throws SiteException;
-
-    /**
-     * Copies a document in the site structure.
-     * 
-     * @param sourceDocument The source document.
-     * @param destinationDocument The destination document.
-     * @throws SiteException when something went wrong.
-     */
-    void copy(Document sourceDocument, Document destinationDocument) throws SiteException;
-    
-    /**
-     * Sets the visibility of a node in the navigation. It is meant to hide specific nodes within
-     * the "public" navigation whereas the node is visible within the info/site area.
-     * 
-     * @param document The document.
-     * @param visibleInNav The visibility.
-     * @throws SiteException if an error occurs.
-     */
-    void setVisibleInNav(Document document, boolean visibleInNav) throws SiteException;
-
-    /**
-     * Returns the visibility of a node in the navigation.
-     * 
-     * @param document The document.
-     * @return A boolean value.
-     * @throws SiteException if an error occurs.
-     */
-    boolean isVisibleInNav(Document document) throws SiteException;
-
-    /**
-     * Returns all documents in a certain area.
-     * 
-     * @param identityMap The identityMap to use.
-     * @param publication The publication.
-     * @param area The area.
-     * @return An array of documents.
-     * @throws SiteException if an error occurs.
-     */
-    Document[] getDocuments(DocumentFactory identityMap, Publication publication, String area)
-            throws SiteException;
-
-    /**
-     * Sorts a set of nodes using the "requires" relation.
-     * 
-     * @param nodes The set.
-     * @return A sorted array of nodes.
-     * @throws SiteException if an error occurs.
-     */
-    SiteNode[] sortAscending(SiteNode[] nodes) throws SiteException;
-
-    /**
-     * @param map The identity map.
-     * @param publication The publication.
-     * @param area The area.
-     * @return The object that holds the site structure information.
-     * @throws SiteException if an error occurs.
-     */
-    SiteStructure getSiteStructure(DocumentFactory map, Publication publication, String area)
-            throws SiteException;
-
-    /**
-     * Checks if the document does already exist. If it does, returns a non-existing document with a
-     * similar document ID. If it does not, the original document is returned.
-     * @param factory The document factory.
-     * @param locator The locator.
-     * @return A locator.
-     * @throws SiteException if the new document could not be built.
-     */
-    DocumentLocator getAvailableLocator(DocumentFactory factory, DocumentLocator locator) throws SiteException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java b/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java
deleted file mode 100644
index af9936c..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-/**
- * A node in the site structure.
- */
-public interface SiteNode {
-    
-    /**
-     * @return The site structure this node belongs to.
-     */
-    SiteStructure getStructure();
-
-    /**
-     * @return The path.
-     */
-    String getPath();
-
-    /**
-     * @return The parent node.
-     * @throws SiteException If the node has no parent.
-     */
-    SiteNode getParent() throws SiteException;
-    
-    /**
-     * @return If this is a top level node. Top level nodes have no parents.
-     */
-    boolean isTopLevel();
-    
-    /**
-     * @return The languages of this node.
-     */
-    String[] getLanguages();
-    
-    /**
-     * @param language The language.
-     * @return The link for the language.
-     * @throws SiteException if no link is contained for the language.
-     */
-    Link getLink(String language) throws SiteException;
-
-    /**
-     * @return The UUID of this node.
-     */
-    String getUuid();
-
-    /**
-     * Checks if a link for a certain language is contained.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean hasLink(String language);
-
-    /**
-     * @return The name, i.e. the last path element.
-     */
-    String getName();
-    
-    /**
-     * @return if the node is visible in the navigation.
-     */
-    boolean isVisible();
-
-    /**
-     * Sets the node visibility in the navigation.
-     * @param visibleInNav if the node should be visible.
-     */
-    void setVisible(boolean visibleInNav);
-
-    /**
-     * Deletes this node.
-     */
-    void delete();
-
-    /**
-     * @return The children of this node.
-     */
-    SiteNode[] getChildren();
-
-    /**
-     * @return if the node has an external link.
-     */
-    boolean hasLink();
-
-    /**
-     * @return The external link.
-     */
-    String getHref();
-
-    /**
-     * @return The suffix.
-     */
-    String getSuffix();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java b/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java
deleted file mode 100644
index 0ad1702..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryItem;
-
-/**
- * Object to hold a site structure information.
- * 
- * @version $Id$
- */
-public interface SiteStructure extends RepositoryItem {
-
-    /**
-     * @return The repository node the site structure is stored in.
-     */
-    Node getRepositoryNode();
-
-    /**
-     * @return The publication.
-     */
-    Publication getPublication();
-
-    /**
-     * @return The area.
-     */
-    String getArea();
-
-    /**
-     * @return All nodes in this structure.
-     */
-    SiteNode[] getNodes();
-
-    /**
-     * @param path The path.
-     * @return A site node.
-     * @throws SiteException if no node is contained for the path.
-     */
-    SiteNode getNode(String path) throws SiteException;
-
-    /**
-     * Checks if a node is contained for a certain path.
-     * @param path The path.
-     * @return A boolean value.
-     */
-    boolean contains(String path);
-
-    /**
-     * Checks if a link is contained for a certain path and language.
-     * @param path The path.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean contains(String path, String language);
-
-    /**
-     * Checks if the structure contains a link with a certain UUID and language.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @return A boolean value.
-     */
-    boolean containsByUuid(String uuid, String language);
-
-    /**
-     * Checks if the structure contains any language version of a document.
-     * @param uuid The uuid.
-     * @return A boolean value.
-     */
-    boolean containsInAnyLanguage(String uuid);
-
-    /**
-     * Returns a node for a certain UUID.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @return a link.
-     * @throws SiteException if no node is contained for the UUID.
-     */
-    Link getByUuid(String uuid, String language) throws SiteException;
-
-    /**
-     * Adds a link to a document.
-     * @param path The path.
-     * @param doc The document.
-     * @return A link.
-     * @throws SiteException if the document is already contained or the node
-     *         for this path already contains a link for this language.
-     */
-    Link add(String path, Document doc) throws SiteException;
-
-    /**
-     * Adds a site node.
-     * @param path The path.
-     * @return A site node.
-     * @throws SiteException if the path is already contained.
-     */
-    SiteNode add(String path) throws SiteException;
-
-    /**
-     * Adds a site node before a specific other node.
-     * @param path The path.
-     * @param followingSiblingPath The path of the node which will be the
-     *        following sibling of the node to insert.
-     * @return A site node.
-     * @throws SiteException if the path is already contained.
-     */
-    SiteNode add(String path, String followingSiblingPath) throws SiteException;
-    
-    /**
-     * @return The top level nodes.
-     */
-    SiteNode[] getTopLevelNodes();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java b/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
deleted file mode 100644
index fa9eda0..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Utility to handle site structures.
- * 
- * @version $Id$
- */
-public class SiteUtil {
-
-    private SiteUtil() {
-    }
-
-    /**
-     * Returns a sub-site starting with a certain node, which includes the node
-     * itself and all nodes which require this node, in preorder.
-     * 
-     * @param manager The service manager.
-     * @param node The top-level document.
-     * @return A document set.
-     * @throws SiteException if an error occurs.
-     */
-    public static NodeSet getSubSite(ServiceManager manager, SiteNode node) throws SiteException {
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        SiteNode[] subsite;
-        try {
-            selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(node.getStructure().getPublication()
-                    .getSiteManagerHint());
-
-            DocumentFactory map = node.getStructure().getPublication().getFactory();
-            Set nodes = new HashSet();
-            nodes.add(node);
-
-            SiteNode[] requiringNodes = siteManager.getRequiringResources(map, node);
-            for (int i = 0; i < requiringNodes.length; i++) {
-                nodes.add(requiringNodes[i]);
-            }
-
-            subsite = (SiteNode[]) nodes.toArray(new SiteNode[nodes.size()]);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                manager.release(selector);
-            }
-        }
-        return new NodeSet(manager, subsite);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getAvailableLocator(DocumentFactory,
-     *      DocumentLocator)
-     * @param manager The service manager.
-     * @param factory The factory.
-     * @param locator The locator.
-     * @return A document.
-     * @throws SiteException if an error occurs.
-     */
-    public static DocumentLocator getAvailableLocator(ServiceManager manager,
-            DocumentFactory factory, DocumentLocator locator) throws SiteException {
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
-            Publication pub = factory.getPublication(locator.getPublicationId());
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-            return siteManager.getAvailableLocator(factory, locator);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                manager.release(selector);
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java b/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java
deleted file mode 100644
index b2ed8da..0000000
--- a/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.topicmap;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Site manager to support topic maps.
- */
-public class TopicMapSiteManager extends AbstractSiteManager {
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
-     */
-    public boolean requires(DocumentFactory map, SiteNode dependingResource,
-            SiteNode requiredResource) throws SiteException {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode)
-     */
-    public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
-            throws SiteException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#add(org.apache.lenya.cms.publication.Document)
-     */
-    public void add(String path, Document document) throws SiteException {
-        // TODO Auto-generated method stub
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#contains(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean contains(Document resource) throws SiteException {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#containsInAnyLanguage(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean containsInAnyLanguage(Document resource) throws SiteException {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#copy(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.cms.publication.Document)
-     */
-    public void copy(Document sourceDocument, Document destinationDocument) throws SiteException {
-        // TODO Auto-generated method stub
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#setVisibleInNav(org.apache.lenya.cms.publication.Document,
-     *      boolean)
-     */
-    public void setVisibleInNav(Document document, boolean visibleInNav) throws SiteException {
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getDocuments(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public Document[] getDocuments(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getSiteStructure(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public SiteStructure getSiteStructure(DocumentFactory map, Publication publiation, String area)
-            throws SiteException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getAvailableDocument(org.apache.lenya.cms.publication.Document)
-     */
-    public DocumentLocator getAvailableLocator(DocumentFactory factory, DocumentLocator document)
-            throws SiteException {
-        return document;
-    }
-
-    public boolean isVisibleInNav(Document document) throws SiteException {
-        return true;
-    }
-
-    public void set(String path, Document document) throws SiteException {
-        // TODO Auto-generated method stub
-    }
-
-    public DocumentLocator[] getRequiredResources(DocumentFactory map, DocumentLocator locator)
-            throws SiteException {
-        return new DocumentLocator[0];
-    }
-
-    public void move(SiteNode source, String destinationPath) throws SiteException {
-        throw new SiteException("This operation is not supported by [" + getClass().getName()
-                + "]!");
-    }
-
-    public void setLabel(Document document, String label) throws SiteException {
-        // TODO Auto-generated method stub
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java b/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
deleted file mode 100644
index 20cf68d..0000000
--- a/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow;
-
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Workflowable around a CMS document.
- * 
- * @version $Id: DocumentWorkflowable.java 416648 2006-06-23 09:15:28Z andreas $
- */
-class DocumentWorkflowable extends AbstractLogEnabled implements Workflowable {
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param document The document.
-     * @param logger The logger.
-     */
-    public DocumentWorkflowable(ServiceManager manager, Session session, Document document,
-            Logger logger) {
-        this.document = document;
-        this.session = session;
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    private Session session;
-
-    private ServiceManager manager;
-
-    /**
-     * @return The service manager.
-     */
-    public ServiceManager getServiceManager() {
-        return this.manager;
-    }
-
-    /**
-     * @return The repository session.
-     */
-    public Session getSession() {
-        return session;
-    }
-
-    private Document document;
-
-    protected Document getDocument() {
-        return this.document;
-    }
-
-    /**
-     * @return The name of the workflow schema.
-     */
-    protected String getWorkflowSchema() {
-        String workflowName = null;
-        try {
-            ResourceType doctype = document.getResourceType();
-            if (doctype != null) {
-                workflowName = document.getPublication().getWorkflowSchema(doctype);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return workflowName;
-    }
-
-    private Version[] versions = null;
-
-    private long lastModified = 0;
-
-    protected static final String METADATA_NAMESPACE = "http://apache.org/lenya/metadata/workflow/1.0";
-    protected static final String METADATA_VERSION = "workflowVersion";
-
-    /**
-     * @see org.apache.lenya.workflow.Workflowable#getVersions()
-     */
-    public Version[] getVersions() {
-        try {
-            MetaData meta = this.document.getMetaData(METADATA_NAMESPACE);
-            if (this.versions == null || meta.getLastModified() > this.lastModified) {
-                String[] versionStrings = meta.getValues(METADATA_VERSION);
-                this.versions = new Version[versionStrings.length];
-                
-                SortedMap number2version = new TreeMap();
-                
-                for (int i = 0; i < versionStrings.length; i++) {
-                    String string = versionStrings[i];
-                    int spaceIndex = string.indexOf(" ");
-                    String numberString = string.substring(0, spaceIndex);
-                    int number = Integer.parseInt(numberString);
-                    String versionString = string.substring(spaceIndex + 1);
-                    Version version = decodeVersion(versionString);
-                    number2version.put(new Integer(number), version);
-                }
-                
-                int number = 0;
-                for (Iterator i = number2version.keySet().iterator(); i.hasNext(); ) {
-                    Version version = (Version) number2version.get(i.next());
-                    this.versions[number] = version;
-                    number++;
-                }
-                
-                this.lastModified = meta.getLastModified();
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return this.versions;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflowable#getLatestVersion()
-     */
-    public Version getLatestVersion() {
-        Version version = null;
-        Version[] versions = getVersions();
-        if (versions.length > 0) {
-            version = versions[versions.length - 1];
-        }
-        return version;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflowable#newVersion(org.apache.lenya.workflow.Workflow,
-     *      org.apache.lenya.workflow.Version)
-     */
-    public void newVersion(Workflow workflow, Version version) {
-        Version[] newVersions = new Version[getVersions().length + 1];
-        for (int i = 0; i < getVersions().length; i++) {
-            newVersions[i] = getVersions()[i];
-        }
-
-        int number = newVersions.length - 1;
-        newVersions[number] = version;
-
-        String string = number + " " + encodeVersion(workflow, version);
-        addToMetaData(string);
-        
-        WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
-        RepositoryEvent event = RepositoryEventFactory.createEvent(
-                this.manager, getDocument(), getLogger(), descriptor);
-        getDocument().getRepositoryNode().getSession().enqueueEvent(event);
-    }
-
-    protected void addToMetaData(String versionString) {
-        try {
-            String[] areas = getDocument().getPublication().getAreaNames();
-            for (int i = 0; i < areas.length; i++) {
-                if (getDocument().existsAreaVersion(areas[i])) {
-                    Document doc = getDocument().getAreaVersion(areas[i]);
-                    MetaData meta = doc.getMetaData(METADATA_NAMESPACE);
-                    meta.addValue(METADATA_VERSION, versionString);
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected String encodeVersion(Workflow workflow, Version version) {
-
-        StringBuffer stringBuf = new StringBuffer("event:").append(version.getEvent());
-        stringBuf.append(" state:").append(version.getState());
-
-        Identity identity = getSession().getIdentity();
-        User user = identity.getUser();
-        if (user != null) {
-            stringBuf.append(" user:").append(identity.getUser().getId());
-        }
-        stringBuf.append(" machine:").append(identity.getMachine().getIp());
-
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
-        stringBuf.append(" date:").append(format.format(new Date()));
-
-        String names[] = workflow.getVariableNames();
-        for (int i = 0; i < names.length; i++) {
-            String value = Boolean.toString(version.getValue(names[i]));
-            stringBuf.append(" var:").append(names[i]);
-            stringBuf.append("=").append(value);
-        }
-        return stringBuf.toString();
-    }
-
-    protected Version decodeVersion(String string) {
-
-        String event = null;
-        String state = null;
-        String user = null;
-        String machine = null;
-        Date date = null;
-        Map variables = new HashMap();
-
-        String[] parts = string.split(" ");
-        for (int i = 0; i < parts.length; i++) {
-            String[] steps = parts[i].split(":", 2);
-            if (steps[0].equals("event")) {
-                event = steps[1];
-            } else if (steps[0].equals("state")) {
-                state = steps[1];
-            } else if (steps[0].equals("user")) {
-                user = steps[1];
-            } else if (steps[0].equals("date")) {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.US);
-                date = sdf.parse(steps[1], new ParsePosition(0));
-            } else if (steps[0].equals("machine")) {
-                machine = steps[1];
-            } else if (steps[0].equals("var")) {
-                String[] nameValue = steps[1].split("=");
-                variables.put(nameValue[0], nameValue[1]);
-            }
-        }
-
-        Version version = new LenyaVersion(event, state);
-        for (Iterator i = variables.keySet().iterator(); i.hasNext();) {
-            String name = (String) i.next();
-            String value = (String) variables.get(name);
-            version.setUserId(user);
-            version.setDate(date);
-            version.setIPAddress(machine);
-            version.setValue(name, Boolean.valueOf(value).booleanValue());
-        }
-        return version;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflowable#getWorkflowSchemaURI()
-     */
-    public String getWorkflowSchemaURI() {
-        String uri = null;
-        String schema = getWorkflowSchema();
-        if (schema != null) {
-
-            if (schema.indexOf("://") != -1) {
-                return schema;
-            } else {
-                uri = this.document.getPublication().getSourceURI() + "/config/workflow/" + schema;
-                uri = uri.substring("lenya://".length());
-                uri = "context://" + uri;
-            }
-        }
-        return uri;
-    }
-
-    public String toString() {
-        return this.document.toString();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/workflow/LenyaVersion.java b/trunk/src/java/org/apache/lenya/cms/workflow/LenyaVersion.java
deleted file mode 100644
index b59b9bb..0000000
--- a/trunk/src/java/org/apache/lenya/cms/workflow/LenyaVersion.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: VersionImpl.java 372568 2006-01-26 16:51:38Z andreas $  */
-
-package org.apache.lenya.cms.workflow;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lenya.workflow.Version;
-
-/**
- * A version of the workflow history.
- */
-public class LenyaVersion implements Version {
-
-    private Date date;
-    private String event;
-    private String ipAddress;
-    private String state;
-    private String userId;
-    private Map variableValues = new HashMap();
-    
-    /**
-     * @see org.apache.lenya.workflow.Version#getEvent()
-     */
-    public String getEvent() {
-        return this.event;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#getState()
-     */
-    public String getState() {
-        return this.state;
-    }
-    
-    /**
-     * Returns the date.
-     * @return A string.
-     */
-    public Date getDate() {
-        return (Date)this.date.clone();
-    }
-
-    /**
-     * Sets the date.
-     * @param _date A date.
-     */
-    public void setDate(Date _date) {
-        this.date = (Date)_date.clone();
-    }
-
-    /**
-     * Returns the user ID.
-     * @return A string.
-     */
-    public String getUserId() {
-        return this.userId;
-    }
-
-    /**
-     * Sets the user ID.
-     * @param _userId A user ID.
-     */
-    public void setUserId(String _userId) {
-        this.userId = _userId;
-    }
-
-    /**
-     * Returns the ip address.
-     * @return A string.
-     */
-    public String getIPAddress() {
-    	return this.ipAddress;
-    }
-
-    /**
-     * Sets the ip address.
-     * @param _ipaddress A ip address.
-     */
-    public void setIPAddress(String _ipaddress){
-    	this.ipAddress = _ipaddress;
-    }
-    
-    /**
-     * Ctor.
-     * @param _event The event that caused the version change.
-     * @param _state The destination state.
-     */
-    public LenyaVersion(String _event, String _state) {
-        this.event = _event;
-        this.state = _state;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#getValue(java.lang.String)
-     */
-    public boolean getValue(String variableName) {
-        Boolean value = (Boolean) this.variableValues.get(variableName);
-        if (value == null) {
-            throw new RuntimeException("No value set for variable [" + variableName + "]");
-        }
-        return value.booleanValue();
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#setValue(java.lang.String, boolean)
-     */
-    public void setValue(String variableName, boolean value) {
-        this.variableValues.put(variableName, Boolean.valueOf(value));
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java b/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java
deleted file mode 100644
index 1218bb6..0000000
--- a/trunk/src/java/org/apache/lenya/cms/workflow/RoleCondition.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.workflow;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.RoleManager;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Role condition
- */
-public class RoleCondition implements Condition {
-
-    private Set roleIds = new HashSet();
-
-    protected static final String SEPARATOR = ",";
-
-    /**
-     * @see org.apache.lenya.workflow.Condition#setExpression(java.lang.String)
-     */
-    public void setExpression(String expression) throws WorkflowException {
-        this.expression = expression;
-
-        String[] roles = expression.split(SEPARATOR);
-        for (int i = 0; i < roles.length; i++) {
-            this.roleIds.add(roles[i].trim());
-        }
-    }
-
-    /**
-     * Returns if the condition is complied in a certain situation. The
-     * condition is complied when the current user has the role that is required
-     * by the RoleCondition.
-     * 
-     * @see org.apache.lenya.workflow.impl.AbstractCondition#isComplied(Workflow,
-     *      Workflowable)
-     */
-    public boolean isComplied(Workflow workflow, Workflowable instance) {
-
-        DocumentWorkflowable workflowable = (DocumentWorkflowable) instance;
-        ServiceManager manager = workflowable.getServiceManager();
-        String url = workflowable.getDocument().getCanonicalWebappURL();
-
-        ServiceSelector selector = null;
-        AccessControllerResolver acResolver = null;
-        AccessController accessController = null;
-        try {
-
-            selector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
-            acResolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-            accessController = acResolver.resolveAccessController(url);
-
-            PolicyManager policyManager = accessController.getPolicyManager();
-            Identity identity = workflowable.getSession().getIdentity();
-            AccreditableManager accreditableMgr = accessController
-            .getAccreditableManager();
-            Policy policy = policyManager.getPolicy(accreditableMgr, url);
-            RoleManager roleManager = accreditableMgr.getRoleManager();
-            
-            boolean complied = false;
-            
-            for (Iterator i = this.roleIds.iterator(); i.hasNext(); ) {
-                String roleId = (String) i.next();
-                Role role = roleManager.getRole(roleId);
-                if (policy.check(identity, role) == Policy.RESULT_GRANTED) {
-                    complied = true;
-                }
-            }
-
-            return complied;
-
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (acResolver != null) {
-                    if (accessController != null) {
-                        acResolver.release(accessController);
-                    }
-                    selector.release(acResolver);
-                }
-                manager.release(selector);
-            }
-        }
-
-    }
-
-    private String expression;
-
-    /**
-     * Returns the expression of this condition.
-     * 
-     * @return A string.
-     */
-    public String getExpression() {
-        return this.expression;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getExpression();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java b/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java
deleted file mode 100644
index 0b2e7b9..0000000
--- a/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow;
-
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.workflow.Version;
-
-/**
- * Descriptor for workflow events.
- */
-public class WorkflowEventDescriptor {
-
-    private Version version;
-
-    /**
-     * @param version The version.
-     */
-    public WorkflowEventDescriptor(Version version) {
-        Assert.notNull("version", version);
-        this.version = version;
-    }
-    
-    /**
-     * @return The version.
-     */
-    public Version getVersion() {
-        return this.version;
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java b/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
deleted file mode 100644
index 4b71f1f..0000000
--- a/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.WorkflowManager;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Utility class for workflow tasks.
- * 
- * @version $Id:$
- */
-public class WorkflowUtil {
-
-    /**
-     * Invokes a workflow event on a document. This is the same as
-     * <code>invoke(Document, String, true)</code>.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param document The document.
-     * @param event The name of the event.
-     * @throws WorkflowException if the event could not be invoked in the current situation.
-     */
-    public static void invoke(ServiceManager manager, Session session, Logger logger,
-            Document document, String event) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, session, logger, document);
-            wfManager.invoke(workflowable, event);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
-    }
-
-    /**
-     * Invokes a workflow event on a document.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param document The document.
-     * @param event The name of the event.
-     * @param force If this is set to <code>true</code>, the execution is forced, which means an
-     *            exception is thrown if the workflowable in the set does not support the event. If
-     *            set to <code>false</code>, non-supporting documents are ignored.
-     * @throws WorkflowException if the event could not be invoked in the current situation.
-     */
-    public static void invoke(ServiceManager manager, Session session, Logger logger,
-            Document document, String event, boolean force) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, session, logger, document);
-            wfManager.invoke(workflowable, event, force);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
-    }
-
-    /**
-     * Invokes a workflow event on a document set.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param documentSet The document.
-     * @param event The event.
-     * @param force If this is set to <code>true</code>, the execution is forced, which means an
-     *            exception is thrown if a document in the set does not support the event. If set to
-     *            <code>false</code>, non-supporting documents are ignored.
-     * @throws WorkflowException if <code>force</code> is set to <code>true</code> and a
-     *             document does not support the workflow event.
-     */
-    public static void invoke(ServiceManager manager, Session session, Logger logger,
-            DocumentSet documentSet, String event, boolean force) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
-            Document[] documents = documentSet.getDocuments();
-            for (int i = 0; i < documents.length; i++) {
-                Workflowable workflowable = new DocumentWorkflowable(manager,
-                        session,
-                        documents[i],
-                        logger);
-                wfManager.invoke(workflowable, event, force);
-            }
-
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
-    }
-
-    /**
-     * Checks if an event can be invoked on a document.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param document The document.
-     * @param event The event.
-     * @return A boolean value.
-     * @throws WorkflowException
-     */
-    public static boolean canInvoke(ServiceManager manager, Session session, Logger logger,
-            Document document, String event) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
-            return wfManager.canInvoke(workflowable, event);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
-    }
-
-    /**
-     * Checks if an event can be invoked on all documents in a set.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param documents The documents.
-     * @param event The event.
-     * @return if an error occurs.
-     * @throws WorkflowException
-     */
-    public static boolean canInvoke(ServiceManager manager, Session session, Logger logger,
-            DocumentSet documents, String event) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
-            boolean canInvoke = true;
-            Document[] documentArray = documents.getDocuments();
-            for (int i = 0; i < documentArray.length; i++) {
-                Workflowable workflowable = new DocumentWorkflowable(manager,
-                        session,
-                        documentArray[i],
-                        logger);
-                canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
-            }
-            return canInvoke;
-
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-    }
-
-    /**
-     * Returns if a document has a workflow.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param document The document.
-     * @return A boolean value.
-     * @throws WorkflowException if an error occurs.
-     */
-    public static boolean hasWorkflow(ServiceManager manager, Session session, Logger logger,
-            Document document) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
-            return wfManager.hasWorkflow(workflowable);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-    }
-
-    /**
-     * Returns the workflow schema of a document.
-     * @param manager The service manager.
-     * @param session The repository session.
-     * @param logger The logger.
-     * @param document The document.
-     * @return A workflow schema.
-     * @throws WorkflowException if an error occurs.
-     */
-    public static Workflow getWorkflowSchema(ServiceManager manager, Session session,
-            Logger logger, Document document) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, session, logger, document);
-            if (wfManager.hasWorkflow(workflowable)) {
-                return wfManager.getWorkflowSchema(workflowable);
-            } else {
-                throw new WorkflowException("The document [" + document + "] has no workflow!");
-            }
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-    }
-
-    /**
-     * Returns a workflowable for a document.
-     * @param manager The service manager.
-     * @param session The session.
-     * @param logger The logger.
-     * @param document The document.
-     * @return A workflowable.
-     */
-    public static Workflowable getWorkflowable(ServiceManager manager, Session session,
-            Logger logger, Document document) {
-        Workflowable workflowable = new DocumentWorkflowable(manager, session, document, logger);
-        return workflowable;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/net/InetAddressUtil.java b/trunk/src/java/org/apache/lenya/net/InetAddressUtil.java
deleted file mode 100644
index 84d5226..0000000
--- a/trunk/src/java/org/apache/lenya/net/InetAddressUtil.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.net;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-
-/**
- * A utility class for InetAddress. Also see http://jodies.de/ipcalc
- */
-public class InetAddressUtil extends AbstractLogEnabled {
-
-    /**
-     * Ctor.
-     * @param logger The logger.
-     */
-    public InetAddressUtil(Logger logger) {
-        enableLogging(logger);
-    }
-
-    /**
-     * Checks if a subnet contains a specific IP address.
-     * @param network The network address.
-     * @param netmask The subnet mask.
-     * @param ip The IP address to check.
-     * @return A boolean value.
-     */
-    public boolean contains(InetAddress network, InetAddress netmask, InetAddress ip) {
-        if(getLogger().isDebugEnabled()) {
-            getLogger().debug("=======================================");
-            getLogger().debug("Checking IP address: " + ip + " in " + network + " / " + netmask);
-        }
-        
-        byte[] networkBytes = network.getAddress();
-        byte[] netmaskBytes = netmask.getAddress();
-        byte[] ipBytes = ip.getAddress();
-        
-        /* check IPv4/v6-compatibility or parameters: */
-        if(networkBytes.length != netmaskBytes.length
-            || netmaskBytes.length != ipBytes.length)
-        {
-            /*
-             * FIXME: If network and netmask have the same size
-             * should already be checked whenever
-             * org.apache.lenya.ac.(impl.Abstract)IPRange
-             * is set. In that case the user should be notified
-             * of this configuration-error instead of silently
-             * accepting the buggy IPRange as one not matching
-             * any host!
-             * (Note that changes to the public API of IPRange
-             * and other classes would be necessary to fix this
-             * problem. This method and therefore this whole
-             * class would probably be obsolete in that case.)
-             */
-            if(getLogger().isDebugEnabled()) {
-                getLogger().debug
-                    ("Network address " + network + ", subnet mask "
-                     + netmask + " and/or host address " + ip
-                     + " have different sizes! (return false ...)");
-                getLogger().debug("=======================================");
-            }
-            return false;
-        }
-        
-        /* Check if the masked network and ip addresses match: */
-        for(int i=0; i<netmaskBytes.length; i++) {
-            int mask = netmaskBytes[i] & 0xff;
-            if((networkBytes[i] & mask) != (ipBytes[i] & mask)) {
-                if(getLogger().isDebugEnabled()) {
-                    getLogger().debug
-                        (ip + " is not in " + network + " / " + netmask);
-                    getLogger().debug("=======================================");
-                }
-                return false;
-            }
-        }
-        if(getLogger().isDebugEnabled()) {
-            getLogger().debug
-                (ip + " is in " + network + " / " + netmask);
-            getLogger().debug("=======================================");
-        }
-        return true;
-    }
-
-    /**
-     * Returns the n-th part of an InetAddress.
-     * @param ip The address.
-     * @param partNumber The number of the part.
-     * @return An integer value.
-     * @deprecated This was an internal implementation detail of the
-     *      method {@link #contains} and should never have been
-     *      made public. (And it's inefficient and unnecessary
-     *      too, as well as broken for IPv6. ;-)
-     *      Use <code>ip.getAddress()[partNumber]</code>
-     *      instead.
-     */
-    public static int getClassPart(InetAddress ip, int partNumber) {
-        String[] parts = ip.getHostAddress().split("\\.");
-        String part = parts[partNumber];
-        return new Integer(part).intValue();
-    }
-
-    /**
-     * Check netmask, e.g. 255.255.255.240 is fine, 255.255.240.16 is illegal (needs to be 255.255.240.0)
-     * @param netmask The netmask address.
-     * @return An integer value. -1 if illegal netmask, otherwise 0, 1, 2, 3
-     * @deprecated This was an internal implementation detail of the
-     *      method {@link #contains} and should never have been
-     *      made public. Furthermore it's broken for IPv6.
-     *      (However, there is no real replacement. If you
-     *      need this functionality, you should rewrite it
-     *      yourself.)
-     */
-    public int checkNetmask(InetAddress netmask) {
-        String[] parts = netmask.getHostAddress().split("\\.");
-        Integer[] numbers = new Integer[4];
-        for (int i = 0; i < 4; i++) {
-            numbers[i] = new Integer(parts[i]);
-        }
-
-        for (int i = 0; i < 4; i++) {
-            getLogger().debug(".checkNetmask(): Check part: " + numbers[i]);
-            if (0 <= numbers[i].intValue() && numbers[i].intValue() <= 255) {
-                if (numbers[i].intValue() != 255) {
-                    for (int k = i + 1; k < 4; k++) {
-                        if (numbers[k].intValue() != 0) {
-                            getLogger().error(".checkNetmask(): Illegal Netmask: " + netmask);
-                            return -1;
-                        }
-                    }
-                    return i;
-                }
-                continue;
-            }
-            // FIXME: This check not really be necessary because java.net.UnknownHostException should be thrown long time before
-            getLogger().error(".checkNetmask(): Illegal Netmask: " + netmask);
-            return -1;
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("All parts equal 255: " + netmask);
-        }
-        return 3;
-    }
-
-    /**
-     * Converts a string to an IP addres.
-     * @param string The IP address, represented by a string.
-     * @return An InetAddress object.
-     * @throws UnknownHostException
-     * @deprecated This was an internal implementation detail of the
-     *      method {@link #contains} and should never have been
-     *      made public. (And it's unnecessary
-     *      too, as well as broken for IPv6. ;-)
-     *      Use <code>InetAddress.getByName(string)</code>
-     *      instead.
-     */
-    public static InetAddress getAddress(String string) throws UnknownHostException {
-        String[] strings = string.split("\\.");
-
-        InetAddress address;
-        byte[] numbers = new byte[strings.length];
-        for (int i = 0; i < strings.length; i++) {
-            int number = Integer.parseInt(strings[i]);
-            if (number > 127) {
-                number = number - 256;
-            }
-            numbers[i] = (byte) number;
-        }
-
-        address = InetAddress.getByAddress(numbers);
-        return address;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/search/Grep.java b/trunk/src/java/org/apache/lenya/search/Grep.java
deleted file mode 100644
index 4510e01..0000000
--- a/trunk/src/java/org/apache/lenya/search/Grep.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: Grep.java 152682 2005-02-08 18:13:39Z gregor $  */
-
-package org.apache.lenya.search;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.CharBuffer;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.avalon.framework.logger.Logger;
-
-/**
- * Utility class to provide a subset of the grep functionality. 
- */
-public class Grep {
-    
-    private static Charset charset = Charset.forName("UTF-8");
-    private static CharsetDecoder decoder = charset.newDecoder();
-
-    /**
-     * Check if the given file contains the pattern
-     * @param file the file which is to be searched for the pattern
-     * @param pattern the pattern that is being searched.
-     * @return true if the file contains the string, false otherwise.
-     * @throws IOException
-     */
-    public static boolean containsPattern(File file, Pattern pattern) throws IOException {
-        
-        Logger log = new ConsoleLogger();
-
-        FileChannel fc = null;
-		// Open the file and then get a channel from the stream
-        FileInputStream fis = null;
-		boolean result = false;
-
-		try {
-			fis = new FileInputStream(file);
-			fc = fis.getChannel();
-
-			// Get the file's size and then map it into memory
-			int sz = (int)fc.size();
-			MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-
-			// Decode the file into a char buffer
-			CharBuffer cb = decoder.decode(bb);
-
-			// Perform the search
-			Matcher pm = pattern.matcher(cb); // Pattern matcher
-
-			result = pm.find();
-		} catch (FileNotFoundException e) {
-			log.error("File not found: " +e.toString());
-		} catch (CharacterCodingException e) {
-			log.error("Problem with encoding: " +e.toString());
-		} catch (IOException e) {
-			log.error("IO Exception: " +e.toString());
-		} finally {
-	        // Close the channel and the stream
-	        if (fc != null)
-	            fc.close();
-	        if (fis != null)
-	            fis.close();
-		}
-        return result;
-    }
-
-    /**
-     * Find all occurences of pattern in a file.
-     * @param file the file to search for occurences of pattern
-     * @param pattern the pattern to search for
-     * @param group which group in the pattern to return
-     * @return an <code>array</code> of occurences of pattern 
-     * (i.e. the groupth group of the match)
-     * @throws IOException if the file could not be read.
-     */
-    public static String[] findPattern(File file, Pattern pattern, int group) throws IOException {
-
-        Logger log = new ConsoleLogger();
-
-        ArrayList occurences = new ArrayList();
-        FileInputStream fis = null;
-        FileChannel fc = null;
-
-        try {
-            // Open the file and then get a channel from the stream
-            fis = new FileInputStream(file);
-            fc = fis.getChannel();
-
-            // Get the file's size and then map it into memory
-            int sz = (int)fc.size();
-            MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-
-            // Decode the file into a char buffer
-            CharBuffer cb = decoder.decode(bb);
-
-            // Perform the search
-            Matcher pm = pattern.matcher(cb); // Pattern matcher
-
-            while (pm.find()) {
-                occurences.add(pm.group(group));
-            }
-        } catch (FileNotFoundException e) {
-            log.error("file not found " +e.toString());
-        } catch (CharacterCodingException e) {
-            log.error("encoding problem " +e.toString());
-        } catch (IOException e) {
-            log.error("IO exception" +e.toString());
-        } finally {
-	        // Close the channel and the stream
-	        if (fc != null)
-	            fc.close();
-	        if (fis != null)
-	            fis.close();
-        }
-        return (String[])occurences.toArray(new String[occurences.size()]);
-
-    }
-
-    /**
-     * Find all files below the given file which contain the given pattern.
-     * @param file the file where to start the search for the pattern.
-     * @param pattern the pattern to search for.
-     * @return an array of files which contain the pattern
-     * @throws IOException if any of the files could not be opened.
-     */
-    private static List find_internal(File file, Pattern pattern) throws IOException {
-        ArrayList fileList = new ArrayList();
-
-        if (file.isDirectory()) {
-            String[] children = file.list();
-            for (int i = 0; i < children.length; i++) {
-                fileList.addAll(
-                    find_internal(
-                        new File(file.getAbsolutePath(), children[i]),
-                        pattern));
-            }
-        } else if (file.isFile() && containsPattern(file, pattern)) {
-            fileList.add(file);
-        }
-        return fileList;
-    }
-
-    /**
-     * Find all files below the given file which contain the given search string.
-     * 
-     * @param file the where to start the search
-     * @param searchString the string to search for.
-     * 
-     * @return an array of files which contain the search string.
-     * 
-     * @throws IOException if any of the files could not be opened.
-     */
-    public static File[] find(File file, String searchString) throws IOException {
-        Pattern pattern = Pattern.compile(searchString);
-        List fileList = find_internal(file, pattern);
-        return (File[])fileList.toArray(new File[fileList.size()]);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/ConcurrentModificationException.java b/trunk/src/java/org/apache/lenya/transaction/ConcurrentModificationException.java
deleted file mode 100644
index feb82a7..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/ConcurrentModificationException.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import org.apache.lenya.util.Assert;
-
-/**
- * Exception which is thrown when a different identity changed a transactionable
- * object in an optimistic offline lock scenario.
- */
-public class ConcurrentModificationException extends TransactionException {
-
-    private Transactionable transactionable;
-
-    public ConcurrentModificationException(Transactionable t) {
-        super();
-        Assert.notNull("transactionable", t);
-        this.transactionable = t;
-    }
-
-    public String getMessage() {
-        return "The object [" + this.transactionable + "] was modified after it has been locked.";
-    }
-
-    /**
-     * @return The transactionable that was modified by a different identity.
-     */
-    public Transactionable getTransactionable() {
-        return this.transactionable;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java b/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java
deleted file mode 100644
index 2a4b6b8..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Factory for identifiables.
- *
- * @version $Id$
- */
-public interface IdentifiableFactory {
-
-    /**
-     * Builds an identifiable.
-     * @param map The identity map.
-     * @param key The key.
-     * @return An identifiable object.
-     * @throws Exception if an error occurs.
-     */
-    Object build(IdentityMap map, String key) throws Exception;
-    
-    /**
-     * @return The type of the identifables to produce.
-     */
-    String getType();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java b/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java
deleted file mode 100644
index 4e354d3..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Identity map.
- * 
- * @version $Id$
- */
-public interface IdentityMap {
-
-    /**
-     * Retrieve an instance from the map. If no instance exists
-     * for the given key, the factory is used to build one.
-     * @param factory The factory that produces the identifable.
-     * @param key The key for the identifiable.
-     * @return An identifiable.
-     */
-    Object get(IdentifiableFactory factory, String key);
-
-    /**
-     * Returns the unit of work. This maybe <code>null</code> if the identity map is not involved
-     * in a transaction.
-     * @return The unit of work.
-     */
-    UnitOfWork getUnitOfWork();
-
-    /**
-     * @param unit The unit of work to use.
-     */
-    void setUnitOfWork(UnitOfWork unit);
-    
-    /**
-     * @return All objects in this map.
-     */
-    Object[] getObjects();
-
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java b/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java
deleted file mode 100644
index 5f0549f..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-
-/**
- * Identity map implementation.
- * 
- * @version $Id$
- */
-public final class IdentityMapImpl extends AbstractLogEnabled implements IdentityMap {
-
-    private Map maps = new HashMap();
-    
-    /**
-     * Ctor.
-     * @param logger The logger.
-     */
-    public IdentityMapImpl(Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    public Object get(IdentifiableFactory factory, String key) {
-        String type = factory.getType();
-        Map map = (Map) this.maps.get(type);
-        if (map == null) {
-            map = new HashMap();
-            this.maps.put(type, map);
-        }
-        Object object = map.get(key);
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("IdentityMapImpl::get() looked up type [" + type + "], key [" + key
-                    + "] in map, is it there ? " + (object != null));
-
-        if (object == null) {
-            try {
-                object = factory.build(this, key);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            map.put(key, object);
-        }
-        return object;
-    }
-
-    private UnitOfWork unitOfWork;
-
-    /**
-     * @see org.apache.lenya.transaction.IdentityMap#getUnitOfWork()
-     */
-    public UnitOfWork getUnitOfWork() {
-        return this.unitOfWork;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.IdentityMap#setUnitOfWork(org.apache.lenya.transaction.UnitOfWork)
-     */
-    public void setUnitOfWork(UnitOfWork unit) {
-        this.unitOfWork = unit;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.IdentityMap#getObjects()
-     */
-    public Object[] getObjects() {
-        Set objects = new HashSet();
-        for (Iterator i = this.maps.values().iterator(); i.hasNext();) {
-            Map map = (Map) i.next();
-            for (Iterator j = map.values().iterator(); j.hasNext();) {
-                objects.add(j.next());
-            }
-        }
-        return (Object[]) objects.toArray(new Object[objects.size()]);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/Lock.java b/trunk/src/java/org/apache/lenya/transaction/Lock.java
deleted file mode 100644
index 1be4397..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/Lock.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * A lock on a transactionable.
- *
- * @version $Id$
- */
-public class Lock {
-
-    /**
-     * Ctor.
-     * @param version The version of the transactionable when it was locked.
-     */
-    protected Lock(int version) {
-        this.version = version;
-    }
-    
-    private int version;
-    
-    /**
-     * @return The version number.
-     */
-    public int getVersion() {
-        return this.version;
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/LockException.java b/trunk/src/java/org/apache/lenya/transaction/LockException.java
deleted file mode 100644
index 2a46cad..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/LockException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Lock exception.
- *
- * @version $Id$
- */
-public class LockException extends TransactionException {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	/**
-     * Ctor.
-     */
-    public LockException() {
-        super();
-    }
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public LockException(String message) {
-        super(message);
-    }
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public LockException(String message, Throwable cause) {
-        super(message, cause);
-    }
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public LockException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/Lockable.java b/trunk/src/java/org/apache/lenya/transaction/Lockable.java
deleted file mode 100644
index 130885c..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/Lockable.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Object that can be locked.
- *
- * @version $Id$
- */
-public interface Lockable {
-    
-    /**
-     * Locks this object.
-     * @throws TransactionException if an error occurs.
-     */
-    void lock() throws TransactionException;
-
-    /**
-     * Unlocks this object.
-     * @throws TransactionException if an error occurs.
-     */
-    void unlock() throws TransactionException;
-
-    /**
-     * @return if this object is locked.
-     * @throws TransactionException if an error occurs.
-     */
-    boolean isLocked() throws TransactionException;
-
-    /**
-     * @return The lock which is held by this object.
-     */
-    Lock getLock();
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/transaction/TransactionException.java b/trunk/src/java/org/apache/lenya/transaction/TransactionException.java
deleted file mode 100644
index 238f846..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/TransactionException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Transaction exception.
- *
- * @version $Id$
- */
-public class TransactionException extends Exception {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	/**
-     * Ctor.
-     */
-    public TransactionException() {
-        super();
-    }
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public TransactionException(String message) {
-        super(message);
-    }
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public TransactionException(String message, Throwable cause) {
-        super(message, cause);
-    }
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public TransactionException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/TransactionLock.java b/trunk/src/java/org/apache/lenya/transaction/TransactionLock.java
deleted file mode 100644
index 14c273b..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/TransactionLock.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Global transaction lock.
- */
-public class TransactionLock {
-
-    /**
-     * The global transaction lock.
-     */
-    public static final Object LOCK = TransactionLock.class;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/Transactionable.java b/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
deleted file mode 100644
index 4cbecb2..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * Object to take part in a transaction.
- *
- * @version $Id$
- */
-public interface Transactionable extends Versionable {
-
-    /**
-     * Saves the object.
-     * @throws TransactionException if an error occurs.
-     */
-    void saveTransactionable() throws TransactionException;
-
-    /**
-     * Deletes the object.
-     * @throws TransactionException if an error occurs.
-     */
-    void deleteTransactionable() throws TransactionException;
-    
-    /**
-     * Creates the object.
-     * @throws TransactionException if an error occurs.
-     */
-    void createTransactionable() throws TransactionException;
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/UnitOfWork.java b/trunk/src/java/org/apache/lenya/transaction/UnitOfWork.java
deleted file mode 100644
index 2f5d13c..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/UnitOfWork.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * This is a "Unit of Work" object (see "Unit of Work" pattern by Martin Fowler, 
- * <a href="http://www.martinfowler.com/eaaCatalog/unitOfWork.html">
- *   http://www.martinfowler.com/eaaCatalog/unitOfWork.html
- * </a>: the unit of work "maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems".
- * 
- * <p>In the current design, this interface allows a use case to generate documents, while ensuring that only one instance of a document is created. This access is provided by the DocumentIdentityMap's DocumentFactory.</p>
- *
- * <p>This interface may be extended in the future to allow for access to further types of business objects.</p>
- * 
- * @version $Id$
- */
-public interface UnitOfWork {
-
-    /**
-     * Registers an object as new.
-     * @param object The object.
-     * @throws TransactionException if an error occurs.
-     */
-    void registerNew(Transactionable object) throws TransactionException;
-    
-    /**
-     * Registers an object as modified.
-     * @param object The object.
-     * @throws TransactionException if an error occurs.
-     */
-    void registerDirty(Transactionable object) throws TransactionException;
-    
-    /**
-     * Registers an object as removed.
-     * @param object The object.
-     * @throws TransactionException if an error occurs.
-     */
-    void registerRemoved(Transactionable object) throws TransactionException;
-    
-    /**
-     * Commits the transaction.
-     * @throws TransactionException if an error occurs.
-     */
-    void commit() throws TransactionException;
-    
-    /**
-     * Rolls the transaction back.
-     * @throws TransactionException if an error occurs.
-     */
-    void rollback() throws TransactionException;
-    
-    /**
-     * @param transactionable A transactionable.
-     * @return If the transactionable is registered as dirty.
-     */
-    boolean isDirty(Transactionable transactionable);
-    
-    /**
-     * Creates a lock.
-     * @param lockable The lockable.
-     * @param version The version.
-     * @return A lock.
-     * @throws TransactionException if a lock is already placed on this transactionable.
-     */
-    Lock createLock(Lockable lockable, int version) throws TransactionException;
-    
-    /**
-     * Removes a lock.
-     * @param lockable The lockable.
-     * @throws TransactionException if no lock is placed on this transactionable.
-     */
-    void removeLock(Lockable lockable) throws TransactionException;
-
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java b/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
deleted file mode 100644
index cecef7c..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.util.Assert;
-
-/**
- * Default implementation of a unit of work.
- * 
- * @version $Id$
- */
-public class UnitOfWorkImpl extends AbstractLogEnabled implements UnitOfWork {
-
-    /**
-     * Ctor.
-     * @param map The identity map to use.
-     * @param identity The identity.
-     * @param logger The logger.
-     */
-    public UnitOfWorkImpl(IdentityMap map, Identity identity, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-
-        Assert.notNull(map);
-        this.identityMap = map;
-        this.identityMap.setUnitOfWork(this);
-
-        this.identity = identity;
-    }
-
-    private IdentityMap identityMap;
-
-    /**
-     * @return The identity map.
-     */
-    public IdentityMap getIdentityMap() {
-        return this.identityMap;
-    }
-
-    private Set newObjects = new HashSet();
-    private Set modifiedObjects = new HashSet();
-    private Set removedObjects = new HashSet();
-
-    /**
-     * @see org.apache.lenya.transaction.UnitOfWork#registerNew(org.apache.lenya.transaction.Transactionable)
-     */
-    public void registerNew(Transactionable object) throws TransactionException {
-        this.newObjects.add(object);
-    }
-
-    /**
-     * @throws TransactionException
-     * @throws LockException
-     * @see org.apache.lenya.transaction.UnitOfWork#registerDirty(org.apache.lenya.transaction.Transactionable)
-     */
-    public void registerDirty(Transactionable object) throws TransactionException {
-        this.modifiedObjects.add(object);
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.UnitOfWork#registerRemoved(org.apache.lenya.transaction.Transactionable)
-     */
-    public void registerRemoved(Transactionable object) throws TransactionException {
-        this.removedObjects.add(object);
-    }
-
-    /**
-     * Commit the transaction. We lock this method for the whole class to avoid synchronization
-     * problems.
-     * @see org.apache.lenya.transaction.UnitOfWork#commit()
-     */
-    public void commit() throws TransactionException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("UnitOfWorkImpl::commit() called");
-        }
-
-        Set lockedObjects = this.locks.keySet();
-
-        for (Iterator i = lockedObjects.iterator(); i.hasNext();) {
-            Transactionable t = (Transactionable) i.next();
-            if (t.hasChanged()) {
-                throw new ConcurrentModificationException(t);
-            }
-        }
-
-        Set involvedObjects = new HashSet();
-        involvedObjects.addAll(this.newObjects);
-        involvedObjects.addAll(this.modifiedObjects);
-        involvedObjects.addAll(this.removedObjects);
-
-        try {
-            for (Iterator i = involvedObjects.iterator(); i.hasNext();) {
-                Transactionable t = (Transactionable) i.next();
-                t.checkout();
-            }
-
-            for (Iterator i = this.newObjects.iterator(); i.hasNext();) {
-                Transactionable t = (Transactionable) i.next();
-                t.createTransactionable();
-                t.saveTransactionable();
-            }
-            for (Iterator i = this.modifiedObjects.iterator(); i.hasNext();) {
-                Transactionable t = (Transactionable) i.next();
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("UnitOfWorkImpl::commit() calling save on [" + t + "]");
-                }
-                t.saveTransactionable();
-            }
-            for (Iterator i = this.removedObjects.iterator(); i.hasNext();) {
-                Transactionable t = (Transactionable) i.next();
-                t.deleteTransactionable();
-            }
-
-        } finally {
-            if (getIdentityMap() != null) {
-                Object[] objects = getIdentityMap().getObjects();
-                for (int i = 0; i < objects.length; i++) {
-                    if (objects[i] instanceof Transactionable) {
-                        Transactionable t = (Transactionable) objects[i];
-                        if (t.isCheckedOutBySession() && !this.removedObjects.contains(t)) {
-                            t.checkin();
-                        }
-                        if (t.isLocked()) {
-                            t.unlock();
-                        }
-                    }
-                }
-            }
-        }
-
-        resetTransaction();
-
-    }
-
-    protected void resetTransaction() {
-        this.modifiedObjects.clear();
-        this.newObjects.clear();
-        this.removedObjects.clear();
-    }
-
-    private Identity identity;
-
-    protected Identity getIdentity() {
-        return this.identity;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.UnitOfWork#isDirty(org.apache.lenya.transaction.Transactionable)
-     */
-    public boolean isDirty(Transactionable transactionable) {
-        return this.modifiedObjects.contains(transactionable)
-                || this.newObjects.contains(transactionable)
-                || this.removedObjects.contains(transactionable);
-    }
-
-    /**
-     * Rollback the transaction. We lock this method for the whole class to avoid synchronization
-     * problems.
-     * @see org.apache.lenya.transaction.UnitOfWork#rollback()
-     */
-    public synchronized void rollback() throws TransactionException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("UnitOfWorkImpl::rollback() called");
-        }
-        if (getIdentityMap() != null) {
-            Object[] objects = getIdentityMap().getObjects();
-            for (int i = 0; i < objects.length; i++) {
-                if (objects[i] instanceof Transactionable) {
-                    Transactionable t = (Transactionable) objects[i];
-                    if (t.isCheckedOutBySession()) {
-                        t.checkin();
-                    }
-                    if (t.isLocked()) {
-                        t.unlock();
-                    }
-                }
-            }
-            resetTransaction();
-        }
-    }
-
-    private Map locks = new HashMap();
-
-    public Lock createLock(Lockable lockable, int version) throws TransactionException {
-        if (this.locks.containsKey(lockable)) {
-            throw new LockException("A lock is already placed on [" + lockable
-                    + "]. A new lock could lead to inconsistent data.");
-        }
-        Lock lock = new Lock(version);
-        this.locks.put(lockable, lock);
-        return lock;
-    }
-
-    public void removeLock(Lockable lockable) throws TransactionException {
-        if (!this.locks.containsKey(lockable)) {
-            throw new LockException("No lock is already placed on [" + lockable + "]!");
-        }
-        this.locks.remove(lockable);
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/transaction/Versionable.java b/trunk/src/java/org/apache/lenya/transaction/Versionable.java
deleted file mode 100644
index e8990b4..0000000
--- a/trunk/src/java/org/apache/lenya/transaction/Versionable.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.transaction;
-
-/**
- * A versionable object.
- *
- * @version $Id$
- */
-public interface Versionable extends Lockable {
-
-    /**
-     * Checks the object in.
-     * @throws TransactionException if an error occurs.
-     */
-    void checkin() throws TransactionException;
-
-    /**
-     * Checks the object out.
-     * @throws TransactionException if an error occurs.
-     */
-    void checkout() throws TransactionException;
-
-    /**
-     * @return if the object is checked out.
-     * @throws TransactionException if an error occurs.
-     */
-    boolean isCheckedOut() throws TransactionException;
-    
-    /**
-     * @return if the object is checked out by its session.
-     * @throws TransactionException if an error occurs.
-     */
-    boolean isCheckedOutBySession() throws TransactionException;
-
-    /**
-     * Checks if the object has been changed since it has been locked.
-     * @return A boolean value.
-     * @throws TransactionException if an error occurs.
-     */
-    boolean hasChanged() throws TransactionException;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/util/Assert.java b/trunk/src/java/org/apache/lenya/util/Assert.java
deleted file mode 100644
index b007d9a..0000000
--- a/trunk/src/java/org/apache/lenya/util/Assert.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.util;
-
-/**
- * Assertion utility.
- */
-public final class Assert {
-
-    /**
-     * @param parameterName The parameter name to use in the exception.
-     * @param object The object.
-     * @throws RuntimeException if the object is null.
-     */
-    public static final void notNull(String parameterName, Object object) {
-        if (object == null) {
-            throw new RuntimeException("The parameter [" + parameterName + "] must not be null!");
-        }
-    }
-
-    /**
-     * @param parameterName The parameter name to use in the exception.
-     * @param object The object.
-     * @throws RuntimeException if the object is null.
-     */
-    public static final void notNull(Object object) {
-        notNull("undefined", object);
-    }
-
-    /**
-     * @param expression The expression to check.
-     * @param value The value.
-     * @throws RuntimeException if the value is not true.
-     */
-    public static final void isTrue(String expression, boolean value) {
-        if (!value) {
-            throw new RuntimeException("The expression [" + expression + "] is not true!");
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/util/CacheMap.java b/trunk/src/java/org/apache/lenya/util/CacheMap.java
deleted file mode 100644
index ef58063..0000000
--- a/trunk/src/java/org/apache/lenya/util/CacheMap.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.avalon.framework.logger.LogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-
-/**
- * A map with a maximum capacity. When the map is full, the oldest entry is removed.
- */
-public class CacheMap extends HashMap implements LogEnabled {
-    
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-    
-    /**
-     * Ctor.
-     * @param _capacity The maximum number of entries.
-     * @param logger The logger.
-     */
-    public CacheMap(int _capacity, Logger logger) {
-        enableLogging(logger);
-        assert _capacity > -1;
-        this.capacity = _capacity;
-    }
-    
-    private int capacity;
-    private SortedMap timeToKey = new TreeMap();
-    private Logger logger;
-    
-    /**
-     * @see java.util.Map#put(Object, Object)
-     */
-    public Object put(Object key, Object value) {
-        
-        if (size() == this.capacity) {
-            Object oldestKey = this.timeToKey.get(this.timeToKey.firstKey());
-            remove(oldestKey);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Clearing cache");
-            }
-        }
-        this.timeToKey.put(new Date(), key);
-        return super.put(key, value);
-    }
-    
-    /**
-     * @see java.util.Map#get(java.lang.Object)
-     */
-    public Object get(Object key) {
-        Object result = super.get(key);
-        if (getLogger().isDebugEnabled()) {
-            if (result != null) {
-                getLogger().debug("Using cached object for key [" + key + "]");
-            }
-            else {
-                getLogger().debug("No cached object for key [" + key + "]");
-            }
-        }
-        return result;
-    }
-    
-    protected Logger getLogger() {
-        return this.logger;
-    }
-
-    public void enableLogging(Logger logger) {
-        this.logger = logger;
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/util/HTML.java b/trunk/src/java/org/apache/lenya/util/HTML.java
deleted file mode 100644
index 8d93376..0000000
--- a/trunk/src/java/org/apache/lenya/util/HTML.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.swing.text.html.parser.ParserDelegator;
-
-
-/**
- * http://developer.java.sun/developer/TechTips/1999/tt0923.html
- */
-public class HTML {
-    HTMLHandler htmlHandler;
-
-    /**
-     * Creates a new HTML object from a URI
-     * @param uri The URI
-     * @throws IOException if a IO error occurs
-     */
-    public HTML(String uri) throws IOException {
-        ParserDelegator pd = new ParserDelegator();
-        this.htmlHandler = new HTMLHandler();
-        pd.parse(getReader(uri), this.htmlHandler, true);
-    }
-
-    /**
-     * Command line interface
-     * @param args Command line args
-     */
-    public static void main(String[] args) {
-        if (args.length != 1) {
-            System.err.println("Usage: HTML uri (file or url)");
-
-            return;
-        }
-
-        try {
-            HTML html = new HTML(args[0]);
-
-            List img_src_list = html.getImageSrcs(false);
-            System.out.println("<im src");
-
-            Iterator img_src_iterator = img_src_list.iterator();
-
-            while (img_src_iterator.hasNext()) {
-                System.out.println((String) img_src_iterator.next());
-            }
-
-            List a_href_list = html.getAnchorHRefs(false);
-            System.out.println("<a href");
-
-            Iterator a_href_iterator = a_href_list.iterator();
-
-            while (a_href_iterator.hasNext()) {
-                System.out.println((String) a_href_iterator.next());
-            }
-
-            List link_href_list = html.getLinkHRefs(false);
-            System.out.println("<link href");
-
-            Iterator link_href_iterator = link_href_list.iterator();
-
-            while (link_href_iterator.hasNext()) {
-                System.out.println((String) link_href_iterator.next());
-            }
-        } catch (final IOException e) {
-            System.err.println("IO error : " + e);
-        }
-    }
-
-    /**
-     * Get Anchor Hrefs
-     * @param duplicate Whether you want duplicate HREFS
-     * @return A list of Hrefs
-     */
-    public List getAnchorHRefs(boolean duplicate) {
-        if (duplicate) {
-            return this.htmlHandler.getAllAHRefs();
-        }
-        return this.htmlHandler.getAHRefs();
-    }
-
-    /**
-     * Get Link hrefs
-     * @param duplicate Whether you want duplicate Hrefs
-     * @return A list of Hrefs
-     */
-    public List getLinkHRefs(boolean duplicate) {
-        if (duplicate) {
-            return this.htmlHandler.getAllLinkHRefs();
-        }
-        return this.htmlHandler.getLinkHRefs();
-    }
-
-    /**
-     * Get Image src attributes
-     * @param duplicate Whether you want duplicates
-     * @return A list of src Attributes
-     */
-    public List getImageSrcs(boolean duplicate) {
-        if (duplicate) {
-            return this.htmlHandler.getAllImageSrcs();
-        }
-        return this.htmlHandler.getImageSrcs();
-    }
-
-    private Reader getReader(String uri) throws IOException {
-        if (uri.startsWith("http:")) {
-            // uri is url
-            URLConnection connection = new URL(uri).openConnection();
-
-            return new InputStreamReader(connection.getInputStream());
-        }
-        // uri is file
-        return new FileReader(uri);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/util/HTMLHandler.java b/trunk/src/java/org/apache/lenya/util/HTMLHandler.java
deleted file mode 100644
index 4ae4ff4..0000000
--- a/trunk/src/java/org/apache/lenya/util/HTMLHandler.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.util.ArrayList;
-
-import javax.swing.text.MutableAttributeSet;
-import javax.swing.text.html.HTML;
-import javax.swing.text.html.HTML.Tag;
-import javax.swing.text.html.HTMLEditorKit.ParserCallback;
-
-
-/**
- * HTML handler class
- */
-public class HTMLHandler extends ParserCallback {
-    private ArrayList img_src;
-    private ArrayList img_src_all;
-    private ArrayList a_href;
-    private ArrayList a_href_all;
-    private ArrayList link_href;
-    private ArrayList link_href_all;
-
-    /**
-     * Creates a new HTMLHandler object.
-     */
-    public HTMLHandler() {
-        this.img_src_all = new ArrayList();
-        this.img_src = new ArrayList();
-        this.a_href_all = new ArrayList();
-        this.a_href = new ArrayList();
-        this.link_href_all = new ArrayList();
-        this.link_href = new ArrayList();
-    }
-
-    /**
-     * Handle the start tag
-     * @param tag The tag
-     * @param attributes The set of attributes
-     * @param pos The position
-     */
-    public void handleStartTag(Tag tag, MutableAttributeSet attributes, int pos) {
-        if (tag.equals(HTML.Tag.A)) {
-            String href = (String) attributes.getAttribute(HTML.Attribute.HREF);
-
-            if (href != null) {
-                this.a_href_all.add(href);
-
-                if (!this.a_href.contains(href)) {
-                    this.a_href.add(href);
-                }
-            }
-        }
-    }
-
-    /**
-     * Handle a simple tag
-     * @param tag The tag
-     * @param attributes The set of attributes
-     * @param pos The position
-     */
-    public void handleSimpleTag(Tag tag, MutableAttributeSet attributes, int pos) {
-        if (tag.equals(HTML.Tag.IMG)) {
-            String src = (String) attributes.getAttribute(HTML.Attribute.SRC);
-
-            if (src != null) {
-                this.img_src_all.add(src);
-
-                if (!this.img_src.contains(src)) {
-                    this.img_src.add(src);
-                }
-            }
-        }
-
-        if (tag.equals(HTML.Tag.LINK)) {
-            String href = (String) attributes.getAttribute(HTML.Attribute.HREF);
-
-            if (href != null) {
-                this.link_href_all.add(href);
-
-                if (!this.link_href.contains(href)) {
-                    this.link_href.add(href);
-                }
-            }
-        }
-    }
-
-    /**
-     * Get the list of src attributes for images
-     * @return The list of src attributes
-     */
-    public ArrayList getImageSrcs() {
-        return this.img_src;
-    }
-
-    /**
-     * Get the list of src attributes for all images
-     * @return  The list of src attributes
-     */
-    public ArrayList getAllImageSrcs() {
-        return this.img_src_all;
-    }
-
-    /**
-     * Get a list of links
-     * @return  The list of links
-     */
-    public ArrayList getLinkHRefs() {
-        return this.link_href;
-    }
-
-    /**
-     * Get a list of all links
-     * @return The list of links
-     */
-    public ArrayList getAllLinkHRefs() {
-        return this.link_href_all;
-    }
-
-    /**
-     * Get a list of a href=
-     * @return The list of a href
-     */
-    public ArrayList getAHRefs() {
-        return this.a_href;
-    }
-
-    /**
-     * Get a list of all a href=
-     * @return The list of a href
-     */
-    public ArrayList getAllAHRefs() {
-        return this.a_href_all;
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/util/NamespaceMap.java b/trunk/src/java/org/apache/lenya/util/NamespaceMap.java
deleted file mode 100644
index c50eb08..0000000
--- a/trunk/src/java/org/apache/lenya/util/NamespaceMap.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * An object of this class provides an easy way to access
- * Strings in a Map that are prefixed like "prefix.foo".
- * The actual map wrapped by this object can contain more
- * key-value-pairs, but you can access only the prefixed keys
- * through the mapper.
- */
-public class NamespaceMap {
-    /**
-     * <code>SEPARATOR</code> The seperator character
-     */
-    public static final String SEPARATOR = ".";
-    private Map map;
-    private String prefix;
-
-    /**
-     * Creates a new NamespaceMap object.
-     * @param _prefix The prefix.
-     */
-    public NamespaceMap(String _prefix) {
-        this(new HashMap(), _prefix);
-    }
-
-    /**
-     * Creates a new NamespaceMap.
-     * @param _map A map containing the prefixed key-value-pairs.
-     * @param _prefix The prefix.
-     */
-    public NamespaceMap(Map _map, String _prefix) {
-        this.map = _map;
-        this.prefix = _prefix;
-    }
-
-    /**
-     * Returns the prefix.
-     * @return A string.
-     */
-    public String getPrefix() {
-        return this.prefix;
-    }
-
-    /**
-     * Returns the namespace prefix.
-     * @return The namespace prefix.
-     */
-    protected Map getMapObject() {
-        return this.map;
-    }
-
-    /**
-     * Returns a map that contains only the un-prefixed key-value-pairs.
-     * @return The map.
-     */
-    public Map getMap() {
-        Map resultMap = new HashMap();
-
-        Set keys = getMapObject().keySet();
-
-        for (Iterator i = keys.iterator(); i.hasNext();) {
-            Object key = i.next();
-
-            if (key instanceof String) {
-                String keyString = (String) key;
-
-                if (keyString.startsWith(getPrefix() + SEPARATOR)) {
-                    resultMap.put(getShortName(getPrefix(), keyString), getMapObject().get(key));
-                }
-            }
-        }
-
-        return resultMap;
-    }
-
-    /**
-     * Puts a value for prefixed key into the map.
-     * @param key The key without prefix.
-     * @param value The value.
-     */
-    public void put(String key, Object value) {
-        getMapObject().put(getFullName(getPrefix(), key), value);
-    }
-
-    /**
-     * Returns the value for a prefixed key.
-     * @param key The key without prefix.
-     * @return The value.
-     */
-    public Object get(String key) {
-        return getMap().get(key);
-    }
-
-    /**
-     * Returns the full (prefixed) key for a short (un-prefixed) key.
-     * @param prefix The prefix.
-     * @param key The un-prefixed key.
-     * @return A string (prefix + {@link #SEPARATOR} + key).
-     */
-    public static String getFullName(String prefix, String key) {
-        return prefix + SEPARATOR + key;
-    }
-
-    /**
-     * Returns the short (un-prefixed) key for a full (prefixed) key.
-     * @param prefix The prefix.
-     * @param key The full (prefixed) key.
-     * @return A string.
-     */
-    public static String getShortName(String prefix, String key) {
-        return key.substring(prefix.length() + SEPARATOR.length());
-    }
-    
-    /**
-     * Puts all prefixed key-value-pairs of map into this map.
-     * @param _map A map.
-     */
-    public void putAll(Map _map) {
-        for (Iterator i = _map.keySet().iterator(); i.hasNext(); ) {
-            String key = (String) i.next();
-            put(key, _map.get(key));
-        }
-    }
-    
-    /**
-     * Returns a map with prefixed keys.
-     * @return A map.
-     */
-    public Map getPrefixedMap() {
-        return new HashMap(getMapObject());
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/util/Query.java b/trunk/src/java/org/apache/lenya/util/Query.java
deleted file mode 100644
index 590283d..0000000
--- a/trunk/src/java/org/apache/lenya/util/Query.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.util;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-/**
- * <p>
- * Utility class to analyze a query string of the form
- * <code>key1=value1&key2=value2&...</code>.
- * Access is not thread-safe.
- * </p>
- * <p>
- * Invalid parts (not a valid key-value-pair) are omitted.
- * </p>
- */
-public class Query {
-
-    protected static final String PAIR_DELIMITER = "&";
-    protected static final String KEY_VALUE_DELIMITER = "=";
-    private String pairDelimiter;
-    private String keyValueDelimiter;
-
-    /**
-     * Creates a query object with default values for the pair and key-value
-     * delimiters.
-     * 
-     * @param string The query string.
-     */
-    public Query(String string) {
-        this(string, PAIR_DELIMITER, KEY_VALUE_DELIMITER);
-    }
-
-    /**
-     * Creates a query object.
-     * @param string The string.
-     * @param pairDelimiter The delimiter between key-value pairs.
-     * @param keyValueDelimiter The delimiter between key and value.
-     */
-    public Query(String string, String pairDelimiter, String keyValueDelimiter) {
-        this.key2value = new HashMap();
-        this.pairDelimiter = pairDelimiter;
-        this.keyValueDelimiter = keyValueDelimiter;
-        StringTokenizer tokenizer = new StringTokenizer(string, pairDelimiter);
-        while (tokenizer.hasMoreTokens()) {
-            String token = tokenizer.nextToken();
-            StringTokenizer keyValueTokenizer = new StringTokenizer(token, keyValueDelimiter);
-            if (keyValueTokenizer.countTokens() == 2) {
-                final String key = keyValueTokenizer.nextToken();
-                final String value = keyValueTokenizer.nextToken();
-                this.key2value.put(key, value);
-            }
-        }
-    }
-
-    private Map key2value;
-
-    public String getValue(String key) {
-        return (String) this.key2value.get(key);
-    }
-
-    public String getValue(String key, String defaultValue) {
-        String value = getValue(key);
-        if (value == null) {
-            return defaultValue;
-        } else {
-            return value;
-        }
-    }
-
-    public String getKeyValueDelimiter() {
-        return keyValueDelimiter;
-    }
-
-    public String getPairDelimiter() {
-        return pairDelimiter;
-    }
-    
-    public void removeValue(String key) {
-        this.key2value.remove(key);
-    }
-    
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        for (Iterator i = this.key2value.keySet().iterator(); i.hasNext(); ) {
-            String key = (String) i.next();
-            String value = (String) this.key2value.get(key);
-            buf.append(key);
-            buf.append(this.keyValueDelimiter);
-            buf.append(value);
-            if (i.hasNext()) {
-                buf.append(this.pairDelimiter);
-            }
-        }
-        return buf.toString();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/util/ServletHelper.java b/trunk/src/java/org/apache/lenya/util/ServletHelper.java
deleted file mode 100644
index 9f654ef..0000000
--- a/trunk/src/java/org/apache/lenya/util/ServletHelper.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-
-/**
- * Servlet utility class.
- */
-public final class ServletHelper {
-
-    /**
-     * Ctor.
-     */
-    private ServletHelper() {
-        // do nothing
-    }
-
-    /**
-     * Returns the URL inside the web application (without the context prefix).
-     * @param request The request.
-     * @return A string.
-     */
-    public static String getWebappURI(Request request) {
-        String context = request.getContextPath();
-        String requestUri = request.getRequestURI();
-        return getWebappURI(context, requestUri);
-    }
-
-    /**
-     * Returns the URL inside the web application (without the context prefix).
-     * @param context The context prefix.
-     * @param requestUri The complete request URI.
-     * @return A string.
-     */
-    public static String getWebappURI(String context, String requestUri) {
-        if (context == null) {
-            context = "";
-        }
-        String url = requestUri.substring(context.length());
-        if (url.length() > 0 && !url.startsWith("/")) {
-            url = "/" + url;
-        }
-
-        return url;
-    }
-
-    /**
-     * Converts the request parameters to a map. If a key is mapped to multiple parameters, a string
-     * array is used as the value.
-     * @param request The request.
-     * @return A map.
-     */
-    public static Map getParameterMap(Request request) {
-        Map requestParameters = new HashMap();
-        for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            String[] values = request.getParameterValues(key);
-            Object value;
-            if (values.length == 1) {
-                value = values[0];
-            } else {
-                value = values;
-            }
-            requestParameters.put(key, value);
-        }
-        return requestParameters;
-    }
-
-    private static Boolean uploadEnabled = null;
-
-    /**
-     * Returns the value of enable-uploads in web.xml
-     * @param manager The Service Manager.
-     * @return true if enable upload is true or not set in web.xml, else false
-     */
-    public static synchronized boolean isUploadEnabled(ServiceManager manager)
-            throws SourceNotFoundException, ServiceException, ParserConfigurationException,
-            SAXException, IOException, TransformerException {
-
-        if (ServletHelper.uploadEnabled == null) {
-
-            Node node;
-            String webappUrl = "context://WEB-INF/web.xml";
-            Document document = SourceUtil.readDOM(webappUrl, manager);
-            Element root = document.getDocumentElement();
-            node = XPathAPI.selectSingleNode(root,
-                    "/web-app/servlet/init-param[param-name='enable-uploads']/param-value/text()");
-
-            if (node == null) {
-                ServletHelper.uploadEnabled = Boolean.FALSE;
-            } else {
-                boolean enabled = node.getNodeValue().equals("true");
-                ServletHelper.uploadEnabled = Boolean.valueOf(enabled);
-            }
-        }
-        return ServletHelper.uploadEnabled.booleanValue();
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/util/SessionListener.java b/trunk/src/java/org/apache/lenya/util/SessionListener.java
deleted file mode 100644
index adce8c1..0000000
--- a/trunk/src/java/org/apache/lenya/util/SessionListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.util;
-
-/**
- * A Listener which store the session object in a HashMap on creation and 
- * remove it if the session is destroyed.
- * 
- * @version $Id$
- */
-
-import javax.servlet.http.*;
-import java.util.WeakHashMap;
-
-public class SessionListener implements HttpSessionListener {
-
-	private static WeakHashMap allSessions = new WeakHashMap();
-
-	public void sessionCreated(HttpSessionEvent se) {
-
-		HttpSession session = se.getSession();
-		String sessionID = session.getId();
-		allSessions.put(sessionID,session);				
-	}
-
-	public void sessionDestroyed(HttpSessionEvent se) {
-		HttpSession session = se.getSession();
-		String sessionID = session.getId();
-		if (allSessions.containsKey(sessionID)) {
-			allSessions.remove(sessionID);
-		}
-	}
-
-	public WeakHashMap getAllSessions() {
-		return allSessions;
-	}	
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/util/Stack.java b/trunk/src/java/org/apache/lenya/util/Stack.java
deleted file mode 100644
index 8b8f886..0000000
--- a/trunk/src/java/org/apache/lenya/util/Stack.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.util;
-
-import java.util.Vector;
-
-
-/**
- * A helper class to implement a stack. Unlike java.util.Stack, this stack
- * discards old elements once maxsize is reached.
- * @see java.util.Stack
- */
-public class Stack extends Vector {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	int maxsize = 0;
-
-    /**
-     * Creates a new Stack object.
-     * @param _maxsize The maximum size of the stack
-     */
-    public Stack(int _maxsize) {
-        this.maxsize = _maxsize;
-    }
-
-    /**
-     * Push an object on the stack
-     * @param object The object
-     */
-    public void push(Object object) {
-        insertElementAt(object, 0);
-
-        if (size() == (this.maxsize + 1)) {
-            removeElementAt(this.maxsize);
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/util/StringUtil.java b/trunk/src/java/org/apache/lenya/util/StringUtil.java
deleted file mode 100644
index a16c28a..0000000
--- a/trunk/src/java/org/apache/lenya/util/StringUtil.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.util;
-
-/**
- * String utility.
- */
-public final class StringUtil {
-    
-    /**
-     * Joins an array of objects into a string.
-     * @param objects The objects.
-     * @param delimiter The delimiter to use.
-     * @return A string.
-     */
-    public static final String join(Object[] objects, String delimiter) {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < objects.length; i++) {
-            if (i > 0) {
-                buffer.append(delimiter);
-            }
-            buffer.append(objects[i].toString());
-        }
-        return buffer.toString();
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/Action.java b/trunk/src/java/org/apache/lenya/workflow/Action.java
deleted file mode 100644
index febbacb..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Action.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-
-/**
- * Workflow action.
- */
-public interface Action {
-	
-    /**
-     * Executes this action for a given workflow instance.
-     * @param resultingVersion The resulting version.
-     * @throws WorkflowException if the execution failed
-     */
-    void execute(Version resultingVersion) throws WorkflowException;
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/BooleanVariable.java b/trunk/src/java/org/apache/lenya/workflow/BooleanVariable.java
deleted file mode 100644
index d1d4651..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/BooleanVariable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-
-/**
- * <p>Boolean state variable.</p>
- * <p>
- * A workflow schema can contain a set of state variables.
- * For each instance, the state variables hold certain values.
- * Values can be assigned during transitions, so a variable can
- * change its value when a transition fires. Currently,
- * the workflow supports only boolean state variables.
- * </p>
- */
-public interface BooleanVariable {
-	
-    /**
-     * Returns the name of this variable.
-     * @return the name
-     */
-    String getName();
-
-    /**
-     * Returns the initial value of this variable.
-     * @return A boolean value.
-     */
-    boolean getInitialValue();
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/BooleanVariableAssignment.java b/trunk/src/java/org/apache/lenya/workflow/BooleanVariableAssignment.java
deleted file mode 100644
index 8b2021f..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/BooleanVariableAssignment.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-
-/**
- * Boolean variable assignment.
- */
-public interface BooleanVariableAssignment extends Action {
-    // do nothing
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/Condition.java b/trunk/src/java/org/apache/lenya/workflow/Condition.java
deleted file mode 100644
index ee758a3..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Condition.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-/**
- * <p>A condition can prevent a transition from firing,
- * based on the current situation. Examples:</p>
- * <ul>
- * <li>Does the current user have a certain role on the current URL?</li>
- * <li>Does a certain state variable have a certain value (e.g., is the document published)? (BooleanVariableCondition)<li>
- * <li>Is the sun shining? (e.g., if the weather report may only be published on sunny days)</li>
- * </ul>
- */
-public interface Condition {
-
-    /**
-     * Returns if the condition is complied in a certain situation.
-     * @param workflow The workflow to use.
-     * @param workflowable The workflowable to check the condition on.
-     * @return if the condition is complied.
-     * @throws WorkflowException when the expression could not be evaluated.
-     */
-    boolean isComplied(Workflow workflow, Workflowable workflowable) throws WorkflowException;
-
-    /** Sets the expression for this condition.
-     * @param expression The expression.
-     * @throws WorkflowException when the expression is not valid.
-     */
-    void setExpression(String expression) throws WorkflowException;
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/Transition.java b/trunk/src/java/org/apache/lenya/workflow/Transition.java
deleted file mode 100644
index c026ee1..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Transition.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-
-/**
- * <p>
- * A transition describes the switching of a workflow instance
- * from one state to another. A transition has
- * </p>
- * 
- * <ul>
- * <li>a source state,</li>
- * <li>a destination state,</li>
- * <li>an event,</li>
- * <li>a set of conditions,</li>
- * <li>a set of assignments.</li>
- * </ul>
- * 
- * <p>
- * Additionally, a transition can be marked as synchronized.
- * </p>
- */
-public interface Transition {
-	
-    /**
-     * Returns the event of this transition.
-     * @return the event
-     */
-    String getEvent();
-    
-    /**
-     * @return The source state.
-     */
-    String getSource();
-    
-    /**
-     * @return The destination state.
-     */
-    String getDestination();
-
-    /**
-     * Returns the actions of this transition.
-     * @return the actions
-     */
-    Action[] getActions();
-    
-    /**
-     * @return The conditions.
-     */
-    Condition[] getConditions();
-
-    /**
-     * Returns if this transition is synchronized.
-     * @return A boolean value.
-     */
-    boolean isSynchronized();
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/Version.java b/trunk/src/java/org/apache/lenya/workflow/Version.java
deleted file mode 100644
index 86bfcf8..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Version.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow;
-
-import java.util.Date;
-
-/**
- * A version of the workflow history.
- * 
- * @version $Id$
- */
-public interface Version {
-    
-    /**
-     * Returns the event.
-     * @return An event.
-     */
-    String getEvent();
-
-    /**
-     * Returns the state.
-     * @return A state.
-     */
-    String getState();
-    
-
-    /**
-     * Returns the date.
-     * @return A string.
-     */
-    Date getDate();
-
-    /**
-     * Sets the date.
-     * @param _date A date.
-     */
-    void setDate(Date _date);
-
-    /**
-     * Returns the user ID.
-     * @return A string.
-     */
-    public String getUserId();
-
-    /**
-     * Sets the user ID.
-     * @param _userId A user ID.
-     */
-    public void setUserId(String _userId);
-
-    /**
-     * Returns the ip address.
-     * @return A string.
-     */
-    public String getIPAddress();
-
-    /**
-     * Sets the ip address.
-     * @param _ipaddress A ip address.
-     */
-    public void setIPAddress(String _ipaddress);
-    
-    /**
-     * Returns the value of a variable.
-     * @param variableName The variable name.
-     * @return A boolean value.
-     */
-    boolean getValue(String variableName);
-
-    /**
-     * Sets a variable value.
-     * @param variableName The variable name.
-     * @param value The value.
-     */
-    void setValue(String variableName, boolean value);
-    
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/workflow/Workflow.java b/trunk/src/java/org/apache/lenya/workflow/Workflow.java
deleted file mode 100644
index 2ea9c01..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Workflow.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-/**
- * <p>A workflow schema.</p>
- * <p>
- * A workflow schema defines a state machine (deterministic finite
- * automaton - DFA), consisting of
- * </p>
- * <ul>
- * <li>states, including a marked initial state,</li>
- * <li>transitions, and</li>
- * <li>state variables.</li>
- */
-public interface Workflow {
-    /**
-     * <code>NAMESPACE</code> Workflow namespace URI
-     */
-    String NAMESPACE = "http://apache.org/cocoon/lenya/workflow/1.0";
-    /**
-     * <code>DEFAULT_PREFIX</code> Default workflow namespace prefix
-     */
-    String DEFAULT_PREFIX = "wf";
-    
-    /**
-     * Returns the initial state of this workflow.
-     * @return The initial state
-     */
-    String getInitialState();
-
-    /**
-     * Returns the transitions that leave a state.
-     * This method is used, e.g., to disable menu items.
-     * @param state A state.
-     * @return The transitions that leave the state.
-     * @throws WorkflowException if the state is not contained.
-     */
-    Transition[] getLeavingTransitions(String state) throws WorkflowException;
-    
-    /**
-     * Returns the variable names.
-     * @return A string array.
-     */
-    String[] getVariableNames();
-    
-    /**
-     * @return The name of this workflow.
-     */
-    String getName();
-    
-    /**
-     * @param variableName The variable name.
-     * @return The initial value of the variable.
-     * @throws WorkflowException if the variable does not exist.
-     */
-    boolean getInitialValue(String variableName) throws WorkflowException;
-    
-    /**
-     * @return The events.
-     */
-    String[] getEvents();
-
-    /**
-     * @return The states.
-     */
-    String[] getStates();
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java b/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java
deleted file mode 100644
index 7d14807..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/WorkflowEngine.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow;
-
-/**
- * Workflow engine.
- * 
- * @version $Id$
- */
-public interface WorkflowEngine {
-
-    /**
-     * Checks if an event can be invoked.
-     * @param workflowable The workflowable.
-     * @param workflow The workflow schema.
-     * @param event The event.
-     * @return A boolean value.
-     * @throws WorkflowException if an error occurs.
-     */
-    boolean canInvoke(Workflowable workflowable, Workflow workflow, String event)
-            throws WorkflowException;
-
-    /**
-     * Invokes an event.
-     * @param workflowable The workflowable.
-     * @param workflow The workflow.
-     * @param event The event.
-     * @throws WorkflowException if an error occurs.
-     */
-    void invoke(Workflowable workflowable, Workflow workflow, String event)
-            throws WorkflowException;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/workflow/WorkflowException.java b/trunk/src/java/org/apache/lenya/workflow/WorkflowException.java
deleted file mode 100644
index a3c8aea..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/WorkflowException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow;
-
-
-/**
- * Workflow exception.
- */
-public class WorkflowException extends Exception {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Constructor
-     */
-    public WorkflowException() {
-        super();
-    }
-
-    /**
-     * Create a WorkflowException.
-     * @param message The message.
-     */
-    public WorkflowException(String message) {
-        super(message);
-    }
-
-    /**
-     * Create a WorkflowException.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public WorkflowException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Create a WorkflowException.
-     * @param cause The cause.
-     */
-    public WorkflowException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java b/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java
deleted file mode 100644
index 13c32b6..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/WorkflowManager.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow;
-
-/**
- * Manager for workflow issues. This is the main entry point for
- * workflow-related tasks. You can safely invoke all methods for non-workflow
- * documents.
- * 
- * @version $Id: WorkflowManager.java 179751 2005-06-03 09:13:35Z andreas $
- */
-public interface WorkflowManager {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = WorkflowManager.class.getName();
-
-    /**
-     * Invokes a workflow event on a document. This is the same as
-     * <code>invoke(Document, String, true)</code>.
-     * @param workflowable The workflowable.
-     * @param event The name of the event.
-     * @throws WorkflowException if the event could not be invoked in the
-     *             current situation.
-     */
-    void invoke(Workflowable workflowable, String event) throws WorkflowException;
-
-    /**
-     * Invokes a workflow event on a document.
-     * @param workflowable The document.
-     * @param event The name of the event.
-     * @param force If this is set to <code>true</code>, the execution is
-     *            forced, which means an exception is thrown if the workflowable in
-     *            the set does not support the event. If set to
-     *            <code>false</code>, non-supporting documents are ignored.
-     * @throws WorkflowException if the event could not be invoked in the
-     *             current situation.
-     */
-    void invoke(Workflowable workflowable, String event, boolean force) throws WorkflowException;
-
-    /**
-     * Checks if an event can be invoked on a document.
-     * @param workflowable The workflowable.
-     * @param event The event.
-     * @return A boolean value.
-     */
-    boolean canInvoke(Workflowable workflowable, String event);
-
-    /**
-     * Checks if a workflowable has a workflow.
-     * @param workflowable The workflowable.
-     * @return A boolean value.
-     */
-    boolean hasWorkflow(Workflowable workflowable);
-
-    /**
-     * Resolves the workflow schema of a workflowable.
-     * @param workflowable The workflowable.
-     * @return A workflow schema.
-     * @throws WorkflowException if the document has no workflow.
-     */
-    Workflow getWorkflowSchema(Workflowable workflowable) throws WorkflowException;
-
-}
\ No newline at end of file
diff --git a/trunk/src/java/org/apache/lenya/workflow/Workflowable.java b/trunk/src/java/org/apache/lenya/workflow/Workflowable.java
deleted file mode 100644
index f735fad..0000000
--- a/trunk/src/java/org/apache/lenya/workflow/Workflowable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow;
-
-/**
- * Interface for objects which can be workflowed.
- *
- * @version $Id$
- */
-public interface Workflowable {
-
-    /**
-     * @return The versions in chronological order.
-     */
-    Version[] getVersions();
-    
-    /**
-     * @return The latest version.
-     */
-    Version getLatestVersion();
-    
-    /**
-     * Adds a new version.
-     * @param workflow The workflow.
-     * @param version The version.
-     */
-    void newVersion(Workflow workflow, Version version);
-    
-    /**
-     * @return The URI to resolve the schema configuration from.
-     */
-    String getWorkflowSchemaURI();
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/DocumentHelper.java b/trunk/src/java/org/apache/lenya/xml/DocumentHelper.java
deleted file mode 100644
index 9727d58..0000000
--- a/trunk/src/java/org/apache/lenya/xml/DocumentHelper.java
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.xml;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.apache.xml.resolver.tools.CatalogResolver;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-/**
- * Various utility methods to work with JAXP.
- * @version $Id$
- */
-public class DocumentHelper {
-    /**
-     * Creates a non-validating and namespace-aware DocumentBuilder.
-     * @return A new DocumentBuilder object.
-     * @throws ParserConfigurationException if an error occurs
-     */
-    public static DocumentBuilder createBuilder() throws ParserConfigurationException {
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        DocumentBuilder builder = factory.newDocumentBuilder();
-
-        CatalogResolver cr = new CatalogResolver();
-        builder.setEntityResolver(cr);
-        return builder;
-    }
-
-    /**
-     * Creates a document. A xmlns:prefix="namespaceUri" attribute is added to
-     * the document element.
-     * @param namespaceUri The namespace URL of the root element.
-     * @param qualifiedName The qualified name of the root element.
-     * @param documentType The type of document to be created or null. When
-     *            doctype is not null, its Node.ownerDocument attribute is set
-     *            to the document being created.
-     * @return A new Document object.
-     * @throws DOMException if an error occurs
-     * @throws ParserConfigurationException if an error occurs
-     * @see org.w3c.dom.DOMImplementation#createDocument(String, String,
-     *      DocumentType)
-     */
-    public static Document createDocument(String namespaceUri, String qualifiedName,
-            DocumentType documentType) throws DOMException, ParserConfigurationException {
-        DocumentBuilder builder = createBuilder();
-        Document document = builder.getDOMImplementation().createDocument(namespaceUri,
-                qualifiedName,
-                documentType);
-
-        // add xmlns:prefix attribute
-        String name = "xmlns";
-        int index = qualifiedName.indexOf(":");
-
-        if (index > -1) {
-            name += (":" + qualifiedName.substring(0, index));
-        }
-
-        document.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/",
-                name,
-                namespaceUri);
-
-        return document;
-    }
-
-    /**
-     * Reads a document from a file.
-     * @return A document.
-     * @param file The file to load the document from.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(File file) throws ParserConfigurationException,
-            SAXException, IOException {
-        DocumentBuilder builder = createBuilder();
-        return builder.parse(file);
-    }
-
-    /**
-     * Reads a document from a URL.
-     * @return A document.
-     * @param url The URL to load the document from.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(URL url) throws ParserConfigurationException, SAXException,
-            IOException {
-        DocumentBuilder builder = createBuilder();
-        return builder.parse(url.toString());
-    }
-
-    /**
-     * Reads a document from a URI.
-     * @return A document.
-     * @param uri The URI to load the document from.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(URI uri) throws ParserConfigurationException, SAXException,
-            IOException {
-        DocumentBuilder builder = createBuilder();
-        return builder.parse(uri.toString());
-    }
-
-    /**
-     * Reads a document from a string.
-     * @return A document.
-     * @param string The string to load the document from.
-     * @param encoding The encoding which is used by the string.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(String string, String encoding) throws ParserConfigurationException,
-            SAXException, IOException {
-        DocumentBuilder builder = createBuilder();
-        byte bytes[] = string.getBytes(encoding);
-        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
-        return builder.parse(stream);
-    }
-
-    /**
-     * Reads a document from an input stream.
-     * @return A document.
-     * @param stream The input stream to load the document from.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(InputStream stream) throws ParserConfigurationException,
-            SAXException, IOException {
-        DocumentBuilder builder = createBuilder();
-        return builder.parse(stream);
-    }
-
-    /**
-     * Writes a document to a file. A new file is created if it does not exist.
-     * @param document The document to save.
-     * @param file The file to save the document to.
-     * @throws IOException if an error occurs
-     * @throws TransformerConfigurationException if an error occurs
-     * @throws TransformerException if an error occurs
-     */
-    public static void writeDocument(Document document, File file)
-            throws TransformerConfigurationException, TransformerException, IOException {
-        // sanity checks
-        if (document == null)
-            throw new IllegalArgumentException("illegal usage, parameter document may not be null");
-        if (file == null)
-            throw new IllegalArgumentException("illegal usage, parameter file may not be null");
-
-        file.getParentFile().mkdirs();
-        file.createNewFile();
-
-        DOMSource source = new DOMSource(document);
-        StreamResult result = new StreamResult(file);
-        getTransformer(document.getDoctype()).transform(source, result);
-    }
-
-    /**
-     * Writes a document to a writer.
-     * @param document The document to write.
-     * @param writer The writer to write the document to.
-     * @throws TransformerConfigurationException if an error occurs
-     * @throws TransformerException if an error occurs
-     */
-    public static void writeDocument(Document document, Writer writer)
-            throws TransformerConfigurationException, TransformerException {
-
-        // sanity checks
-        if (document == null)
-            throw new IllegalArgumentException("illegal usage of DocumentHelper::writeDocument(), parameter document may not be null");
-
-        DOMSource source = new DOMSource(document);
-        StreamResult result = new StreamResult(writer);
-        getTransformer(document.getDoctype()).transform(source, result);
-    }
-
-    /**
-     * Writes a document to an output stream.
-     * @param document The document to write.
-     * @param outputStream The stream to write the document to.
-     * @throws TransformerConfigurationException if an error occurs
-     * @throws TransformerException if an error occurs
-     */
-    public static void writeDocument(Document document, OutputStream outputStream)
-            throws TransformerConfigurationException, TransformerException {
-
-        // sanity checks
-        if (document == null)
-            throw new IllegalArgumentException("illegal usage of DocumentHelper::writeDocument(), parameter document may not be null");
-
-        DOMSource source = new DOMSource(document);
-        StreamResult result = new StreamResult(outputStream);
-        try {
-            getTransformer(document.getDoctype()).transform(source, result);
-        }
-        finally {
-            try {
-                if (outputStream != null) {
-                    outputStream.close();
-                }
-            }
-            catch (Exception ignore) {
-                
-            }
-        }
-    }
-
-    /**
-     * Get the transformer.
-     * @param documentType the document type
-     * @return a transformer
-     * @throws TransformerConfigurationException if an error occurs
-     */
-    protected static Transformer getTransformer(DocumentType documentType)
-            throws TransformerConfigurationException {
-        TransformerFactory factory = TransformerFactory.newInstance();
-        Transformer transformer = factory.newTransformer();
-        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-
-        if (documentType != null) {
-            if (documentType.getPublicId() != null)
-                transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, documentType.getPublicId());
-            if (documentType.getSystemId() != null)
-                transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, documentType.getSystemId());
-        }
-
-        return transformer;
-    }
-
-    /**
-     * Creates a document type.
-     * @param qualifiedName The qualified name of the document type.
-     * @param publicId The public identifier.
-     * @param systemId The system identifier.
-     * @return the document type
-     * @throws ParserConfigurationException if an error occurs
-     * @see org.w3c.dom.DOMImplementation#createDocumentType(java.lang.String,
-     *      java.lang.String, java.lang.String)
-     */
-    public DocumentType createDocumentType(String qualifiedName, String publicId, String systemId)
-            throws ParserConfigurationException {
-        DocumentBuilder builder = createBuilder();
-
-        return builder.getDOMImplementation().createDocumentType(qualifiedName, publicId, systemId);
-    }
-
-    /**
-     * Returns the first child element of an element that belong to a certain
-     * namespace or <code>null</code> if none exists.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @return The first child element or <code>null</code> if none exists.
-     */
-    public static Element getFirstChild(Element element, String namespaceUri) {
-        return getFirstChild(element, namespaceUri, "*");
-    }
-
-    /**
-     * Returns the first child element of an element that belongs to a certain
-     * namespace and has a certain local name or <code>null</code> if none
-     * exists.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @param localName The local name of the children.
-     * @return The child element or <code>null</code> if none exists.
-     */
-    public static Element getFirstChild(Element element, String namespaceUri, String localName) {
-        Element[] children = getChildren(element, namespaceUri, localName);
-
-        if (children.length > 0) {
-            return children[0];
-        }
-        return null;
-    }
-
-    /**
-     * Returns all child elements of an element, regardless of the namespace.
-     * @param element The parent element.
-     * @return The child elements.
-     */
-    public static Element[] getChildren(Element element) {
-        List childElements = new ArrayList();
-        NodeList children = element.getElementsByTagName("*");
-
-        for (int i = 0; i < children.getLength(); i++) {
-            if (children.item(i).getParentNode() == element) {
-                childElements.add(children.item(i));
-            }
-        }
-
-        return (Element[]) childElements.toArray(new Element[childElements.size()]);
-    }
-
-    /**
-     * Returns all child elements of an element that belong to a certain
-     * namespace.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @return The child elements.
-     */
-    public static Element[] getChildren(Element element, String namespaceUri) {
-        return getChildren(element, namespaceUri, "*");
-    }
-
-    /**
-     * Returns all child elements of an element that belong to a certain
-     * namespace and have a certain local name.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @param localName The local name of the children.
-     * @return The child elements.
-     */
-    public static Element[] getChildren(Element element, String namespaceUri, String localName) {
-        List childElements = new ArrayList();
-        NodeList children = element.getElementsByTagNameNS(namespaceUri, localName);
-
-        for (int i = 0; i < children.getLength(); i++) {
-            if (children.item(i).getParentNode() == element) {
-                childElements.add(children.item(i));
-            }
-        }
-
-        return (Element[]) childElements.toArray(new Element[childElements.size()]);
-    }
-
-    /**
-     * Returns the text inside an element. Only the child text nodes of this
-     * element are collected.
-     * @param element The element.
-     * @return The text inside the element.
-     */
-    public static String getSimpleElementText(Element element) {
-        StringBuffer buffer = new StringBuffer();
-        NodeList children = element.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-
-            if (child instanceof Text) {
-                buffer.append(child.getNodeValue());
-            }
-        }
-
-        return buffer.toString();
-    }
-
-    /**
-     * Replaces all child nodes of an element by a single text node.
-     * @param element The element.
-     * @param text The text to insert.
-     */
-    public static void setSimpleElementText(Element element, String text) {
-        NodeList children = element.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-            element.removeChild(child);
-        }
-
-        Node textNode = element.getOwnerDocument().createTextNode(text);
-        element.appendChild(textNode);
-    }
-
-    /**
-     * Returns all following sibling elements of an element that belong to a
-     * certain namespace.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @return The following sibling elements.
-     */
-    public static Element[] getNextSiblings(Element element, String namespaceUri) {
-        return getNextSiblings(element, namespaceUri, "*");
-    }
-
-    /**
-     * Returns all following sibling elements of an element that belong to a
-     * certain namespace. and have a certain local name.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @param localName The local name of the children.
-     * @return The following sibling elements.
-     */
-    public static Element[] getNextSiblings(Element element, String namespaceUri, String localName) {
-        List childElements = new ArrayList();
-        Element parent = (Element) element.getParentNode();
-        Element[] children = getChildren(parent, namespaceUri, localName);
-
-        int l = children.length;
-        for (int i = 0; i < children.length; i++) {
-            if (children[i] == element) {
-                l = i;
-            }
-            if (i > l) {
-                childElements.add(children[i]);
-            }
-        }
-
-        return (Element[]) childElements.toArray(new Element[childElements.size()]);
-    }
-
-    /**
-     * Returns all preceding sibling elements of an element that belong to a
-     * certain namespace.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @return The preceding sibling elements.
-     */
-    public static Element[] getPrecedingSiblings(Element element, String namespaceUri) {
-        return getPrecedingSiblings(element, namespaceUri, "*");
-    }
-
-    /**
-     * Returns all preceding sibling elements of an element that belong to a
-     * certain namespace. and have a certain local name.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @param localName The local name of the children.
-     * @return The preceding sibling elements.
-     */
-    public static Element[] getPrecedingSiblings(Element element, String namespaceUri,
-            String localName) {
-        List childElements = new ArrayList();
-        Element parent = (Element) element.getParentNode();
-        Element[] children = getChildren(parent, namespaceUri, localName);
-
-        int i = 0;
-        while (children[i] != element && i < children.length) {
-            childElements.add(children[i]);
-            i++;
-        }
-
-        return (Element[]) childElements.toArray(new Element[childElements.size()]);
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/NamespaceHelper.java b/trunk/src/java/org/apache/lenya/xml/NamespaceHelper.java
deleted file mode 100644
index 18ef05b..0000000
--- a/trunk/src/java/org/apache/lenya/xml/NamespaceHelper.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.xml;
-
-import java.io.OutputStream;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.lenya.util.Assert;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Text;
-
-/**
- * A NamespaceHelper object simplifies the creation of elements in a certain
- * namespace. All elements are owned by a document that is passed to the
- * {@link #NamespaceHelper(String, String, Document)} constructor or created
- * using the {@link #NamespaceHelper(String, String, String)} constructor.
- */
-public class NamespaceHelper {
-    private String namespaceUri;
-    private String prefix;
-    private Document document;
-
-    /**
-     * Creates a new instance of NamespaceHelper using an existing document. The
-     * document is not affected. If the prefix is <code>null</code>, the default namespace
-     * is used.
-     * @param _document The document.
-     * @param _namespaceUri The namespace URI.
-     * @param _prefix The namespace prefix.
-     */
-    public NamespaceHelper(String _namespaceUri, String _prefix, Document _document) {
-
-        Assert.notNull("namespace URI", _namespaceUri);
-        Assert.notNull("DOM", _document);
-
-        this.namespaceUri = _namespaceUri;
-        this.prefix = _prefix;
-        this.document = _document;
-    }
-
-    /**
-     * <p>
-     * Creates a new instance of NamespaceHelper. A new document is created
-     * using a document element in the given namespace with the given prefix. If
-     * the prefix is null, the default namespace is used.
-     * </p>
-     * <p>
-     * NamespaceHelper("http://www.w3.org/2000/svg", "svg", "svg"):<br/>
-     * &lt;?xml version="1.0"&gt;<br/> &lt;svg:svg
-     * xmlns:svg="http://www.w3.org/2000/svg"&gt;<br/> &lt;/svg:svg&gt;
-     * </p>
-     * @param localName The local name of the document element.
-     * @param _namespaceUri The namespace URI.
-     * @param _prefix The namespace prefix.
-     * @throws ParserConfigurationException if an error occured
-     */
-    public NamespaceHelper(String _namespaceUri, String _prefix, String localName)
-            throws ParserConfigurationException {
-        this(_namespaceUri, _prefix, DocumentHelper.createDocument(_namespaceUri, getQualifiedName(
-                _prefix, localName), null));
-    }
-
-    /**
-     * Returns the document that is used to create elements.
-     * @return A document object.
-     */
-    public Document getDocument() {
-        return this.document;
-    }
-
-    /**
-     * Returns the namespace URI of this NamespaceHelper.
-     * @return The namespace URI.
-     */
-    public String getNamespaceURI() {
-        return this.namespaceUri;
-    }
-
-    /**
-     * Returns the namespace prefix that is used to create elements.
-     * @return The namespace prefix.
-     */
-    public String getPrefix() {
-        return this.prefix;
-    }
-
-    /**
-     * Returns the qualified name for a local name using the prefix of this
-     * NamespaceHelper.
-     * @param prefix The namespace prefix.
-     * @param localName The local name.
-     * @return The qualified name, i.e. prefix:localName.
-     */
-    public static String getQualifiedName(String prefix, String localName) {
-        if (prefix == null || prefix.equals("")) {
-            return localName;
-        }
-        return prefix + ":" + localName;
-    }
-
-    /**
-     * <p>
-     * Creates an element within the namespace of this NamespaceHelper object
-     * with a given local name containing a text node.<br/>
-     * </p>
-     * <p>
-     * <code>createElement("text")</code>: <code>&lt;prefix:text/&gt;<code>.
-     * </p>
-     * @param localName The local name of the element.
-     * @return A new element.
-     */
-    public Element createElement(String localName) {
-        return getDocument().createElementNS(getNamespaceURI(),
-                getQualifiedName(getPrefix(), localName));
-    }
-
-    /**
-     * <p>
-     * Creates an element within the namespace of this NamespaceHelper object
-     * with a given local name containing a text node.
-     * </p>
-     * <p>
-     * <code>createElement("text", "Hello World!")</code>:
-     * <code>&lt;prefix:text&gt;Hello World!&lt;/prefix:text&gt;</code>.
-     * </p>
-     * @param localName The local name of the element.
-     * @param text The text for the text node inside the element.
-     * @return A new element containing a text node.
-     */
-    public Element createElement(String localName, String text) {
-        Element element = createElement(localName);
-        Text textNode = getDocument().createTextNode(text);
-        element.appendChild(textNode);
-
-        return element;
-    }
-
-    /**
-     * Returns all children of an element in the namespace of this
-     * NamespaceHelper.
-     * @param element The parent element.
-     * @return the children.
-     */
-    public Element[] getChildren(Element element) {
-        return DocumentHelper.getChildren(element, getNamespaceURI());
-    }
-
-    /**
-     * Returns all children of an element with a local name in the namespace of
-     * this NamespaceHelper.
-     * @param element The parent element.
-     * @param localName The local name of the children to return.
-     * @return the children.
-     */
-    public Element[] getChildren(Element element, String localName) {
-        return DocumentHelper.getChildren(element, getNamespaceURI(), localName);
-    }
-
-    /**
-     * Returns the first childr of an element with a local name in the namespace
-     * of this NamespaceHelper or <code>null</code> if none exists.
-     * @param element The parent element.
-     * @param localName The local name of the children to return.
-     * @return the first child.
-     */
-    public Element getFirstChild(Element element, String localName) {
-        return DocumentHelper.getFirstChild(element, getNamespaceURI(), localName);
-    }
-
-    /**
-     * Returns the next siblings of an element with a local name in the
-     * namespace of this NamespaceHelper or <code>null</code> if none exists.
-     * @param element The parent element.
-     * @param localName The local name of the children to return.
-     * @return the next siblings.
-     */
-    public Element[] getNextSiblings(Element element, String localName) {
-        return DocumentHelper.getNextSiblings(element, getNamespaceURI(), localName);
-    }
-
-    /**
-     * Returns the preceding siblings of an element with a local name in the
-     * namespace of this NamespaceHelper or <code>null</code> if none exists.
-     * @param element The parent element.
-     * @param localName The local name of the children to return.
-     * @return the preceding siblings.
-     */
-    public Element[] getPrecedingSiblings(Element element, String localName) {
-        return DocumentHelper.getPrecedingSiblings(element, getNamespaceURI(), localName);
-    }
-    
-    /**
-     * Saves the XML.
-     * @param stream The stream to write to.
-     */
-    public void save(OutputStream stream) {
-        try {
-            DocumentHelper.writeDocument(getDocument(), stream);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/Schema.java b/trunk/src/java/org/apache/lenya/xml/Schema.java
deleted file mode 100644
index 386ca01..0000000
--- a/trunk/src/java/org/apache/lenya/xml/Schema.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.xml;
-
-/**
- * Validation schema.
- */
-public class Schema {
-
-    /**
-     * Ctor.
-     * @param language The language, as defined by
-     *            org.apache.cocoon.components.validation.Validator.
-     * @param schemaUri The schema URI.
-     * @see org.apache.cocoon.components.validation.Validator
-     */
-    public Schema(String language, String schemaUri) {
-        this.language = language;
-        this.uri = schemaUri;
-    }
-
-    private String language;
-
-    private String uri;
-
-    /**
-     * @return The language.
-     * @see org.apache.cocoon.components.validation.Validator
-     */
-    public String getLanguage() {
-        return this.language;
-    }
-
-    /**
-     * @return The URI to read the schema from.
-     */
-    public String getURI() {
-        return this.uri;
-    }
-    
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/ValidationUtil.java b/trunk/src/java/org/apache/lenya/xml/ValidationUtil.java
deleted file mode 100644
index 0cea02e..0000000
--- a/trunk/src/java/org/apache/lenya/xml/ValidationUtil.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.xml;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.validation.Validator;
-import org.apache.cocoon.xml.dom.DOMStreamer;
-import org.apache.lenya.cms.publication.Document;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-
-/**
- * Validation utility.
- */
-public class ValidationUtil {
-
-    /**
-     * @param manager The service manager.
-     * @param document The document to validate.
-     * @param handler The SAX error handler.
-     * @throws Exception if an error occurs.
-     */
-    public static void validate(ServiceManager manager, Document document, ErrorHandler handler)
-            throws Exception {
-
-        org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(document.getInputStream());
-        validate(manager, xmlDoc, document.getResourceType().getSchema(), handler);
-
-    }
-
-    /**
-     * @param manager The service manager.
-     * @param xmlDoc The XML document.
-     * @param schema The schema to use.
-     * @param handler The SAX error handler.
-     * @throws Exception if an error occurs.
-     */
-    public static void validate(ServiceManager manager, org.w3c.dom.Document xmlDoc, Schema schema,
-            ErrorHandler handler) throws Exception {
-
-        Validator validator = null;
-        try {
-            validator = (Validator) manager.lookup(Validator.ROLE);
-            ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(),
-                    handler);
-
-            DOMStreamer streamer = new DOMStreamer(validatorHandler);
-            streamer.stream(xmlDoc);
-
-        } finally {
-            if (validator != null) {
-                manager.release(validator);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/XLink.java b/trunk/src/java/org/apache/lenya/xml/XLink.java
deleted file mode 100644
index 7125703..0000000
--- a/trunk/src/java/org/apache/lenya/xml/XLink.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.xml;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-
-/**
- * Helper class for XLinks
- */
-public class XLink {
-
-    /**
-     * <code>type</code> The Xlink type
-     */
-    public String type = null;
-    /**
-     * <code>href</code> The XLink href
-     */
-    public String href = null;
-    /**
-     * <code>show</code> The value of the show attribute
-     */
-    public String show = null;
-    /**
-     * <code>name</code> The Xlink name
-     */
-    public String name = null;
-    /**
-     * <code>element</code> The Xlink element
-     */
-    public Element element = null;
-    /**
-     * <code>XLINK_NAMESPACE</code> The XLink namespace
-     */
-    public static final String XLINK_NAMESPACE = "http://www.w3.org/1999/xlink";
-    /**
-     * <code>ATTRIBUTE_HREF</code> The href attribte
-     */
-    public static final String ATTRIBUTE_HREF = "href";
-    /**
-     * <code>ATTRIBUTE_SHOW</code> The show attribute
-     */
-    public static final String ATTRIBUTE_SHOW = "show";
-    /**
-     * <code>ATTRIBUTE_TYPE</code> The type attribute
-     */
-    public static final String ATTRIBUTE_TYPE = "type";
-
-    /**
-     * Constructor
-     */
-    public XLink() {
-        this.type = "simple";
-        this.show = "undefined";
-    }
-
-    /**
-     * Constructor
-     * @param _element The element
-     */
-    public XLink(Element _element) {
-        this();
-        this.element = _element;
-
-        this.name = _element.getNodeName();
-
-        Attr hrefAttribute = _element.getAttributeNodeNS(XLINK_NAMESPACE, ATTRIBUTE_HREF);
-        if (hrefAttribute != null) {
-            this.href = hrefAttribute.getNodeValue();
-        }
-        Attr typeAttribute = _element.getAttributeNodeNS(XLINK_NAMESPACE, ATTRIBUTE_TYPE);
-        if (typeAttribute != null) {
-            this.type = typeAttribute.getNodeValue();
-        }
-        Attr showAttribute = _element.getAttributeNodeNS(XLINK_NAMESPACE, ATTRIBUTE_SHOW);
-        if (showAttribute != null) {
-            this.show = showAttribute.getNodeValue();
-        }
-
-    }
-
-    /**
-     * Returns a printout of the XLink values
-     * @return The printout
-     */
-    public String toString() {
-        return "XLink: type=\""
-            + this.type
-            + "\", href=\""
-            + this.href
-            + "\", show=\""
-            + this.show
-            + "\", name=\""
-            + this.name
-            + "\"";
-    }
-}
diff --git a/trunk/src/java/org/apache/lenya/xml/XPath.java b/trunk/src/java/org/apache/lenya/xml/XPath.java
deleted file mode 100644
index f8ab79e..0000000
--- a/trunk/src/java/org/apache/lenya/xml/XPath.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.xml;
-
-import java.util.StringTokenizer;
-
-import org.w3c.dom.Node;
-
-/**
- * Helper class for XPath operations
- */
-public class XPath {
-    String xpath = null;
-    String[] parts = null;
-
-    /**
-     * Constructor
-     * @param _xpath The Xpath
-     */
-    public XPath(String _xpath) {
-        this.xpath = _xpath;
-
-        StringTokenizer st = new StringTokenizer(_xpath, "/");
-        int length = st.countTokens();
-        this.parts = new String[length];
-
-        for (int i = 0; i < length; i++) {
-            this.parts[i] = st.nextToken();
-        }
-    }
-
-    /**
-     * Get the parent path
-     * @return The parent path
-     */
-    public XPath getParent() {
-        StringBuffer buf = new StringBuffer();
-
-        for (int i = 0; i < (this.parts.length - 1); i++) {
-            buf.append("/" + this.parts[i]);
-        }
-
-        return new XPath(buf.toString());
-    }
-
-    /**
-     * Get the type of a node. Only supports attribute and element nodes
-     * @return The node type
-     */
-    public short getType() {
-        if (this.parts[this.parts.length - 1].indexOf("@") == 0) {
-            return Node.ATTRIBUTE_NODE;
-        }
-        return Node.ELEMENT_NODE;
-    }
-
-    /**
-     * Return a string representation of the XPath
-     * @return The Xpath
-     */
-    public String toString() {
-        return this.xpath;
-    }
-
-    /**
-     * Get the name
-     * @return The name
-     */
-    public String getName() {
-        if (getType() == Node.ATTRIBUTE_NODE) {
-            return this.parts[this.parts.length - 1].substring(1);
-        }
-        return this.parts[this.parts.length - 1];
-    }
-
-    /**
-     * Return the name of the element
-     * @return the name of the element
-     */
-    public String getElementName() {
-        if (getType() == Node.ATTRIBUTE_NODE) {
-            return this.parts[this.parts.length - 2];
-        }
-        return this.parts[this.parts.length - 1];
-    }
-
-    /**
-     * Get the name without predicates
-     * @return The name without predicates
-     */
-    public String getNameWithoutPredicates() {
-        return removePredicates(getName());
-    }
-
-    /**
-     * Remove predicates (square brackets), http://www.w3.org/TR/xpath
-     * @param s The string to remove predicates from
-     * @return The string without predicates
-     */
-    public String removePredicates(String s) {
-        int index = s.indexOf("[");
-
-        if (index >= 0) {
-            return s.substring(0, index);
-        }
-
-        return s;
-    }
-}
diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/access-control-input-module.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/access-control-input-module.xconf
deleted file mode 100644
index f0babce..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/access-control-input-module.xconf
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'access-control']">

-  <component-instance logger="core.modules.input.access-control" name="access-control"

-    class="org.apache.lenya.cms.cocoon.components.modules.input.AccessControlModule"/>

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/access-controller-resolvers.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/access-controller-resolvers.xconf
deleted file mode 100644
index 02fe919..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/access-controller-resolvers.xconf
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/access-controller-resolvers">

-  <access-controller-resolvers>

-    <component-instance name="publication"

-      class="org.apache.lenya.cms.ac.PublicationAccessControllerResolver"

-      logger="lenya.ac.accesscontrollerresolver.publication">

-    </component-instance>

-    <component-instance name="global"

-      class="org.apache.lenya.ac.impl.ConfigurableAccessControllerResolver"

-      logger="lenya.ac.accesscontrollerresolver.global">

-      <access-controller type="global"/>

-    </component-instance>

-    <component-instance name="composable"

-      class="org.apache.lenya.ac.impl.ComposableAccessControllerResolver"

-      logger="lenya.ac.accesscontrollerresolver.composable">

-      <resolver type="publication"/>

-      <!--      <resolver type="global"/>-->

-    </component-instance>

-  </access-controller-resolvers>

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf
deleted file mode 100644
index 42f4e12..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.ac.AccreditableManagerFactory']">
-  <component logger="lenya.ac.accreditablemanager"
-    role="org.apache.lenya.ac.AccreditableManagerFactory"
-    class="org.apache.lenya.ac.file.FileAccreditableManagerFactory"/>

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/authenticator.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/authenticator.xconf
deleted file mode 100644
index a2bf4c2..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/authenticator.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.ac.Authenticator']">

-  <component logger="lenya.ac.authenticator"

-    class="org.apache.lenya.ac.impl.UserAuthenticator"

-    role="org.apache.lenya.ac.Authenticator"/>

-    

-  <!--

-    Enable this authenticator and disable the UserAuthenticator for anonymous authentication (useful for client certs, for instance)

-    

-    <component logger="lenya.ac.authenticator"

-      class="org.apache.lenya.ac.impl.AnonymousAuthenticator"

-      role="org.apache.lenya.ac.Authenticator"/>      

-  -->

-  

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/authorizers.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/authorizers.xconf
deleted file mode 100644
index dc43771..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/authorizers.xconf
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/authorizers">

-  <authorizers/>

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/bypassable-access-controller.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/bypassable-access-controller.xconf
deleted file mode 100644
index 8faa651..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/bypassable-access-controller.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.ac.AccessController/bypassable']">

-  <component logger="lenya.ac.accesscontroller.bypassable"

-    class="org.apache.lenya.ac.impl.BypassableAccessController"

-    role="org.apache.lenya.ac.AccessController/bypassable">
-    
-    <public-extensions>css,jpg,gif,png,rng,xsl</public-extensions>
-    
-    <!-- bad performance, use only for complex patterns
-      <public>.*[.]css|.*[.]jpg|.*[.]gif|.*[.]png|.*[.]rng|.*[.]xsl</public>
-    -->
-    
-  </component>

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/cocoon-xconf/policy-managers.xconf b/trunk/src/modules-core/ac/config/cocoon-xconf/policy-managers.xconf
deleted file mode 100644
index 6d53b02..0000000
--- a/trunk/src/modules-core/ac/config/cocoon-xconf/policy-managers.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon" unless="/cocoon/policy-managers">

-  <policy-managers>

-    <component-instance name="document"

-      class="org.apache.lenya.cms.ac.DocumentPolicyManagerWrapper"

-      logger="lenya.ac.policymanager.document"/>

-    <component-instance name="file"

-      class="org.apache.lenya.ac.file.FilePolicyManager"

-      logger="lenya.ac.policymanager.file"/>

-    <component-instance name="sitemap"

-      class="org.apache.lenya.cms.ac.SitemapPolicyManager"

-      logger="lenya.ac.policymanager.sitemap"/>

-  </policy-managers>

-  

-</xconf>

diff --git a/trunk/src/modules-core/ac/config/module.xml b/trunk/src/modules-core/ac/config/module.xml
deleted file mode 100644
index d69c1e9..0000000
--- a/trunk/src/modules-core/ac/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.ac</id>
-  <export package="org.apache.lenya.ac.file"/>
-  <depends module="org.apache.lenya.modules.cache"/>
-  <depends module="org.apache.lenya.modules.linking"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Access control</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Access control</description>
-</module>
diff --git a/trunk/src/modules-core/ac/config/sitemap/actions.xmap b/trunk/src/modules-core/ac/config/sitemap/actions.xmap
deleted file mode 100644
index 1d58729..0000000
--- a/trunk/src/modules-core/ac/config/sitemap/actions.xmap
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: actions.xmap 280060 2005-09-11 01:56:31Z chestnut $  -->
-
-<xmap xpath="/sitemap/components/actions" unless="/sitemap/components/actions/action[@name = 'authenticator']"
-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  <map:action name="authenticator" src="org.apache.lenya.cms.cocoon.acting.DelegatingAuthenticatorAction" logger="lenya.sitemap.action.authenticator"/>
-  <map:action name="authorizer" src="org.apache.lenya.cms.cocoon.acting.DelegatingAuthorizerAction" logger="lenya.sitemap.action.authorizer"/>
-  <map:action name="ssl-redirect" src="org.apache.lenya.cms.cocoon.acting.SslRedirectAction" logger="lenya.sitemap.action.ssl-redirect"/>
-</xmap>
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/cifs/CIFSUser.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/cifs/CIFSUser.java
deleted file mode 100644
index 508f899..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/cifs/CIFSUser.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cifs;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.file.FileUser;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.Logger;
-
-import jcifs.smb.NtlmPasswordAuthentication;
-import jcifs.smb.SmbAuthException;
-import jcifs.smb.SmbException;
-import jcifs.smb.SmbSession;
-
-import jcifs.UniAddress;
-import java.net.UnknownHostException;
-
-/**
- * CIFS user.
- * @version $Id$
- */
-public class CIFSUser extends FileUser {
-
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-
-    private static Properties defaultProperties = null;
-
-    // The name for the cifs.properties domain controller lookup
-    private static final String DOMAIN_CONTROLLER = "domain-controller";
-
-    // The name for the cifs.properties domain name lookup
-    private static final String DOMAIN = "domain";
-
-    /**
-     * Creates a new CIFSUser object.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public CIFSUser(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-
-    }
-
-    /**
-     * Create a CIFSUser
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id The user ID.
-     * @param fullName The user's name.
-     * @param email The e-mail address.
-     * @param password The password.
-     */
-    public CIFSUser(ItemManager itemManager, Logger logger, String id, String fullName,
-            String email, String password) {
-        super(itemManager, logger, id, fullName, email, password);
-
-    }
-
-    /**
-     * Initializes this user.
-     * @throws ConfigurationException when something went wrong.
-     */
-    protected void initialize() throws ConfigurationException {
-        try {
-            readProperties(super.getConfigurationDirectory());
-        } catch (final IOException ioe) {
-            throw new ConfigurationException("Reading cifs.properties file in ["
-                    + super.getConfigurationDirectory() + "] failed", ioe);
-        }
-    }
-
-    /**
-     * Create a new CIFSUser from a configuration
-     * @param config the <code>Configuration</code> specifying the user
-     *        details
-     * @throws ConfigurationException if the user could not be instantiated
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        initialize();
-    }
-
-    /**
-     * Authenticate a user. This is done by NTDomain Authentication using jcifs
-     * @param password to authenticate with
-     * @return true if the given password matches the password for this user
-     */
-    public boolean authenticate(String password) {
-
-        System.setProperty("jcifs.smb.client.disablePlainTextPasswords", "true");
-        try {
-            UniAddress mydomaincontroller = UniAddress.getByName(getDomainController());
-            NtlmPasswordAuthentication mycreds = new NtlmPasswordAuthentication(getDomainName(),
-                    super.getId(), password);
-            SmbSession.logon(mydomaincontroller, mycreds);
-            // SUCCESS
-            return true;
-        } catch (final SmbAuthException sae) {
-            // AUTHENTICATION FAILURE
-            if (getLogger().isInfoEnabled()) {
-                getLogger().info(
-                        "Authentication against [" + getDomainController() + "]" + " failed for "
-                                + getDomainName() + "/" + super.getId());
-            }
-            return false;
-        } catch (final SmbException se) {
-            // NETWORK PROBLEMS?
-            return false;
-        } catch (final UnknownHostException unho) {
-            return false;
-        }
-
-    }
-
-    /**
-     * Read the properties
-     * @param configurationDirectory The configuration directory.
-     * @throws IOException if the properties cannot be found.
-     */
-    private void readProperties(File configurationDirectory) throws IOException {
-        // create and load default properties
-        File propertiesFile = new File(configurationDirectory, "cifs.properties");
-
-        if (defaultProperties == null) {
-            defaultProperties = new Properties();
-
-            FileInputStream in = null;
-            try {
-                in = new FileInputStream(propertiesFile);
-                defaultProperties.load(in);
-            } finally {
-                if (in != null) {
-                    in.close();
-                }
-            }
-
-        }
-    }
-
-    /**
-     * Get the domain controller we want to authenticate against
-     * @return the name of the domain controller
-     */
-    private String getDomainController() {
-        return (String) defaultProperties.get(DOMAIN_CONTROLLER);
-    }
-
-    /**
-     * Get the domain name
-     * @return the domain name
-     */
-    private String getDomainName() {
-        return (String) defaultProperties.get(DOMAIN);
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
deleted file mode 100644
index d1c3cf5..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.util.NetUtils;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.IPRangeManager;
-import org.apache.lenya.ac.RoleManager;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.ac.UserType;
-import org.apache.lenya.ac.impl.AbstractAccreditableManager;
-import org.apache.lenya.util.Assert;
-
-/**
- * File-based accreditable manager.
- */
-public class FileAccreditableManager extends AbstractAccreditableManager {
-
-    private ServiceManager manager;
-
-    /**
-     * Creates a new FileAccessController based on a configuration directory.
-     * @param manager The service manager.
-     * @param logger The logger.
-     * @param configurationUri The configuration directory URI.
-     * @param _userTypes The supported user types.
-     */
-    public FileAccreditableManager(ServiceManager manager, Logger logger,
-            String configurationUri, UserType[] _userTypes) {
-        super(logger);
-
-        Assert.notNull("service manager", manager);
-        this.manager = manager;
-
-        Assert.notNull("configuration directory", configurationUri);
-        this.configurationDirectoryUri = configurationUri;
-
-        this.userTypes = new HashSet(Arrays.asList(_userTypes));
-    }
-
-    private File configurationDirectory;
-    private Set userTypes;
-
-    /**
-     * Returns the supported user types.
-     * @return An array of user types.
-     * @throws AccessControlException if an error occurs.
-     */
-    public UserType[] getUserTypes() throws AccessControlException {
-        if (this.userTypes == null)
-            throw new AccessControlException("User types not initialized");
-        return (UserType[]) this.userTypes.toArray(new UserType[this.userTypes.size()]);
-    }
-
-    /**
-     * Returns the configuration directory.
-     * @return The configuration directory.
-     * @throws AccessControlException when something went wrong.
-     */
-    public File getConfigurationDirectory() throws AccessControlException {
-
-        if (this.configurationDirectory == null) {
-
-            if (this.configurationDirectoryUri == null) {
-                throw new AccessControlException("Configuration directory not set!");
-            }
-
-            Source source = null;
-            SourceResolver resolver = null;
-            File directory;
-            try {
-
-                getLogger().debug(
-                        "Configuration directory Path: [" + this.configurationDirectoryUri + "]");
-
-                resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-                source = resolver.resolveURI(this.configurationDirectoryUri);
-
-                getLogger().debug("Configuration directory URI: " + source.getURI());
-                directory = new File(new URI(NetUtils.encodePath(source.getURI())));
-            } catch (Exception e) {
-                throw new AccessControlException(e);
-            } finally {
-                if (resolver != null) {
-                    if (source != null) {
-                        resolver.release(source);
-                    }
-                    getManager().release(resolver);
-                }
-            }
-            this.configurationDirectory = directory;
-        }
-
-        return this.configurationDirectory;
-    }
-
-    // provided for backward compatibility
-    protected static final String DEFAULT_USER_TYPE_CLASS = FileUser.class.getName();
-    protected static final String DEFAULT_USER_TYPE_KEY = "Local User";
-    protected static final String DEFAULT_USER_CREATE_USE_CASE = "userAddUser";
-
-    /**
-     * Returns the default user type.
-     * @return A user type.
-     */
-    public static UserType getDefaultUserType() {
-        return new UserType(DEFAULT_USER_TYPE_KEY, DEFAULT_USER_TYPE_CLASS,
-                DEFAULT_USER_CREATE_USE_CASE);
-    }
-
-    private String configurationDirectoryUri;
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    protected ServiceManager getManager() {
-        return this.manager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeGroupManager()
-     */
-    protected GroupManager initializeGroupManager() throws AccessControlException {
-        FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationDirectory(),
-                getLogger());
-        return _manager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeIPRangeManager()
-     */
-    protected IPRangeManager initializeIPRangeManager() throws AccessControlException {
-        FileIPRangeManager _manager = FileIPRangeManager.instance(this,
-                getConfigurationDirectory(), getLogger());
-        return _manager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeRoleManager()
-     */
-    protected RoleManager initializeRoleManager() throws AccessControlException {
-        FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationDirectory(),
-                getLogger());
-        return _manager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeUserManager()
-     */
-    protected UserManager initializeUserManager() throws AccessControlException {
-        FileUserManager _manager = FileUserManager.instance(this, getConfigurationDirectory(),
-                getUserTypes(), getLogger());
-        return _manager;
-    }
-
-    public String getConfigurationCollectionUri() {
-        try {
-            return "file://" + getConfigurationDirectory().getCanonicalPath();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public String getId() {
-        try {
-            Assert.notNull("configuration directory", this.getConfigurationDirectory());
-            return this.getConfigurationDirectory().getCanonicalPath();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        catch(AccessControlException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
deleted file mode 100644
index 0193090..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.AccreditableManagerFactory;
-import org.apache.lenya.ac.UserType;
-
-/**
- * Factory for file-based accreditable managers.
- */
-public class FileAccreditableManagerFactory extends AbstractLogEnabled implements
-        AccreditableManagerFactory, ThreadSafe, Serviceable {
-
-    private Map id2manager = new HashMap();
-
-    protected static final String U_M_CHILD_TAG = "user-manager";
-    protected static final String U_T_CHILD_TAG = "user-type";
-    protected static final String U_T_CLASS_ATTRIBUTE = "class";
-    protected static final String U_T_CREATE_ATTRIBUTE = "create-use-case";
-
-    public AccreditableManager getAccreditableManager(Configuration config)
-            throws ConfigurationException {
-
-        try {
-            String configUri = null;
-            Configuration[] paramConfigs = config.getChildren("parameter");
-            for (int i = 0; i < paramConfigs.length; i++) {
-                if (paramConfigs[i].getAttribute("name").equals("directory")) {
-                    configUri = paramConfigs[i].getAttribute("value");
-                }
-            }
-
-            if (configUri == null) {
-                throw new RuntimeException("No <parameter name=\"directory\"> element found!");
-            }
-
-            if (this.id2manager.containsKey(configUri)) {
-                return (AccreditableManager) this.id2manager.get(configUri);
-            } else {
-                Set userTypes = new HashSet();
-                Configuration umConf = config.getChild(U_M_CHILD_TAG, false);
-                if (umConf != null) {
-                    Configuration[] typeConfs = umConf.getChildren();
-                    for (int i = 0; i < typeConfs.length; i++) {
-                        userTypes.add(new UserType(typeConfs[i].getValue(), typeConfs[i]
-                                .getAttribute(U_T_CLASS_ATTRIBUTE), typeConfs[i]
-                                .getAttribute(U_T_CREATE_ATTRIBUTE)));
-                    }
-                } else {
-                    getLogger().debug(
-                            "FileAccreditableManager: using default configuration for user types");
-                    // no "user-manager" block in access control: provide
-                    // a default for backward compatibility
-                    userTypes.add(FileAccreditableManager.getDefaultUserType());
-                }
-                UserType[] types = (UserType[]) userTypes.toArray(new UserType[userTypes.size()]);
-                AccreditableManager mgr = new FileAccreditableManager(this.manager, getLogger(),
-                        configUri, types);
-                this.id2manager.put(configUri, mgr);
-                return mgr;
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
deleted file mode 100644
index eb3c94e..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroup.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.impl.AbstractGroup;
-import org.apache.lenya.ac.impl.ItemConfiguration;
-
-/**
- * File-based group implementation.
- */
-public class FileGroup extends AbstractGroup implements Item {
-
-    /**
-     * @see org.apache.lenya.ac.Group#delete()
-     */
-    public void delete() throws AccessControlException {
-        super.delete();
-        getFile().delete();
-    }
-
-    /**
-     * Creates a new FileGroup object.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public FileGroup(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Create a new instance of <code>FileGroup</code>
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id the ID of the group
-     */
-    public FileGroup(ItemManager itemManager, Logger logger, String id) {
-        super(itemManager, logger, id);
-        FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
-    }
-
-    /**
-     * Configures this file group.
-     * @param config The configuration.
-     * @throws ConfigurationException when something went wrong.
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        new ItemConfiguration().configure(this, config);
-    }
-
-    /**
-     * Returns the configuration file.
-     * @return A file object.
-     */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileGroupManager.SUFFIX);
-        return xmlFile;
-    }
-
-    /**
-     * Save this group
-     * @throws AccessControlException if the save failed
-     */
-    public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-        File xmlfile = getFile();
-
-        try {
-            serializer.serializeToFile(xmlfile, config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-    }
-
-    /**
-     * Group configuration element.
-     */
-    public static final String GROUP = "group";
-
-    /**
-     * Create a configuration containing the group details
-     * @return a <code>Configuration</code>
-     */
-    private Configuration createConfiguration() {
-        DefaultConfiguration config = new DefaultConfiguration(GROUP);
-        new ItemConfiguration().save(this, config);
-
-        return config;
-    }
-
-    private File configurationDirectory;
-
-    /**
-     * Returns the configuration directory.
-     * @return A file object.
-     */
-    protected File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    protected void setConfigurationDirectory(File _configurationDirectory) {
-        assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
-        this.configurationDirectory = _configurationDirectory;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroupManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroupManager.java
deleted file mode 100644
index 98a96cc..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileGroupManager.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.Item;
-
-/**
- * File-based group manager.
- */
-public final class FileGroupManager extends FileItemManager implements GroupManager {
-
-    private static Map instances = new HashMap();
-
-    /**
-     * Ctor.
-     * @param mgr The accreditable manager.
-     */
-    private FileGroupManager(AccreditableManager mgr) {
-        super(mgr);
-    }
-
-    /**
-     * Return the <code>GroupManager</code> for the given publication. The
-     * <code>GroupManager</code> is a singleton.
-     * @param mgr The accreditable manager.
-     * @param configurationDirectory for which the GroupManager is requested
-     * @param logger The logger.
-     * @return a <code>GroupManager</code>
-     * @throws AccessControlException if no GroupManager could be instanciated
-     */
-    public static FileGroupManager instance(AccreditableManager mgr, File configurationDirectory,
-            Logger logger) throws AccessControlException {
-        assert configurationDirectory != null;
-
-        if (!instances.containsKey(configurationDirectory)) {
-            FileGroupManager manager = new FileGroupManager(mgr);
-            manager.enableLogging(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
-        }
-
-        return (FileGroupManager) instances.get(configurationDirectory);
-    }
-
-    /**
-     * Get all groups
-     * 
-     * @return an array of groups.
-     */
-    public Group[] getGroups() {
-        Item[] items = super.getItems();
-        Group[] groups = new Group[items.length];
-        for (int i = 0; i < groups.length; i++) {
-            groups[i] = (Group) items[i];
-        }
-        return groups;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.GroupManager#add(java.lang.String)
-     */
-    public Group add(String id) throws AccessControlException {
-        Group group = new FileGroup(this, getLogger(), id);
-        super.add(group);
-        return group;
-    }
-
-    /**
-     * Remove a group from this manager
-     * 
-     * @param group the group to be removed
-     * @throws AccessControlException when the notification failed.
-     */
-    public void remove(Group group) throws AccessControlException {
-        super.remove(group);
-    }
-
-    /**
-     * Get the group with the given group name.
-     * 
-     * @param groupId the id of the requested group
-     * @return a <code>Group</code> or null if there is no group with the
-     *         given name
-     */
-    public Group getGroup(String groupId) {
-        return (Group) getItem(groupId);
-    }
-
-    protected static final String SUFFIX = ".gml";
-
-    /**
-     * @see org.apache.lenya.ac.file.FileItemManager#getSuffix()
-     */
-    protected String getSuffix() {
-        return SUFFIX;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
deleted file mode 100644
index e570d44..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRange.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
-import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.impl.AbstractIPRange;
-import org.apache.lenya.ac.impl.ItemConfiguration;
-import org.apache.lenya.net.InetAddressUtil;
-
-/**
- * IP range that is stored in a file.
- */
-public class FileIPRange extends AbstractIPRange implements Serializable {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Main method.
-     * @param args The command-line arguments.
-     * @deprecated This should be moved to a JUnit test.
-     */
-    public static void main(String[] args) {
-        if (args.length == 0) {
-            System.out
-                    .println("Usage: network, netmask, ip (e.g. 192.168.0.64 255.255.255.240 192.168.0.70)");
-            return;
-        }
-        try {
-            InetAddress networkAddress = InetAddress.getByName(args[0]);
-            InetAddress subnetMask = InetAddress.getByName(args[1]);
-            Machine machine = new Machine(args[2]);
-
-            InetAddressUtil util = new InetAddressUtil(new ConsoleLogger());
-            if (util.contains(networkAddress, subnetMask, machine.getAddress())) {
-                System.out.println("true");
-            } else {
-                System.out.println("false");
-            }
-        } catch (final UnknownHostException e) {
-            System.err.println(e);
-        } catch (final AccessControlException e) {
-            System.err.println(e);
-        }
-    }
-
-    /**
-     * Ctor.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public FileIPRange(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Ctor.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id The IP range ID.
-     */
-    public FileIPRange(ItemManager itemManager, Logger logger, String id) {
-        super(itemManager, logger, id);
-        FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractIPRange#save()
-     */
-    public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-
-        try {
-            serializer.serializeToFile(getFile(), config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-    }
-
-    /**
-     * Returns the configuration file.
-     * @return A file object.
-     */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileIPRangeManager.SUFFIX);
-        return xmlFile;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Item#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        new ItemConfiguration().configure(this, config);
-
-        String networkAddress = config.getChild(ELEMENT_NETWORK_ADDRESS).getValue();
-        String subnetMask = config.getChild(ELEMENT_SUBNET_MASK).getValue();
-
-        try {
-            setNetworkAddress(networkAddress);
-            setSubnetMask(subnetMask);
-        } catch (AccessControlException e) {
-            throw new ConfigurationException("Configuring IP range [" + getId() + "] failed: ", e);
-        }
-
-    }
-
-    protected static final String IP_RANGE = "ip-range";
-    protected static final String ELEMENT_NETWORK_ADDRESS = "network-address";
-    protected static final String ELEMENT_SUBNET_MASK = "subnet-mask";
-
-    /**
-     * Create a configuration from the current user details. Can be used for saving.
-     * @return a <code>Configuration</code>
-     */
-    protected Configuration createConfiguration() {
-        DefaultConfiguration config = new DefaultConfiguration(IP_RANGE);
-        new ItemConfiguration().save(this, config);
-
-        DefaultConfiguration networkAddressConfig = new DefaultConfiguration(
-                ELEMENT_NETWORK_ADDRESS);
-        networkAddressConfig.setValue(getNetworkAddress().getHostAddress());
-        config.addChild(networkAddressConfig);
-
-        DefaultConfiguration subnetMaskConfig = new DefaultConfiguration(ELEMENT_SUBNET_MASK);
-        subnetMaskConfig.setValue(getSubnetMask().getHostAddress());
-        config.addChild(subnetMaskConfig);
-
-        return config;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java
deleted file mode 100644
index 915d53c..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.IPRangeManager;
-import org.apache.lenya.ac.Item;
-
-/**
- * Manager for IP address ranges.
- */
-public class FileIPRangeManager extends FileItemManager implements IPRangeManager {
-
-    /**
-     * Ctor.
-     * @param mgr The accreditable manager.
-     */
-    private FileIPRangeManager(AccreditableManager mgr) {
-        super(mgr);
-    }
-
-    protected static final String SUFFIX = ".ipml";
-
-    /**
-     * @see org.apache.lenya.ac.file.FileItemManager#getSuffix()
-     */
-    protected String getSuffix() {
-        return SUFFIX;
-    }
-
-    private static Map instances = new HashMap();
-
-    /**
-     * Return an instance of FileIPRangeManager
-     * @param mgr The accreditable manager.
-     * @param configurationDirectory a directory
-     * @param logger The logger.
-     * @return an <code>IPRangeManager</code> value
-     * @exception AccessControlException if an error occurs
-     */
-    public static FileIPRangeManager instance(AccreditableManager mgr, File configurationDirectory, Logger logger)
-            throws AccessControlException {
-
-        assert configurationDirectory != null;
-        if (!configurationDirectory.isDirectory()) {
-            throw new AccessControlException("Configuration directory [" + configurationDirectory
-                    + "] does not exist!");
-        }
-
-        if (!instances.containsKey(configurationDirectory)) {
-            FileIPRangeManager manager = new FileIPRangeManager(mgr);
-            manager.enableLogging(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
-        }
-
-        return (FileIPRangeManager) instances.get(configurationDirectory);
-    }
-
-    /**
-     * Get all IP ranges.
-     * @return an array of IP ranges.
-     */
-    public IPRange[] getIPRanges() {
-        Item[] items = super.getItems();
-        IPRange[] ranges = new IPRange[items.length];
-        for (int i = 0; i < ranges.length; i++) {
-            ranges[i] = (IPRange) items[i];
-        }
-        return ranges;
-    }
-
-    public IPRange add(String id) throws AccessControlException {
-        IPRange range = new FileIPRange(this, getLogger(), id);
-        super.add(range);
-        return range;
-    }
-
-    /**
-     * Remove the given IP range
-     * @param range IP range that is to be removed
-     * @throws AccessControlException when the notification failed.
-     */
-    public void remove(IPRange range) throws AccessControlException {
-        super.remove(range);
-    }
-
-    /**
-     * Get the IPRange with the given id.
-     * @param rangeId user id of requested IP range
-     * @return the requested IP range or null if there is no IP range with the given id
-     */
-    public IPRange getIPRange(String rangeId) {
-        return (IPRange) getItem(rangeId);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
deleted file mode 100644
index e2dc1f8..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileItemManager.java
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.ItemManagerListener;
-import org.apache.lenya.ac.impl.ItemConfiguration;
-
-/**
- * Abstract superclass for classes that manage items loaded from configuration
- * files.
- */
-public abstract class FileItemManager extends AbstractLogEnabled implements ItemManager {
-
-    private Map items = new HashMap();
-    private File configurationDirectory;
-    private DirectoryChangeNotifier notifier;
-
-    private AccreditableManager accreditableManager;
-
-    /**
-     * Create a new ItemManager.
-     * @param accreditableManager The {@link AccreditableManager}.
-     */
-    protected FileItemManager(AccreditableManager accreditableManager) {
-        this.accreditableManager = accreditableManager;
-    }
-
-    /**
-     * Configures the item manager.
-     * @param _configurationDirectory where the items are fetched from
-     * @throws AccessControlException if the item manager cannot be instantiated
-     */
-    public void configure(File _configurationDirectory) throws AccessControlException {
-        assert _configurationDirectory != null;
-
-        if (!_configurationDirectory.exists() || !_configurationDirectory.isDirectory()) {
-            throw new AccessControlException("The directory ["
-                    + _configurationDirectory.getAbsolutePath() + "] does not exist!");
-        }
-
-        this.configurationDirectory = _configurationDirectory;
-        this.notifier = new DirectoryChangeNotifier(_configurationDirectory, getFileFilter());
-        this.notifier.enableLogging(getLogger());
-        loadItems();
-    }
-
-    /**
-     * Reloads the items if an item was changed / added / removed.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected void loadItems() throws AccessControlException {
-
-        boolean changed;
-        try {
-            changed = this.notifier.hasChanged();
-        } catch (IOException e) {
-            throw new AccessControlException(e);
-        }
-
-        if (changed) {
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Item configuration has changed - reloading.");
-            }
-
-            File[] addedFiles = this.notifier.getAddedFiles();
-
-            for (int i = 0; i < addedFiles.length; i++) {
-                Item item = loadItem(addedFiles[i]);
-                add(item);
-            }
-
-            File[] removedFiles = this.notifier.getRemovedFiles();
-            for (int i = 0; i < removedFiles.length; i++) {
-                String fileName = removedFiles[i].getName();
-                String id = fileName.substring(0, fileName.length() - getSuffix().length());
-
-                Item item = (Item) this.items.get(id);
-
-                if (item != null) {
-
-                    if (item instanceof Groupable) {
-                        ((Groupable) item).removeFromAllGroups();
-                    }
-                    if (item instanceof Group) {
-                        ((Group) item).removeAllMembers();
-                    }
-
-                    remove(item);
-                }
-            }
-
-            File[] changedFiles = this.notifier.getChangedFiles();
-            for (int i = 0; i < changedFiles.length; i++) {
-                Item item = loadItem(changedFiles[i]);
-                update(item);
-            }
-
-        }
-
-    }
-
-    /**
-     * Loads an item from a file.
-     * @param file The file.
-     * @return An item.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Item loadItem(File file) throws AccessControlException {
-        Configuration config = getItemConfiguration(file);
-
-        String fileName = file.getName();
-        String id = fileName.substring(0, fileName.length() - getSuffix().length());
-        Item item = (Item) this.items.get(id);
-
-        String klass = ItemConfiguration.getItemClass(config);
-        if (item == null) {
-            try {
-                Class[] paramTypes = { ItemManager.class, Logger.class };
-                Constructor ctor = Class.forName(klass).getConstructor(paramTypes);
-                Object[] params = { this, getLogger() };
-                item = (Item) ctor.newInstance(params);
-            } catch (Exception e) {
-                String errorMsg = "Exception when trying to instanciate: " + klass
-                        + " with exception: " + e.fillInStackTrace();
-
-                // an exception occured when trying to instanciate
-                // a user.
-                getLogger().error(errorMsg);
-                throw new AccessControlException(errorMsg, e);
-            }
-        }
-
-        try {
-            item.configure(config);
-        } catch (ConfigurationException e) {
-            String errorMsg = "Exception when trying to configure: " + klass;
-            throw new AccessControlException(errorMsg, e);
-        }
-        return item;
-    }
-
-    /**
-     * Loads teh configuration of an item from a file.
-     * @param file The file.
-     * @return A configuration.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Configuration getItemConfiguration(File file) throws AccessControlException {
-        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-        Configuration config = null;
-
-        try {
-            assert file.exists();
-            config = builder.buildFromFile(file);
-        } catch (Exception e) {
-            String errorMsg = "Exception when reading the configuration from file: "
-                    + file.getName();
-
-            // an exception occured when trying to read the configuration
-            // from the identity file.
-            getLogger().error(errorMsg);
-            throw new AccessControlException(errorMsg, e);
-        }
-        return config;
-    }
-
-    protected void removeItem(File file) {
-        // do nothing
-    }
-
-    /**
-     * Returns an item for a given ID.
-     * @param id The id.
-     * @return An item.
-     */
-    public Item getItem(String id) {
-        try {
-            loadItems();
-        } catch (AccessControlException e) {
-            throw new IllegalStateException(e.getMessage());
-        }
-        return (Item) this.items.get(id);
-    }
-
-    /**
-     * get all items
-     * @return an array of items
-     */
-    public Item[] getItems() {
-        try {
-            loadItems();
-        } catch (AccessControlException e) {
-            throw new IllegalStateException(e.getMessage());
-        }
-        return (Item[]) this.items.values().toArray(new Item[this.items.values().size()]);
-    }
-
-    /**
-     * Add an Item to this manager
-     * @param item to be added
-     * @throws AccessControlException when the notification threw this
-     *         exception.
-     */
-    public void add(Item item) throws AccessControlException {
-        assert item != null;
-        this.items.put(item.getId(), item);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item [" + item + "] added.");
-        }
-        notifyAdded(item);
-    }
-
-    /**
-     * Remove an item from this manager
-     * @param item to be removed
-     * @throws AccessControlException when the notification threw this
-     *         exception.
-     */
-    public void remove(Item item) throws AccessControlException {
-        this.items.remove(item.getId());
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item [" + item + "] removed.");
-        }
-        notifyRemoved(item);
-    }
-
-    /**
-     * Update an item.
-     * @param newItem The new version of the item.
-     * @throws AccessControlException when the notification threw this
-     *         exception.
-     */
-    public void update(Item newItem) throws AccessControlException {
-        this.items.remove(newItem.getId());
-        this.items.put(newItem.getId(), newItem);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item [" + newItem + "] updated.");
-        }
-    }
-
-    /**
-     * Returns if the ItemManager contains an object.
-     * @param item The object.
-     * @return A boolean value.
-     */
-    public boolean contains(Item item) {
-        try {
-            loadItems();
-        } catch (AccessControlException e) {
-            throw new IllegalStateException(e.getMessage());
-        }
-        return this.items.containsValue(item);
-    }
-
-    /**
-     * Get the directory where the items are located.
-     * @return a <code>File</code>
-     */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    /**
-     * Get a file filter which filters for files containing items.
-     * @return a <code>FileFilter</code>
-     */
-    protected FileFilter getFileFilter() {
-        FileFilter filter = new FileFilter() {
-            public boolean accept(File pathname) {
-                return (pathname.getName().endsWith(getSuffix()));
-            }
-        };
-
-        return filter;
-    }
-
-    /**
-     * Returns the file extension to be used.
-     * @return A string.
-     */
-    protected abstract String getSuffix();
-
-    private List itemManagerListeners = new ArrayList();
-
-    /**
-     * Attaches an item manager listener to this item manager.
-     * @param listener An item manager listener.
-     */
-    public void addItemManagerListener(ItemManagerListener listener) {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Adding listener: [" + listener + "]");
-        }
-        if (!this.itemManagerListeners.contains(listener)) {
-            this.itemManagerListeners.add(listener);
-        }
-    }
-
-    /**
-     * Removes an item manager listener from this item manager.
-     * @param listener An item manager listener.
-     */
-    public void removeItemManagerListener(ItemManagerListener listener) {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Removing listener: [" + listener + "]");
-        }
-        this.itemManagerListeners.remove(listener);
-    }
-
-    /**
-     * Notifies the listeners that an item was added.
-     * @param item The item that was added.
-     * @throws AccessControlException if an error occurs.
-     */
-    protected void notifyAdded(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was added: [" + item + "]");
-        }
-        List clone = new ArrayList(this.itemManagerListeners);
-        for (Iterator i = clone.iterator(); i.hasNext();) {
-            ItemManagerListener listener = (ItemManagerListener) i.next();
-            listener.itemAdded(item);
-        }
-    }
-
-    /**
-     * Notifies the listeners that an item was removed.
-     * @param item The item that was removed.
-     * @throws AccessControlException if an error occurs.
-     */
-    protected void notifyRemoved(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was removed: [" + item + "]");
-        }
-        List clone = new ArrayList(this.itemManagerListeners);
-        for (Iterator i = clone.iterator(); i.hasNext();) {
-            ItemManagerListener listener = (ItemManagerListener) i.next();
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Notifying listener: [" + listener + "]");
-            }
-            listener.itemRemoved(item);
-        }
-    }
-
-    /**
-     * Helper class to observe a directory for changes.
-     */
-    public static class DirectoryChangeNotifier extends AbstractLogEnabled {
-
-        /**
-         * Ctor.
-         * @param _directory The directory to observe.
-         * @param _filter A filter to specify the file type to observe.
-         */
-        public DirectoryChangeNotifier(File _directory, FileFilter _filter) {
-            this.directory = _directory;
-            this.filter = _filter;
-        }
-
-        private File directory;
-        private FileFilter filter;
-        private Map canonicalPath2LastModified = new HashMap();
-
-        private Set addedFiles = new HashSet();
-        private Set removedFiles = new HashSet();
-        private Set changedFiles = new HashSet();
-
-        /**
-         * Checks if the directory has changed (a new file was added, a file was
-         * removed, a file has changed).
-         * @return A boolean value.
-         * @throws IOException when something went wrong.
-         */
-        public boolean hasChanged() throws IOException {
-
-            this.addedFiles.clear();
-            this.removedFiles.clear();
-            this.changedFiles.clear();
-
-            File[] files = this.directory.listFiles(this.filter);
-
-            Set newPathSet = new HashSet();
-
-            for (int i = 0; i < files.length; i++) {
-                String canonicalPath = files[i].getCanonicalPath();
-                newPathSet.add(canonicalPath);
-
-                if (!this.canonicalPath2LastModified.containsKey(canonicalPath)) {
-                    this.addedFiles.add(new File(canonicalPath));
-
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("New file: [" + canonicalPath + "]");
-                    }
-
-                } else {
-                    Long lastModifiedObject = (Long) this.canonicalPath2LastModified
-                            .get(canonicalPath);
-                    long lastModified = lastModifiedObject.longValue();
-                    if (lastModified < files[i].lastModified()) {
-                        this.changedFiles.add(files[i]);
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("File has changed: [" + canonicalPath + "]");
-                        }
-                    }
-                }
-                Long lastModified = new Long(files[i].lastModified());
-                this.canonicalPath2LastModified.put(canonicalPath, lastModified);
-            }
-
-            Set oldPathSet = this.canonicalPath2LastModified.keySet();
-            String[] oldPaths = (String[]) oldPathSet.toArray(new String[oldPathSet.size()]);
-            for (int i = 0; i < oldPaths.length; i++) {
-                if (!newPathSet.contains(oldPaths[i])) {
-                    this.removedFiles.add(new File(oldPaths[i]));
-                    this.canonicalPath2LastModified.remove(oldPaths[i]);
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("File removed: [" + oldPaths[i] + "]");
-                    }
-                }
-            }
-
-            return !this.addedFiles.isEmpty() || !this.removedFiles.isEmpty()
-                    || !this.changedFiles.isEmpty();
-        }
-
-        /**
-         * Returns the added files.
-         * @return An array of files.
-         */
-        public File[] getAddedFiles() {
-            return (File[]) this.addedFiles.toArray(new File[this.addedFiles.size()]);
-        }
-
-        /**
-         * Returns the removed files.
-         * @return An array of files.
-         */
-        public File[] getRemovedFiles() {
-            return (File[]) this.removedFiles.toArray(new File[this.removedFiles.size()]);
-        }
-
-        /**
-         * Returns the changed files.
-         * @return An array of files.
-         */
-        public File[] getChangedFiles() {
-            return (File[]) this.changedFiles.toArray(new File[this.changedFiles.size()]);
-        }
-
-    }
-
-    public AccreditableManager getAccreditableManager() {
-        return this.accreditableManager;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FilePolicyManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FilePolicyManager.java
deleted file mode 100644
index cedcf4d..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FilePolicyManager.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.util.NetUtils;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.InheritingPolicyManager;
-import org.apache.lenya.ac.ModifiablePolicy;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.cache.CachingException;
-import org.apache.lenya.ac.cache.SourceCache;
-import org.apache.lenya.ac.impl.CredentialImpl;
-import org.apache.lenya.ac.impl.DefaultPolicy;
-import org.apache.lenya.ac.impl.PolicyBuilder;
-import org.apache.lenya.ac.impl.RemovedAccreditablePolicyBuilder;
-import org.apache.lenya.ac.impl.URLPolicy;
-import org.apache.lenya.xml.DocumentHelper;
-import org.w3c.dom.Document;
-
-/**
- * A PolicyBuilder is used to build policies.
- */
-public class FilePolicyManager extends AbstractLogEnabled implements InheritingPolicyManager,
-        Parameterizable, Disposable, Serviceable {
-
-    private static final class SubtreeFileFilter implements FileFilter {
-
-        private final String subtree;
-
-        private SubtreeFileFilter(String _subtree) {
-            super();
-            this.subtree = _subtree;
-        }
-
-        /**
-         * @see java.io.FileFilter#accept(java.io.File)
-         */
-        public boolean accept(File file) {
-            return file.getName().equals(this.subtree);
-        }
-    }
-
-    private static final class IsDirectoryFileFilter implements FileFilter {
-        /**
-         * @see java.io.FileFilter#accept(java.io.File)
-         */
-        public boolean accept(File file) {
-            return file.isDirectory();
-        }
-    }
-
-    /**
-     * Creates a new FilePolicyManager.
-     */
-    public FilePolicyManager() {
-        // do nothing
-    }
-
-    /**
-     * Returns the source cache.
-     * 
-     * @return A source cache.
-     */
-    protected SourceCache getCache() {
-        return this.cache;
-    }
-
-    private SourceCache cache;
-
-    protected static final String SUBTREE_FILENAME = "subtree-policy.acml";
-
-    /**
-     * Builds a subtree policy from a file. When the file is not present, an
-     * empty policy is returned.
-     * 
-     * @param controller The access controller to use.
-     * @param url The URL inside the web application.
-     * @return A policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    public Policy buildSubtreePolicy(AccreditableManager controller, String url)
-            throws AccessControlException {
-        return buildPolicy(controller, url, SUBTREE_FILENAME);
-    }
-
-    /**
-     * Builds a policy from a file. When the file is not present, an empty
-     * policy is returned.
-     * 
-     * @param controller The access controller to use.
-     * @param url The url.
-     * @param policyFilename The policy filename.
-     * @return A policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected DefaultPolicy buildPolicy(AccreditableManager controller, String url,
-            String policyFilename) throws AccessControlException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Building policy for URL [" + url + "]");
-        }
-
-        DefaultPolicy policy = null;
-
-        String policyUri = getPolicySourceURI(url, policyFilename);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Policy source URI resolved to: " + policyUri);
-        }
-
-        try {
-            PolicyBuilder builder = new PolicyBuilder(controller);
-            policy = (DefaultPolicy) getCache().get(policyUri, builder);
-        } catch (CachingException e) {
-            throw new AccessControlException(e);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Policy exists: [" + (policy != null) + "]");
-        }
-
-        if (policy == null) {
-            policy = new DefaultPolicy();
-        }
-        return policy;
-    }
-
-    /**
-     * Returns the policy file URI for a URL and a policy filename.
-     * 
-     * @param url The url to get the file for.
-     * @param policyFilename The name of the policy file.
-     * @return A String.
-     * @throws AccessControlException if an error occurs
-     */
-    protected String getPolicySourceURI(String url, String policyFilename)
-            throws AccessControlException {
-        if (url.startsWith("/")) {
-            url = url.substring(1);
-        }
-        
-        // remove publication ID
-        if (url.indexOf("/") > -1) {
-            url = url.substring(url.indexOf("/") + 1);
-        }
-        else {
-            url = "";
-        }
-
-        final String policyUri = this.policiesDirectoryUri + "/" + url + "/" + policyFilename;
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Computing policy URI [" + policyUri + "]");
-        }
-        return policyUri;
-    }
-
-    /**
-     * Returns the policy file for a certain URL.
-     * 
-     * @param url The URL to get the policy for.
-     * @param policyFilename The policy filename.
-     * @return A file.
-     * @throws AccessControlException when an error occurs.
-     */
-    protected File getPolicyFile(String url, String policyFilename) throws AccessControlException {
-        String fileUri = getPolicySourceURI(url, policyFilename);
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) this.serviceManager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(fileUri);
-            return SourceUtil.getFile(source);
-        } catch (final Exception e) {
-            throw new AccessControlException(e);
-        }
-        finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.serviceManager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Saves a Subtree policy.
-     * 
-     * @param url The url to save the policy for.
-     * @param policy The policy to save.
-     * @throws AccessControlException when something went wrong.
-     */
-    public void saveSubtreePolicy(String url, Policy policy) throws AccessControlException {
-        getLogger().debug("Saving subtree policy for URL [" + url + "]");
-        savePolicy(url, policy, SUBTREE_FILENAME);
-    }
-
-    /**
-     * Saves a policy to a file.
-     * 
-     * @param url The URL to save the policy for.
-     * @param policy The policy.
-     * @param filename The file.
-     * @throws AccessControlException if something goes wrong.
-     */
-    protected void savePolicy(String url, Policy policy, String filename)
-            throws AccessControlException {
-
-        File file = getPolicyFile(url, filename);
-        savePolicy(policy, file);
-    }
-
-    /**
-     * Saves a policy to a file.
-     * 
-     * @param policy The policy to save.
-     * @param file The file.
-     * @throws AccessControlException when an error occurs.
-     */
-    protected void savePolicy(Policy policy, File file) throws AccessControlException {
-        Document document = PolicyBuilder.savePolicy(policy);
-
-        try {
-            if (!file.exists()) {
-                file.getParentFile().mkdirs();
-                if (!file.createNewFile()) {
-                    throw new AccessControlException("File [" + file + "] could not be created.");
-                }
-            }
-            DocumentHelper.writeDocument(document, file);
-        } catch (AccessControlException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new AccessControlException("Path: [" + file.getAbsolutePath() + "]", e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#getPolicy(org.apache.lenya.ac.AccreditableManager,
-     *      java.lang.String)
-     */
-    public Policy getPolicy(AccreditableManager controller, String url)
-            throws AccessControlException {
-
-        return new URLPolicy(controller, url, this);
-    }
-
-    protected static final String DIRECTORY_PARAMETER = "directory";
-
-    private String policiesDirectoryUri;
-
-    private File policiesDirectory;
-
-    /**
-     * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void parameterize(Parameters parameters) throws ParameterException {
-        if (parameters.isParameter(DIRECTORY_PARAMETER)) {
-            this.policiesDirectoryUri = parameters.getParameter(DIRECTORY_PARAMETER);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Policies directory URI: " + this.policiesDirectoryUri);
-            }
-        }
-    }
-
-    /**
-     * Get the path to the policies directory.
-     * 
-     * @return the path to the policies directory
-     * @throws AccessControlException if an error occurs
-     */
-    public File getPoliciesDirectory() throws AccessControlException {
-
-        if (this.policiesDirectory == null) {
-            SourceResolver resolver = null;
-            Source source = null;
-            File directory;
-
-            try {
-                resolver = (SourceResolver) getServiceManager().lookup(SourceResolver.ROLE);
-                source = resolver.resolveURI(this.policiesDirectoryUri);
-                getLogger().debug("Policies directory source: [" + source.getURI() + "]");
-                directory = new File(new URI(NetUtils.encodePath(source.getURI())));
-            } catch (final Exception e) {
-                throw new AccessControlException("Resolving policies directory failed: ", e);
-            } finally {
-                if (resolver != null) {
-                    if (source != null) {
-                        resolver.release(source);
-                    }
-                    getServiceManager().release(resolver);
-                }
-            }
-
-            getLogger().debug(
-                    "Policies directory resolved to [" + directory.getAbsolutePath() + "]");
-            setPoliciesDirectory(directory);
-        }
-
-        return this.policiesDirectory;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.serviceManager = manager;
-        this.cache = (SourceCache) manager.lookup(SourceCache.ROLE);
-    }
-
-    /**
-     * Sets the policies directory.
-     * 
-     * @param directory The directory.
-     * @throws AccessControlException if the directory is not a directory
-     */
-    public void setPoliciesDirectory(File directory) throws AccessControlException {
-        getLogger().debug("Setting policies directory [" + directory.getAbsolutePath() + "]");
-        if (!directory.isDirectory()) {
-            throw new AccessControlException("Policies directory invalid: ["
-                    + directory.getAbsolutePath() + "]");
-        }
-        this.policiesDirectory = directory;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.InheritingPolicyManager#getPolicies(org.apache.lenya.ac.AccreditableManager,
-     *      java.lang.String)
-     */
-    public Policy[] getPolicies(AccreditableManager controller, String url)
-            throws AccessControlException {
-        
-        if (!url.startsWith("/")) {
-            throw new IllegalArgumentException("The URL [" + url + "] doesn't start with a slash!");
-        }
-        
-        url = url.substring(1);
-
-        List policies = new LinkedList();
-        HashMap orderedPolicies = new LinkedHashMap();
-        int position = 1;
-        Policy policy;
-        String[] directories = url.split("/");
-        url = directories[0] + "/";
-
-        for (int i = 1; i < directories.length; i++) {
-            url += directories[i] + "/";
-            policy = buildSubtreePolicy(controller, url);
-            orderedPolicies.put(String.valueOf(position), policy);
-            position++;
-        }
-        for (int i = orderedPolicies.size(); i > 0; i--) {
-            policies.add(orderedPolicies.get(String.valueOf(i)));
-        }
-        return (DefaultPolicy[]) policies.toArray(new DefaultPolicy[policies.size()]);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-
-        if (getCache() != null) {
-            getServiceManager().release(getCache());
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing [" + this + "]");
-        }
-    }
-
-    /**
-     * Removes an accreditable from all policies within a certain directory
-     * tree.
-     * 
-     * @param manager The accreditable manager which owns the accreditable.
-     * @param accreditable The accreditable to remove.
-     * @param policyDirectory The directory where the policies are located.
-     * @throws AccessControlException when an error occurs.
-     */
-    protected void removeAccreditable(AccreditableManager manager, Accreditable accreditable,
-            File policyDirectory) throws AccessControlException {
-
-        File[] policyFiles = policyDirectory.listFiles(new SubtreeFileFilter(SUBTREE_FILENAME));
-
-        try {
-            RemovedAccreditablePolicyBuilder builder = new RemovedAccreditablePolicyBuilder(manager);
-            builder.setRemovedAccreditable(accreditable);
-            for (int i = 0; i < policyFiles.length; i++) {
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Removing roles");
-                    getLogger().debug("    Accreditable: [" + accreditable + "]");
-                    getLogger().debug(
-                            "    File:         [" + policyFiles[i].getAbsolutePath() + "]");
-                }
-
-                InputStream stream = new FileInputStream(policyFiles[i]);
-                ModifiablePolicy policy = builder.buildPolicy(stream);
-                policy.removeRoles(accreditable);
-                savePolicy(policy, policyFiles[i]);
-            }
-        } catch (final FileNotFoundException e1) {
-            throw new AccessControlException(e1);
-        }
-
-        File[] directories = policyDirectory.listFiles(new IsDirectoryFileFilter());
-
-        for (int i = 0; i < directories.length; i++) {
-            removeAccreditable(manager, accreditable, directories[i]);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableRemoved(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableRemoved(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("An accreditable was removed: [" + accreditable + "]");
-        }
-
-        removeAccreditable(manager, accreditable, getPoliciesDirectory());
-    }
-
-    private ServiceManager serviceManager;
-
-    /**
-     * Returns the service manager.
-     * 
-     * @return A service manager.
-     */
-    protected ServiceManager getServiceManager() {
-        return this.serviceManager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableAdded(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableAdded(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException {
-    }
-
-    public Credential[] getCredentials(AccreditableManager controller, String url)
-            throws AccessControlException {
-
-        if (!url.startsWith("/")) {
-            throw new IllegalArgumentException("The URL [" + url + "] doesn't start with a slash!");
-        }
-        
-        url = url.substring(1);
-
-        HashMap orderedCredential = new LinkedHashMap();
-        int position = 1;
-
-        String[] directories = url.split("/");
-        url = directories[0] + "/";
-
-        for (int i = 1; i < directories.length; i++) {
-            url += directories[i] + "/";
-            Policy policy = buildSubtreePolicy(controller, url);
-            Credential[] tmp = policy.getCredentials();
-            // we need to revert the order of the credentials
-            // to keep the most important policy on top
-            for (int j = tmp.length - 1; j >= 0; j--) {
-                Credential credential = tmp[j];
-                orderedCredential.put(String.valueOf(position), credential);
-                position++;
-            }
-        }
-        Credential[] returnCredential = new CredentialImpl[orderedCredential.size()];
-        int y = 0;
-        for (int i = orderedCredential.size(); i > 0; i--) {
-            returnCredential[y] = (Credential) orderedCredential.get(String.valueOf(i));
-            y++;
-        }
-
-        return returnCredential;
-    }
-
-    public Role[] getGrantedRoles(AccreditableManager accreditableManager, Identity identity,
-            String url) throws AccessControlException {
-        Role[] roles = accreditableManager.getRoleManager().getRoles();
-        Set grantedRoles = new HashSet();
-        Policy policy = getPolicy(accreditableManager, url);
-        for (int i = 0; i < roles.length; i++) {
-            if (policy.check(identity, roles[i]) == Policy.RESULT_GRANTED) {
-                grantedRoles.add(roles[i]);
-            }
-        }
-        return (Role[]) grantedRoles.toArray(new Role[grantedRoles.size()]);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
deleted file mode 100644
index d826f1d..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRole.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.io.File;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.impl.AbstractRole;
-import org.apache.lenya.ac.impl.ItemConfiguration;
-
-/**
- * File-based role implementation.
- * @version $Id$
- */
-public class FileRole extends AbstractRole implements Item {
-
-    protected static final String ATTR_ASSIGNABLE = "assignable";
-
-    /**
-     * Creates a new file role.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id The role ID.
-     */
-    public FileRole(ItemManager itemManager, Logger logger, String id) {
-        this(itemManager, logger);
-        setId(id);
-    }
-
-    protected static final String ROLE = "role";
-
-    /**
-     * Creates a new FileRole object.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public FileRole(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-        FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
-    }
-
-    /**
-     * Configure this instance of <code>FileRole</code>
-     * @param config containing the role details
-     * @throws ConfigurationException if the <code>FileRole</code> could not
-     *         be configured
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        new ItemConfiguration().configure(this, config);
-        this.isAssignable = config.getAttributeAsBoolean(ATTR_ASSIGNABLE, true);
-    }
-
-    /**
-     * Save the role
-     * @throws AccessControlException if the save fails
-     */
-    public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-        File xmlPath = getConfigurationDirectory();
-        File xmlfile = new File(xmlPath, getId() + FileRoleManager.SUFFIX);
-
-        try {
-            serializer.serializeToFile(xmlfile, config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-    }
-
-    /**
-     * Create a configuration containing the role details
-     * @return a <code>Configuration</code>
-     */
-    private Configuration createConfiguration() {
-        DefaultConfiguration config = new DefaultConfiguration(ROLE);
-        new ItemConfiguration().save(this, config);
-        return config;
-    }
-
-    private File configurationDirectory;
-    private boolean isAssignable;
-
-    /**
-     * Returns the configuration directory.
-     * @return A file object.
-     */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    protected void setConfigurationDirectory(File file) {
-        this.configurationDirectory = file;
-    }
-
-    public boolean isAssignable() {
-        return this.isAssignable;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRoleManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRoleManager.java
deleted file mode 100644
index eb9042d..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileRoleManager.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.RoleManager;
-
-/**
- * File-based role manager implementation.
- * @version $Id$
- */
-public final class FileRoleManager extends FileItemManager implements RoleManager {
-    protected static final String SUFFIX = ".rml";
-    private static Map instances = new HashMap();
-
-    /**
-     * Return the <code>RoleManager</code> for this configuration directory. The
-     * <code>RoleManager</code> is a singleton.
-     * @param mgr The accreditable manager.
-     */
-    protected FileRoleManager(AccreditableManager mgr) {
-        super(mgr);
-    }
-
-    /**
-     * Returns the role manager for this configuration directory.
-     * @param mgr The accreditable manager.
-     * @param configurationDirectory The configuration directory.
-     * @param logger The logger.
-     * @return A role manager.
-     * @throws AccessControlException when something went wrong.
-     */
-    public static FileRoleManager instance(AccreditableManager mgr, File configurationDirectory, Logger logger)
-            throws AccessControlException {
-        if (!instances.containsKey(configurationDirectory)) {
-            FileRoleManager manager = new FileRoleManager(mgr);
-            manager.enableLogging(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
-        }
-
-        return (FileRoleManager) instances.get(configurationDirectory);
-    }
-
-    /**
-     * Get the role for the given ID.
-     * @param roleId The name of the role requested.
-     * @return a <code>Role</code> or null if no role with the given name found
-     */
-    public Role getRole(String roleId) {
-        return (Role) getItem(roleId);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.file.FileItemManager#getSuffix()
-     */
-    protected String getSuffix() {
-        return SUFFIX;
-    }
-
-    /**
-     * Get all roles
-     * @return an array of roles.
-     */
-    public Role[] getRoles() {
-        Item[] items = super.getItems();
-        Role[] roles = new Role[items.length];
-        for (int i = 0; i < roles.length; i++) {
-            roles[i] = (Role) items[i];
-        }
-        return roles;
-    }
-
-    /**
-     * Add a role
-     * @param role The role to add.
-     * @throws AccessControlException if an error occurs.
-     */
-    public void add(Role role) throws AccessControlException {
-        super.add(role);
-    }
-
-    /**
-     * Remove a role
-     * @param role The role to remove.
-     * @throws AccessControlException if an error occurs.
-     */
-    public void remove(Role role) throws AccessControlException {
-        super.remove(role);
-    }
-
-    protected Item createItem() {
-        return new FileRole(this, getLogger());
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
deleted file mode 100644
index 0670bce..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUser.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.io.File;
-import java.io.Serializable;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.impl.AbstractUser;
-import org.apache.lenya.ac.impl.ItemConfiguration;
-
-/**
- * File-based user implementation.
- * @version $Id$
- */
-public class FileUser extends AbstractUser implements Item, Serializable {
-
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-    protected static final String ID = "identity";
-    protected static final String EMAIL = "email";
-    protected static final String MENU_LOCALE = "default-menu-locale";
-    protected static final String DOCUMENT_LOCALE = "default-document-locale";
-    protected static final String PASSWORD = "password";
-    protected static final String GROUPS = "groups";
-    protected static final String GROUP = "group";
-    protected static final String PASSWORD_ATTRIBUTE = "type";
-
-    /**
-     * Creates a new FileUser object.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public FileUser(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-        FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
-    }
-
-    /**
-     * Create a FileUser
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id the user id
-     * @param fullName the full name of the user
-     * @param email the users email address
-     * @param password the users password
-     */
-    public FileUser(ItemManager itemManager, Logger logger, String id, String fullName,
-            String email, String password) {
-        super(itemManager, logger, id, fullName, email, password);
-        FileItemManager fileItemManager = (FileItemManager) itemManager;
-        setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
-    }
-
-    /**
-     * Configure this FileUser.
-     * @param config where the user details are specified
-     * @throws ConfigurationException if the necessary details aren't specified
-     *         in the config
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        new ItemConfiguration().configure(this, config);
-        setEmail(config.getChild(EMAIL).getValue(""));
-        setDefaultMenuLocale(config.getChild(MENU_LOCALE).getValue(""));
-        setDefaultDocumentLocale(config.getChild(DOCUMENT_LOCALE).getValue(""));
-        setEncryptedPassword(config.getChild(PASSWORD).getValue(null));
-
-        removeFromAllGroups();
-        Configuration[] groups = config.getChildren(GROUPS);
-
-        if (groups.length == 1) {
-            groups = groups[0].getChildren(GROUP);
-
-            GroupManager manager;
-            try {
-                manager = getAccreditableManager().getGroupManager();
-            } catch (AccessControlException e) {
-                throw new ConfigurationException("configuration failed: ", e);
-            }
-
-            for (int i = 0; i < groups.length; i++) {
-                String groupId = groups[i].getValue();
-                Group group = manager.getGroup(groupId);
-
-                if (group == null) {
-                    throw new ConfigurationException("Couldn't find Group for group name ["
-                            + groupId + "]");
-                }
-
-                if (!group.contains(this)) {
-                    group.add(this);
-                }
-
-            }
-        } else {
-            // strange, it should have groups
-            getLogger().error("User " + getId() + " doesn't seem to have any groups");
-        }
-    }
-
-    /**
-     * Create a configuration from the current user details. Can be used for
-     * saving.
-     * @return a <code>Configuration</code>
-     */
-    protected Configuration createConfiguration() {
-        DefaultConfiguration config = new DefaultConfiguration(ID);
-        new ItemConfiguration().save(this, config);
-
-        DefaultConfiguration child = null;
-
-        // add email node
-        child = new DefaultConfiguration(EMAIL);
-        child.setValue(getEmail());
-        config.addChild(child);
-
-        // add defaultMenuLocale node
-        child = new DefaultConfiguration(MENU_LOCALE);
-        child.setValue(getDefaultMenuLocale());
-        config.addChild(child);
-
-        // add defaultDocumentLocale node
-        child = new DefaultConfiguration(DOCUMENT_LOCALE);
-        child.setValue(getDefaultDocumentLocale());
-        config.addChild(child);
-
-        // add password node
-        child = new DefaultConfiguration(PASSWORD);
-        child.setValue(getEncryptedPassword());
-        child.setAttribute(PASSWORD_ATTRIBUTE, "md5");
-        config.addChild(child);
-
-        // add group nodes
-        child = new DefaultConfiguration(GROUPS);
-        config.addChild(child);
-
-        Group[] groups = getGroups();
-
-        for (int i = 0; i < groups.length; i++) {
-            DefaultConfiguration groupNode = new DefaultConfiguration(GROUP);
-            groupNode.setValue(groups[i].getId());
-            child.addChild(groupNode);
-        }
-
-        return config;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.User#save()
-     */
-    public void save() throws AccessControlException {
-        DefaultConfigurationSerializer serializer = new DefaultConfigurationSerializer();
-        Configuration config = createConfiguration();
-
-        try {
-            serializer.serializeToFile(getFile(), config);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.ac.User#delete()
-     */
-    public void delete() throws AccessControlException {
-        super.delete();
-        getFile().delete();
-    }
-
-    /**
-     * Returns the configuration file.
-     * @return A file object.
-     */
-    protected File getFile() {
-        File xmlPath = getConfigurationDirectory();
-        File xmlFile = new File(xmlPath, getId() + FileUserManager.SUFFIX);
-        return xmlFile;
-    }
-
-    private File configurationDirectory;
-
-    /**
-     * Returns the configuration directory.
-     * @return A file object.
-     */
-    protected File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    protected void setConfigurationDirectory(File _configurationDirectory) {
-        assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
-        this.configurationDirectory = _configurationDirectory;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
deleted file mode 100644
index 0f97dbe..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileUserManager.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.ac.UserType;
-
-/**
- * File-based user manager implementation.
- * @version $Id$
- */
-public class FileUserManager extends FileItemManager implements UserManager {
-
-    private static Map instances = new HashMap();
-    private Set userTypes;
-
-    /**
-     * Create a UserManager
-     * 
-     * @param mgr The accreditable manager.
-     * @param _userTypes The supported user types.
-     * @throws AccessControlException if the UserManager could not be instantiated.
-     */
-    private FileUserManager(AccreditableManager mgr, UserType[] _userTypes)
-            throws AccessControlException {
-        super(mgr);
-        this.userTypes = new HashSet(Arrays.asList(_userTypes));
-    }
-
-    /**
-     * Describe <code>instance</code> method here.
-     * 
-     * @param mgr The accreditable manager.
-     * @param configurationDirectory a directory
-     * @param userTypes The supported user types.
-     * @param logger The logger.
-     * @return an <code>UserManager</code> value
-     * @exception AccessControlException if an error occurs
-     */
-    public static FileUserManager instance(AccreditableManager mgr, File configurationDirectory, UserType[] userTypes, Logger logger)
-            throws AccessControlException {
-
-        assert configurationDirectory != null;
-        if (!configurationDirectory.isDirectory()) {
-            throw new AccessControlException("Configuration directory [" + configurationDirectory
-                    + "] does not exist!");
-        }
-
-        if (!instances.containsKey(configurationDirectory)) {
-            FileUserManager manager = new FileUserManager(mgr, userTypes);
-            manager.enableLogging(logger);
-            manager.configure(configurationDirectory);
-            instances.put(configurationDirectory, manager);
-        }
-
-        return (FileUserManager) instances.get(configurationDirectory);
-    }
-
-    /**
-     * Get all users.
-     * 
-     * @return an Iterator to iterate over all users
-     */
-    public User[] getUsers() {
-        Item[] items = super.getItems();
-        User[] users = new User[items.length];
-        for (int i = 0; i < users.length; i++) {
-            users[i] = (User) items[i];
-        }
-        return users;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.UserManager#add(org.apache.lenya.ac.User)
-     */
-    public void add(User user) throws AccessControlException {
-        super.add(user);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.UserManager#remove(org.apache.lenya.ac.User)
-     */
-    public void remove(User user) throws AccessControlException {
-        super.remove(user);
-    }
-
-    /**
-     * Get the user with the given user id.
-     * 
-     * @param userId user id of requested user
-     * @return the requested user or null if there is no user with the given user id
-     */
-    public User getUser(String userId) {
-        return (User) getItem(userId);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.UserManager#getUserTypes()
-     */
-    public UserType[] getUserTypes() {
-        return (UserType[]) this.userTypes.toArray(new UserType[this.userTypes.size()]);
-    }
-
-    protected static final String SUFFIX = ".iml";
-
-    /**
-     * @see org.apache.lenya.ac.file.FileItemManager#getSuffix()
-     */
-    protected String getSuffix() {
-        return SUFFIX;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
deleted file mode 100644
index d821b4b..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.cache.URLKeyUtil;
-import org.apache.lenya.util.CacheMap;
-
-/**
- * Abstract implementation for access controller resolvers.
- * @version $Id$
- */
-public abstract class AbstractAccessControllerResolver
-    extends AbstractLogEnabled
-    implements AccessControllerResolver, Serviceable, ThreadSafe {
-
-    protected static final int CAPACITY = 1000;
-    private CacheMap cache;
-    
-    protected CacheMap getCache() {
-        if (this.cache == null) {
-            this.cache = new CacheMap(CAPACITY, getLogger());
-        }
-        return this.cache;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.AccessControllerResolver#resolveAccessController(java.lang.String)
-     */
-    public AccessController resolveAccessController(String webappUrl)
-        throws AccessControlException {
-
-        SourceResolver resolver = null;
-        AccessController controller = null;
-        Object key = null;
-
-        try {
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-            key = generateCacheKey(webappUrl, resolver);
-            getLogger().debug("Access controller cache key: [" + key + "]");
-
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (resolver != null) {
-                getManager().release(resolver);
-            }
-        }
-        
-        CacheMap cache = getCache();
-
-        synchronized (cache) {
-            controller = (AccessController) cache.get(key);
-            if (controller == null) {
-                getLogger().debug("No access controller in cache.");
-                controller = doResolveAccessController(webappUrl);
-                cache.put(key, controller);
-            } else {
-                getLogger().debug("Getting access controller from cache.");
-            }
-        }
-
-        return controller;
-    }
-
-    /**
-     * Generates a cache key for the access controller.
-     * @param webappUrl The webapp URL.
-     * @param resolver The source resolver.
-     * @return An object.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Object generateCacheKey(String webappUrl, SourceResolver resolver)
-        throws AccessControlException {
-        Object key;
-        try {
-            key = URLKeyUtil.generateKey(resolver, webappUrl);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-        return key;
-    }
-
-    /**
-     * The actual resolving method.
-     * @param webappUrl The URL within the web application.
-     * @return An access controller.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected abstract AccessController doResolveAccessController(String webappUrl)
-        throws AccessControlException;
-
-    /**
-     * @see org.apache.lenya.ac.AccessControllerResolver#release(org.apache.lenya.ac.AccessController)
-     */
-    public void release(AccessController controller) {
-        /*
-        if (controller != null) {
-            getManager().release(controller);
-        }
-        */
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        getLogger().debug("Servicing [" + getClass().getName() + "]");
-        this.manager = _manager;
-    }
-
-    /**
-     * Returns the service manager of this Serviceable.
-     * @return A service manager.
-     */
-    public ServiceManager getManager() {
-        return this.manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
deleted file mode 100644
index 8a1282b..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.IPRangeManager;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManagerListener;
-import org.apache.lenya.ac.RoleManager;
-import org.apache.lenya.ac.UserManager;
-
-/**
- * Abstract base class for accreditable managers.
- */
-public abstract class AbstractAccreditableManager
-    extends AbstractLogEnabled
-    implements AccreditableManager, ItemManagerListener {
-    
-    /**
-     * @param logger The logger.
-     */
-    public AbstractAccreditableManager(Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    private UserManager userManager = null;
-    private GroupManager groupManager = null;
-    private IPRangeManager ipRangeManager = null;
-    private RoleManager roleManager = null;
-
-    private List itemManagerListeners = new ArrayList();
-
-    /**
-	 * Attaches an item manager listener to this accreditable manager.
-	 * @param listener An item manager listener.
-	 */
-    public void addItemManagerListener(ItemManagerListener listener) {
-        if (!this.itemManagerListeners.contains(listener)) {
-            
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Adding listener: [" + listener + "]");
-            }
-            
-            this.itemManagerListeners.add(listener);
-        }
-    }
-
-    /**
-	 * Removes an item manager listener from this accreditable manager.
-	 * @param listener An item manager listener.
-	 */
-    public void removeItemManagerListener(ItemManagerListener listener) {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Removing listener: [" + listener + "]");
-        }
-            
-        this.itemManagerListeners.remove(listener);
-    }
-
-    /**
-	 * Notifies the listeners that an item was added.
-	 * @param item The item that was added.
-	 * @throws AccessControlException when a notified listener threw this exception.
-	 */
-    protected void notifyAdded(Item item) throws AccessControlException {
-        List clone = new ArrayList(this.itemManagerListeners);
-        for (Iterator i = clone.iterator(); i.hasNext();) {
-            ItemManagerListener listener = (ItemManagerListener) i.next();
-            listener.itemAdded(item);
-        }
-    }
-
-    /**
-	 * Notifies the listeners that an item was removed.
-	 * @param item The item that was removed.
-	 * @throws AccessControlException when a notified listener threw this exception.
-	 */
-    protected void notifyRemoved(Item item) throws AccessControlException {
-        List clone = new ArrayList(this.itemManagerListeners);
-        for (Iterator i = clone.iterator(); i.hasNext();) {
-            ItemManagerListener listener = (ItemManagerListener) i.next();
-            listener.itemRemoved(item);
-        }
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.ItemManagerListener#itemAdded(org.apache.lenya.ac.Item)
-	 */
-    public void itemAdded(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was added: [" + item + "] - notifying listeners");
-        }
-        notifyAdded(item);
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.ItemManagerListener#itemRemoved(org.apache.lenya.ac.Item)
-	 */
-    public void itemRemoved(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was removed: [" + item + "] - notifying listeners");
-        }
-        notifyRemoved(item);
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.AccreditableManager#getUserManager()
-	 */
-    public UserManager getUserManager() throws AccessControlException {
-        if (this.userManager == null) {
-            this.userManager = initializeUserManager();
-            this.userManager.addItemManagerListener(this);
-        }
-        return this.userManager;
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.AccreditableManager#getGroupManager()
-	 */
-    public GroupManager getGroupManager() throws AccessControlException {
-        if (this.groupManager == null) {
-            this.groupManager = initializeGroupManager();
-            this.groupManager.addItemManagerListener(this);
-        }
-        return this.groupManager;
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.AccreditableManager#getRoleManager()
-	 */
-    public RoleManager getRoleManager() throws AccessControlException {
-        if (this.roleManager == null) {
-            this.roleManager = initializeRoleManager();
-            this.roleManager.addItemManagerListener(this);
-        }
-        return this.roleManager;
-    }
-
-    /**
-	 * @see org.apache.lenya.ac.AccreditableManager#getIPRangeManager()
-	 */
-    public IPRangeManager getIPRangeManager() throws AccessControlException {
-        if (this.ipRangeManager == null) {
-            this.ipRangeManager = initializeIPRangeManager();
-            this.ipRangeManager.addItemManagerListener(this);
-        }
-        return this.ipRangeManager;
-    }
-
-    /**
-	 * Initializes the group manager.
-	 * 
-     * @return A group manager.
-	 * @throws AccessControlException when something went wrong.
-	 */
-    protected abstract GroupManager initializeGroupManager() throws AccessControlException;
-
-    /**
-	 * Initializes the IP range manager.
-	 * 
-     * @return An IP range manager.
-	 * @throws AccessControlException when something went wrong.
-	 */
-    protected abstract IPRangeManager initializeIPRangeManager() throws AccessControlException;
-
-    /**
-	 * Initializes the role manager.
-	 * 
-     * @return A role manager.
-	 * @throws AccessControlException when something went wrong.
-	 */
-    protected abstract RoleManager initializeRoleManager() throws AccessControlException;
-
-    /**
-	 * Initializes the user manager.
-	 * 
-     * @return A user manager.
-	 * @throws AccessControlException when something went wrong.
-	 */
-    protected abstract UserManager initializeUserManager() throws AccessControlException;
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroup.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroup.java
deleted file mode 100644
index 2f3e04b..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroup.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.ItemManager;
-
-
-/**
- * A group is a set of {@link Groupable}s.
- */
-public abstract class AbstractGroup extends AbstractItem implements Accreditable, Group {
-    
-    /**
-     * Creates a new group.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public AbstractGroup(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Creates a new group.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id The group ID.
-     */
-    public AbstractGroup(ItemManager itemManager, Logger logger, String id) {
-        super(itemManager, logger);
-        setId(id);
-    }
-
-    private Set members = new HashSet();
-
-    /**
-     * Returns the members of this group.
-     * @return An array of {@link Groupable}s.
-     */
-    public Groupable[] getMembers() {
-        return (Groupable[]) this.members.toArray(new Groupable[this.members.size()]);
-    }
-
-    /**
-    * Adds a member to this group.
-     * @param member The member to add.
-     */
-    public void add(Groupable member) {
-        assert (member != null) && !this.members.contains(member);
-        this.members.add(member);
-        member.addedToGroup(this);
-    }
-
-    /**
-     * Removes a member from this group.
-     * @param member The member to remove.
-     */
-    public void remove(Groupable member) {
-        assert (member != null) && this.members.contains(member);
-        this.members.remove(member);
-        member.removedFromGroup(this);
-    }
-    
-    /**
-     * Removes all members from this group.
-     */
-    public void removeAllMembers() {
-        Groupable[] _members = getMembers();
-        for (int i = 0; i < _members.length; i++) {
-            remove(_members[i]); 
-        }
-    }
-
-    /**
-     * Returns if this group contains this member.
-     * @param member The member to check.
-     * @return A boolean value.
-     */
-    public boolean contains(Groupable member) {
-        return this.members.contains(member);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Accreditable#getAccreditables()
-     */
-    public Accreditable[] getAccreditables() {
-        Accreditable[] accreditables = { this };
-        return accreditables;
-    }
-    
-    /**
-     * Delete a group
-     * @throws AccessControlException if the delete failed
-     */
-    public void delete() throws AccessControlException {
-        removeAllMembers();
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
deleted file mode 100644
index 4bf843d..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.ItemManager;
-
-/**
- * Abstract implementation for group members.
- * @version $Id$
- */
-public abstract class AbstractGroupable extends AbstractItem implements Groupable, Accreditable {
-    
-    /**
-     * Ctor.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public AbstractGroupable(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    private Set groups = new HashSet();
-
-    /**
-     * @see org.apache.lenya.ac.Groupable#addedToGroup(org.apache.lenya.ac.Group)
-     */
-    public void addedToGroup(Group group) {
-        assert group != null;
-        assert group.contains(this);
-        this.groups.add(group);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Groupable#removedFromGroup(org.apache.lenya.ac.Group)
-     */
-    public void removedFromGroup(Group group) {
-        assert group != null;
-        assert !group.contains(this);
-        this.groups.remove(group);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Groupable#getGroups()
-     */
-    public Group[] getGroups() {
-        return (Group[]) this.groups.toArray(new Group[this.groups.size()]);
-    }
-
-    /**
-     * Removes this groupable from all its groups.
-     */
-    public void removeFromAllGroups() {
-        Group[] _groups = getGroups();
-
-        for (int i = 0; i < _groups.length; i++) {
-            _groups[i].remove(this);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Accreditable#getAccreditables()
-     */
-    public Accreditable[] getAccreditables() {
-        Set accreditables = new HashSet();
-        accreditables.add(this);
-
-        Group[] _groups = getGroups();
-
-        for (int i = 0; i < _groups.length; i++) {
-            Accreditable[] groupAccreditables = _groups[i].getAccreditables();
-            accreditables.addAll(Arrays.asList(groupAccreditables));
-        }
-
-        return (Accreditable[]) accreditables.toArray(new Accreditable[accreditables.size()]);
-    }
-    
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
deleted file mode 100644
index c60b91a..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.io.File;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.net.InetAddressUtil;
-
-/**
- * <p>
- * A range of IP addresses, expressed by a network address and a subnet mask.
- * </p>
- * <p>
- * Note: this class does not enforce that the network address and the subnet mask have the same size
- * (i.e. either both IPv4 or both IPv6 addresses). If the the network address and subnet mask have
- * different sizes, the range does not contain any hosts, that is {@link #contains(Machine)} will
- * always return <code>false</code>.
- * </p>
- */
-public abstract class AbstractIPRange extends AbstractGroupable implements IPRange {
-    /*
-     * FIXME by zisch@dals.ch: Fixed this class for IPv6. However there are still some general
-     * flaws, partly coming from the IPRange interface. A redesign of (Abstract/File)IPRange and
-     * it's helper class org.apache.lenya.net.InetAddressUtil would be a good idea. Some problems of
-     * this implementation are:
-     *  - The whole initialization seems flawed. Objects can be in an unitialized state and the
-     * class seems not to be aware of this.
-     *  - Network-address and -mask can be set independently. Therefore it cannot be enforced that
-     * these have the same size (i.e. that both are IPv4 or both are IPv6). This shows up in
-     * InetAddressUtil.contains(...), where in a case of mismatch there is no good way to inform the
-     * user about the problem. This should be done once when the AbstractIPRange object is
-     * initialized.
-     *  - Unless this functionality would be needed by other parts of Lenya or external software
-     * (which seems not to be the case ;-), InetAddressUtil should be removed (resp. deprecated)
-     * altogether, because it's mostly an internal implementation detail of AbstractIPRange.
-     * AbstractIPRange should implement the contains(...)-method internally to make use of the fact
-     * that the network- addresses and -masks validity and compatibility has already been checked
-     * when setting these. (Once the above problems have been fixed. ;-)
-     *  - Especially for IPv6 it would be nice to have the possibility to specify the netmask as the
-     * number of bits (as in "::1/128" or "127.0.0.1/24").
-     * 
-     * FIXME II (from the previous version): why are we in the business of implementing IP ranges??
-     */
-
-    /**
-     * Ctor.
-     * Initializes the the IP range with the local host (127.0.0.1/24 for IPv4, ::1/128 for IPv6).
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public AbstractIPRange(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-        try {
-            this.networkAddress = InetAddress.getLocalHost();
-            byte[] mask = null;
-            int masklen = this.networkAddress.getAddress().length;
-            if (masklen == 4) {
-                /* IPv4: */
-                /*
-                 * FIXME? by zisch@dals.ch: Should this be { -1, 0, 0, 0 }??
-                 */
-                mask = new byte[] { -1, -1, -1, 0 };
-            } else {
-                /* IPv6 (and others ;-): */
-                mask = new byte[masklen];
-                Arrays.fill(mask, (byte) -1);
-            }
-            this.subnetMask = InetAddress.getByAddress(mask);
-        } catch (UnknownHostException ignore) {
-            /*
-             * FIXME? by zisch@dals.ch: Is it safe to ignore the exception and just leave the
-             * IPRange uninitialized!?
-             */
-        }
-    }
-
-    /**
-     * Ctor.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id The IP range ID.
-     */
-    public AbstractIPRange(ItemManager itemManager, Logger logger, String id) {
-        super(itemManager, logger);
-        setId(id);
-    }
-
-    private File configurationDirectory;
-
-    /**
-     * Returns the configuration directory.
-     * @return A file object.
-     */
-    public File getConfigurationDirectory() {
-        return this.configurationDirectory;
-    }
-
-    protected void setConfigurationDirectory(File _configurationDirectory) {
-        this.configurationDirectory = _configurationDirectory;
-    }
-
-    /**
-     * Save the IP range
-     * @throws AccessControlException if the save failed
-     */
-    public abstract void save() throws AccessControlException;
-
-    /**
-     * Delete an IP range
-     * @throws AccessControlException if the delete failed
-     */
-    public void delete() throws AccessControlException {
-        removeFromAllGroups();
-    }
-
-    private InetAddress networkAddress;
-
-    /**
-     * Sets the network address. This method accepts numeric IPv4 addresses like
-     * <code>"129.168.0.32"</code>, numeric IPv6 addresses like
-     * <code>"1080::8:800:200C:417A"</code> as well as hostnames (if DNS resolution is available)
-     * like <code>"localhost"</code> or <code>"www.apache.com"</code>.
-     * @param address a <code>String</code> like <code>"192.168.0.32"</code>,
-     *            <code>"::1"</code>, ...
-     * @throws AccessControlException when the conversion of the <code>String</code> to an
-     *             <code>InetAddress</code> failed
-     * @see #setNetworkAddress(byte[])
-     */
-    public void setNetworkAddress(String address) throws AccessControlException {
-        try {
-            this.networkAddress = InetAddress.getByName(address);
-        } catch (UnknownHostException e) {
-            throw new AccessControlException("Failed to convert address [" + address + "]: ", e);
-        }
-    }
-
-    /**
-     * Sets the network address. The method accepts numeric IPv4 addresses (specified by byte arrays
-     * of length 4) or IPv6 addresses (specified by byte arrays of length 16).
-     * @param address a byte array of the length 4 or 16
-     * @throws AccessControlException when the conversion of the byte array to an InetAddress
-     *             failed.
-     * @see #setNetworkAddress(String)
-     */
-    public void setNetworkAddress(byte[] address) throws AccessControlException {
-        try {
-            this.networkAddress = InetAddress.getByAddress(address);
-        } catch (UnknownHostException e) {
-            throw new AccessControlException("Failed to convert address [" + addr2string(address)
-                    + "]: ", e);
-        }
-    }
-
-    /**
-     * Returns the network address.
-     * @return an <code>InetAddress</code> representing the network address
-     */
-    public InetAddress getNetworkAddress() {
-        return this.networkAddress;
-    }
-
-    private InetAddress subnetMask;
-
-    /**
-     * Sets the subnet mask. See {@link #setNetworkAddress(String)} for the allowed formats of the
-     * <code>mask</code> string. (However, the hostname format will usually not be of much use for
-     * setting the mask.)
-     * <p>
-     * Only valid subnet masks are accepted, for which the binary representation is a sequence of
-     * 1-bits followed by a sequence of 0-bits. For example <code>"255.128.0.0"</code> is valid
-     * while <code>"255.128.0.1"</code> is not.
-     * @param mask a <code>String</code> like <code>"255.255.255.0"</code>
-     * @throws AccessControlException when the conversion of the String to an
-     *             <code>InetAddress</code> failed.
-     * @see #setSubnetMask(byte[])
-     */
-    public void setSubnetMask(String mask) throws AccessControlException {
-        try {
-            /* use setSubnetMask(...) to check the mask-format: */
-            setSubnetMask(InetAddress.getByName(mask).getAddress());
-        } catch (final UnknownHostException e) {
-            throw new AccessControlException("Failed to convert mask [" + mask + "]: ", e);
-        }
-
-    }
-
-    /**
-     * Sets the subnet mask.
-     * <p>
-     * Only valid subnet masks are accepted, for which the binary representation is a sequence of
-     * 1-bits followed by a sequence of 0-bits. For example <code>{ 255, 128, 0, 0 }</code> is
-     * valid while <code>{ 255, 128, 0, 1 }</code> is not.
-     * @param mask A byte array of the length 4.
-     * @throws AccessControlException when the conversion of the byte array to an InetAddress
-     *             failed.
-     * @see #setSubnetMask(String)
-     */
-    public void setSubnetMask(byte[] mask) throws AccessControlException {
-        /*
-         * check for correct netmask (i.e. any number of 1-bits followed by 0-bits filling the right
-         * part of the mask) ...
-         * 
-         * FIXME: This "algorithm" is rather unelegant. There should be a better way to do it! ;-)
-         */
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("CHECK_NETMASK: check " + addr2string(mask));
-        }
-        int i = 0;
-        CHECK_NETMASK: while (i < mask.length) {
-            int b = mask[i++] & 0xff;
-            /* the initial byte(s) must be 255: */
-            if (b != 0xff) {
-                /* first byte != 255, test all possibilities: */
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("CHECK_NETMASK: first byte != 255: idx: " + (i - 1)
-                            + ", mask[idx]: 0x" + b);
-                }
-                /* check if 0: */
-                if (b == 0) {
-                    break CHECK_NETMASK;
-                }
-                for (int tst = 0xfe; tst != 0; tst = (tst << 1) & 0xff) {
-                    getLogger().debug("CHECK_NETMASK: tst == 0x" + Integer.toHexString(tst));
-                    if (b == tst) {
-                        break CHECK_NETMASK;
-                    }
-                }
-                /*
-                 * Invalid byte found, i.e. one which is not element of { 11111111, 11111110,
-                 * 11111100, 11111000, ..., 00000000 }
-                 */
-                throw new AccessControlException("Invalid byte in mask [" + addr2string(mask) + "]");
-            }
-        }
-        /* the remaining byte(s) (if any) must be 0: */
-        while (++i < mask.length) {
-            if (mask[i] != 0) {
-                /*
-                 * Invalid byte found, i.e. some non-zero byte right of the first non-zero byte.
-                 */
-                throw new AccessControlException("Invalid non-zero byte in mask ["
-                        + addr2string(mask) + "]");
-            }
-        }
-
-        /* convert the checked mask to InetAddress: */
-        try {
-            this.subnetMask = InetAddress.getByAddress(mask);
-        } catch (final UnknownHostException e) {
-            throw new AccessControlException(
-                    "Failed to convert mask [" + addr2string(mask) + "]: ", e);
-        }
-    }
-
-    /**
-     * Returns the subnet mask.
-     * @return An InetAddress value.
-     */
-    public InetAddress getSubnetMask() {
-        return this.subnetMask;
-    }
-
-    /**
-     * Checks if a network address / subnet mask combination describes a valid subnet.
-     * @param networkAddress The network address.
-     * @param subnetMask The subnet mask.
-     * @return A boolean value.
-     * @deprecated This method is currently not implemented, probably not necessary.and could be
-     *             removed in the future. Therefore it should not be used.
-     */
-    public static boolean isValidSubnet(InetAddress networkAddress, InetAddress subnetMask) {
-        /*
-         * FIXME? by zisch@dals.ch: Is this method really necessary (what for?) and (if so)
-         * shouldn't it be an internal (private) utility-method??
-         */
-        // TODO implement class
-        return false;
-    }
-
-    /**
-     * Checks if this IP range contains a certain machine.
-     * <p>
-     * Note: if the network address and the subnet mask of this IP range have different sizes (i.e.
-     * one is IPv4 and one is IPv6), this method will always return <code>false</code>, no matter
-     * what machine has been specified!
-     * <p>
-     * Further, if the machine address and the IP range (i.e. network address and subnet mask) have
-     * different sizes, the method will return <code>false</code>. (In other words: an IPv4 range
-     * never contains an IPv6 address and the other way round.)
-     * <p>
-     * Note that the above can lead to confusion. For example the local subnet in IPv4 (
-     * <code>127.0.0.0/8</code>) will <b>not </b> contain the localhost in IPv6 (
-     * <code>::1</code>), and the localhost in IPv4 (<code>127.0.0.1</code>) will <b>not </b>
-     * be contained in the local subnet in IPv6 (<code>::1/128</code>).
-     * @param machine the machine to check for
-     * @return a boolean value
-     * @see InetAddressUtil#contains
-     */
-    public boolean contains(Machine machine) {
-        /*
-         * FIXME? by zisch@dals.ch: Maybe some mapping between IPv4/v6 should be done here, p.e. for
-         * the localhost (see the javdoc comment above)? (I'm not a TCP/IP-guru, so I'm not sure
-         * about this. ;-)
-         */
-        getLogger().debug("Checking IP range: [" + getId() + "]");
-        InetAddressUtil util = new InetAddressUtil(getLogger());
-        return util.contains(this.networkAddress, this.subnetMask, machine.getAddress());
-    }
-
-    /**
-     * Format the specified numeric IP address.
-     * @param addr the raw numeric IP address
-     * @return the formatted address
-     */
-    private static String addr2string(byte[] addr) {
-        StringBuffer buf = new StringBuffer();
-        if (addr.length > 4) {
-            /* IPv6-format if more than 4 bytes: */
-            for (int i = 0; i < addr.length; i++) {
-                if (i > 0 && (i & 1) == 0) {
-                    buf.append(':');
-                }
-                String hex = Integer.toHexString(addr[i] & 0xff);
-                if (hex.length() == 1) {
-                    buf.append('0');
-                }
-                buf.append(hex);
-            }
-        } else {
-            /* IPv4-format: */
-            for (int i = 0; i < addr.length; i++) {
-                if (i > 0) {
-                    buf.append('.');
-                }
-                buf.append(addr[i] & 0xff);
-            }
-        }
-        return buf.toString();
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractItem.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractItem.java
deleted file mode 100644
index ab7ad28..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractItem.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.ItemUtil;
-import org.apache.lenya.util.Assert;
-
-/**
- * Abstract superclass for all access control objects that can be managed by an
- * {@link org.apache.lenya.ac.ItemManager}. It is only used for code reuse.
- * @version $Id$
- */
-public abstract class AbstractItem extends AbstractLogEnabled implements Item, Comparable {
-
-    private String id;
-    private String description = "";
-    private String name = "";
-
-    private ItemManager itemManager;
-
-    /**
-     * Ctor.
-     * @param itemManager The item manager this item belongs to.
-     * @param logger The logger.
-     */
-    public AbstractItem(ItemManager itemManager, Logger logger) {
-        Assert.notNull("item manager", itemManager);
-        this.itemManager = itemManager;
-
-        Assert.notNull("logger", logger);
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    /**
-     * @return The accreditable manager.
-     */
-    public AccreditableManager getAccreditableManager() {
-        return getItemManager().getAccreditableManager();
-    }
-
-    /**
-     * Sets the ID.
-     * @param string The ID.
-     */
-    protected void setId(String string) {
-        assert ItemUtil.isValidId(string);
-        this.id = string;
-    }
-
-    /**
-     * Returns the ID.
-     * @return The ID.
-     */
-    public String getId() {
-        return this.id;
-    }
-
-    /**
-     * Returns the description of this object.
-     * @return A string.
-     */
-    public String getDescription() {
-        return this.description;
-    }
-
-    /**
-     * Sets the description of this object.
-     * @param _description A string.
-     */
-    public void setDescription(String _description) {
-        assert _description != null;
-        this.description = _description;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getId();
-
-    }
-
-    /**
-     * Returns the name of this object.
-     * @return A <code>String</code>.
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * Set the full name
-     * @param _name the new full name
-     */
-    public void setName(String _name) {
-        assert _name != null;
-        this.name = _name;
-    }
-
-    /**
-     * @see java.lang.Object#equals(Object)
-     */
-    public boolean equals(Object otherObject) {
-        boolean equals = false;
-
-        if (getClass().isInstance(otherObject)) {
-            AbstractItem otherManageable = (AbstractItem) otherObject;
-            String thisMgrId = getAccreditableManager().getId();
-            String otherMgrId = otherManageable.getAccreditableManager().getId();
-            equals = getId().equals(otherManageable.getId()) && thisMgrId.equals(otherMgrId);
-        }
-        return equals;
-    }
-
-    /**
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return getId().hashCode();
-    }
-
-    /**
-     * @see java.lang.Comparable#compareTo(java.lang.Object)
-     */
-    public int compareTo(Object obj) {
-        if (obj instanceof AbstractItem) {
-            return getId().compareTo(((AbstractItem) obj).getId());
-        }
-        return 0;
-    }
-
-    public ItemManager getItemManager() {
-        return this.itemManager;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractRole.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractRole.java
deleted file mode 100644
index 6c45151..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractRole.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.util.Assert;
-
-
-/**
- * A Role embodies the privilege to do certain things.
- */
-public abstract class AbstractRole extends AbstractItem implements Role {
-    
-    /**
-     * Creates a new instance of Role.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public AbstractRole(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Creates a new instance of Role.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param name The role name.
-     */
-    public AbstractRole(ItemManager itemManager, Logger logger, String name) {
-        this(itemManager, logger);
-        Assert.notNull("name", name);
-        setName(name);
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractUser.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractUser.java
deleted file mode 100644
index 053e810..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractUser.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.Password;
-import org.apache.lenya.ac.User;
-
-/**
- * Abstract user implementation.
- * @version $Id$
- */
-public abstract class AbstractUser extends AbstractGroupable implements User {
-
-    private String email;
-    private String encryptedPassword;
-    private String defaultMenuLocale;
-    private String defaultDocumentLocale;
-
-    /**
-     * Creates a new User.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public AbstractUser(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Create a User instance
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id the user id
-     * @param fullName the full name of the user
-     * @param _email the users email address
-     * @param password the users password
-     */
-    public AbstractUser(ItemManager itemManager, Logger logger, String id, String fullName,
-            String _email, String password) {
-        this(itemManager, logger);
-        setId(id);
-        setName(fullName);
-        this.email = _email;
-        setPassword(password);
-    }
-
-    /**
-     * Get the email address
-     * @return a <code>String</code>
-     */
-    public String getEmail() {
-        return this.email;
-    }
-
-    /**
-     * Set the email address
-     * @param _email the new email address
-     */
-    public void setEmail(String _email) {
-        this.email = _email;
-    }
-
-    /**
-     * Sets the password.
-     * @param plainTextPassword The plain text passwrod.
-     */
-    public void setPassword(String plainTextPassword) {
-        this.encryptedPassword = Password.encrypt(plainTextPassword);
-    }
-
-    /**
-     * This method can be used for subclasses to set the password without it
-     * being encrypted again. Some subclass might have knowledge of the
-     * encrypted password and needs to be able to set it.
-     * @param _encryptedPassword the encrypted password
-     */
-    protected void setEncryptedPassword(String _encryptedPassword) {
-        this.encryptedPassword = _encryptedPassword;
-    }
-
-    /**
-     * Get the encrypted password
-     * @return the encrypted password
-     */
-    protected String getEncryptedPassword() {
-        return this.encryptedPassword;
-    }
-
-    /**
-     * Checks support for changing password
-     * @return true if password change is supported
-     */
-    public boolean canChangePassword() {
-        return true;
-    }
-
-    /**
-     * @return Returns the defaultDocumentLocale.
-     */
-    public String getDefaultDocumentLocale() {
-        return defaultDocumentLocale;
-    }
-
-    /**
-     * @param defaultDocumentLocale The defaultDocumentLocale to set.
-     */
-    public void setDefaultDocumentLocale(String defaultDocumentLocale) {
-        this.defaultDocumentLocale = defaultDocumentLocale;
-    }
-
-    /**
-     * @return Returns the defaultMenuLocale.
-     */
-    public String getDefaultMenuLocale() {
-        return defaultMenuLocale;
-    }
-
-    /**
-     * @param defaultMenuLocale The defaultMenuLocale to set.
-     */
-    public void setDefaultMenuLocale(String defaultMenuLocale) {
-        this.defaultMenuLocale = defaultMenuLocale;
-    }
-
-    /**
-     * Save the user
-     * @throws AccessControlException if the save failed
-     */
-    public abstract void save() throws AccessControlException;
-
-    /**
-     * Delete a user
-     * @throws AccessControlException if the delete failed
-     */
-    public void delete() throws AccessControlException {
-        removeFromAllGroups();
-    }
-
-    /**
-     * Authenticate a user. This is done by encrypting the given password and
-     * comparing this to the encryptedPassword.
-     * @param password to authenticate with
-     * @return true if the given password matches the password for this user
-     */
-    public boolean authenticate(String password) {
-        getLogger().debug("LDAP Password: " + password);
-        getLogger().debug("LDAP pw encypted: " + Password.encrypt(password));
-        getLogger().debug("LDAP orig encrypted pw: " + this.encryptedPassword);
-
-        return this.encryptedPassword.equals(Password.encrypt(password));
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
deleted file mode 100644
index ed96774..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AnonymousAuthenticator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Authenticator;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-
-
-/**
- * The anonymous authenticator authenticates to an anonymous user with no password 
- * (you just have to add a user named 'anonymous' with an arbitrary password and the permissions
- * you'd like via the admin screen). This is useful in conjunction with client certificates.
- * @version $Id$
- */
-public class AnonymousAuthenticator extends AbstractLogEnabled implements Authenticator {
-
-    
-    /**
-     * @see org.apache.lenya.ac.Authenticator#authenticate(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.cocoon.environment.Request)
-     */
-    public boolean authenticate(AccreditableManager accreditableManager, Request request)
-            throws AccessControlException {
-
-	String username = "anonymous";
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
-                    "Authenticating username [" + username + "]");
-        }
-
-        Identity identity = (Identity) request.getSession(false).getAttribute(Identity.class.getName());
-
-        User user = accreditableManager.getUserManager().getUser(username);
-
-        boolean authenticated = false;
-        if (user != null) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("User [" + user + "] authenticated.");
-            }
-
-            if (!identity.contains(user)) {
-                User oldUser = identity.getUser();
-                if (oldUser != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("Removing user [" + oldUser + "] from identity.");
-                    }
-                    identity.removeIdentifiable(oldUser);
-                }
-                identity.addIdentifiable(user);
-            }
-            authenticated = true;
-        } else {
-            if (getLogger().isDebugEnabled()) {
-                if (user == null) {
-                    getLogger().debug("No such user: [" + username + "]");
-                }
-                getLogger().debug("User [" + username + "] not authenticated.");
-            }
-        }
-        return authenticated;
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/BypassableAccessController.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/BypassableAccessController.java
deleted file mode 100644
index cc7d4e9..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/BypassableAccessController.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.sitemap.PatternException;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.regexp.RE;
-import org.apache.regexp.RECompiler;
-import org.apache.regexp.REProgram;
-import org.apache.regexp.RESyntaxException;
-
-/**
- * AccessController that can be bypassed for certain URL patterns.
- */
-public class BypassableAccessController extends DefaultAccessController {
-
-    /**
-     * Ctor.
-     */
-    public BypassableAccessController() {
-	    // do nothing
-    }
-
-    private List publicMatchers = new ArrayList();
-    private List publicExtensions = new ArrayList();
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration conf) throws ConfigurationException {
-        super.configure(conf);
-        
-        getLogger().debug("Configuring bypass patterns");
-        
-        Configuration[] publics = conf.getChildren("public");
-
-        for (int i = 0; i < publics.length; i++) {
-            String publicHref = publics[i].getValue(null);
-
-            try {
-                this.publicMatchers.add(preparePattern(publicHref));
-            } catch (PatternException pe) {
-                throw new ConfigurationException("invalid pattern for public hrefs", pe);
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("CONFIGURATION: public: " + publicHref);
-            }
-        }
-        
-        Configuration[] extensionConfigs = conf.getChildren("public-extensions");
-        for (int i = 0; i < extensionConfigs.length; i++) {
-            String extensionString = extensionConfigs[i].getValue();
-            String[] extensions = extensionString.split(",");
-            for (int e = 0; e < extensions.length; e++) {
-                String ext = extensions[e].trim();
-                if (!ext.startsWith(".")) {
-                    ext = "." + ext;
-                }
-                this.publicExtensions.add(ext);
-            }
-        }
-
-    }
-
-    /**
-     * Compile the pattern in a <code>org.apache.regexp.REProgram</code>.
-     * @param pattern The pattern to compile.
-     * @return A RE program representing the pattern.
-     * @throws PatternException when something went wrong.
-     */
-    protected REProgram preparePattern(String pattern)
-        throws PatternException {
-        if (pattern == null) {
-            throw new PatternException("null passed as a pattern", null);
-        }
-
-        if (pattern.length() == 0) {
-            pattern = "^$";
-
-            if (getLogger().isWarnEnabled()) {
-                getLogger().warn("The empty pattern string was rewritten to '^$'" +
-                    " to match for empty strings.  If you intended" +
-                    " to match all strings, please change your" + " pattern to '.*'");
-            }
-        }
-
-        try {
-            RECompiler compiler = new RECompiler();
-            REProgram program = compiler.compile(pattern);
-
-            return program;
-        } catch (RESyntaxException rse) {
-            getLogger().debug("Failed to compile the pattern '" + pattern + "'", rse);
-            throw new PatternException(rse.getMessage(), rse);
-        }
-    }
-
-    /**
-     * Matches a string using a prepared pattern program.
-     * @param preparedPattern The pattern program.
-     * @param match The string to match.
-     * @return <code>true</code> if the string matched the pattern, <code>false</code> otherwise.
-     */
-    protected boolean preparedMatch(REProgram preparedPattern, String match) {
-        boolean result = false;
-        
-        if (match != null) {
-            RE re = new RE(preparedPattern);
-            result = re.match(match);
-        }
-        return result;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.AccessController#authorize(org.apache.cocoon.environment.Request)
-     */
-    public boolean authorize(Request request)
-        throws AccessControlException {
-        
-        assert request != null;
-        
-        resolveRoles(request);
-        
-        boolean authorized = false;
-        
-        String uri = request.getRequestURI();
-        String context = request.getContextPath();
-        if (context == null) {
-            context = "";
-        }
-        uri = uri.substring(context.length());
-        
-        // Check public uris from configuration above. Should only be used during development before the implementation of a concrete authorizer.
-        int i = 0;
-        while (!authorized && i < this.publicMatchers.size()) {
-            getLogger().debug("Trying pattern: [" + this.publicMatchers.get(i) + "] with URL [" + uri + "]");
-            if (preparedMatch((REProgram) this.publicMatchers.get(i), uri)) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Permission granted for free: [" + uri + "]");
-                }
-                authorized = true;
-            }
-            i++;
-        }
-        
-        i = 0;
-        while (!authorized && i < this.publicExtensions.size()) {
-            String ext = (String) this.publicExtensions.get(i);
-            authorized = uri.endsWith(ext);
-            i++;
-        }
-        
-        if (!authorized) {
-            authorized = super.authorize(request);
-        }
-        
-        return authorized;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java
deleted file mode 100644
index 48dcb2c..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-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.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-
-/**
- * Access controller resolver composed of other access controller resolvers.
- * The member resolvers are called one after the other to resolve the access controllers.
- * 
- * @version $Id$
- */
-public class ComposableAccessControllerResolver
-    extends AbstractAccessControllerResolver
-    implements Configurable, Disposable {
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#doResolveAccessController(java.lang.String)
-     */
-    public AccessController doResolveAccessController(String url) throws AccessControlException {
-
-        AccessController controller = null;
-
-        try {
-            
-            if (this.selector == null) {
-                this.selector =
-                    (ServiceSelector) getManager().lookup(AccessControllerResolver.ROLE + "Selector");
-            }
-
-            String[] types = getResolverTypes();
-            int i = 0;
-            while (controller == null && i < types.length) {
-
-                getLogger().debug("Trying to resolve AC resolver for type [" + types[i] + "]");
-                AccessControllerResolver resolver =
-                    (AccessControllerResolver) this.selector.select(types[i]);
-                controller = resolver.resolveAccessController(url);
-                setResolver(controller, resolver);
-                getLogger().debug("Resolved access controller [" + controller + "]");
-                i++;
-            }
-
-        } catch (ServiceException e) {
-            throw new AccessControlException(e);
-        }
-
-        return controller;
-    }
-
-    private Map controllerToResolver = new HashMap();
-
-    /**
-     * @see org.apache.lenya.ac.AccessControllerResolver#release(org.apache.lenya.ac.AccessController)
-     */
-    public void release(AccessController controller) {
-        assert controller != null;
-        AccessControllerResolver resolver = getResolver(controller);
-        resolver.release(controller);
-        this.selector.release(resolver);
-    }
-
-    /**
-     * Returns the access controller resolver that was used to resolve a
-     * specific access controller.
-     * @param controller The access controller.
-     * @return An AC resolver.
-     */
-    protected AccessControllerResolver getResolver(AccessController controller) {
-        AccessControllerResolver resolver =
-            (AccessControllerResolver) this.controllerToResolver.get(controller);
-        return resolver;
-    }
-    
-    /**
-     * Sets the access controller resolver that was used to resolve a
-     * specific access controller.
-     * @param controller The access controller.
-     * @param resolver An AC resolver.
-     */
-    protected void setResolver(AccessController controller, AccessControllerResolver resolver) {
-        this.controllerToResolver.put(controller, resolver);
-    }
-
-    protected static final String RESOLVER_ELEMENT = "resolver";
-    protected static final String TYPE_ATTRIBUTE = "type";
-
-    private String[] resolverTypes;
-    private ServiceSelector selector;
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-        Configuration[] accessControllerConfigs = configuration.getChildren(RESOLVER_ELEMENT);
-        this.resolverTypes = new String[accessControllerConfigs.length];
-        for (int i = 0; i < accessControllerConfigs.length; i++) {
-            this.resolverTypes[i] = accessControllerConfigs[i].getAttribute(TYPE_ATTRIBUTE);
-        }
-    }
-
-    /**
-     * Returns the access controller types.
-     * @return A string array.
-     */
-    protected String[] getResolverTypes() {
-        return this.resolverTypes;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (this.selector != null) {
-            getManager().release(this.selector);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ConfigurableAccessControllerResolver.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ConfigurableAccessControllerResolver.java
deleted file mode 100644
index c476cad..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ConfigurableAccessControllerResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-
-/**
- * Configurable access controller resolver.
- * @version $Id$
- */
-public class ConfigurableAccessControllerResolver
-    extends AbstractAccessControllerResolver
-    implements Configurable {
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#doResolveAccessController(java.lang.String)
-     */
-    public AccessController doResolveAccessController(String webappUrl)
-        throws AccessControlException {
-        AccessController accessController = null;
-
-        try {
-            accessController =
-                (AccessController) getManager().lookup(
-                    AccessController.ROLE + "/" + this.accessControllerType);
-
-            if (accessController instanceof Configurable) {
-                ((Configurable) accessController).configure(this.accessControllerConfiguration);
-            }
-
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-
-        return accessController;
-    }
-
-    protected static final String ACCESS_CONTROLLER_ELEMENT = "access-controller";
-    protected static final String TYPE_ATTRIBUTE = "type";
-    private String accessControllerType;
-
-    private Configuration accessControllerConfiguration;
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-        this.accessControllerConfiguration = configuration.getChild(ACCESS_CONTROLLER_ELEMENT);
-        this.accessControllerType = this.accessControllerConfiguration.getAttribute(TYPE_ATTRIBUTE);
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/CredentialImpl.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/CredentialImpl.java
deleted file mode 100644
index ef14695..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/CredentialImpl.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.util.Assert;
-
-/**
- * Credential implementation.
- */
-public class CredentialImpl implements Credential {
-    private Accreditable accreditable;
-    private Role role;
-    private String method = DENY;
-
-    /**
-     * Creates a new credential object.
-     * 
-     * @param accreditable The accreditable.
-     * @param role The role.
-     */
-    public CredentialImpl(Accreditable accreditable, Role role) {
-        Assert.notNull("accreditable", accreditable);
-        this.accreditable = accreditable;
-        Assert.notNull("role", role);
-        this.role = role;
-    }
-
-    /**
-     * Returns the role of this credential.
-     * 
-     * @return A role.
-     */
-    public Role getRole() {
-        return this.role;
-    }
-
-    /**
-     * Returns the accreditable of this credential.
-     * 
-     * @return An accreditable.
-     */
-    public Accreditable getAccreditable() {
-        return this.accreditable;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "[" + getAccreditable() + ":" + getRole() + " (" + getMethod() + ")]";
-    }
-
-    /**
-     * Set the method of the credential, grant or deny
-     * 
-     * @param method A string grant or deny
-     */
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    public String getMethod() {
-        return method;
-    }
-
-    /**
-     * @return if the method is {@link Credential#GRANT}.
-     */
-    public boolean isGranted() {
-        return this.method.equals(GRANT);
-    }
-
-    /**
-     * @return if the method is {@link Credential#DENY}.
-     */
-    public boolean isDenied() {
-        return this.method.equals(DENY);
-    }
-
-    public boolean equals(Object obj) {
-        if (!getClass().isInstance(obj)) {
-            return false;
-        }
-        Credential cred = (Credential) obj;
-        return cred.getAccreditable().equals(getAccreditable()) && cred.getRole().equals(getRole());
-    }
-
-    public int hashCode() {
-        return Integer.valueOf(getAccreditable().hashCode() + getRole().hashCode()).hashCode();
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java
deleted file mode 100644
index 6b08014..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.*;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.Component;
-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.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.AccreditableManagerFactory;
-import org.apache.lenya.ac.Authenticator;
-import org.apache.lenya.ac.Authorizer;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.ItemManagerListener;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Default access controller implementation.
- * @version $Id: DefaultAccessController.java 563459 2007-08-07 12:00:20Z
- *          nettings $
- */
-public class DefaultAccessController extends AbstractLogEnabled implements AccessController,
-        Configurable, Serviceable, Disposable, ItemManagerListener {
-
-    protected static final String AUTHORIZER_ELEMENT = "authorizer";
-    protected static final String TYPE_ATTRIBUTE = "type";
-    protected static final String ACCREDITABLE_MANAGER_ELEMENT = "accreditable-manager";
-    protected static final String POLICY_MANAGER_ELEMENT = "policy-manager";
-
-    private static final String VALID_IP = "([0-9]{1,3}\\.){3}[0-9]{1,3}";
-    private ServiceManager manager;
-    private ServiceSelector authorizerSelector;
-    private ServiceSelector policyManagerSelector;
-    private AccreditableManager accreditableManager;
-    private PolicyManager policyManager;
-    private Map authorizers = new HashMap();
-    private List authorizerKeys = new ArrayList();
-    private Authenticator authenticator;
-
-    /**
-     * @see org.apache.lenya.ac.AccessController#authenticate(org.apache.cocoon.environment.Request)
-     */
-    public boolean authenticate(Request request) throws AccessControlException {
-
-        assert request != null;
-        boolean authenticated = getAuthenticator().authenticate(getAccreditableManager(), request);
-
-        return authenticated;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.AccessController#authorize(org.apache.cocoon.environment.Request)
-     */
-    public boolean authorize(Request request) throws AccessControlException {
-        assert request != null;
-
-        boolean authorized = false;
-
-        getLogger().debug("=========================================================");
-        getLogger().debug("Beginning authorization.");
-
-        resolveRoles(request);
-
-        if (hasAuthorizers()) {
-            Authorizer[] _authorizers = getAuthorizers();
-            int i = 0;
-            authorized = true;
-
-            while ((i < _authorizers.length) && authorized) {
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("---------------------------------------------------------");
-                    getLogger().debug("Invoking authorizer [" + _authorizers[i] + "]");
-                }
-
-                authorized = authorized && _authorizers[i].authorize(request);
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                            "Authorizer [" + _authorizers[i] + "] returned [" + authorized + "]");
-                }
-
-                i++;
-            }
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("=========================================================");
-            getLogger().debug("Authorization complete, result: [" + authorized + "]");
-            getLogger().debug("=========================================================");
-        }
-
-        return authorized;
-    }
-
-    protected void resolveRoles(Request request) throws AccessControlException {
-        String webappUrl = ServletHelper.getWebappURI(request);
-        Session session = request.getSession(true);
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-
-        Role[] roles;
-        if (identity.belongsTo(this.accreditableManager)) {
-            roles = this.policyManager.getGrantedRoles(this.accreditableManager, identity, webappUrl);
-        } else {
-            roles = new Role[0];
-            getLogger().debug(
-                    "No roles resolved for identity [" + identity
-                            + "] - belongs to wrong accreditable manager.");
-        }
-        saveRoles(request, roles);
-    }
-
-    /**
-     * Saves the roles of the current identity to the request.
-     * @param request The request.
-     * @param roles The roles.
-     */
-    protected void saveRoles(Request request, Role[] roles) {
-         if(getLogger().isDebugEnabled()) {
-            StringBuffer rolesBuffer = new StringBuffer();
-            for (int i = 0; i < roles.length; i++) {
-               rolesBuffer.append(" ").append(roles[i]);
-            }
-            getLogger().debug("Adding roles [" + rolesBuffer + " ] to request [" + request + "]");
-        }
-        request.setAttribute(Role.class.getName(), Arrays.asList(roles));
-    }
-
-    /**
-     * Configures or parameterizes a component, depending on the implementation
-     * as Configurable or Parameterizable.
-     * @param component The component.
-     * @param configuration The configuration to use.
-     * @throws ConfigurationException when an error occurs during configuration.
-     * @throws ParameterException when an error occurs during parameterization.
-     */
-    public static void configureOrParameterize(Component component, Configuration configuration)
-            throws ConfigurationException, ParameterException {
-        if (component instanceof Configurable) {
-            ((Configurable) component).configure(configuration);
-        }
-        if (component instanceof Parameterizable) {
-            Parameters parameters = Parameters.fromConfiguration(configuration);
-            ((Parameterizable) component).parameterize(parameters);
-        }
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration conf) throws ConfigurationException {
-
-        try {
-            setupAccreditableManager(conf);
-            setupAuthorizers(conf);
-            setupPolicyManager(conf);
-            setupAuthenticator();
-        } catch (ConfigurationException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ConfigurationException("Configuration failed: ", e);
-        }
-    }
-
-    /**
-     * Creates the accreditable manager.
-     * 
-     * @param configuration The access controller configuration.
-     * @throws ConfigurationException when the configuration failed.
-     * @throws ServiceException when something went wrong.
-     * @throws ParameterException when something went wrong.
-     */
-    protected void setupAccreditableManager(Configuration configuration)
-            throws ConfigurationException, ServiceException, ParameterException {
-        Configuration config = configuration.getChild(ACCREDITABLE_MANAGER_ELEMENT, false);
-        if (config != null) {
-            AccreditableManagerFactory factory = null;
-            try {
-                factory = (AccreditableManagerFactory) this.manager
-                        .lookup(AccreditableManagerFactory.ROLE);
-                this.accreditableManager = factory.getAccreditableManager(config);
-                this.accreditableManager.addItemManagerListener(this);
-            } finally {
-                if (factory != null) {
-                    this.manager.release(factory);
-                }
-            }
-        }
-    }
-
-    /**
-     * Creates the authorizers.
-     * 
-     * @param configuration The access controller configuration.
-     * @throws ConfigurationException when the configuration failed.
-     * @throws ServiceException when something went wrong.
-     * @throws ParameterException when something went wrong.
-     */
-    protected void setupAuthorizers(Configuration configuration) throws ServiceException,
-            ConfigurationException, ParameterException {
-        Configuration[] authorizerConfigurations = configuration.getChildren(AUTHORIZER_ELEMENT);
-        if (authorizerConfigurations.length > 0) {
-            this.authorizerSelector = (ServiceSelector) this.manager.lookup(Authorizer.ROLE
-                    + "Selector");
-
-            for (int i = 0; i < authorizerConfigurations.length; i++) {
-                String type = authorizerConfigurations[i].getAttribute(TYPE_ATTRIBUTE);
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Adding authorizer [" + type + "]");
-                }
-
-                Authorizer authorizer = (Authorizer) this.authorizerSelector.select(type);
-                this.authorizerKeys.add(type);
-                this.authorizers.put(type, authorizer);
-                configureOrParameterize(authorizer, authorizerConfigurations[i]);
-            }
-        }
-    }
-
-    /**
-     * Creates the policy manager.
-     * 
-     * @param configuration The access controller configuration.
-     * @throws ConfigurationException when the configuration failed.
-     * @throws ServiceException when something went wrong.
-     * @throws ParameterException when something went wrong.
-     */
-    protected void setupPolicyManager(Configuration configuration) throws ServiceException,
-            ConfigurationException, ParameterException {
-        Configuration policyManagerConfiguration = configuration.getChild(POLICY_MANAGER_ELEMENT,
-                false);
-        if (policyManagerConfiguration != null) {
-            String policyManagerType = policyManagerConfiguration.getAttribute(TYPE_ATTRIBUTE);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Adding policy manager type: [" + policyManagerType + "]");
-            }
-            this.policyManagerSelector = (ServiceSelector) this.manager.lookup(PolicyManager.ROLE
-                    + "Selector");
-            this.policyManager = (PolicyManager) this.policyManagerSelector
-                    .select(policyManagerType);
-            configureOrParameterize(this.policyManager, policyManagerConfiguration);
-        }
-    }
-
-    /**
-     * Sets up the authenticator.
-     * @throws ServiceException when something went wrong.
-     */
-    protected void setupAuthenticator() throws ServiceException {
-        this.authenticator = (Authenticator) this.manager.lookup(Authenticator.ROLE);
-    }
-
-    /**
-     * Set the global component manager.
-     * 
-     * @param _manager The global component manager
-     * @throws ServiceException when something went wrong.
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    protected ServiceManager getManager() {
-        return this.manager;
-    }
-
-    /**
-     * Returns the authorizers of this action.
-     * @return An array of authorizers.
-     */
-    public Authorizer[] getAuthorizers() {
-
-        Authorizer[] authorizerArray = new Authorizer[this.authorizers.size()];
-        for (int i = 0; i < this.authorizers.size(); i++) {
-            String key = (String) this.authorizerKeys.get(i);
-            authorizerArray[i] = (Authorizer) this.authorizers.get(key);
-        }
-        return authorizerArray;
-    }
-
-    /**
-     * Returns if this action has authorizers.
-     * @return A boolean value.
-     */
-    protected boolean hasAuthorizers() {
-        return !this.authorizers.isEmpty();
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-
-       if (this.accreditableManager != null) {
-            this.accreditableManager.removeItemManagerListener(this);
-        }
-
-        if (this.policyManagerSelector != null) {
-            if (this.policyManager != null) {
-                this.policyManagerSelector.release(this.policyManager);
-            }
-            getManager().release(this.policyManagerSelector);
-        }
-
-        if (this.authorizerSelector != null) {
-            Authorizer[] _authorizers = getAuthorizers();
-            for (int i = 0; i < _authorizers.length; i++) {
-                this.authorizerSelector.release(_authorizers[i]);
-            }
-            getManager().release(this.authorizerSelector);
-        }
-
-        if (this.authenticator != null) {
-            getManager().release(this.authenticator);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing [" + this + "]");
-        }
-    }
-
-    /**
-     * Returns the accreditable manager.
-     * @return An accreditable manager.
-     */
-    public AccreditableManager getAccreditableManager() {
-        return this.accreditableManager;
-    }
-
-    /**
-     * Returns the policy manager.
-     * @return A policy manager.
-     */
-    public PolicyManager getPolicyManager() {
-        return this.policyManager;
-    }
-
-    /**
-     * Returns the authenticator.
-     * @return The authenticator.
-     */
-    public Authenticator getAuthenticator() {
-        return this.authenticator;
-    }
-
-    /**
-     * Checks if this identity was initialized by this access controller.
-     * 
-     * @param identity An identity.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    public boolean ownsIdenity(Identity identity) throws AccessControlException {
-        return identity.belongsTo(getAccreditableManager());
-    }
-
-    /**
-     * @see org.apache.lenya.ac.AccessController#setupIdentity(org.apache.cocoon.environment.Request)
-     */
-    public void setupIdentity(Request request) throws AccessControlException {
-        Session session = request.getSession(true);
-        if (!hasValidIdentity(session)) {
-            Identity identity = new Identity(getLogger());
-            identity.initialize();
-            String remoteAddress = request.getRemoteAddr();
-            String clientAddress = request.getHeader("x-forwarded-for");
-
-            if (clientAddress != null) {
-                Pattern p = Pattern.compile(VALID_IP);
-                Matcher m = p.matcher(clientAddress);
-
-                if (m.find()) {
-                    remoteAddress = m.group();
-                }
-            }
-
-            getLogger().info("Remote Address to use: [" + remoteAddress + "]");
-
-            Machine machine = new Machine(remoteAddress);
-            IPRange[] ranges = this.accreditableManager.getIPRangeManager().getIPRanges();
-            for (int i = 0; i < ranges.length; i++) {
-                if (ranges[i].contains(machine)) {
-                    machine.addIPRange(ranges[i]);
-                }
-            }
-
-            identity.addIdentifiable(machine);
-            session.setAttribute(Identity.class.getName(), identity);
-        }
-    }
-
-    /**
-     * Checks if the session contains an identity that is not null and belongs
-     * to the used access controller.
-     * 
-     * @param session The current session.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected boolean hasValidIdentity(Session session) throws AccessControlException {
-        boolean valid = true;
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        if (identity == null || !ownsIdenity(identity)) {
-            valid = false;
-        }
-        return valid;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.ItemManagerListener#itemAdded(org.apache.lenya.ac.Item)
-     */
-    public void itemAdded(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was added: [" + item + "]");
-            getLogger().debug("Notifying policy manager");
-        }
-        if (item instanceof Accreditable) {
-            getPolicyManager().accreditableAdded(getAccreditableManager(), (Accreditable) item);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.ac.ItemManagerListener#itemRemoved(org.apache.lenya.ac.Item)
-     */
-    public void itemRemoved(Item item) throws AccessControlException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Item was removed: [" + item + "]");
-            getLogger().debug("Notifying policy manager");
-        }
-
-        if (!(item instanceof Role)) {
-            getPolicyManager().accreditableRemoved(getAccreditableManager(), (Accreditable) item);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultPolicy.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultPolicy.java
deleted file mode 100644
index 197d36f..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultPolicy.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.ModifiablePolicy;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-
-/**
- * A DefaultPolicy is the own policy of a certain URL (not merged).
- */
-public class DefaultPolicy implements ModifiablePolicy {
-
-    private List credentials = new ArrayList();
-
-    /**
-     * Adds a credential to this policy.
-     * 
-     * @param credential A credential.
-     */
-    public void addCredential(Credential credential) {
-        assert credential != null;
-        if (this.credentials.contains(credential)) {
-            throw new IllegalArgumentException("The credential [" + credential
-                    + "] is already contained!");
-        } else {
-            this.credentials.add(credential);
-        }
-    }
-
-    /**
-     * Adds a role to this policy for a certain accreditable and a certain role.
-     * 
-     * @param accreditable An accreditable.
-     * @param role A role.
-     */
-    public void addRole(Accreditable accreditable, Role role, String method) {
-        assert accreditable != null;
-        assert role != null;
-        CredentialImpl cred = new CredentialImpl(accreditable, role);
-        cred.setMethod(method);
-        addCredential(cred);
-    }
-
-    /**
-     * Removes a role from this policy for a certain accreditable and a certain
-     * role.
-     * 
-     * @param accreditable An accreditable.
-     * @param role A role.
-     * @throws AccessControlException if the accreditable-role pair is not
-     *         contained.
-     */
-    public void removeRole(Accreditable accreditable, Role role) throws AccessControlException {
-        assert accreditable != null;
-        assert role != null;
-        removeCredential(getCredential(accreditable, role));
-    }
-
-    /**
-     * Returns the credentials of this policy in top-down order.
-     * 
-     * @return An array of credentials.
-     */
-    public Credential[] getCredentials() {
-        return (Credential[]) this.credentials.toArray(new Credential[this.credentials.size()]);
-    }
-
-    /**
-     * Returns the credentials for a certain accreditable.
-     * 
-     * @param accreditable An accreditable.
-     * @param role
-     * @return A credential.
-     */
-    public Credential getCredential(Accreditable accreditable, Role role) {
-        Credential credential = null;
-        for (Iterator i = this.credentials.iterator(); i.hasNext();) {
-            Credential cred = (Credential) i.next();
-            if (cred.getAccreditable().equals(accreditable) && cred.getRole().equals(role)) {
-                credential = cred;
-            }
-        }
-        return credential;
-    }
-
-    private boolean isSSL;
-
-    /**
-     * @see org.apache.lenya.ac.Policy#isSSLProtected()
-     */
-    public boolean isSSLProtected() throws AccessControlException {
-        return this.isSSL;
-    }
-
-    /**
-     * Sets if this policy requires SSL protection.
-     * 
-     * @param ssl A boolean value.
-     */
-    public void setSSL(boolean ssl) {
-        this.isSSL = ssl;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Policy#isEmpty()
-     */
-    public boolean isEmpty() throws AccessControlException {
-        return getCredentials().length == 0;
-    }
-
-    /**
-     * Removes a credential.
-     * 
-     * @param credential The credential to remove.
-     * @throws AccessControlException If the credential does not exist.
-     */
-    protected void removeCredential(Credential credential) throws AccessControlException {
-        if (this.credentials.contains(credential)) {
-            this.credentials.remove(credential);
-        }
-    }
-
-    /**
-     * Removes all roles for a certain accreditable.
-     * 
-     * @param accreditable The accreditable to remove all roles for.
-     * @throws AccessControlException If no credential exists for this
-     *         accreditable.
-     */
-    public void removeRoles(Accreditable accreditable) throws AccessControlException {
-        Credential[] credentials = getCredentials();
-        for (int credIndex = 0; credIndex < credentials.length; credIndex++) {
-            Credential credential = credentials[credIndex];
-            if (credential.getAccreditable().equals(accreditable)) {
-                this.credentials.remove(credential);
-            }
-        }
-    }
-
-    public Credential[] getCredentials(Identity identity) throws AccessControlException {
-        Accreditable[] accreditables = identity.getAccreditables();
-        Credential[] credentials = getCredentials();
-        Set returnCredential = new LinkedHashSet();
-        for (int credIndex = 0; credIndex < credentials.length; credIndex++) {
-            Credential credential = credentials[credIndex];
-            for (int accrIndex = 0; accrIndex < accreditables.length; accrIndex++) {
-                Accreditable accreditable = accreditables[accrIndex];
-                if (credential.getAccreditable().equals(accreditable)) {
-                    returnCredential.add(credential);
-                }
-            }
-        }
-        return (Credential[]) returnCredential.toArray(new Credential[returnCredential.size()]);
-    }
-
-    public void moveRoleDown(Accreditable accreditable, Role role) throws AccessControlException {
-        moveRole(accreditable, role, true);
-    }
-
-    private void moveRole(Accreditable accreditable, Role role, boolean down) {
-
-        Credential cred = getCredential(accreditable, role);
-        int position = this.credentials.indexOf(cred);
-
-        if (!down && position > 0) {
-            this.credentials.remove(cred);
-            this.credentials.add(position - 1, cred);
-        } else if (down && position < this.credentials.size() - 1) {
-            this.credentials.remove(cred);
-            this.credentials.add(position + 1, cred);
-        }
-    }
-
-    public void moveRoleUp(Accreditable accreditable, Role role) throws AccessControlException {
-        moveRole(accreditable, role, false);
-    }
-
-    public int check(Identity identity, Role role) throws AccessControlException {
-        Credential[] credentials = getCredentials();
-        for (int i = credentials.length - 1; i >= 0; i--) {
-            if (matches(identity, credentials[i].getAccreditable())
-                    && credentials[i].getRole().equals(role)) {
-                if (credentials[i].getMethod().equals(CredentialImpl.GRANT)) {
-                    return Policy.RESULT_GRANTED;
-                } else {
-                    return Policy.RESULT_DENIED;
-                }
-            }
-        }
-        return Policy.RESULT_NOT_MATCHED;
-    }
-
-    protected boolean matches(Identity identity, Accreditable accreditable) {
-        Accreditable[] accrs = identity.getAccreditables();
-        return Arrays.asList(accrs).contains(accreditable);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ItemConfiguration.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ItemConfiguration.java
deleted file mode 100644
index 30a0434..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/ItemConfiguration.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.lenya.ac.AccessControlException;
-
-/**
- * Use this class to create configurations from {@link AbstractItem}s or
- * to build {@link AbstractItem}s from configurations.
- */
-public class ItemConfiguration {
-    
-    /**
-     * Ctor.
-     */
-    public ItemConfiguration() {
-	    // do nothing
-    }
-    
-    /**
-     * Saves the ID, name and description of the Manageable to the configuration.
-     * @param manageable A manageable.
-     * @param configuration A configuration.
-     */
-    public void save(AbstractItem manageable, DefaultConfiguration configuration) {
-        configuration.setAttribute(ATTRIBUTE_CLASS, manageable.getClass().getName());
-        configuration.setAttribute(ATTRIBUTE_ID, manageable.getId());
-
-        DefaultConfiguration child = null;
-
-        // add name node
-        child = new DefaultConfiguration(ELEMENT_NAME);
-        child.setValue(manageable.getName());
-        configuration.addChild(child);
-
-        // add description node
-        child = new DefaultConfiguration(ELEMENT_DESCRIPTION);
-        child.setValue(manageable.getDescription());
-        configuration.addChild(child);
-
-    }
-
-    protected static final String ELEMENT_NAME = "name";
-    protected static final String ELEMENT_DESCRIPTION = "description";
-    protected static final String ATTRIBUTE_ID = "id";
-    protected static final String ATTRIBUTE_CLASS = "class";
-
-    /**
-     * Configures a Manageable.
-     * @param manageable The manageable.
-     * @param configuration The configuration.
-     * @throws ConfigurationException when something went wrong.
-     */    
-    public void configure(AbstractItem manageable, Configuration configuration) throws ConfigurationException {
-        manageable.setId(configuration.getAttribute(ATTRIBUTE_ID));
-        manageable.setName(configuration.getChild(ELEMENT_NAME).getValue(""));
-        manageable.setDescription(configuration.getChild(ELEMENT_DESCRIPTION).getValue(""));
-    }
-
-    /**
-     * Returns the class name of an item.
-     * @param config The item configuration.
-     * @return The class name.
-     * @throws AccessControlException when something went wrong.
-     */
-    public static String getItemClass(Configuration config) throws AccessControlException {
-        String klass = null;
-
-        try {
-            klass = config.getAttribute(ItemConfiguration.ATTRIBUTE_CLASS);
-        } catch (ConfigurationException e) {
-            String errorMsg =
-                "Exception when extracting class name from identity file: "
-                    + klass
-                    + config.getAttributeNames();
-            throw new AccessControlException(errorMsg, e);
-        }
-        return klass;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
deleted file mode 100644
index e1a5006..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/PolicyBuilder.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.io.InputStream;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.ModifiablePolicy;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.World;
-import org.apache.lenya.ac.cache.BuildException;
-import org.apache.lenya.ac.cache.InputStreamBuilder;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Builds policies from input streams.
- * @version $Id$
- */
-public class PolicyBuilder implements InputStreamBuilder {
-
-    /**
-     * Ctor.
-     * @param _accreditableManager An accreditable manager.
-     */
-    public PolicyBuilder(AccreditableManager _accreditableManager) {
-        assert _accreditableManager != null;
-        this.accreditableManager = _accreditableManager;
-    }
-    
-    /**
-     * Returns the accreditable manager.
-     * @return An accreditable manager.
-     */
-    public AccreditableManager getAccreditableManager() {
-        return this.accreditableManager;
-    }
-
-    private AccreditableManager accreditableManager;
-
-    protected static final String POLICY_ELEMENT = "policy";
-    protected static final String GROUP_ELEMENT = "group";
-    protected static final String USER_ELEMENT = "user";
-    protected static final String ROLE_ELEMENT = "role";
-    protected static final String WORLD_ELEMENT = "world";
-    protected static final String IP_RANGE_ELEMENT = "ip-range";
-    protected static final String ID_ATTRIBUTE = "id";
-    protected static final String SSL_ATTRIBUTE = "ssl";
-    protected static final String METHOD_ATTRIBUTE = "method";
-    
-    /**
-     * Builds a policy from an input stream.
-     * @param stream The input stream to read the policy from.
-     * @return A policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    public ModifiablePolicy buildPolicy(InputStream stream)
-        throws AccessControlException {
-
-        Document document;
-
-        try {
-            document = DocumentHelper.readDocument(stream);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-
-        return buildPolicy(document);
-    }
-
-    /**
-     * Builds a policy from an XML document.
-     * @param document The XML document.
-     * @return A policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    public ModifiablePolicy buildPolicy(Document document)
-        throws AccessControlException {
-
-        DefaultPolicy policy = new DefaultPolicy();
-        Element policyElement = document.getDocumentElement();
-        assert policyElement.getLocalName().equals(POLICY_ELEMENT);
-
-        NamespaceHelper helper =
-            new NamespaceHelper(
-                AccessController.NAMESPACE,
-                AccessController.DEFAULT_PREFIX,
-                document);
-
-        Element[] credentialElements = helper.getChildren(policyElement);
-
-        for (int i = 0; i < credentialElements.length; i++) {
-            Accreditable accreditable = null;
-
-            String id = credentialElements[i].getAttribute(ID_ATTRIBUTE);
-            accreditable = getAccreditable(credentialElements[i].getLocalName(), id);
-
-            Element[] roleElements = helper.getChildren(credentialElements[i], ROLE_ELEMENT);
-
-            for (int j = 0; j < roleElements.length; j++) {
-                String roleId = roleElements[j].getAttribute(ID_ATTRIBUTE);
-                Role role = getAccreditableManager().getRoleManager().getRole(roleId);
-                CredentialImpl credential = new CredentialImpl(accreditable, role);
-                String method = roleElements[j].getAttribute(METHOD_ATTRIBUTE);
-                // If method is not set, we assume DENY 
-                if (method.length() == 0) method = CredentialImpl.DENY;
-                credential.setMethod(method);
-                policy.addCredential(credential);
-            }
-
-        }
-        
-        boolean ssl = false;
-        String sslString = policyElement.getAttribute(SSL_ATTRIBUTE);
-        if (sslString != null) {
-            ssl = Boolean.valueOf(sslString).booleanValue();
-        }
-        policy.setSSL(ssl);
-
-        return policy;
-    }
-
-    /**
-     * Creates an accredtiable for an element.
-     * @param elementName The elment name.
-     * @param id The ID of the accreditable.
-     * @return An accreditable.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Accreditable getAccreditable(
-        String elementName,
-        String id)
-        throws AccessControlException {
-        Accreditable accreditable = null;
-
-        if (elementName.equals(USER_ELEMENT)) {
-            accreditable = getAccreditableManager().getUserManager().getUser(id);
-        } else if (elementName.equals(GROUP_ELEMENT)) {
-            accreditable = getAccreditableManager().getGroupManager().getGroup(id);
-        } else if (elementName.equals(WORLD_ELEMENT)) {
-            accreditable = World.getInstance();
-        } else if (elementName.equals(IP_RANGE_ELEMENT)) {
-            accreditable = getAccreditableManager().getIPRangeManager().getIPRange(id);
-        }
-
-        if (accreditable == null) {
-            throw new AccessControlException(
-                "Unknown accreditable [" + elementName + "] with ID [" + id + "]");
-        }
-
-        return accreditable;
-    }
-
-    /**
-     * Saves a policy to an XML document.
-     * @param policy The policy to save.
-     * @return A DOM document.
-     * @throws AccessControlException when something went wrong.
-     */
-    public static Document savePolicy(Policy policy) throws AccessControlException {
-        NamespaceHelper helper;
-
-        try {
-            helper =
-                new NamespaceHelper(
-                    AccessController.NAMESPACE,
-                    AccessController.DEFAULT_PREFIX,
-                    POLICY_ELEMENT);
-        } catch (ParserConfigurationException e) {
-            throw new AccessControlException(e);
-        }
-
-        Credential[] credentials = ((DefaultPolicy) policy).getCredentials();
-        Element policyElement = helper.getDocument().getDocumentElement();
-
-        for (int i = 0; i < credentials.length; i++) {
-            Accreditable accreditable = credentials[i].getAccreditable();
-            Element accreditableElement = save(accreditable, helper);
-            
-            Role role = credentials[i].getRole();
-            Element roleElement = helper.createElement(ROLE_ELEMENT);
-            roleElement.setAttribute(ID_ATTRIBUTE, role.getId());
-            roleElement.setAttribute(METHOD_ATTRIBUTE, credentials[i].getMethod());
-            accreditableElement.appendChild(roleElement);
-            
-            policyElement.appendChild(accreditableElement);
-        }
-        
-        policyElement.setAttribute(SSL_ATTRIBUTE, Boolean.toString(policy.isSSLProtected()));
-
-        return helper.getDocument();
-    }
-
-    /**
-     * Saves an accreditable to an XML element.
-     * @param accreditable The accreditable.
-     * @param helper The namespace helper to be used.
-     * @return An XML element.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected static Element save(Accreditable accreditable, NamespaceHelper helper)
-        throws AccessControlException {
-        String localName = null;
-        String id = null;
-
-        if (accreditable instanceof User) {
-            localName = USER_ELEMENT;
-            id = ((User) accreditable).getId();
-        } else if (accreditable instanceof AbstractGroup) {
-            localName = GROUP_ELEMENT;
-            id = ((AbstractGroup) accreditable).getId();
-        } else if (accreditable instanceof World) {
-            localName = WORLD_ELEMENT;
-        } else if (accreditable instanceof AbstractIPRange) {
-            localName = IP_RANGE_ELEMENT;
-            id = ((AbstractIPRange) accreditable).getId();
-        }
-
-        if (localName == null) {
-            throw new AccessControlException("Could not save accreditable [" + accreditable + "]");
-        }
-
-        Element element = helper.createElement(localName);
-
-        if (id != null) {
-            element.setAttribute(ID_ATTRIBUTE, id);
-        }
-
-        return element;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.cache.InputStreamBuilder#build(java.io.InputStream)
-     */
-    public Object build(InputStream stream) throws BuildException {
-        Object value = null;
-        try {
-            value = buildPolicy(stream);
-        } catch (AccessControlException e) {
-            throw new BuildException(e);
-        }
-        return value;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/RemovedAccreditablePolicyBuilder.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/RemovedAccreditablePolicyBuilder.java
deleted file mode 100644
index 02bea34..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/RemovedAccreditablePolicyBuilder.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.User;
-
-/**
- * A PolicyBuilder which can be used after an accreditable was removed.
- */
-public class RemovedAccreditablePolicyBuilder extends PolicyBuilder {
-
-    /**
-     * Ctor.
-     * @param accreditableManager The accreditable manager.
-     */
-    public RemovedAccreditablePolicyBuilder(AccreditableManager accreditableManager) {
-        super(accreditableManager);
-    }
-
-    private Accreditable removedAccreditable;
-
-    /**
-     * Sets the removed accreditable.
-     * 
-     * @param accreditable An accreditable.
-     */
-    public void setRemovedAccreditable(Accreditable accreditable) {
-        this.removedAccreditable = accreditable;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.PolicyBuilder#getAccreditable(java.lang.String, java.lang.String)
-     */
-    protected Accreditable getAccreditable(String elementName, String id)
-        throws AccessControlException {
-
-        Accreditable accreditable;
-
-        if (this.removedAccreditable instanceof User
-            && elementName.equals(USER_ELEMENT)
-            && ((User) this.removedAccreditable).getId().equals(id)) {
-            accreditable = this.removedAccreditable;
-        } else if (
-            this.removedAccreditable instanceof Group
-                && elementName.equals(GROUP_ELEMENT)
-                && ((Group) this.removedAccreditable).getId().equals(id)) {
-            accreditable = this.removedAccreditable;
-        } else if (
-            this.removedAccreditable instanceof IPRange
-                && elementName.equals(IP_RANGE_ELEMENT)
-                && ((IPRange) this.removedAccreditable).getId().equals(id)) {
-            accreditable = this.removedAccreditable;
-        } else {
-
-            accreditable = super.getAccreditable(elementName, id);
-        }
-        return accreditable;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/URLPolicy.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/URLPolicy.java
deleted file mode 100644
index 6ac811f..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/URLPolicy.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.InheritingPolicyManager;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-
-/**
- * A policy at a certain URL. The final policy is computed by merging the
- * subtree policies of all ancestor-or-self directories with the URL policy of
- * the actual URL.
- */
-public class URLPolicy implements Policy {
-
-    /**
-     * Returns the resulting policy for a certain URL.
-     * 
-     * @param controller
-     *            The acccess controller.
-     * @param _url
-     *            The URL.
-     * @param manager
-     *            The policy manager.
-     */
-    public URLPolicy(AccreditableManager controller, String _url,
-            InheritingPolicyManager manager) {
-        assert _url != null;
-        this.url = _url;
-
-        assert manager != null;
-        this.policyManager = manager;
-
-        assert controller != null;
-        this.accreditableManager = controller;
-    }
-
-    private String url;
-
-    private InheritingPolicyManager policyManager;
-
-    private AccreditableManager accreditableManager;
-
-    private Policy[] policies = null;
-
-    private Credential[] credentials = null;
-
-    /**
-     * Obtains the policies from the policy manager. This method is expensive
-     * and therefore only called when needed.
-     * 
-     * @throws AccessControlException
-     *             when something went wrong.
-     */
-    protected void obtainPolicies() throws AccessControlException {
-        if (this.policies == null) {
-            this.policies = getPolicyManager().getPolicies(
-                    getAccreditableManager(), getUrl());
-        }
-    }
-
-    /**
-     * Obtains the credentials from the policy manager. This method is expensive
-     * and therefore only called when needed.
-     * 
-     * @throws AccessControlException
-     *             when something went wrong.
-     */
-    protected void obtainCredentials() throws AccessControlException {
-        if (this.credentials == null) {
-            this.credentials = getPolicyManager().getCredentials(
-                    getAccreditableManager(), getUrl());
-        }
-    }
-
-    static final String[] VISITOR_ROLES = { "visitor", "visit" };
-
-    static final String[] ADMINISTRATOR_ROLES = { "administrator", "admin",
-            "organize" };
-
-    static final String[] AUTHOR_ROLES = { "author", "edit" };
-
-    /**
-     * @see org.apache.lenya.ac.Policy#check(org.apache.lenya.ac.Identity, org.apache.lenya.ac.Role)
-     * Iterate the policy tree bottom-up.
-     */
-    public int check(Identity identity, Role role) throws AccessControlException {
-        obtainPolicies();
-        
-        for (int i = 0; i < this.policies.length; i++) {
-            int result = this.policies[i].check(identity, role);
-            if (result == Policy.RESULT_GRANTED || result == Policy.RESULT_DENIED) {
-                return result;
-            }
-        }
-        return Policy.RESULT_NOT_MATCHED;
-    }
-
-    /**
-     * Returns the visitor role.
-     * 
-     * @param manager
-     *            The accreditable manager.
-     * @return A role.
-     * @throws AccessControlException
-     *             when something went wrong.
-     */
-    public static Role getVisitorRole(AccreditableManager manager)
-            throws AccessControlException {
-        Role visitorRole = null;
-        for (int i = 0; i < VISITOR_ROLES.length; i++) {
-            Role role = manager.getRoleManager().getRole(VISITOR_ROLES[i]);
-            if (role != null) {
-                visitorRole = role;
-            }
-        }
-        return visitorRole;
-    }
-
-    /**
-     * Returns the administrator role.
-     * 
-     * @param manager
-     *            The accreditable manager.
-     * @return A role.
-     * @throws AccessControlException
-     *             when something went wrong.
-     */
-    public static Role getAdministratorRole(AccreditableManager manager)
-            throws AccessControlException {
-        Role administratorRole = null;
-        for (int i = 0; i < ADMINISTRATOR_ROLES.length; i++) {
-            Role role = manager.getRoleManager()
-                    .getRole(ADMINISTRATOR_ROLES[i]);
-            if (role != null) {
-                administratorRole = role;
-            }
-        }
-        return administratorRole;
-    }
-
-    /**
-     * Returns the author role.
-     * 
-     * @param manager
-     *            The accreditable manager.
-     * @return A role.
-     * @throws AccessControlException
-     *             when something went wrong.
-     */
-    public static Role getAuthorRole(AccreditableManager manager)
-            throws AccessControlException {
-        Role administratorRole = null;
-        for (int i = 0; i < AUTHOR_ROLES.length; i++) {
-            Role role = manager.getRoleManager().getRole(AUTHOR_ROLES[i]);
-            if (role != null) {
-                administratorRole = role;
-            }
-        }
-        return administratorRole;
-    }
-
-    /**
-     * Returns the URL of this policy.
-     * 
-     * @return The URL of this policy.
-     */
-    public String getUrl() {
-        return this.url;
-    }
-
-    /**
-     * Returns the policy builder.
-     * 
-     * @return A policy builder.
-     */
-    public InheritingPolicyManager getPolicyManager() {
-        return this.policyManager;
-    }
-
-    /**
-     * Returns the access controller.
-     * 
-     * @return An access controller.
-     */
-    public AccreditableManager getAccreditableManager() {
-        return this.accreditableManager;
-    }
-
-    /**
-     * The URL policy requires SSL protection if one of its member policies
-     * requires SSL protection.
-     * 
-     * @see org.apache.lenya.ac.Policy#isSSLProtected()
-     */
-    public boolean isSSLProtected() throws AccessControlException {
-        obtainPolicies();
-
-        boolean ssl = false;
-
-        int i = 0;
-        while (!ssl && i < this.policies.length) {
-            ssl = ssl || this.policies[i].isSSLProtected();
-            i++;
-        }
-
-        return ssl;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Policy#isEmpty()
-     */
-    public boolean isEmpty() throws AccessControlException {
-        boolean empty = true;
-
-        int i = 0;
-        while (empty && i < this.policies.length) {
-            empty = empty && this.policies[i].isEmpty();
-            i++;
-        }
-
-        return empty;
-    }
-
-    public Credential[] getCredentials() throws AccessControlException {
-        obtainCredentials();
-        Set credentials = new LinkedHashSet();
-
-        for (int accrIndex = 0; accrIndex < this.credentials.length; accrIndex++) {
-            credentials.add(this.credentials[accrIndex]);
-        }
-        return (Credential[]) credentials.toArray(new Credential[credentials
-                .size()]);
-    }
-
-    public Credential[] getCredentials(Identity identity)
-            throws AccessControlException {
-        Accreditable[] accreditables = identity.getAccreditables();
-        Credential[] credentials = getCredentials();
-        Set returnCredential = new LinkedHashSet();
-
-        for (int credIndex = 0; credIndex < credentials.length; credIndex++) {
-            Credential credential = credentials[credIndex];
-            
-            for (int accrIndex = 0; accrIndex < accreditables.length; accrIndex++) {
-                Accreditable accreditable = accreditables[accrIndex];
-
-                if (credential.getAccreditable().equals(accreditable)) {
-                    returnCredential.add(credential);
-                }
-            }
-        }
-
-        return (Credential[]) returnCredential
-                .toArray(new Credential[returnCredential.size()]);
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
deleted file mode 100644
index 089932c..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/UserAuthenticator.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Authenticator;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-
-/**
- * User authenticator.
- * @version $Id$
- */
-public class UserAuthenticator extends AbstractLogEnabled implements Authenticator {
-
-    /**
-     * @see org.apache.lenya.ac.Authenticator#authenticate(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.cocoon.environment.Request) Note that this implementation first checks if the
-     *      user has authenticated over basic HTTP authentication. If yes, it uses these
-     *      credentials.
-     */
-    public boolean authenticate(AccreditableManager accreditableManager, Request request)
-            throws AccessControlException {
-
-        String encoded = "";
-        String unencoded = "";
-        String username = "";
-        String password = "";
-        if (request.getHeader("Authorization") != null) {
-            encoded = request.getHeader("Authorization");
-        }
-        if (encoded.indexOf("Basic") > -1) {
-            encoded = encoded.trim();
-            encoded = encoded.substring(encoded.indexOf(' ') + 1);
-            unencoded = new String(Base64.decodeBase64(encoded.getBytes()));
-        }
-        if (unencoded.indexOf(":") - 1 > -1) {
-            username = unencoded.substring(0, unencoded.indexOf(":"));
-            password = unencoded.substring(unencoded.indexOf(":") + 1);
-        }
-
-        if (encoded.length() == 0 && request.getParameter("username") != null) {
-            username = request.getParameter("username").toLowerCase();
-            password = request.getParameter("password");
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
-                    "Authenticating username [" + username + "] with password [" + password + "]");
-        }
-
-        if (username == null || password == null) {
-            throw new AccessControlException("Username or password is null!");
-        }
-
-        Identity identity = (Identity) request.getSession(false).getAttribute(
-                Identity.class.getName());
-
-        if (identity == null) {
-            throw new AccessControlException("The session does not contain the identity!");
-        }
-
-        boolean authenticated = authenticate(accreditableManager, username, password, identity);
-        return authenticated;
-    }
-
-    /**
-     * Authenticates a user with a given username and password. When the authentication is
-     * successful, the user is added to the identity.
-     * @param accreditableManager The accreditable manager.
-     * @param username The username.
-     * @param password The password.
-     * @param identity The identity to add the user to.
-     * @throws AccessControlException when something went wrong.
-     * @return <code>true</code> if the user was authenticated, <code>false</code> otherwise.
-     */
-    protected boolean authenticate(AccreditableManager accreditableManager, String username,
-            String password, Identity identity) throws AccessControlException {
-
-        User user = accreditableManager.getUserManager().getUser(username);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Authenticating user: [" + user + "]");
-        }
-
-        boolean authenticated = false;
-        if (user != null && user.authenticate(password)) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("User [" + user + "] authenticated.");
-            }
-
-            if (!identity.contains(user)) {
-                User oldUser = identity.getUser();
-                if (oldUser != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("Removing user [" + oldUser + "] from identity.");
-                    }
-                    identity.removeIdentifiable(oldUser);
-                }
-                identity.addIdentifiable(user);
-            }
-            authenticated = true;
-        } else {
-            if (getLogger().isDebugEnabled()) {
-                if (user == null) {
-                    getLogger().debug("No such user: [" + username + "]");
-                }
-                getLogger().debug("User [" + username + "] not authenticated.");
-            }
-        }
-
-        return authenticated;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
deleted file mode 100644
index c85dd3a..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.ac;
-
-import org.apache.avalon.framework.activity.Disposable;
-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.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.InheritingPolicyManager;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.impl.DefaultAccessController;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * A PolicyManager which is capable of mapping all URLs of a document to the
- * appropriate canonical URL, e.g. <code>/foo/bar_de.print.html</code> is
- * mapped to <code>/foo/bar</code>.
- */
-public class DocumentPolicyManagerWrapper extends AbstractLogEnabled implements
-        InheritingPolicyManager, Serviceable, Configurable, Disposable {
-
-    /**
-     * Ctor.
-     */
-    public DocumentPolicyManagerWrapper() {
-        // do nothing
-    }
-
-    private InheritingPolicyManager policyManager;
-    private ServiceSelector policyManagerSelector;
-
-    /**
-     * Returns the URI which is used to obtain the policy for a webapp URL.
-     * @param webappUrl The web application URL.
-     * @return A string.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected String getPolicyURL(String webappUrl)
-            throws AccessControlException {
-        return getPolicyUrlCorrect(webappUrl);
-    }
-    
-    /**
-     * Returns the URI which is used to obtain the policy for a webapp URL.
-     * @param webappUrl The web application URL.
-     * @return A string.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected String getPolicyUrlCorrect(String webappUrl)
-            throws AccessControlException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Resolving policy for webapp URL [" + webappUrl + "]");
-        }
-
-        String url = null;
-        ContextUtility contextUtility = null;
-        try {
-            contextUtility = (ContextUtility) serviceManager.lookup(ContextUtility.ROLE);
-            Session session = RepositoryUtil.getSession(this.serviceManager, contextUtility
-                    .getRequest());
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.serviceManager, session);
-
-            // always check for authoring URL since the live document doesn't
-            // have to exist
-
-            URLInformation info = new URLInformation(webappUrl);
-            // Danger, Will Robinson! If area or pubId is null, webappUrl.substring()
-            // will be out of bounds, because null becomes "null" in string concatenation
-            String pubId = info.getPublicationId();
-            String area = info.getArea();
-            String prefix = "/" + ((pubId != null) ? pubId + "/" : "");
-            // String prefix = "/" + pubId + "/";
-            String prefixWithArea = prefix + ((area != null) ? area : "");
-            // String prefixWithArea = prefix + area;
-            String authoringUrl = prefix + Publication.AUTHORING_AREA
-                    + ((webappUrl.length()>prefixWithArea.length())?webappUrl.substring(prefixWithArea.length()):"/");
-
-            if (map.isDocument(authoringUrl)) {
-                Document authoringDoc = map.getFromURL(authoringUrl);
-                url = "/" + authoringDoc.getPublication().getId() + "/" + area
-                        + authoringDoc.getPath();
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("    Document exists");
-                    getLogger().debug("    Document path: [" + authoringDoc.getPath() + "]");
-                }
-            }
-        } catch (ServiceException e) {
-            throw new AccessControlException("Error looking up ContextUtility component", e);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (contextUtility != null) {
-                serviceManager.release(contextUtility);
-            }
-        }
-
-        if (url == null) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("    Document does not exist.");
-            }
-            url = webappUrl;
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("    Using URL: [" + url + "]");
-        }
-        return url;
-    }
-
-    protected String getPolicyUrlFast(String webappUrl)
-            throws AccessControlException {
-        String strippedUrl = strip(strip(webappUrl, '.'), '_');
-        return strippedUrl;
-    }
-
-    protected String strip(String strippedUrl, char delimiter) {
-        int lastDotIndex = strippedUrl.lastIndexOf(delimiter);
-        if (lastDotIndex != -1) {
-            strippedUrl = strippedUrl.substring(0, lastDotIndex);
-        }
-        return strippedUrl;
-    }
-
-    /**
-     * Returns the publication for a certain URL.
-     * @param url The webapp url.
-     * @return A publication.
-     * @throws AccessControlException when the publication could not be created.
-     */
-    protected Publication getPublication(String url) throws AccessControlException {
-        getLogger().debug("Building publication");
-
-        ContextUtility util = null;
-        try {
-            util = (ContextUtility) this.serviceManager.lookup(ContextUtility.ROLE);
-            Request request = util.getRequest();
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.serviceManager, request);
-            return PublicationUtil.getPublicationFromUrl(this.serviceManager, factory, url);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (util != null) {
-                this.serviceManager.release(util);
-            }
-        }
-    }
-
-    private ServiceManager serviceManager;
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    protected ServiceManager getServiceManager() {
-        return this.serviceManager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.serviceManager = manager;
-    }
-
-    /**
-     * @return Returns the policyManager.
-     */
-    public InheritingPolicyManager getPolicyManager() {
-        return this.policyManager;
-    }
-
-    /**
-     * @param _policyManager The policyManager to set.
-     */
-    public void setPolicyManager(InheritingPolicyManager _policyManager) {
-        this.policyManager = _policyManager;
-    }
-
-    public Policy buildSubtreePolicy(AccreditableManager controller, String url)
-            throws AccessControlException {
-        return getPolicyManager().buildSubtreePolicy(controller, getPolicyURL(url));
-    }
-
-    public Policy[] getPolicies(AccreditableManager controller, String url)
-            throws AccessControlException {
-        return getPolicyManager().getPolicies(controller, getPolicyURL(url));
-    }
-
-    public void saveSubtreePolicy(String url, Policy policy) throws AccessControlException {
-        getPolicyManager().saveSubtreePolicy(getPolicyURL(url), policy);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#getPolicy(org.apache.lenya.ac.AccreditableManager,
-     *      java.lang.String)
-     */
-    public Policy getPolicy(AccreditableManager controller, String url)
-            throws AccessControlException {
-        return getPolicyManager().getPolicy(controller, getPolicyURL(url));
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableRemoved(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableRemoved(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException {
-        getPolicyManager().accreditableRemoved(manager, accreditable);
-
-    }
-
-    String ELEMENT_POLICY_MANAGER = "policy-manager";
-    String ATTRIBUTE_TYPE = "type";
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-        Configuration policyManagerConfiguration = configuration.getChild(
-                this.ELEMENT_POLICY_MANAGER, false);
-        if (policyManagerConfiguration != null) {
-            String type = null;
-            try {
-                type = policyManagerConfiguration.getAttribute(this.ATTRIBUTE_TYPE);
-
-                this.policyManagerSelector = (ServiceSelector) getServiceManager().lookup(
-                        PolicyManager.ROLE + "Selector");
-
-                PolicyManager _policyManager = (PolicyManager) this.policyManagerSelector
-                        .select(type);
-
-                if (!(_policyManager instanceof InheritingPolicyManager)) {
-                    throw new AccessControlException("The " + getClass().getName()
-                            + " can only be used with an "
-                            + InheritingPolicyManager.class.getName() + ".");
-                }
-
-                DefaultAccessController.configureOrParameterize(_policyManager,
-                        policyManagerConfiguration);
-                setPolicyManager((InheritingPolicyManager) _policyManager);
-            } catch (final ConfigurationException e1) {
-                throw new ConfigurationException("Obtaining policy manager for type [" + type
-                        + "] failed: ", e1);
-            } catch (final ServiceException e1) {
-                throw new ConfigurationException("Obtaining policy manager for type [" + type
-                        + "] failed: ", e1);
-            } catch (final ParameterException e1) {
-                throw new ConfigurationException("Obtaining policy manager for type [" + type
-                        + "] failed: ", e1);
-            } catch (final AccessControlException e1) {
-                throw new ConfigurationException("Obtaining policy manager for type [" + type
-                        + "] failed: ", e1);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (this.policyManagerSelector != null) {
-            if (getPolicyManager() != null) {
-                this.policyManagerSelector.release(getPolicyManager());
-            }
-            getServiceManager().release(this.policyManagerSelector);
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing [" + this + "]");
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableAdded(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableAdded(AccreditableManager manager, Accreditable accreditable)
-            throws AccessControlException {
-        getPolicyManager().accreditableAdded(manager, accreditable);
-    }
-
-    public Credential[] getCredentials(AccreditableManager controller, String url)
-            throws AccessControlException {
-        return getPolicyManager().getCredentials(controller, getPolicyURL(url));
-    }
-
-    public Role[] getGrantedRoles(AccreditableManager accreditableManager, Identity identity,
-            String url) throws AccessControlException {
-        return getPolicyManager().getGrantedRoles(accreditableManager, identity, getPolicyURL(url));
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
deleted file mode 100644
index c0bcbd6..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.ac;
-
-import java.io.File;
-
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.impl.AbstractAccessControllerResolver;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-
-/**
- * Resolves the access controller according to the <code>access-control.xml</code> file of a publication.
- */
-public class PublicationAccessControllerResolver extends AbstractAccessControllerResolver implements
-        Initializable {
-
-    protected static final String AC_CONFIGURATION_FILE
-        = "config/access-control/access-control.xml".replace('/', File.separatorChar);
-    protected static final String TYPE_ATTRIBUTE = "type";
-
-    /**
-     * This implementation uses the publication ID in combination with the context path as cache
-     * key.
-     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#generateCacheKey(java.lang.String,
-     *      org.apache.excalibur.source.SourceResolver)
-     */
-    protected Object generateCacheKey(String webappUrl, SourceResolver resolver)
-            throws AccessControlException {
-
-        URLInformation info = new URLInformation(webappUrl);
-
-        String publicationId = info.getPublicationId();
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Using first URL step (might be publication ID) as cache key: ["
-                    + publicationId + "]");
-        }
-
-        return super.generateCacheKey(publicationId, resolver);
-    }
-
-    /**
-     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#doResolveAccessController(java.lang.String)
-     */
-    public AccessController doResolveAccessController(String webappUrl)
-            throws AccessControlException {
-        getLogger().debug("Resolving controller for URL [" + webappUrl + "]");
-
-        AccessController controller = null;
-        Publication publication = getPublication(webappUrl);
-
-        if (publication != null) {
-            String publicationUrl = webappUrl.substring(("/" + publication.getId()).length());
-            controller = resolveAccessController(publication, publicationUrl);
-        }
-        return controller;
-    }
-
-    /**
-     * Returns the publication for the webapp URL or null if the URL is not included in a
-     * publication.
-     * @param webappUrl The webapp URL.
-     * @return A publication.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Publication getPublication(String webappUrl) throws AccessControlException {
-        Publication publication = null;
-
-        assert webappUrl.startsWith("/");
-        // remove leading slash
-        String url = webappUrl.substring(1);
-
-        if (url.length() > 0) {
-
-            URLInformation info = new URLInformation(webappUrl);
-            String pubId = info.getPublicationId();
-
-            ContextUtility util = null;
-            try {
-                util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-                Request request = util.getRequest();
-                DocumentFactory factory = DocumentUtil.getDocumentFactory(manager, request);
-                if (pubId != null && factory.existsPublication(pubId)) {
-                    publication = factory.getPublication(pubId);
-                }
-            } catch (Exception e) {
-                throw new AccessControlException(e);
-            } finally {
-                if (util != null) {
-                    this.manager.release(util);
-                }
-            }
-            if (publication != null) {
-                getLogger().debug("Publication [" + pubId + "] exists.");
-            }
-        }
-        return publication;
-    }
-
-    /**
-     * Returns the servlet context.
-     * @return A file.
-     */
-    protected File getContext() {
-        return this.context;
-    }
-
-    /**
-     * Retrieves access control configuration of a specific publication.
-     * @param publication The publication.
-     * @return Configuration
-     * @throws AccessControlException when something went wrong.
-     */
-    public Configuration getConfiguration(Publication publication) throws AccessControlException {
-        File configurationFile = new File(publication.getDirectory(), AC_CONFIGURATION_FILE);
-
-        if (configurationFile.isFile()) {
-            try {
-                Configuration configuration = new DefaultConfigurationBuilder().buildFromFile(configurationFile);
-                return configuration;
-            } catch (Exception e) {
-                throw new AccessControlException(e);
-            }
-        } else {
-            throw new AccessControlException("No such file or directory: " + configurationFile);
-        }
-    }
-
-    private File context;
-
-    /**
-     * Resolves an access controller for a certain URL within a publication.
-     * @param publication The publication.
-     * @param url The url within the publication.
-     * @return An access controller.
-     * @throws AccessControlException when something went wrong.
-     */
-    public AccessController resolveAccessController(Publication publication, String url)
-            throws AccessControlException {
-
-        assert publication != null;
-
-        AccessController accessController = null;
-
-        try {
-            Configuration configuration = getConfiguration(publication);
-            String type = configuration.getAttribute(TYPE_ATTRIBUTE);
-
-            accessController = (AccessController) getManager().lookup(AccessController.ROLE + "/"
-                    + type);
-
-            if (accessController instanceof Configurable) {
-                ((Configurable) accessController).configure(configuration);
-            }
-
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-
-        return accessController;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Initializable#initialize()
-     */
-    public void initialize() throws Exception {
-        SourceResolver resolver = null;
-        Source contextSource = null;
-        File contextDir;
-        try {
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-            contextSource = resolver.resolveURI("context:///");
-            contextDir = SourceUtil.getFile(contextSource);
-
-            if (contextDir == null || !contextDir.isDirectory()) {
-                throw new AccessControlException("The servlet context is not a directory!");
-            }
-
-        } finally {
-            if (resolver != null) {
-                if (contextSource != null) {
-                    resolver.release(contextSource);
-                }
-                getManager().release(resolver);
-            }
-        }
-        this.context = contextDir;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/SitemapPolicyManager.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/SitemapPolicyManager.java
deleted file mode 100644
index 7ad38a5..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/SitemapPolicyManager.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.impl.PolicyBuilder;
-import org.apache.lenya.xml.DocumentHelper;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-/**
- * Policy manager based on Cocoon sitemaps.
- * @version $Id$
- */
-public class SitemapPolicyManager extends AbstractLogEnabled implements PolicyManager, Serviceable {
-
-    private Credential[] credentials;
-
-	/**
-     * @see org.apache.lenya.ac.PolicyManager#getPolicy(org.apache.lenya.ac.AccreditableManager,
-     *      java.lang.String)
-     */
-    public Policy getPolicy(AccreditableManager accreditableManager, String url)
-            throws AccessControlException {
-
-        url = url.substring(1);
-
-        int slashIndex = url.indexOf("/");
-        if (slashIndex == -1) {
-            slashIndex = url.length();
-        }
-
-        String publicationId = url.substring(0, slashIndex);
-        url = url.substring(publicationId.length());
-
-        SourceResolver resolver = null;
-        Policy policy = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-
-            String policyUrl = publicationId + "/policies" + url + ".acml";
-            getLogger().debug("Policy URL: " + policyUrl);
-            source = resolver.resolveURI("cocoon://" + policyUrl);
-            Document document = DocumentHelper.readDocument(source.getInputStream());
-            policy = new PolicyBuilder(accreditableManager).buildPolicy(document);
-            this.credentials=policy.getCredentials();
-        } catch (SourceNotFoundException e) {
-            throw new AccessControlException(e);
-        } catch (ServiceException e) {
-            throw new AccessControlException(e);
-        } catch (MalformedURLException e) {
-            throw new AccessControlException(e);
-        } catch (IOException e) {
-            throw new AccessControlException(e);
-        } catch (ParserConfigurationException e) {
-            throw new AccessControlException(e);
-        } catch (SAXException e) {
-            throw new AccessControlException(e);
-        } catch (AccessControlException e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                getManager().release(resolver);
-            }
-        }
-
-        return policy;
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    public ServiceManager getManager() {
-        return this.manager;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableRemoved(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableRemoved(AccreditableManager _manager, Accreditable accreditable)
-            throws AccessControlException {
-	    // do nothing
-    }
-
-    /**
-     * @see org.apache.lenya.ac.PolicyManager#accreditableAdded(org.apache.lenya.ac.AccreditableManager,
-     *      org.apache.lenya.ac.Accreditable)
-     */
-    public void accreditableAdded(AccreditableManager _manager, Accreditable accreditable)
-            throws AccessControlException {
-	    // do nothing
-    }
-
-	public Credential[] getCredentials(AccreditableManager controller, String url) throws AccessControlException {
-		Credential[] copy = new Credential[credentials.length];
-		for (int i = 0; i < credentials.length; i++) {
-			copy[i]=credentials[i];
-		}
-		return copy;
-	}
-
-    public Role[] getGrantedRoles(AccreditableManager accreditableManager, Identity identity,
-            String url) throws AccessControlException {
-        Role[] roles = accreditableManager.getRoleManager().getRoles();
-        Set grantedRoles = new HashSet();
-        Policy policy = getPolicy(accreditableManager, url);
-        for (int i = 0; i < roles.length; i++) {
-            if (policy.check(identity, roles[i]) == Policy.RESULT_GRANTED) {
-                grantedRoles.add(roles[i]);
-            }
-        }
-        return (Role[]) grantedRoles.toArray(new Role[grantedRoles.size()]);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java
deleted file mode 100644
index c37e83a..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.acting.ConfigurableServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Super class for access control actions.
- * 
- * @version $Id$
- */
-public abstract class AccessControlAction extends ConfigurableServiceableAction {
-
-    private AccessController accessController;
-
-    /**
-     * <p>
-     * Invokes the access control functionality.
-     * If no access controller was found for the requested URL, an empty map is returned.
-     * </p>
-     * <p>
-     * This is a template method. Implement doAct() to add your functionality.
-     * </p>
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(
-        Redirector redirector,
-        SourceResolver sourceResolver,
-        Map objectModel,
-        String source,
-        Parameters parameters)
-        throws Exception {
-
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-        this.accessController = null;
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        Map result = null;
-
-        try {
-            selector =
-                (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE + "Selector");
-                
-            getLogger().debug("Resolving AC resolver for type [" + AccessControllerResolver.DEFAULT_RESOLVER + "]");
-            resolver =
-                (AccessControllerResolver) selector.select(
-                    AccessControllerResolver.DEFAULT_RESOLVER);
-            getLogger().debug("Resolved AC resolver [" + resolver + "]");
-
-            String webappUrl = ServletHelper.getWebappURI(request);
-            this.accessController = resolver.resolveAccessController(webappUrl);
-
-            if (this.accessController == null) {
-                result = Collections.EMPTY_MAP;
-            } else {
-                this.accessController.setupIdentity(request);
-                result = doAct(redirector, sourceResolver, objectModel, source, parameters);
-            }
-
-        } finally {
-            if (selector != null) {
-                if (resolver != null) {
-                    selector.release(resolver);
-                }
-                this.manager.release(selector);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * The actual act method.
-     * @param redirector  The <code>Redirector</code> in charge
-     * @param resolver    The <code>SourceResolver</code> in charge
-     * @param objectModel The <code>Map</code> with object of the
-     *                    calling environment which can be used
-     *                    to select values this controller may need
-     *                    (ie Request, Response).
-     * @param source      A source <code>String</code> to the Action
-     * @param parameters  The <code>Parameters</code> for this invocation
-     * @return Map        The returned <code>Map</code> object with
-     *                    sitemap substitution values which can be used
-     *                    in subsequent elements attributes like src=
-     *                    using a xpath like expression: src="mydir/{myval}/foo"
-     *                    If the return value is null the processing inside
-     *                    the <map:act> element of the sitemap will
-     *                    be skipped.
-     * @exception Exception Indicates something is totally wrong
-     */
-    protected abstract Map doAct(
-        Redirector redirector,
-        SourceResolver resolver,
-        Map objectModel,
-        String source,
-        Parameters parameters)
-        throws Exception;
-
-    /**
-     * Returns the access controller.
-     * @return An access controller.
-     */
-    public AccessController getAccessController() {
-        return this.accessController;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthenticatorAction.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthenticatorAction.java
deleted file mode 100644
index 88c0b03..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthenticatorAction.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.

- *

- */

-

-/* $Id: DelegatingAuthenticatorAction.java 42616 2004-03-03 12:56:33Z gregor $  */

-

-package org.apache.lenya.cms.cocoon.acting;

-

-import java.util.Collections;

-import java.util.Map;

-

-import org.apache.avalon.framework.parameters.Parameters;

-import org.apache.cocoon.environment.ObjectModelHelper;

-import org.apache.cocoon.environment.Redirector;

-import org.apache.cocoon.environment.Request;

-import org.apache.cocoon.environment.SourceResolver;

-

-/**

- * Authenticator action that delegates the authentication to an access controller.

- */

-public class DelegatingAuthenticatorAction extends AccessControlAction {

-

-    /**

-     * @see org.apache.lenya.cms.cocoon.acting.AccessControlAction#doAct(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)

-     */

-    protected Map doAct(

-        Redirector redirector,

-        SourceResolver resolver,

-        Map objectModel,

-        String source,

-        Parameters parameters)

-        throws Exception {

-

-        getLogger().debug("Authenticating request");

-

-        Request request = ObjectModelHelper.getRequest(objectModel);

-        Map result = null;

-        if (getAccessController().authenticate(request)) {

-            getLogger().debug("Authentication successful.");

-            result = Collections.EMPTY_MAP;

-        }

-        else {

-            getLogger().debug("Authentication failed.");

-        }

-        return result;

-    }

-

-}

diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthorizerAction.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthorizerAction.java
deleted file mode 100644
index 1005556..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/DelegatingAuthorizerAction.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.excalibur.pool.Poolable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.util.Stack;
-
-/**
- * AuthorizerAction that delegates the authorizing to an AccessController.
- */
-public class DelegatingAuthorizerAction extends AccessControlAction implements Poolable {
-
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(
-        Redirector redirector,
-        SourceResolver resolver,
-        Map objectModel,
-        String src,
-        Parameters parameters)
-        throws Exception {
-
-        return super.act(redirector, resolver, objectModel, src, parameters);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.cocoon.acting.AccessControlAction#doAct(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    protected Map doAct(
-        Redirector redirector,
-        SourceResolver resolver,
-        Map objectModel,
-        String source,
-        Parameters parameters)
-        throws Exception {
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        
-        setHistory(request);
-
-        boolean authorized = getAccessController().authorize(request);
-
-        Map result = null;
-        if (authorized) {
-            result = Collections.EMPTY_MAP;
-        }
-
-        return result;
-    }
-
-    /**
-     * <code>HISTORY</code> Name of the session attribute that holds the history
-     */
-    public static final String HISTORY =
-        DelegatingAuthorizerAction.class.getPackage().getName() + ".History";
-
-    /**
-     * Adds the current URL to the history.
-     * @param request The request.
-     */
-    protected void setHistory(Request request) {
-        Session session = request.getSession(true);
-
-        Stack history = (Stack) session.getAttribute(HISTORY);
-
-        if (history == null) {
-            history = new Stack(10);
-            session.setAttribute(HISTORY, history);
-        }
-        
-        String url = request.getRequestURI();
-        String context = request.getContextPath();
-        if (context == null) {
-            context = "";
-        }
-        url = url.substring(context.length());
-
-        history.push(url);
-
-    }
-    
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java
deleted file mode 100644
index ca45797..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.acting.ConfigurableServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Returns a map if the current request needs a redirect to the <code>https://</code> protocol.
- * This is the case if the policy requires SSL protection and the current request is not secure. The
- * map contains the redirect URI as value for the key <em>redirectUri</em>. Otherwise,
- * <code>null</code> is returned.
- */
-public class SslRedirectAction extends ConfigurableServiceableAction {
-
-    /**
-     * The key to obtain the redirect URI from the returned map.
-     */
-    public static final String KEY_REDIRECT_URI = "redirectUri";
-
-    public Map act(Redirector redirector, SourceResolver sourceResolver, Map objectModel,
-            String source, Parameters parameters) throws Exception {
-
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-        AccessController accessController = null;
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        
-        if (!request.isSecure()) {
-            try {
-                selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                        + "Selector");
-    
-                resolver = (AccessControllerResolver) selector
-                        .select(AccessControllerResolver.DEFAULT_RESOLVER);
-    
-                String url = ServletHelper.getWebappURI(request);
-                accessController = resolver.resolveAccessController(url);
-    
-                if (accessController != null) {
-                    PolicyManager policyManager = accessController.getPolicyManager();
-                    Policy policy = policyManager.getPolicy(accessController.getAccreditableManager(),
-                            url);
-                    if (policy.isSSLProtected()) {
-                        Session session = RepositoryUtil.getSession(this.manager, request);
-                        LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, session, url,
-                                false, true, false);
-                        String sslUri = rewriter.rewrite(url);
-                        return Collections.singletonMap(KEY_REDIRECT_URI, sslUri);
-                    }
-                }
-    
-            } finally {
-                if (selector != null) {
-                    if (resolver != null) {
-                        if (accessController != null) {
-                            resolver.release(accessController);
-                        }
-                        selector.release(resolver);
-                    }
-                    this.manager.release(selector);
-                }
-            }
-        }
-        return null;
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java b/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
deleted file mode 100644
index b395350..0000000
--- a/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * <p>
- * Input module for access control attributes.
- * </p>
- * <p>
- * Attributes:
- * </p>
- * <ul>
- * <li><strong><code>user-id</code></strong> - the ID of the currently logged-in user</li>
- * <li><strong><code>user-name</code></strong> - the full name of the currently logged-in user</li>
- * <li><strong><code>user-name:{user-id}</code></strong> - the full name of a specific user</li>
- * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user</li>
- * <li><strong><code>user-email:{user-id}</code></strong> - the e-mail address of a specific user</li>
- * <li><strong><code>ip-address</code></strong> - the IP address of the client machine</li>
- * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current identity</li>
- * <li><strong><code>user-manager</code></strong> - the user manager object</li>
- * <li><strong><code>group-manager</code></strong> - the group manager object</li>
- * <li><strong><code>iprange-manager</code></strong> - the IP range manager object</li>
- * <li><strong><code>role-manager</code></strong> - the role manager object</li>
- * </ul>
- * 
- */
-public class AccessControlModule extends AbstractInputModule implements Serviceable {
-
-    /**
-     * <code>USER_ID</code> The user id
-     */
-    public static final String USER_ID = "user-id";
-    /**
-     * <code>USER_NAME</code> The user name, optional: provide the user ID after a colon
-     */
-    public static final String USER_NAME = "user-name";
-    /**
-     * <code>USER_EMAIL</code> The user email, optional: provide the user ID after a colon
-     */
-    public static final String USER_EMAIL = "user-email";
-    /**
-     * <code>IP_ADDRESS</code> The IP address
-     */
-    public static final String IP_ADDRESS = "ip-address";
-    /**
-     * <code>ROLE_IDS</code> The role ids
-     */
-    public static final String ROLE_IDS = "role-ids";
-    /**
-     * <code>USER_MANAGER</code> The user manager
-     */
-    public static final String USER_MANAGER = "user-manager";
-    /**
-     * <code>GROUP_MANAGER</code> The group manager
-     */
-    public static final String GROUP_MANAGER = "group-manager";
-    /**
-     * <code>ROLE_MANAGER</code> The role manager
-     */
-    public static final String ROLE_MANAGER = "role-manager";
-    /**
-     * <code>IP_RANGE_MANAGER</code> The IP range manager
-     */
-    public static final String IP_RANGE_MANAGER = "iprange-manager";
-    /**
-     * Returns if the current page is SSL protected (true|false).
-     */
-    public static final String SSL = "ssl";
-
-    /**
-     * The names of the AccessControlModule parameters.
-     */
-    static final String[] PARAMETER_NAMES = { IP_ADDRESS, USER_ID, USER_NAME, USER_EMAIL, ROLE_IDS,
-            USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL };
-
-    /**
-     * 
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String attribute, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession();
-        Object value = null;
-
-        String[] parameters = attribute.split(":", 2);
-        String name = parameters[0];
-
-        if (!Arrays.asList(PARAMETER_NAMES).contains(name)) {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported!");
-        }
-
-        Identity identity = null;
-        
-        if (session != null) {
-            identity = (Identity) session.getAttribute(Identity.class.getName());
-        }
-        User user = getUser(request, parameters, identity);
-
-        if (user != null) {
-            if (name.equals(USER_NAME)) {
-                value = user.getName();
-            } else if (name.equals(USER_EMAIL)) {
-                value = user.getEmail();
-            }
-        }
-
-        if (identity != null) {
-            if (name.equals(USER_ID)) {
-                User currentUser = identity.getUser();
-                if (currentUser != null) {
-                    value = currentUser.getId();
-                }
-            } else if (name.equals(IP_ADDRESS)) {
-                Machine machine = identity.getMachine();
-                if (machine != null) {
-                    value = machine.getIp();
-                }
-            } else if (name.equals(ROLE_IDS)) {
-                try {
-                    Role[] roles = PolicyUtil.getRoles(request);
-                    StringBuffer buf = new StringBuffer();
-                    for (int i = 0; i < roles.length; i++) {
-                        if (i > 0) {
-                            buf.append(",");
-                        }
-                        buf.append(roles[i].getId());
-                    }
-                    value = buf.toString();
-                } catch (AccessControlException e) {
-                    throw new ConfigurationException("Obtaining value for attribute [" + name
-                            + "] failed: ", e);
-                }
-            }
-        }
-
-        if (name.equals(USER_MANAGER) || name.equals(GROUP_MANAGER) || name.equals(ROLE_MANAGER)
-                || name.equals(IP_RANGE_MANAGER)) {
-            value = getItemManager(request, name);
-        }
-        
-        if (name.equals(SSL)) {
-            ServiceSelector selector = null;
-            AccessControllerResolver acResolver = null;
-            AccessController accessController = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                        + "Selector");
-                acResolver
-                    = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-    
-                String url = ServletHelper.getWebappURI(request);
-                accessController = acResolver.resolveAccessController(url);
-                AccreditableManager accreditableManager = accessController.getAccreditableManager();
-                PolicyManager policyManager = accessController.getPolicyManager();
-    
-                Policy policy = policyManager.getPolicy(accreditableManager, url);
-                value = Boolean.toString(policy.isSSLProtected());
-            }
-            catch (Exception e) {
-                throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-            }
-            finally {
-                if (selector != null) {
-                    if (acResolver != null) {
-                        if (accessController != null) {
-                            acResolver.release(accessController);
-                        }
-                        selector.release(acResolver);
-                    }
-                    this.manager.release(selector);
-                }
-            }
-        }
-
-        return value;
-    }
-
-    /**
-     * Returns the user specified with parameter[1], falling back to the currently logged in user.
-     * @param request The request.
-     * @param parameters The parameters.
-     * @param identity The logged in identity.
-     * @return A user or <code>null</code> if no user is specified or logged in.
-     * @throws ConfigurationException if an error occurs.
-     */
-    protected User getUser(Request request, String[] parameters, Identity identity)
-            throws ConfigurationException {
-        User user = null;
-        if (parameters.length == 1) {
-            if (identity != null) {
-                user = identity.getUser();
-            }
-        } else {
-            String userId = parameters[1];
-            if (!userId.equals("")) {
-                UserManager userManager = (UserManager) getItemManager(request, USER_MANAGER);
-                user = userManager.getUser(userId);
-            }
-        }
-        return user;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Arrays.asList(PARAMETER_NAMES).iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-    /**
-     * Returns the item manager for a certain name.
-     * @param request The request.
-     * @param name The name of the manager ({@link #USER_MANAGER}, {@link #ROLE_MANAGER},
-     *            {@link #GROUP_MANAGER}, or {@link #IP_RANGE_MANAGER}
-     * @return An item manager.
-     * @throws ConfigurationException when something went wrong.
-     */
-    protected ItemManager getItemManager(Request request, String name)
-            throws ConfigurationException {
-        AccessController accessController = null;
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-        ItemManager itemManager = null;
-
-        try {
-            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-            resolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
-            String requestURI = request.getRequestURI();
-            String context = request.getContextPath();
-            if (context == null) {
-                context = "";
-            }
-            String url = requestURI.substring(context.length());
-            accessController = resolver.resolveAccessController(url);
-
-            AccreditableManager accreditableManager = accessController.getAccreditableManager();
-
-            if (name.equals(USER_MANAGER)) {
-                itemManager = accreditableManager.getUserManager();
-            } else if (name.equals(GROUP_MANAGER)) {
-                itemManager = accreditableManager.getGroupManager();
-            } else if (name.equals(ROLE_MANAGER)) {
-                itemManager = accreditableManager.getRoleManager();
-            } else if (name.equals(IP_RANGE_MANAGER)) {
-                itemManager = accreditableManager.getIPRangeManager();
-            }
-
-        } catch (Exception e) {
-            throw new ConfigurationException("Obtaining item manager failed: ", e);
-        } finally {
-            if (selector != null) {
-                if (resolver != null) {
-                    if (accessController != null) {
-                        resolver.release(accessController);
-                    }
-                    selector.release(resolver);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        return itemManager;
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileGroupTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileGroupTest.java
deleted file mode 100644
index b725c7e..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileGroupTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.xml.sax.SAXException;
-
-/**
- * Test for file-based groups
- */
-public class FileGroupTest extends AbstractAccessControlTest {
-
-    /**
-     * <code>GROUP_ID</code> The group id
-     */
-    public static final String GROUP_ID = "testGroup";
-
-    /**
-     * Runs the test
-     * 
-     * @throws AccessControlException if an AC error occurs
-     * @throws ConfigurationException if an error with the configuration occurs
-     * @throws SAXException if a parsing error occurs
-     * @throws IOException if an IO error occurs
-     */
-    final public void testFileGroup() throws AccessControlException, ConfigurationException,
-            SAXException, IOException {
-
-        FileGroup group = getGroup();
-        group.save();
-
-        File groupFile = new File(getAccreditablesDirectory(), GROUP_ID + FileGroupManager.SUFFIX);
-        assertNotNull(groupFile);
-        assertTrue(groupFile.exists());
-
-        Configuration config = null;
-        config = new DefaultConfigurationBuilder().buildFromFile(groupFile);
-        assertNotNull(config);
-
-        FileGroup newGroup = null;
-        newGroup = new FileGroup(getAccreditableManager().getGroupManager(), getLogger());
-        newGroup.setConfigurationDirectory(getAccreditablesDirectory());
-        newGroup.configure(config);
-        assertNotNull(newGroup);
-
-        assertTrue(newGroup.getId().equals(GROUP_ID));
-
-    }
-
-    /**
-     * Test getGroup
-     * 
-     * @return a <code>FileGroup</code>
-     * @throws AccessControlException
-     */
-    protected FileGroup getGroup() throws AccessControlException {
-        File configurationDirectory = getAccreditablesDirectory();
-        getLogger().info("Configuration directory: " + configurationDirectory);
-        FileGroup group = new FileGroup(getAccreditableManager().getGroupManager(), getLogger(),
-                GROUP_ID);
-        return group;
-    }
-
-    /**
-     * Tests the removeAllMembers() method.
-     * @throws AccessControlException
-     */
-    public void testRemoveAllMembers() throws AccessControlException {
-        Group group = getGroup();
-        Groupable members[] = group.getMembers();
-        group.removeAllMembers();
-        for (int i = 0; i < members.length; i++) {
-            assertFalse(group.contains(members[i]));
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileRoleTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileRoleTest.java
deleted file mode 100644
index 62a7f07..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileRoleTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.file;
-
-import java.io.File;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-
-/**
- * File role test.
- *
- * @version $Id$
- */
-public class FileRoleTest extends AbstractAccessControlTest {
-    
-    /**
-     * DOCUMENT ME!
-     * 
-     * @throws AccessControlException DOCUMENT ME!
-     */
-    final public void testFileRole() throws AccessControlException {
-        String name = "test";
-        File configDir = getAccreditablesDirectory();
-        FileRole role = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        role.save();
-
-        File path = null;
-        path = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger())
-                .getConfigurationDirectory();
-
-        File roleFile = new File(path, name + FileRoleManager.SUFFIX);
-        assertNotNull(roleFile);
-        assertTrue(roleFile.exists());
-    }
-
-    /**
-     * DOCUMENT ME!
-     * 
-     * @throws AccessControlException DOCUMENT ME!
-     */
-    final public void testSave() throws AccessControlException {
-        File configDir = getAccreditablesDirectory();
-        String name = "test";
-        FileRole role = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        role.save();
-
-        File path = null;
-        path = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger())
-                .getConfigurationDirectory();
-
-        File roleFile = new File(path, name + FileRoleManager.SUFFIX);
-        assertNotNull(roleFile);
-        assertTrue(roleFile.exists());
-    }
-
-    /**
-     * DOCUMENT ME!
-     * @throws AccessControlException 
-     */
-    final public void testGetId() throws AccessControlException {
-        String id = "test";
-        FileRole role = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), id);
-        assertTrue(role.getId().equals(id));
-    }
-
-    /**
-     * Test for boolean equals(Object)
-     * @throws AccessControlException 
-     */
-    final public void testEqualsObject() throws AccessControlException {
-        String name = "test";
-        FileRole role1 = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        FileRole role2 = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        assertEquals(role1, role2);
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
deleted file mode 100644
index 5f674c3..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/file/FileUserTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.file;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserType;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-
-/**
- * File user test.
- * 
- * @version $Id$
- */
-public class FileUserTest extends AbstractAccessControlTest {
-    private HashMap groups = new HashMap();
-
-    /**
-     * (non-Javadoc)
-     * @see junit.framework.TestCase#setUp()
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    /**
-     * Get all Groups
-     * 
-     * @return A map of the groups
-     */
-    final public Map getGroups() {
-        return this.groups;
-    }
-
-    /**
-     * Create and save a user
-     * 
-     * @param userName The user name
-     * @param fullName The full name
-     * @param email The email
-     * @param password The password
-     * 
-     * @return a <code>FileUser</code>
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public FileUser createAndSaveUser(String userName, String fullName, String email,
-            String password) throws AccessControlException {
-
-        String editorGroupName = "editorGroup";
-        String adminGroupName = "adminGroup";
-
-        FileGroup editorGroup = new FileGroup(getAccreditableManager().getGroupManager(),
-                getLogger(), editorGroupName);
-        ContainerUtil.enableLogging(editorGroup, getLogger());
-        FileGroup adminGroup = new FileGroup(getAccreditableManager().getGroupManager(),
-                getLogger(), adminGroupName);
-        ContainerUtil.enableLogging(adminGroup, getLogger());
-        this.groups.put(editorGroupName, editorGroup);
-        this.groups.put(adminGroupName, adminGroup);
-
-        FileUser user = new FileUser(getAccreditableManager().getUserManager(), getLogger(),
-                userName, fullName, email, password);
-        ContainerUtil.enableLogging(user, getLogger());
-
-        editorGroup.add(user);
-        adminGroup.add(user);
-
-        editorGroup.save();
-        adminGroup.save();
-        user.save();
-
-        FileUserManager _manager = getUserManager();
-        _manager.add(user);
-
-        return user;
-    }
-
-    /**
-     * Returns the file user manager.
-     * @return A file user manager.
-     * @throws AccessControlException if an error occurs.
-     */
-    protected FileUserManager getUserManager() throws AccessControlException {
-        UserType[] userTypes = { FileAccreditableManager.getDefaultUserType() };
-        FileUserManager _manager = FileUserManager.instance(getAccreditableManager(),
-                getAccreditablesDirectory(), userTypes, getLogger());
-        return _manager;
-    }
-
-    /**
-     * Load a user.
-     * 
-     * @param userName the name of the user
-     * 
-     * @return a <code>FileUser</code>
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public FileUser loadUser(String userName) throws AccessControlException {
-        FileUserManager _manager = getUserManager();
-        return (FileUser) _manager.getUser(userName);
-    }
-
-    /**
-     * Test save
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testSave() throws AccessControlException {
-        String userName = "aliceTest";
-        createAndSaveUser(userName, "Alice Wonderland", "alice@wonderland.org", "secret");
-
-        File configDir = getAccreditablesDirectory();
-        File xmlFile = new File(configDir, userName + ".iml");
-        assertTrue(xmlFile.exists());
-    }
-
-    /**
-     * Test getEmail
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testGetEmail() throws AccessControlException {
-        String userID = "aliceTest";
-        String email = "alice@wonderland.org";
-        User user = createAndSaveUser(userID, "Alice Wonderland", email, "secret");
-        assertTrue(user.getEmail().equals(email));
-        user = loadUser(userID);
-        assertTrue(user.getEmail().equals(email));
-    }
-
-    /**
-     * Test getName
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testGetName() throws AccessControlException {
-        String userID = "aliceTest";
-        String userName = "Alice Wonderland";
-        FileUser user = createAndSaveUser(userID, userName, "alice@wonderland.org", "secret");
-        assertTrue(user.getName().equals(userName));
-        user = loadUser(userID);
-        assertTrue(user.getName().equals(userName));
-    }
-
-    /**
-     * Test getGroups
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testGetGroups() throws AccessControlException {
-        FileUser user = createAndSaveUser("aliceTest", "Alice Wonderland", "alice@wonderland.org",
-                "secret");
-
-        for (Iterator i = getGroups().values().iterator(); i.hasNext();) {
-            Group group = (Group) i.next();
-            assertTrue(group.contains(user));
-        }
-    }
-
-    /**
-     * Test getId
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testGetId() throws AccessControlException {
-        String id = "aliceTest";
-        FileUser user = createAndSaveUser(id, "Alice Wonderland", "alice@wonderland.org", "secret");
-        assertTrue(user.getId().equals(id));
-    }
-
-    /**
-     * Test delete
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testDelete() throws AccessControlException {
-        String id = "albert";
-        FileUser user = createAndSaveUser(id, "Albert Einstein", "albert@physics.org", "secret");
-        FileUserManager _manager = getUserManager();
-        assertNotNull(_manager);
-
-        assertNotNull(_manager.getUser(id));
-        user.delete();
-        _manager.remove(user);
-        assertNull(_manager.getUser(id));
-    }
-
-    /**
-     * Test authenticate
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testAuthenticate() throws AccessControlException {
-        String password = "daisy";
-        FileUser user = createAndSaveUser("mickey", "Mickey Mouse", "mickey@mouse.com", password);
-        assertTrue(user.authenticate(password));
-
-        FileUserManager _manager = getUserManager();
-        assertNotNull(_manager);
-
-        User lenya = _manager.getUser("lenya");
-        assertNotNull(lenya);
-        assertTrue(lenya.authenticate("levi"));
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccessControllerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccessControllerTest.java
deleted file mode 100644
index 87f6636..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccessControllerTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-/**
- * Access controller test
- */
-public class AccessControllerTest extends AbstractAccessControlTest {
-
-    /**
-     * The test.
-     */
-    public void testAccessController() {
-        assertNotNull(getAccessController());
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccreditableManagerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccreditableManagerTest.java
deleted file mode 100644
index e5ff1d4..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/AccreditableManagerTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-
-/**
- * Test class for the Accreditable Manager
- */
-public class AccreditableManagerTest extends AccessControllerTest {
-
-    private AccreditableManager accreditableManager;
-    
-    protected static final String HINT = "file";
-
-    /**
-     * The JUnit setup method. Lookup the resolver role.
-     *
-     * @exception  Exception  Description of Exception
-     * @since
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-
-        this.accreditableManager = getAccessController().getAccreditableManager();
-        
-        assertNotNull("AccreditableManager is null", this.accreditableManager);
-    }
-
-    /**
-     * The test.
-     * @throws AccessControlException when something went wrong.
-     */
-    public void testAccreditableManager() throws AccessControlException {
-        assertNotNull(this.accreditableManager.getUserManager());
-        assertNotNull(this.accreditableManager.getGroupManager());
-        assertNotNull(this.accreditableManager.getRoleManager());
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/GroupManagerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/GroupManagerTest.java
deleted file mode 100644
index edf51b5..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/GroupManagerTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.io.File;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.file.FileGroupManager;
-
-/**
- * Group manager test.
- *
- * @version $Id$
- */
-public class GroupManagerTest extends AbstractAccessControlTest {
-
-    /**
-     * The test
-     * @throws AccessControlException if an error occurs
-     */
-    public final void testInstance() throws AccessControlException {
-        FileGroupManager _manager = null;
-        File configDir = getAccreditablesDirectory();
-        _manager = FileGroupManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(_manager);
-
-        FileGroupManager anotherManager = null;
-        anotherManager = FileGroupManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(anotherManager);
-        assertEquals(_manager, anotherManager);
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/IdentityTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/IdentityTest.java
deleted file mode 100644
index b49d7ae..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/IdentityTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.lenya.ac.impl;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-
-/**
- * Tests the identity
- */
-public class IdentityTest extends AbstractAccessControlTest {
-
-    /**
-     * <code>USER_ID</code> The user id to test
-     */
-    public static final String USER_ID = "lenya";
-
-    /**
-     * Tests the identity.
-     * 
-     * @throws AccessControlException if an error occurs
-     */
-    public void testIdentity() throws AccessControlException {
-        Identity identity = new Identity(getLogger());
-        User user = getAccessController().getAccreditableManager().getUserManager().getUser(USER_ID);
-        getLogger().info("Adding user to identity: [" + user + "]");
-        identity.addIdentifiable(user);
-        
-        assertSame(user, identity.getUser());
-    }
-    
-    /**
-     * Test the {@link Identity#belongsTo(org.apache.lenya.ac.AccreditableManager)} method.
-     * @throws Exception if an error occurs.
-     */
-    public void testBelongsTo() throws Exception {
-        AccreditableManager testMgr = getAccessController(getSession(), "test").getAccreditableManager();
-        AccreditableManager defaultMgr = getAccessController(getSession(), "default").getAccreditableManager();
-        
-        String userId = "lenya";
-        User testUser = testMgr.getUserManager().getUser(userId);
-        User defaultUser = defaultMgr.getUserManager().getUser(userId);
-        
-        Identity testIdentity = new Identity(getLogger());
-        testIdentity.addIdentifiable(testUser);
-        
-        Identity defaultIdentity = new Identity(getLogger());
-        defaultIdentity.addIdentifiable(defaultUser);
-        
-        assertTrue(testIdentity.belongsTo(testMgr));
-        assertTrue(defaultIdentity.belongsTo(defaultMgr));
-        
-        assertTrue(testIdentity.belongsTo(defaultMgr));
-        assertTrue(defaultIdentity.belongsTo(testMgr));
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyManagerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyManagerTest.java
deleted file mode 100644
index 05abb31..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyManagerTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.ac.PolicyUtil;
-
-/**
- * Test for the Policy Manager
- */
-public class PolicyManagerTest extends AbstractAccessControlTest {
-
-    private static String[] URLS = { "/default/authoring/index.html" };
-
-    /**
-     * The test.
-     * @throws AccessControlException when something went wrong.
-     */
-    public void testPolicyManager() throws AccessControlException {
-        
-        DefaultAccessController controller = getAccessController(); 
-        PolicyManager policyManager = controller.getPolicyManager();
-        assertNotNull(policyManager);
-        
-        for (int i = 0; i < URLS.length; i++) {
-            Policy policy = policyManager.getPolicy(controller.getAccreditableManager(), URLS[i]);
-            assertNotNull(policy);
-            
-            Role[] roles = policyManager.getGrantedRoles(controller.getAccreditableManager(), getIdentity(), URLS[i]);
-            assertTrue(roles.length > 0);
-
-            User[] users = PolicyUtil.getUsersWithRole(getManager(), URLS[i], "review", getLogger());
-            
-            UserManager userManager = controller.getAccreditableManager().getUserManager();
-            User lenya = userManager.getUser("lenya");
-            User alice = userManager.getUser("alice");
-            
-            List usersList = Arrays.asList(users);
-            assertFalse(usersList.contains(lenya));
-            assertTrue(usersList.contains(alice));
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyTest.java
deleted file mode 100644
index 3689a93..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/PolicyTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.impl;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.InheritingPolicyManager;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * Policy Test
- * 
- */
-public class PolicyTest extends AbstractAccessControlTest {
-    protected static final String URL = "/test/authoring/index.html";
-
-    protected static final String SAVE_URL = "/test/authoring/tutorial.html";
-
-    /**
-     * A test.
-     * 
-     * @throws AccessControlException when something went wrong.
-     * @throws PublicationException
-     */
-    public void testLoadPolicy() throws AccessControlException, PublicationException {
-        Publication pub = getPublication("test");
-        String url = "/" + pub.getId() + URL;
-        Policy policy = getPolicy(url);
-        
-        Role[] allRoles = getAccreditableManager().getRoleManager().getRoles();
-        
-        getLogger().info("Roles: ");
-        for (int i = 0; i < allRoles.length; i++) {
-            int result = policy.check(getIdentity(), allRoles[i]);
-            if (result == Policy.RESULT_GRANTED) {
-                getLogger().info(allRoles[i].getId() + ": granted");
-            }
-            else {
-                getLogger().info(allRoles[i].getId() + ": denied");
-            }
-        }
-    }
-
-    /**
-     * Returns the policy for a URL.
-     * 
-     * @param url The URL.
-     * @return The policy.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected Policy getPolicy(String url) throws AccessControlException {
-        Policy policy = getPolicyManager().getPolicy(
-                getAccessController().getAccreditableManager(), url);
-
-        return policy;
-    }
-
-    /**
-     * A test.
-     * 
-     * @throws AccessControlException when something went wrong.
-     */
-    public void testSavePolicy() throws AccessControlException {
-        InheritingPolicyManager policyManager = (InheritingPolicyManager) getPolicyManager();
-        DefaultPolicy subtreePolicy = (DefaultPolicy) policyManager.buildSubtreePolicy(
-                getAccessController().getAccreditableManager(), URL);
-        DefaultPolicy newPolicy = new DefaultPolicy();
-
-        Credential[] credentials = subtreePolicy.getCredentials();
-
-        for (int i = 0; i < credentials.length; i++) {
-            Role role = credentials[i].getRole();
-            CredentialImpl credential = new CredentialImpl(credentials[i].getAccreditable(), role);
-            credential.setMethod(credentials[i].getMethod());
-            newPolicy.addCredential(credential);
-        }
-
-        assertEquals(subtreePolicy.getCredentials().length, newPolicy.getCredentials().length);
-
-        policyManager.saveSubtreePolicy(SAVE_URL, newPolicy);
-
-        newPolicy = (DefaultPolicy) policyManager.buildSubtreePolicy(getAccessController()
-                .getAccreditableManager(), SAVE_URL);
-        assertEquals(subtreePolicy.getCredentials().length, newPolicy.getCredentials().length);
-
-        Credential[] newCredentials = newPolicy.getCredentials();
-
-        for (int i = 0; i < credentials.length; i++) {
-            Role role = credentials[i].getRole();
-            CredentialImpl credential = new CredentialImpl(credentials[i].getAccreditable(), role);
-            credential.setMethod(credential.getMethod());
-            Credential newCredential = null;
-
-            for (int k = 0; k < newCredentials.length; k++) {
-                if (newCredentials[k].getAccreditable().equals(credential.getAccreditable())) {
-                    newCredential = newCredentials[k];
-                }
-            }
-
-            getLogger().info("Accreditable: [" + credential.getAccreditable() + "]");
-            assertNotNull(newCredential);
-
-            Role oldRole = credential.getRole();
-            Role newRole = newCredential.getRole();
-            assertEquals(oldRole, newRole);
-
-            /*
-             * for (int j = 0; j < roles.length; j++) { assertEquals(roles[j],
-             * newRoles[j]); getLogger().info(" Role: [" + roles[j] + "]"); }
-             */
-        }
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/RoleManagerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/RoleManagerTest.java
deleted file mode 100644
index a7ac6c4..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/RoleManagerTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.io.File;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.file.FileRole;
-import org.apache.lenya.ac.file.FileRoleManager;
-
-/**
- * Role manager test.
- *
- * @version $Id$
- */
-public class RoleManagerTest extends AbstractAccessControlTest {
-
-    /**
-     * Run the test
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testInstance() throws AccessControlException {
-        File configDir = getAccreditablesDirectory();
-        FileRoleManager _manager = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(_manager);
-
-        FileRoleManager anotherManager = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(anotherManager);
-        assertEquals(_manager, anotherManager);
-    }
-
-    /**
-     * Test getRoles()
-     */
-    final public void testGetRoles() {
-        // do nothing
-    }
-
-    /**
-     * Test add(Role)
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testAddRole() throws AccessControlException {
-        File configDir = getAccreditablesDirectory();
-        String name = "test";
-        FileRoleManager _manager = null;
-        _manager = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(_manager);
-        Role role = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        _manager.add(role);
-
-        assertTrue(_manager.getRoles().length > 0);
-    }
-
-    /**
-     * Test for void remove(Role)
-     * @throws AccessControlException if an error occurs.
-     */
-    final public void testRemoveRole() throws AccessControlException {
-        File configDir = getAccreditablesDirectory();
-        String name = "test2";
-        Role role = new FileRole(getAccreditableManager().getRoleManager(), getLogger(), name);
-        FileRoleManager _manager = null;
-
-        try {
-            _manager = FileRoleManager.instance(getAccreditableManager(), configDir, getLogger());
-        } catch (AccessControlException e) {
-            e.printStackTrace();
-        }
-
-        assertNotNull(_manager);
-
-        Role[] roles = _manager.getRoles();
-        int roleCountBefore = roles.length;
-
-        _manager.add(role);
-        _manager.remove(role);
-
-        roles = _manager.getRoles();
-        int roleCountAfter = roles.length;
-
-        assertEquals(roleCountBefore, roleCountAfter);
-    }
-}
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
deleted file mode 100644
index 7b70c9f..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.impl;
-
-import java.io.File;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.ac.UserType;
-import org.apache.lenya.ac.file.FileAccreditableManager;
-import org.apache.lenya.ac.file.FileGroup;
-import org.apache.lenya.ac.file.FileGroupManager;
-import org.apache.lenya.ac.file.FileRole;
-import org.apache.lenya.ac.file.FileUser;
-import org.apache.lenya.ac.file.FileUserManager;
-
-/**
- * User manager test.
- * 
- * @version $Id$
- */
-public class UserManagerTest extends AbstractAccessControlTest {
-
-    /**
-     * @see junit.framework.TestCase#setUp()
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-    /**
-     * Run the test
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testInstance() throws AccessControlException {
-        UserManager _manager = getAccreditableManager().getUserManager();
-        assertNotNull(_manager);
-    }
-
-    /**
-     * Load the configuration for the test
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testLoadConfig() throws AccessControlException {
-        FileAccreditableManager accreditableManager = (FileAccreditableManager) getAccreditableManager();
-        File configDir = accreditableManager.getConfigurationDirectory();
-
-        String userName = "aliceTest";
-        String editorGroupId = "editorGroup";
-        String adminGroupId = "adminGroup";
-        String editorRoleId = "editorRole";
-        String adminRoleId = "adminRole";
-
-        FileRole editorRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger(),
-                editorRoleId);
-        FileRole adminRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger(),
-                adminRoleId);
-
-        User user = new FileUser(getAccreditableManager().getUserManager(), getLogger(), userName,
-                "Alice in Wonderland", "alice@test.com", "secret");
-
-        editorRole.save();
-        adminRole.save();
-
-        Group editorGroup = new FileGroup(getAccreditableManager().getGroupManager(), getLogger(),
-                editorGroupId);
-
-        // editorGroup.addRole(editorRole);
-        editorGroup.add(user);
-
-        FileGroup adminGroup = new FileGroup(getAccreditableManager().getGroupManager(),
-                getLogger(), adminGroupId);
-
-        // adminGroup.addRole(editorRole);
-        // adminGroup.addRole(adminRole);
-        editorGroup.save();
-        adminGroup.save();
-        adminGroup.add(user);
-        user.save();
-
-        FileGroupManager groupManager = null;
-        UserManager userManager = getAccreditableManager().getUserManager();
-        assertNotNull(userManager);
-
-        groupManager = FileGroupManager.instance(getAccreditableManager(), configDir, getLogger());
-        assertNotNull(groupManager);
-
-        Group fetchedGroup = groupManager.getGroup(editorGroupId);
-        assertTrue(editorGroup.equals(fetchedGroup));
-
-        fetchedGroup = groupManager.getGroup(adminGroupId);
-        assertTrue(adminGroup.equals(fetchedGroup));
-    }
-
-    /**
-     * Test getUser()
-     * @throws AccessControlException if an error occurs
-     */
-    final public void testGetUser() throws AccessControlException {
-        FileAccreditableManager accrMgr = (FileAccreditableManager) getAccreditableManager();
-        File configDir = accrMgr.getConfigurationDirectory();
-        String userName = "aliceTest";
-        FileUser user = new FileUser(getAccreditableManager().getUserManager(), getLogger(),
-                userName, "Alice in Wonderland", "alice@wonderland.com", "secret");
-        UserType[] userTypes = { FileAccreditableManager.getDefaultUserType() };
-        FileUserManager _manager = FileUserManager.instance(getAccreditableManager(), configDir,
-                userTypes, getLogger());
-        assertNotNull(_manager);
-        _manager.add(user);
-
-        User otherUser = _manager.getUser(userName);
-        assertEquals(user, otherUser);
-        assertEquals(user.getDescription(), otherUser.getDescription());
-        assertEquals(user.getEmail(), otherUser.getEmail());
-        assertEquals(user.getEncryptedPassword(), ((AbstractUser) otherUser).getEncryptedPassword());
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/ac/java/test/org/apache/lenya/cms/ac/usecases/LoginTest.java b/trunk/src/modules-core/ac/java/test/org/apache/lenya/cms/ac/usecases/LoginTest.java
deleted file mode 100644
index 9fde0af..0000000
--- a/trunk/src/modules-core/ac/java/test/org/apache/lenya/cms/ac/usecases/LoginTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.usecase.AbstractUsecaseTest;
-
-/**
- * Login test.
- */
-public class LoginTest extends AbstractUsecaseTest {
-
-    protected static final String USER_ID = "lenya";
-    protected static final String PASSWORD = "levi";
-
-    protected Map getRequestParameters() {
-        return getParameters();
-    }
-    
-    protected Map getParameters() {
-        Map params = new HashMap();
-        params.put(Login.USERNAME, USER_ID);
-        params.put(Login.PASSWORD, PASSWORD);
-        return params;
-    }
-
-    protected String getUsecaseName() {
-        return "ac.login";
-    }
-
-    protected void checkPostconditions() {
-        Session session = getRequest().getSession();
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        User user = identity.getUser();
-        assertNotNull(user);
-        assertEquals(user.getId(), USER_ID);
-    }
-    
-    protected void login() throws AccessControlException {
-        getAccessController().setupIdentity(getRequest());
-    }
-
-}
diff --git a/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-login.xconf b/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-login.xconf
deleted file mode 100644
index e1868fe..0000000
--- a/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-login.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'ac.login']">

-

-    <component-instance name="ac.login" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Login">

-      <view uri="modules/acusecases/usecases/login.jx"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-logout.xconf b/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-logout.xconf
deleted file mode 100644
index f2bcf9f..0000000
--- a/trunk/src/modules-core/acusecases/config/cocoon-xconf/usecase-ac-logout.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'ac.logout']">

-

-    <component-instance name="ac.logout" logger="lenya.ac" class="org.apache.lenya.cms.ac.usecases.Logout">

-      <view uri="modules/acusecases/usecases/logout.jx"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/acusecases/config/module.xml b/trunk/src/modules-core/acusecases/config/module.xml
deleted file mode 100644
index 23ce84f..0000000
--- a/trunk/src/modules-core/acusecases/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.acusecases</id>
-  <export package="org.apache.lenya.cms.ac.usecases"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Access control usecases</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Access control usecases</description>
-</module>
diff --git a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/AccessControlUsecase.java b/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/AccessControlUsecase.java
deleted file mode 100644
index 5e01416..0000000
--- a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/AccessControlUsecase.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.GroupManager;
-import org.apache.lenya.ac.IPRangeManager;
-import org.apache.lenya.ac.RoleManager;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Super class for access-control related usecases.
- * 
- * @version $Id: AccessControlUsecase.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class AccessControlUsecase extends AbstractUsecase {
-
-    /**
-     * Ctor.
-     */
-    public AccessControlUsecase() {
-        super();
-    }
-
-    private UserManager userManager;
-    private GroupManager groupManager;
-    private IPRangeManager ipRangeManager;
-    private RoleManager roleManager;
-    private AccessController accessController;
-
-    /**
-     * Initializes the accreditable managers. FIXME: This method resolves the
-     * AccessController, it has to be released after it is used!
-     */
-    protected void initializeAccessController() {
-        super.doInitialize();
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("initializeAccessController() called");
-
-        this.accessController = null;
-        ServiceSelector selector = null;
-        AccessControllerResolver resolver = null;
-
-        try {
-            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-            resolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
-            this.accessController = resolver.resolveAccessController(getSourceURL());
-
-            if (this.accessController == null) {
-                throw new RuntimeException("No access controller could be resolved for URL ["
-                        + getSourceURL() + "].");
-            }
-
-            AccreditableManager accreditableManager = this.accessController
-                    .getAccreditableManager();
-
-            this.userManager = accreditableManager.getUserManager();
-            this.groupManager = accreditableManager.getGroupManager();
-            this.roleManager = accreditableManager.getRoleManager();
-            this.ipRangeManager = accreditableManager.getIPRangeManager();
-
-        } catch (Exception e) {
-            throw new RuntimeException("Initialization failed: ", e);
-        } finally {
-            if (selector != null) {
-                if (resolver != null) {
-                    selector.release(resolver);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-    }
-
-    /**
-     * @return Returns the groupManager.
-     */
-    protected GroupManager getGroupManager() {
-        if (this.groupManager == null) {
-            initializeAccessController();
-        }
-        return this.groupManager;
-    }
-
-    /**
-     * @return Returns the ipRangeManager.
-     */
-    protected IPRangeManager getIpRangeManager() {
-        if (this.ipRangeManager == null) {
-            initializeAccessController();
-        }
-        return this.ipRangeManager;
-    }
-
-    /**
-     * @return Returns the roleManager.
-     */
-    protected RoleManager getRoleManager() {
-        if (this.roleManager == null) {
-            initializeAccessController();
-        }
-        return this.roleManager;
-    }
-
-    /**
-     * @return Returns the userManager.
-     */
-    protected UserManager getUserManager() {
-        if (this.userManager == null) {
-            if (getLogger().isDebugEnabled())
-                getLogger()
-                        .debug(
-                                "getUserManager() accessed, is null, so calling initializeAccessController");
-            initializeAccessController();
-        }
-        return this.userManager;
-    }
-
-    /**
-     * @return Returns the accessController.
-     */
-    protected AccessController getAccessController() {
-        if (this.accessController == null) {
-            initializeAccessController();
-        }
-        return this.accessController;
-    }
-}
diff --git a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Login.java b/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Login.java
deleted file mode 100644
index c190373..0000000
--- a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Login.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.Map;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to login a user.
- * 
- * @version $Id: Login.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class Login extends AccessControlUsecase {
-
-    protected static final String HISTORY_SESSION_ATTRIBUTE = "org.apache.lenya.cms.cocoon.acting.History";
-    protected static final String PASSWORD = "password";
-    protected static final String USERNAME = "username";
-    protected static final String REFERRER_QUERY_STRING = "referrerQueryString";
-    protected static final String PUBLICATION = "publication";
-    protected static final String CURRENT_USER = "currentUser";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Publication publication;
-
-        try {
-            publication = PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
-                    getSourceURL());
-            if (publication.exists()) {
-                setParameter(PUBLICATION, publication);
-            }
-            Identity identity = this.getSession().getIdentity();
-            if (identity != null && identity.getUser() != null) {
-                setParameter(CURRENT_USER, this.getSession().getIdentity().getUser());
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Ctor.
-     */
-    public Login() {
-        super();
-    }
-
-    /**
-     * Validates the request parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void validate() throws UsecaseException {
-
-        String userId = getParameterAsString(USERNAME);
-        String password = getParameterAsString(PASSWORD);
-
-        if (userId.length() == 0) {
-            addErrorMessage("Please enter a user name.");
-        }
-        if (password.length() == 0) {
-            addErrorMessage("Please enter a password.");
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        
-        validate();
-        
-        if (!hasErrors()) {
-            Map objectModel = ContextHelper.getObjectModel(getContext());
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            request.getSession(true);
-            if (getAccessController().authenticate(request)) {
-                request.getSession(false).removeAttribute(HISTORY_SESSION_ATTRIBUTE);
-                setDefaultTargetURL(request.getPathInfo());
-            } else {
-                addErrorMessage("Authentication failed");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getExitQueryString()
-     */
-    protected String getExitQueryString() {
-        String queryString = getParameterAsString(REFERRER_QUERY_STRING);
-        if (queryString != null && !queryString.equals("")) {
-            queryString = "?" + queryString;
-        }
-        return queryString;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Logout.java b/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Logout.java
deleted file mode 100644
index b6fd987..0000000
--- a/trunk/src/modules-core/acusecases/java/src/org/apache/lenya/cms/ac/usecases/Logout.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-
-/**
- * Usecase to log a user out.
- * 
- * @version $Id: Logout.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class Logout extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        Map objectModel = ContextHelper.getObjectModel(getContext());
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-
-        if (session != null) {
-            Vector history = (Vector) session
-                    .getAttribute(Login.HISTORY_SESSION_ATTRIBUTE);
-            setParameter("history", history.toArray());
-        }
-    }
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        Map objectModel = ContextHelper.getObjectModel(getContext());
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-
-        if (session != null) {
-            session.removeAttribute(Identity.class.getName());
-            RepositoryUtil.removeSession(manager, request);
-            session.removeAttribute(Login.HISTORY_SESSION_ATTRIBUTE);
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/acusecases/resources/i18n/cmsui.xml b/trunk/src/modules-core/acusecases/resources/i18n/cmsui.xml
deleted file mode 100644
index 678f3dd..0000000
--- a/trunk/src/modules-core/acusecases/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Please enter a user name.">Please enter a user name.</message>
-  <message key="Please enter a password.">Please enter a password.</message>
-  

-</catalogue>

diff --git a/trunk/src/modules-core/acusecases/resources/i18n/cmsui_de.xml b/trunk/src/modules-core/acusecases/resources/i18n/cmsui_de.xml
deleted file mode 100644
index d2bfe3e..0000000
--- a/trunk/src/modules-core/acusecases/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Please enter a user name.">Bitte geben Sie einen Benutzernamen ein.</message>
-  <message key="Please enter a password.">Bitte geben Sie ein Passwort ein.</message>
-  
-</catalogue>

-

diff --git a/trunk/src/modules-core/acusecases/test/canoo/test.xml b/trunk/src/modules-core/acusecases/test/canoo/test.xml
deleted file mode 100644
index 28795ce..0000000
--- a/trunk/src/modules-core/acusecases/test/canoo/test.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="AC usecases test" basedir="." default="main">
-  
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-  
-  <target name="main">
-    <webtest name="acusecases">
-      &doConfig;
-      <steps>
-        <!-- login page -->
-        <invoke url="index.html" />
-        <verifyTitle text="Login to the Default Publication" />
-        
-        <!-- missing fields -->
-        <setInputField name="username" value=""/>
-        <setInputField name="password" value=""/>
-        <clickButton name="submit"/>
-        <verifyText text="Please enter"/>
-        
-        <!-- wrong login -->
-        <setInputField name="username" value="foo"/>
-        <setInputField name="password" value="bar"/>
-        <clickButton name="submit"/>
-        <verifyText text="Authentication failed"/>
-        
-        <!-- correct login -->
-        <setInputField name="username" value="lenya"/>
-        <setInputField name="password" value="levi"/>
-        <clickButton name="submit"/>
-        <verifyText text="Welcome to the Default Publication from the Lenya community!"/>
-        
-        <!-- logout -->
-        <invoke url="index.html?lenya.usecase=ac.logout"/>
-        <verifyTitle text="Logout from the Publication" />
-        <clickButton name="submit"/>
-        <verifyTitle text="Login to the Default Publication" />
-        
-      </steps>
-    </webtest>
-  </target>
-</project>
diff --git a/trunk/src/modules-core/acusecases/usecases/login.jx b/trunk/src/modules-core/acusecases/usecases/login.jx
deleted file mode 100644
index e09dcb0..0000000
--- a/trunk/src/modules-core/acusecases/usecases/login.jx
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <jx:set var="pub" value="${usecase.getParameter('publication')}"/>
-
-  <page:title>
-    <jx:choose>
-      <jx:when test="${usecase.getParameter('currentUser') != null}">
-        <i18n:text>Access Denied</i18n:text>
-      </jx:when>
-      <jx:otherwise>
-        <i18n:translate>
-          <i18n:text i18n:key="login-to-pub"/>
-          <i18n:param><jx:out value="${pub.getName()}"/></i18n:param>
-        </i18n:translate>
-      </jx:otherwise>
-    </jx:choose>
-  </page:title>
-  <page:body>
-    <jx:if test="${usecase.getParameter('currentUser') != null}">
-      <div class="lenya-box">
-        <div class="lenya-box-title">
-          <i18n:text>Access Denied</i18n:text>
-        </div>
-        <div class="lenya-box-body">
-          <i18n:translate>
-            <i18n:text i18n:key="user-not-authorized"/>
-            <i18n:param><jx:out value="${usecase.getParameter('currentUser').getId()}"/></i18n:param>
-            <i18n:param><jx:out value="${request.getRequestURI()}"/></i18n:param>
-          </i18n:translate>
-          <br/>
-          <br/>
-          <i18n:text>have-another-account</i18n:text>
-        </div>
-      </div>
-    </jx:if>
-    
-    <jx:choose>
-      <jx:when test="${pub.getId().equals('default')}">
-        <p>
-          <strong> <i18n:text>NOTE</i18n:text>: </strong>
-          <i18n:translate>
-            <i18n:text i18n:key="try-user-lenya-alice" />
-            <i18n:param>"lenya"</i18n:param>
-            <i18n:param>"levi"</i18n:param>
-            <i18n:param>"alice"</i18n:param>
-            <i18n:param>"levi"</i18n:param>
-          </i18n:translate>
-        </p>
-      </jx:when>
-      <jx:when test="${pub.getId().equals('blog')}">
-        <p>
-          <strong> <i18n:text>NOTE</i18n:text>: </strong>
-          <i18n:translate>
-            <i18n:text i18n:key="try-user-lenya" />
-            <i18n:param>"lenya"</i18n:param>
-            <i18n:param>"levi"</i18n:param>
-          </i18n:translate>
-        </p>
-      </jx:when>
-    </jx:choose>
-    
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Login</i18n:text>
-      </div>
-
-      <div class="lenya-box-body">
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-        <form name="login" id="login" method="post" action="?lenya.continuation=${continuation.id}&amp;lenya.usecase=${request.getParameter('lenya.usecase')}">
-          <table class="lenya-table-noborder">
-            <tr>
-              <td><label for="name"><i18n:text>Username</i18n:text>: </label></td>
-              <td>
-                <input class="lenya-form-element" name="username" type="text" value="${usecase.getParameter('username')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td><label for="password"> <i18n:text>Password</i18n:text>: </label></td>
-              <td>
-                <input class="lenya-form-element" name="password" type="password" />
-              </td>
-            </tr>
-            <tr>
-              <td />
-              <td>
-                <input i18n:attr="value" name="submit" type="submit" value="Login"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/acusecases/usecases/logout.jx b/trunk/src/modules-core/acusecases/usecases/logout.jx
deleted file mode 100644
index d7f5e50..0000000
--- a/trunk/src/modules-core/acusecases/usecases/logout.jx
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title>
-    <i18n:translate>
-      <i18n:text i18n:key="logout-from-pub"/>
-      <i18n:param></i18n:param>
-    </i18n:translate>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Logout</i18n:text>
-      </div>
-
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-logout">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <input i18n:attr="value" name="submit" type="submit" value="Logout" />
-                &#160;
-                <input i18n:attr="value" name="cancel" type="submit" value="Cancel" />
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Your History</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <ul>
-          <jx:forEach var="url" items="${usecase.getParameter('history')}">
-            <li><jx:out value="${url}"/></li>
-          </jx:forEach>
-        </ul>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/tabs.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/tabs.xconf
deleted file mode 100644
index 6836e05..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/tabs.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/gui-manager" unless="/cocoon/gui-manager/tab-group[@name = 'admin']">

-    <tab-group name="admin">

-      <tab name="users" label="Users" usecase="admin.users"/>

-      <tab name="groups" label="Groups" usecase="admin.groups"/>

-      <tab name="ipRanges" label="IP Ranges" usecase="admin.ipRanges"/>

-      <tab name="usecases" label="Usecases" usecase="admin.usecases"/>
-      <tab name="trash" label="Delete Trash" usecase="admin.emptyTrash"/>

-      <tab name="serverStatus" label="Server Status" usecase="admin.serverStatus"/>

-      <tab name="sessions" label="Sessions" usecase="admin.sessions"/>

-      <tab name="siteOverview" label="Overview" usecase="admin.siteOverview"/>

-    </tab-group>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-aboutLenya.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-aboutLenya.xconf
deleted file mode 100644
index 4b70e91..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-aboutLenya.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.groups']">
-
-  <component-instance name="admin.aboutLenya" logger="lenya.admin" class="org.apache.lenya.cms.usecase.DummyUsecase">
-    <view uri="modules/administration/usecases/aboutLenya.jx" menu="true"/>
-  </component-instance>
-  
-</xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addGroup.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addGroup.xconf
deleted file mode 100644
index f2d0201..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addGroup.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.groups']">

-

-    <component-instance name="admin.addGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddGroup">

-      <view uri="modules/administration/usecases/addGroup.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.group"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addIPRange.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addIPRange.xconf
deleted file mode 100644
index 0321d9a..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addIPRange.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.addIPRange']">

-    <component-instance name="admin.addIPRange" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddIPRange">

-      <view uri="modules/administration/usecases/addIPRange.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRanges"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addUser.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addUser.xconf
deleted file mode 100644
index e68f44d..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-addUser.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.addUser']">

-

-    <component-instance name="admin.addUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.AddUser">

-      <view uri="modules/administration/usecases/addUser.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.user"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePassword.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePassword.xconf
deleted file mode 100644
index cf4de56..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePassword.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.changePassword']">

-

-    <component-instance name="admin.changePassword" logger="lenya.admin"

-      class="org.apache.lenya.cms.ac.usecases.ChangePassword">

-      <view uri="modules/administration/usecases/changePassword.jx">

-        <parameter name="checkPassword" value="true"/>

-      </view>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePasswordAdmin.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePasswordAdmin.xconf
deleted file mode 100644
index bcded3f..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-changePasswordAdmin.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.changePasswordAdmin']">

-

-    <component-instance name="admin.changePasswordAdmin" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.ChangePasswordAdmin">

-      <view uri="modules/administration/usecases/changePasswordAdmin.jx" menu="true">

-        <tab group="admin" name="users"/>

-        <parameter name="checkPassword" value="false"/>

-      </view>

-      <exit usecase="admin.user"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteGroup.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteGroup.xconf
deleted file mode 100644
index 791091d..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteGroup.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.deleteGroup']">

-    <component-instance name="admin.deleteGroup" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteGroup">

-      <view uri="modules/administration/usecases/deleteGroup.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.groups"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteIPRange.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteIPRange.xconf
deleted file mode 100644
index e249a6e..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteIPRange.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.ipRangeGroups']">

-    <component-instance name="admin.deleteIPRange" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteIPRange">

-      <view uri="modules/administration/usecases/deleteIPRange.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRanges"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteUser.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteUser.xconf
deleted file mode 100644
index d2ff1d6..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-deleteUser.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.deleteUser']">

-

-    <component-instance name="admin.deleteUser" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.DeleteUser">

-      <view uri="modules/administration/usecases/deleteUser.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.users"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-emptyTrash.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-emptyTrash.xconf
deleted file mode 100644
index 8ad2358..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-emptyTrash.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.emptyTrash']">

-    <component-instance name="admin.emptyTrash" logger="lenya.admin" class="org.apache.lenya.cms.site.usecases.EmptyTrash">

-      <view uri="modules/administration/usecases/emptyTrash.jx" menu="true">

-        <tab group="admin" name="trash"/>

-      </view>

-      <exit usecase="admin.emptyTrash"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-group.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-group.xconf
deleted file mode 100644
index f69e699..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-group.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.group']">

-

-    <component-instance name="admin.group" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Group">

-      <view uri="modules/administration/usecases/group.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.groups"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupMembers.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupMembers.xconf
deleted file mode 100644
index 8c009f1..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupMembers.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.groupMembers']">

-

-    <component-instance name="admin.groupMembers" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupMembers">

-      <view uri="modules/administration/usecases/groupMembers.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.group">

-        <parameter name="groupId"/>

-      </exit>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupProfile.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupProfile.xconf
deleted file mode 100644
index efa3443..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groupProfile.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.groupProfile']">

-

-    <component-instance name="admin.groupProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.GroupProfile">

-      <view uri="modules/administration/usecases/groupProfile.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.group">

-        <parameter name="groupId"/>

-      </exit>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groups.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groups.xconf
deleted file mode 100644
index b9fd960..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-groups.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.groups']">

-

-    <component-instance name="admin.groups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Groups">

-      <view uri="modules/administration/usecases/groups.jx" menu="true">

-        <tab group="admin" name="groups"/>

-      </view>

-      <exit usecase="admin.groups"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRange.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRange.xconf
deleted file mode 100644
index a55adfd..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRange.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.ipRange']">

-    <component-instance name="admin.ipRange" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.IPRange">

-      <view uri="modules/administration/usecases/ipRange.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRanges"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeGroups.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeGroups.xconf
deleted file mode 100644
index 44d2bb4..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeGroups.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.ipRangeGroups']">

-    <component-instance name="admin.ipRangeGroups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.IPRangeGroups">

-      <view uri="modules/administration/usecases/ipRangeGroups.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRange">

-        <parameter name="ipRangeId"/>

-      </exit>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeProfile.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeProfile.xconf
deleted file mode 100644
index 06c123b..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRangeProfile.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.ipRangeProfile']">

-    <component-instance name="admin.ipRangeProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.IPRangeProfile">

-      <view uri="modules/administration/usecases/ipRangeProfile.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRange">

-        <parameter name="ipRangeId"/>

-      </exit>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRanges.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRanges.xconf
deleted file mode 100644
index 0d3e158..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-ipRanges.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.ipRanges']">

-    <component-instance name="admin.ipRanges" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.IPRanges">

-      <view uri="modules/administration/usecases/ipRanges.jx" menu="true">

-        <tab group="admin" name="ipRanges"/>

-      </view>

-      <exit usecase="admin.ipRanges"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-serverStatus.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-serverStatus.xconf
deleted file mode 100644
index 4fa1f44..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-serverStatus.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.serverStatus']">

-    <component-instance name="admin.serverStatus" logger="lenya.admin" class="org.apache.lenya.cms.usecase.DummyUsecase">

-      <view uri="modules/administration/usecases/serverStatus.jx" menu="true">

-        <tab group="admin" name="serverStatus"/>

-      </view>

-      <exit usecase="admin.serverStatus"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-sessions.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-sessions.xconf
deleted file mode 100644
index dc6f0ff..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-sessions.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.sessions']">
-    <component-instance name="admin.sessions" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.SessionViewer">
-      <view uri="modules/administration/usecases/sessions.jx" menu="true">
-        <tab group="admin" name="sessions"/>
-      </view>
-      <exit usecase="admin.sessions"/>
-    </component-instance>
-  </xconf>
diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-siteOverview.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-siteOverview.xconf
deleted file mode 100644
index 944dbd6..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-siteOverview.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.siteOverview']">

-    <component-instance name="admin.siteOverview" logger="lenya.admin" class="org.apache.lenya.cms.site.usecases.SiteOverview">

-      <view uri="modules/administration/usecases/siteOverview.jx" menu="true">

-        <tab group="admin" name="siteOverview"/>

-      </view>

-      <exit usecase="admin.siteOverview"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-usecases.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-usecases.xconf
deleted file mode 100644
index 7db349b..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-usecases.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.usecases']">

-

-    <component-instance name="admin.usecases" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Usecases">

-      <view uri="modules/administration/usecases/usecases.jx" menu="true">

-        <tab group="admin" name="usecases"/>

-      </view>
-      <exit usecase="admin.usecases"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-user.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-user.xconf
deleted file mode 100644
index 645ae77..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-user.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.users']">

-

-    <component-instance name="admin.user" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.User">

-      <view uri="modules/administration/usecases/user.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.users"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userGroups.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userGroups.xconf
deleted file mode 100644
index 5588984..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userGroups.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.userGroups']">

-

-    <component-instance name="admin.userGroups" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserGroups">

-      <view uri="modules/administration/usecases/userGroups.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.user">

-        <parameter name="userId"/>

-      </exit>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userProfile.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userProfile.xconf
deleted file mode 100644
index 400180a..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-userProfile.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.userProfile']">

-

-    <component-instance name="admin.userProfile" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.UserProfile">

-      <view uri="modules/administration/usecases/userProfile.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.user">

-        <parameter name="userId"/>

-      </exit>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-users.xconf b/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-users.xconf
deleted file mode 100644
index 2dc46be..0000000
--- a/trunk/src/modules-core/administration/config/cocoon-xconf/usecase-admin-users.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'admin.users']">

-

-    <component-instance name="admin.users" logger="lenya.admin" class="org.apache.lenya.cms.ac.usecases.Users">

-      <view uri="modules/administration/usecases/users.jx" menu="true">

-        <tab group="admin" name="users"/>

-      </view>

-      <exit usecase="admin.users"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/administration/config/module.xml b/trunk/src/modules-core/administration/config/module.xml
deleted file mode 100644
index aea67b7..0000000
--- a/trunk/src/modules-core/administration/config/module.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.administration</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.ac"/>
-  <depends module="org.apache.lenya.modules.acusecases"/>
-  <depends module="org.apache.lenya.modules.ldap"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Administration</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Administration usecases</description>
-</module>
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
deleted file mode 100644
index 75c74eb..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AbstractChangePassword.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.User;
-
-
-/**
- * Usecase to change a user's password.
- */
-public abstract class AbstractChangePassword extends AccessControlUsecase {
-
-    protected static final String NEW_PASSWORD = "newPassword";
-    protected static final String CONFIRM_PASSWORD = "confirmPassword";
-
-    protected abstract User getUser();
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        checkNewPassword(this);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        getUser().setPassword(getParameterAsString(NEW_PASSWORD));
-        getUser().save();
-    }
-
-    /**
-     * Checks a password and a confirmed password.
-     * @param usecase The usecase.
-     */
-    protected static void checkNewPassword(AccessControlUsecase usecase) {
-        String password = usecase.getParameterAsString(NEW_PASSWORD);
-        String confirmPassword = usecase.getParameterAsString(CONFIRM_PASSWORD);
-
-        if (!password.equals(confirmPassword)) {
-            usecase.addErrorMessage("Password and confirmed password are not equal.");
-        }
-
-        if (password.length() < 6) {
-            usecase.addErrorMessage("The password must be at least six characters long.");
-        }
-
-        if (!password.matches(".*\\d.*")) {
-            usecase.addErrorMessage("The password must contain at least one number.");
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AccessControl.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AccessControl.java
deleted file mode 100644
index 3432742..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AccessControl.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.apache.cocoon.ProcessingException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.Credential;
-import org.apache.lenya.ac.ModifiablePolicy;
-import org.apache.lenya.ac.InheritingPolicyManager;
-import org.apache.lenya.ac.World;
-
-/**
- * Usecase to display the AccessControl tab in the site area for a document.
- * This is a mix-in class that ideally would inherit both from
- * AccessControlUsecase and DocumentUsecase. FIXME i just took the appropriate
- * code from DocumentUsecase, maybe its possible to have a saner inheritance?
- * 
- * @version $Id: AccessControl.java 408702 2006-05-22 16:03:49Z andreas $
- */
-
-public class AccessControl extends AccessControlUsecase {
-
-    protected static final String AC_AREA = "acArea";
-    protected static final String ADD = "add";
-    protected static final String DELETE = "delete";
-    protected static final String UP = "up";
-    protected static final String DOWN = "down";
-    protected static final String USER = "user";
-    protected static final String GROUP = "group";
-    protected static final String IPRANGE = "ipRange";
-    protected static final String WORLD = "world";
-    protected static final String ROLE = "role";
-    protected static final String SUB_USER = "subuser";
-    protected static final String SUB_GROUP = "subgroup";
-    protected static final String SUB_IPRANGE = "subipRange";
-
-    private static String[] types = { USER, GROUP, IPRANGE, SUB_USER, SUB_GROUP, SUB_IPRANGE, WORLD };
-    private static String[] operations = { ADD, DELETE, DOWN, UP };
-
-    protected static final String SSL = "ssl";
-    protected static final String ANCESTOR_SSL = "ancestorSsl";
-    protected static final String DOCUMENT = "document";
-    protected static final String SUB_CREDENTIALS = "subCredentials";
-    protected static final String PARENT_CREDENTIALS = "parentCredentials";
-    private static final String METHOD = "method";
-    private String COMPLETE_AREA = "private.completeArea";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        try {
-            URLInformation info = new URLInformation(getSourceURL());
-            setParameter(COMPLETE_AREA, info.getCompleteArea());
-
-            DocumentFactory map = getDocumentFactory();
-            if (map.isDocument(getSourceURL())) {
-                Document sourceDocument = map.getFromURL(getSourceURL());
-                setParameter(DOCUMENT, sourceDocument);
-            }
-
-            setParameter(SSL, Boolean.toString(isSSLProtected()));
-            setParameter(ANCESTOR_SSL, Boolean.toString(isAncestorSSLProtected()));
-
-            User[] users = getUserManager().getUsers();
-            String[] userIds = new String[users.length];
-            for (int i = 0; i < users.length; i++) {
-                userIds[i] = users[i].getId();
-            }
-            Arrays.sort(userIds);
-            setParameter("users", userIds);
-
-            Group[] groups = getGroupManager().getGroups();
-            String[] groupIds = new String[groups.length];
-            for (int i = 0; i < groups.length; i++) {
-                groupIds[i] = groups[i].getId();
-            }
-            Arrays.sort(groupIds);
-            setParameter("groups", groupIds);
-
-            IPRange[] ipRanges = getIpRangeManager().getIPRanges();
-            String[] ipRangeIds = new String[ipRanges.length];
-            for (int i = 0; i < ipRanges.length; i++) {
-                ipRangeIds[i] = ipRanges[i].getId();
-            }
-            Arrays.sort(ipRangeIds);
-            setParameter("ipRanges", ipRangeIds);
-
-            Role[] roles = getRoleManager().getRoles();
-            String visitorRole = "";
-            Set roleIds = new TreeSet();
-            for (int i = 0; i < roles.length; i++) {
-                if (roles[i].isAssignable()) {
-                    roleIds.add(roles[i].getId());
-                    if (roles[i].getId().equals("visit")) {
-                        visitorRole = roles[i].getId();
-                    }
-                }
-            }
-            setParameter("roles", roleIds.toArray(new String[roleIds.size()]));
-            setParameter("visitorRole", visitorRole);
-
-            setParameter(SUB_CREDENTIALS, getSubtreeCredentials());
-            setParameter(PARENT_CREDENTIALS, getParentCredentials());
-
-        } catch (final Exception e) {
-            addErrorMessage("Could not read a value.");
-            getLogger().error("Could not read value for AccessControl usecase. ", e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        URLInformation info = new URLInformation(getSourceURL());
-        String acArea = getParameterAsString(AC_AREA);
-        if (!acArea.equals(Publication.LIVE_AREA) && !info.getArea().equals(acArea)) {
-            addErrorMessage("This usecase can only be invoked in the configured area.");
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        for (int i = 0; i < types.length; i++) {
-            for (int j = 0; j < operations.length; j++) {
-                String type = types[i];
-                String paramName = operations[j] + "Credential_" + type;
-                if (getParameterAsString(paramName) != null) {
-                    String roleId = getParameterAsString(ROLE);
-                    String id = getParameterAsString(type);
-                    Accreditable item = getAccreditable(type, id);
-                    if (item == null) {
-                        addErrorMessage("no_such_accreditable", new String[] { type, id });
-                    } else {
-                        Role role = getRoleManager().getRole(roleId);
-                        if (role == null) {
-                            addErrorMessage("role_no_such_role", new String[] { roleId });
-                        }
-                        if (!role.isAssignable()) {
-                            addErrorMessage("cannot-assign-role", new String[] { roleId });
-                        }
-                        if (operations[j].equals(ADD)) {
-                            ModifiablePolicy policy = getPolicy();
-                            if (containsCredential(policy, item, role)) {
-                                addErrorMessage("credential-already-contained", new String[] {
-                                        ((Item) item).getId(), role.getId() });
-                            }
-                        }
-                    }
-                    if (hasErrors()) {
-                        deleteParameter(paramName);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    public void doExecute() throws Exception {
-        super.doExecute();
-        if (getParameterAsString("change_ssl") != null) {
-            String ssl = getBooleanCheckboxParameter("ssl");
-            setSSLProtected(Boolean.valueOf(ssl).booleanValue());
-        }
-
-        for (int i = 0; i < types.length; i++) {
-            for (int j = 0; j < operations.length; j++) {
-                String type = types[i];
-                String paramName = operations[j] + "Credential_" + type;
-                if (getParameterAsString(paramName) != null) {
-                    String roleId = getParameterAsString(ROLE);
-                    String method = getParameterAsString(METHOD);
-                    String id = getParameterAsString(type);
-                    Accreditable item = getAccreditable(type, id);
-                    Role role = getRoleManager().getRole(roleId);
-                    manipulateCredential(item, role, operations[j], method);
-                    setParameter(SUB_CREDENTIALS, getSubtreeCredentials());
-                    deleteParameter(paramName);
-                }
-            }
-        }
-    }
-
-    protected Accreditable getAccreditable(String type, String id) {
-        Accreditable item = null;
-        if (type.equals(USER)) {
-            item = getUserManager().getUser(id);
-        } else if (type.equals(GROUP)) {
-            item = getGroupManager().getGroup(id);
-        } else if (type.equals(IPRANGE)) {
-            item = getIpRangeManager().getIPRange(id);
-        } else if (type.equals(WORLD)) {
-            item = World.getInstance();
-        }
-        return item;
-    }
-
-    /**
-     * Returns if one of the ancestors of this URL is SSL protected.
-     * 
-     * @return A boolean value.
-     * @throws ProcessingException when something went wrong.
-     */
-    protected boolean isAncestorSSLProtected() throws ProcessingException {
-        boolean ssl;
-        try {
-            String ancestorUrl = "";
-            int lastSlashIndex = getPolicyURL().lastIndexOf("/");
-            if (lastSlashIndex != -1) {
-                ancestorUrl = getPolicyURL().substring(0, lastSlashIndex);
-            }
-
-            Policy policy = getPolicyManager().getPolicy(getAccreditableManager(), ancestorUrl);
-            ssl = policy.isSSLProtected();
-        } catch (AccessControlException e) {
-            throw new ProcessingException("Resolving policy failed: ", e);
-        }
-        return ssl;
-    }
-
-    /**
-     * Returns if one of the ancestors of this URL is SSL protected.
-     * 
-     * @return A boolean value.
-     * @throws ProcessingException when something went wrong.
-     */
-    protected boolean isSSLProtected() throws ProcessingException {
-        boolean ssl;
-        try {
-            Policy policy = getPolicyManager().getPolicy(getAccreditableManager(), getPolicyURL());
-            ssl = policy.isSSLProtected();
-        } catch (AccessControlException e) {
-            throw new ProcessingException("Resolving policy failed: ", e);
-        }
-        return ssl;
-    }
-
-    /**
-     * Sets if this URL is SSL protected.
-     * 
-     * @param ssl A boolean value.
-     * @throws ProcessingException when something went wrong.
-     */
-    protected void setSSLProtected(boolean ssl) throws ProcessingException {
-        try {
-            ModifiablePolicy policy = getPolicy();
-            policy.setSSL(ssl);
-            getPolicyManager().saveSubtreePolicy(getPolicyURL(), policy);
-        } catch (AccessControlException e) {
-            throw new ProcessingException("Resolving policy failed: ", e);
-        }
-    }
-
-    protected InheritingPolicyManager getPolicyManager() {
-        return (InheritingPolicyManager) getAccessController().getPolicyManager();
-    }
-
-    protected AccreditableManager getAccreditableManager() {
-        return getAccessController().getAccreditableManager();
-    }
-
-    /**
-     * Changes a credential by adding or deleting an item for a role.
-     * 
-     * @param accreditable The accreditable to add or delete.
-     * @param role The role.
-     * @param operation The operation, either {@link #ADD}or {@link #DELETE}.
-     * @param method
-     * @throws ProcessingException when something went wrong.
-     */
-    protected void manipulateCredential(Accreditable accreditable, Role role, String operation,
-            String method) throws ProcessingException {
-        try {
-            ModifiablePolicy policy = getPolicy();
-
-            if (operation.equals(ADD)) {
-                policy.addRole(accreditable, role, method);
-            } else if (operation.equals(DELETE)) {
-                policy.removeRole(accreditable, role);
-            } else if (operation.equals(UP)) {
-                policy.moveRoleUp(accreditable, role);
-            } else if (operation.equals(DOWN)) {
-                policy.moveRoleDown(accreditable, role);
-            }
-            getPolicyManager().saveSubtreePolicy(getPolicyURL(), policy);
-
-        } catch (Exception e) {
-            throw new ProcessingException("Manipulating credential failed: ", e);
-        }
-    }
-
-    protected ModifiablePolicy getPolicy() throws AccessControlException {
-        return (ModifiablePolicy) getPolicyManager().buildSubtreePolicy(getAccreditableManager(),
-                getPolicyURL());
-    }
-
-    protected boolean containsCredential(ModifiablePolicy policy, Accreditable accreditable,
-            Role role) throws AccessControlException {
-        Credential[] credentials = policy.getCredentials();
-        boolean contains = false;
-        int i = 0;
-        while (!contains && i < credentials.length) {
-            Accreditable credAccr = credentials[i].getAccreditable();
-            Role credRole = credentials[i].getRole();
-            contains = credAccr.equals(accreditable) && credRole.equals(role);
-            i++;
-        }
-        return contains;
-    }
-
-    /**
-     * Returns the credential wrappers for the request of this object model.
-     * 
-     * @return An array of CredentialWrappers.
-     * @throws ProcessingException when something went wrong.
-     */
-    public CredentialWrapper[] getSubtreeCredentials() throws ProcessingException {
-        return getCredentials(true);
-    }
-
-    /**
-     * Returns the credential wrappers for the parent URI of the URL belonging
-     * to the request of this object model.
-     * 
-     * @return An array of CredentialWrappers.
-     * @throws ProcessingException when something went wrong.
-     */
-    public CredentialWrapper[] getParentCredentials() throws ProcessingException {
-        return getCredentials(false);
-    }
-
-    /**
-     * Returns the credentials of the policy of the selected URL.
-     * 
-     * @return An array of CredentialWrappers.
-     * @throws ProcessingException when something went wrong.
-     */
-    public CredentialWrapper[] getCredentials(boolean inherit) throws ProcessingException {
-
-        List credentials = new ArrayList();
-
-        ModifiablePolicy policies[] = getPolicies(inherit);
-        List policyCredentials = new ArrayList();
-        for (int i = 0; i < policies.length; i++) {
-            Credential[] creds;
-            try {
-                creds = policies[i].getCredentials();
-                for (int j = 0; j < creds.length; j++) {
-                    policyCredentials.add(creds[j]);
-                }
-            } catch (AccessControlException e) {
-                throw new ProcessingException(
-                        "AccessControlException - receiving credential failed: ", e);
-            }
-        }
-        for (Iterator i = policyCredentials.iterator(); i.hasNext();) {
-            Credential credential = (Credential) i.next();
-            Accreditable accreditable = credential.getAccreditable();
-            Role role = credential.getRole();
-            String method = credential.getMethod();
-            credentials.add(new CredentialWrapper(accreditable, role, method));
-        }
-        return (CredentialWrapper[]) credentials.toArray(new CredentialWrapper[credentials.size()]);
-    }
-
-    /**
-     * Returns the policies for a certain URL.
-     * 
-     * @param inherit If true, all ancestor policies are returned. Otherwise,
-     *            only the URL policies are returned.
-     * @return An array of DefaultPolicy objects.
-     * @throws ProcessingException when something went wrong.
-     */
-    protected ModifiablePolicy[] getPolicies(boolean inherit) throws ProcessingException {
-
-        ModifiablePolicy[] policies;
-
-        try {
-            if (inherit) {
-                policies = new ModifiablePolicy[1];
-                AccreditableManager policyManager = getAccreditableManager();
-                policies[0] = (ModifiablePolicy) getPolicyManager().buildSubtreePolicy(
-                        policyManager, getPolicyURL());
-            } else {
-                String ancestorUrl = "";
-
-                String currentUrl = getPolicyURL();
-                if (currentUrl.endsWith("/")) {
-                    currentUrl = currentUrl.substring(0, currentUrl.length() - 1);
-                }
-
-                int lastSlashIndex = currentUrl.lastIndexOf("/");
-                if (lastSlashIndex != -1) {
-                    ancestorUrl = currentUrl.substring(0, lastSlashIndex);
-                }
-                Policy[] pArray = getPolicyManager().getPolicies(getAccreditableManager(),
-                        ancestorUrl);
-                policies = new ModifiablePolicy[pArray.length];
-                for (int i = 0; i < pArray.length; i++) {
-                    policies[policies.length - 1 - i] = (ModifiablePolicy) pArray[i];
-                }
-            }
-        } catch (AccessControlException e) {
-            throw new ProcessingException(e);
-        }
-
-        return policies;
-    }
-
-    protected String getPolicyURL() {
-        String infoUrl = getSourceURL();
-        URLInformation info = new URLInformation(infoUrl);
-
-        String area = getParameterAsString(AC_AREA);
-        String url = "/" + info.getPublicationId() + "/" + area + info.getDocumentUrl();
-        return url;
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddGroup.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddGroup.java
deleted file mode 100644
index ea2b423..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddGroup.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.ItemUtil;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to add a group.
- *
- * @version $Id: AddGroup.java 407305 2006-05-17 16:21:49Z andreas $ 
- */
-public class AddGroup extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        validate();
-    }
-
-    /**
-     * Validates the request parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void validate() throws UsecaseException {
-
-        String groupId = getParameterAsString(GroupProfile.ID);
-
-        Group existingGroup = getGroupManager().getGroup(groupId);
-
-        if (existingGroup != null) {
-            addErrorMessage("This group already exists.");
-        }
-
-        if (!ItemUtil.isValidId(groupId)) {
-            addErrorMessage("This is not a valid group ID.");
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String id = getParameterAsString(GroupProfile.ID);
-        String name = getParameterAsString(GroupProfile.NAME);
-        String description = getParameterAsString(GroupProfile.DESCRIPTION);
-
-        Group group = getGroupManager().add(id);
-        group.setName(name);
-        group.setDescription(description);
-        
-        group.save();
-        
-        setExitParameter(GroupProfile.ID, id);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddIPRange.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddIPRange.java
deleted file mode 100644
index 02c9650..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddIPRange.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.ItemUtil;
-import org.apache.lenya.cms.ac.usecases.IPRangeProfile.Part;
-
-/**
- * Usecase to add an IP range.
- */
-public class AddIPRange extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        String id = getParameterAsString(IPRangeProfile.ID);
-
-        IPRange existingIPRange = getIpRangeManager().getIPRange(id);
-
-        if (existingIPRange != null) {
-            addErrorMessage("This IP range already exists.");
-        }
-
-        if (!ItemUtil.isValidId(id)) {
-            addErrorMessage("This is not a valid IP range ID.");
-        }
-
-        IPRangeProfile.validateAddresses(this);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        String id = getParameterAsString(IPRangeProfile.ID);
-        String name = getParameterAsString(IPRangeProfile.NAME);
-        String description = getParameterAsString(IPRangeProfile.DESCRIPTION);
-
-        IPRange ipRange = getIpRangeManager().add(id);
-        ContainerUtil.enableLogging(ipRange, getLogger());
-
-        ipRange.setName(name);
-        ipRange.setDescription(description);
-
-        StringBuffer networkBuffer = new StringBuffer();
-        StringBuffer subnetBuffer = new StringBuffer();
-
-        for (int i = 0; i < 4; i++) {
-            if (i > 0) {
-                networkBuffer.append(".");
-                subnetBuffer.append(".");
-            }
-            Part netPart = (Part) getParameter(IPRangeProfile.NETWORK_ADDRESS + "-" + i);
-            networkBuffer.append(netPart.getValue());
-            Part subPart = (Part) getParameter(IPRangeProfile.SUBNET_MASK + "-" + i);
-            subnetBuffer.append(subPart.getValue());
-        }
-
-        InetAddress networkAddress = InetAddress.getByName(networkBuffer.toString());
-        ipRange.setNetworkAddress(networkAddress.getAddress());
-
-        InetAddress subnetMask = InetAddress.getByName(subnetBuffer.toString());
-        ipRange.setSubnetMask(subnetMask.getAddress());
-
-        ipRange.save();
-        
-        setExitParameter(IPRangeProfile.ID, id);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        List partNumbers = new ArrayList();
-        for (byte i = 0; i < 4; i++) {
-            setParameter(IPRangeProfile.NETWORK_ADDRESS + "-" + i, new Part(i));
-            setParameter(IPRangeProfile.SUBNET_MASK + "-" + i, new Part(i));
-            partNumbers.add(new Integer(i));
-        }
-        setParameter(IPRangeProfile.PART_NUMBERS, partNumbers);
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
deleted file mode 100644
index 9c5bbd2..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.ItemUtil;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.ac.file.FileUser;
-import org.apache.lenya.ac.file.FileUserManager;
-import org.apache.lenya.ac.ldap.LDAPUser;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to add a user.
- * 
- * @version $Id: AddUser.java 407248 2006-05-17 13:20:01Z andreas $
- */
-public class AddUser extends AccessControlUsecase {
-
-    protected static final String CLASS_NAME = "className";
-    protected static final String LDAP_ID = "ldapId";
-
-    /**
-     * Validates the request parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void validate() throws UsecaseException {
-
-        String userId = getParameterAsString(UserProfile.USER_ID).toLowerCase();
-        String email = getParameterAsString(UserProfile.EMAIL);
-        String className = getParameterAsString(CLASS_NAME);
-        String ldapId = getParameterAsString(LDAP_ID);
-
-        User existingUser = getUserManager().getUser(userId);
-
-        if (existingUser != null) {
-            addErrorMessage("This user already exists.");
-        }
-
-        if (!ItemUtil.isValidId(userId)) {
-            addErrorMessage("This is not a valid user ID.");
-        }
-
-        if (!ItemUtil.isValidEmail(email)) {
-            addErrorMessage("Please enter a valid e-mail address.");
-        }
-        
-        if (className == null) {
-            addErrorMessage("Internal error - the user class name has not been provided. " + 
-                    "Please consult your system administrator.");
-        }
-
-        if (className.equals(LDAPUser.class.getName())) {
-            LDAPUser ldapUser = new LDAPUser(getUserManager(), getLogger());
-            ContainerUtil.enableLogging(ldapUser, getLogger());
-
-            try {
-                if (!ldapUser.existsUser(ldapId)) {
-                    addErrorMessage("ldap_no_such_user", new String[]{ldapId});
-                }
-            } catch (AccessControlException e) {
-                throw new UsecaseException(e);
-            }
-        }
-
-        else {
-            ChangePassword.checkNewPassword(this);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("AddUser.doCheckExecutionConditions() called");
-
-        validate();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        UserManager userManager = (FileUserManager) getUserManager();
-
-        String userId = getParameterAsString(UserProfile.USER_ID).toLowerCase();
-        String fullName = getParameterAsString(UserProfile.FULL_NAME);
-        String description = getParameterAsString(UserProfile.DESCRIPTION);
-        String email = getParameterAsString(UserProfile.EMAIL);
-        String className = getParameterAsString(CLASS_NAME);
-
-        User user;
-        if (className.equals(LDAPUser.class.getName())) {
-            String ldapId = getParameterAsString(LDAP_ID);
-            user = new LDAPUser(userManager, getLogger(), userId, email, ldapId, getLogger());
-        } else {
-            String password = getParameterAsString(AbstractChangePassword.NEW_PASSWORD);
-            user = new FileUser(userManager, getLogger(), userId, fullName, email, "");
-            user.setName(fullName);
-            user.setPassword(password);
-        }
-        ContainerUtil.enableLogging(user, getLogger());
-        user.setDescription(description);
-        user.save();
-        getUserManager().add(user);
-        
-        setExitParameter(UserProfile.USER_ID, userId);
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
deleted file mode 100644
index 95cb6ac..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePassword.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.User;
-
-/**
- * Usecase to change a user's password. The old password is checked.
- */
-public class ChangePassword extends AbstractChangePassword {
-
-    protected static final String OLD_PASSWORD = "oldPassword";
-
-    /**
-     * @return Always returns the currently logged in user.
-     */
-    protected User getUser() {
-        return getSession().getIdentity().getUser();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        checkOldPassword();
-    }
-
-    /**
-     * verifies that the user knows the current password before s/he is allowed to change it.
-     */
-    private void checkOldPassword() {
-        String oldPassword = getParameterAsString(OLD_PASSWORD);
-        boolean authenticated = getUser().authenticate(oldPassword);
-        if (!authenticated) {
-            addErrorMessage("The old password is not correct.");
-        }
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
deleted file mode 100644
index 78e7846..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/ChangePasswordAdmin.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.User;
-
-/**
- * Usecase to change a user's password.
- */
-public class ChangePasswordAdmin extends AbstractChangePassword {
-
-    private User user;
-
-    protected User getUser() {
-        if (this.user == null) {
-            String userId = getParameterAsString(UserProfile.USER_ID);
-            this.user = getUserManager().getUser(userId);
-        }
-        return this.user;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        if (getUser() == null) {
-            addErrorMessage("The " + UserProfile.USER_ID 
-                + " parameter has to be provided when executing this usecase.");
-            return;
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        setExitParameter(UserProfile.USER_ID, getParameterAsString(UserProfile.USER_ID));
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/CredentialWrapper.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/CredentialWrapper.java
deleted file mode 100644
index cc07dbc..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/CredentialWrapper.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.ac.Item;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-
-/**
- * Wrapper class for credentials.
- * @version $Id$
- */
-public class CredentialWrapper {
-
-    /**
-     * Returns the method of the Credential
-     * @return A string that is either "deny" or "grant"
-     */
-    public String getMethod() {
-        return method;
-    }
-    /**
-     * Returns the accreditable ID.
-     * @return A string.
-     */
-    public String getAccreditableId() {
-        return this.accreditableId;
-    }
-
-    /**
-     * Returns the accreditable name.
-     * @return A string.
-     */
-    public String getAccreditableName() {
-        return this.accreditableName;
-    }
-
-    /**
-     * Returns the role ID.
-     * @return A string.
-     */
-    public String getRoleId() {
-        return this.roleId;
-    }
-
-    /**
-     * Returns the role name.
-     * @return A string.
-     */
-    public String getRoleName() {
-        return this.roleName;
-    }
-
-    /**
-     * Returns the accreditable type ({@link #USER}, {@link #GROUP}, or {@link #IPRANGE})
-     * @return A string.
-     */
-    public String getType() {
-        return this.type;
-    }
-
-    /**
-     * Ctor.
-     * @param accreditable The accreditable of the credential to wrap.
-     * @param role The role of the credential to wrap.
-     * @param method 
-     */
-    public CredentialWrapper(Accreditable accreditable, Role role, String method) {
-        if (accreditable instanceof Item) {
-            Item item = (Item) accreditable;
-            this.accreditableId = item.getId();
-            this.accreditableName = item.getName();
-        
-            if (item instanceof User) {
-                this.type = USER;
-            }
-            else if (item instanceof Group) {
-                this.type = GROUP;
-            }
-            else if (item instanceof IPRange) {
-                this.type = IPRANGE;
-            }
-        }
-        else {
-            this.accreditableId = "world";
-            this.accreditableName = "the world";
-            this.type = "world";
-        }
-        this.roleId = role.getId();
-        this.roleName = role.getName();
-        this.method = method;
-        
-    }
-    
-    protected static final String USER = "user";
-    protected static final String GROUP = "group";
-    protected static final String IPRANGE = "ipRange";
-    
-    private String type;
-    private String accreditableId;
-    private String accreditableName;
-    private String roleId;
-    private String roleName;
-    private String method;
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteGroup.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteGroup.java
deleted file mode 100644
index 74662cf..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteGroup.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.Group;
-
-/**
- * Usecase to delete a group.
- *
- * @version $Id: DeleteGroup.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class DeleteGroup extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String groupId = getParameterAsString(GroupProfile.ID);
-        Group group = getGroupManager().getGroup(groupId);
-        if (group == null) {
-            throw new RuntimeException("Group [" + groupId + "] not found.");
-        }
-        
-        getGroupManager().remove(group);
-        group.delete();
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java
deleted file mode 100644
index c95c3dd..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteIPRange.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-/**
- * Delete an IP range.
- *
- * @version $Id: DeleteIPRange.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class DeleteIPRange extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String id = getParameterAsString(IPRangeProfile.ID);
-        org.apache.lenya.ac.IPRange ipRange = getIpRangeManager().getIPRange(id);
-        if (ipRange == null) {
-            throw new RuntimeException("IP range [" + id + "] not found.");
-        }
-        
-        getIpRangeManager().remove(ipRange);
-        ipRange.delete();
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java
deleted file mode 100644
index 875028e..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/DeleteUser.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.User;
-
-/**
- * Usecase to delete a user.
- *
- * @version $Id: DeleteUser.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class DeleteUser extends AccessControlUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String userId = getParameterAsString(UserProfile.USER_ID);
-        User user = getUserManager().getUser(userId);
-        if (user == null) {
-            throw new RuntimeException("User [" + userId + "] not found.");
-        }
-        
-        getUserManager().remove(user);
-        user.delete();
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Group.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Group.java
deleted file mode 100644
index 86a329b..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Group.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-/**
- * Display group information.
- *
- * @version $Id: Group.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class Group extends AccessControlUsecase {
-
-    protected static final String GROUP_ID = "groupId";
-    protected static final String GROUP = "group";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
-        if (name.equals(GROUP_ID)) {
-            String groupId = (String) value;
-            org.apache.lenya.ac.Group group = getGroupManager().getGroup(groupId);
-            if (group == null) {
-                addErrorMessage("group_no_such_entry", new String[]{groupId});
-            } else {
-                setParameter(GROUP, group);
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java
deleted file mode 100644
index f72fe71..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupMembers.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Groupable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to change the members of a group.
- * 
- * @version $Id: GroupMembers.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class GroupMembers extends AccessControlUsecase {
-
-    protected static final String GROUP_USERS = "groupUsers";
-    protected static final String OTHER_USERS = "otherUsers";
-    protected static final String ADD = "add";
-    protected static final String REMOVE = "remove";
-    protected static final String GROUP_USER = "groupUser";
-    protected static final String OTHER_USER = "otherUser";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        
-        Groupable[] members = getGroup().getMembers();
-        List groupUsers = new ArrayList();
-        for (int i = 0; i < members.length; i++) {
-            if (members[i] instanceof User) {
-                groupUsers.add(members[i]);
-            }
-        }
-        setParameter(GROUP_USERS, groupUsers);
-
-        User[] allUsers = getUserManager().getUsers();
-
-        List otherUsers = new ArrayList();
-        for (int i = 0; i < allUsers.length; i++) {
-            if (!groupUsers.contains(allUsers[i])) {
-                otherUsers.add(allUsers[i]);
-            }
-        }
-        setParameter(OTHER_USERS, otherUsers);
-        
-        setExitParameter(GroupProfile.ID, getParameterAsString(GroupProfile.ID));
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        final Group group = getGroup();
-        group.removeAllMembers();
-
-        List groupUsers = (List) getParameter(GROUP_USERS);
-        for (Iterator i = groupUsers.iterator(); i.hasNext();) {
-            User user = (User) i.next();
-            group.add(user);
-            user.save();
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-
-        String add = getParameterAsString(ADD);
-        String remove = getParameterAsString(REMOVE);
-        if (add != null || remove != null) {
-
-            List groupUsers = (List) getParameter(GROUP_USERS);
-            List otherUsers = (List) getParameter(OTHER_USERS);
-
-            if (add != null) {
-                String userId = getParameterAsString(OTHER_USER);
-                if (userId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("add user [" + userId + "]");
-                    }
-                    User user = getUserManager().getUser(userId);
-                    groupUsers.add(user);
-                    otherUsers.remove(user);
-                }
-            }
-
-            if (remove != null) {
-                String userId = getParameterAsString(GROUP_USER);
-                if (userId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("remove user [" + userId + "]");
-                    }
-                    User user = getUserManager().getUser(userId);
-                    otherUsers.add(user);
-                    groupUsers.remove(user);
-                }
-            }
-
-            deleteParameter(ADD);
-            deleteParameter(REMOVE);
-            deleteParameter(GROUP_USER);
-            deleteParameter(OTHER_USER);
-        }
-
-    }
-    
-    protected Group getGroup() {
-        String groupId = getParameterAsString(GroupProfile.ID);
-        Group group = getGroupManager().getGroup(groupId);
-        if (group == null) {
-            throw new RuntimeException("Group [" + groupId + "] not found.");
-        }
-        return group;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupProfile.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupProfile.java
deleted file mode 100644
index 8165dc5..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/GroupProfile.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.Group;
-
-/**
- * Usecase to change the profile of a group.
- * 
- * @version $Id: GroupProfile.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class GroupProfile extends AccessControlUsecase {
-
-    protected static final String ID = "groupId";
-    protected static final String NAME = "name";
-    protected static final String DESCRIPTION = "description";
-
-    private Group group;
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String name = getParameterAsString(NAME);
-        String description = getParameterAsString(DESCRIPTION);
-
-        this.group.setName(name);
-        this.group.setDescription(description);
-
-        this.group.save();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
-        if (name.equals(ID)) {
-            String id = (String) value;
-            this.group = getGroupManager().getGroup(id);
-            if (this.group == null) {
-                throw new RuntimeException("Group [" + id + "] not found.");
-            }
-
-            setParameter(DESCRIPTION, this.group.getDescription());
-            setParameter(NAME, this.group.getName());
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Groups.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Groups.java
deleted file mode 100644
index e58742e..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Groups.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.lenya.ac.Group;
-
-/**
- * Manage groups.
- * 
- * @version $Id: Groups.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class Groups extends AccessControlUsecase {
-    
-    protected static final String GROUPS = "groups";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        
-        Group[] groups = getGroupManager().getGroups();
-        List groupList = new ArrayList();
-        groupList.addAll(Arrays.asList(groups));
-        Collections.sort(groupList);
-        setParameter(GROUPS, groupList);
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRange.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRange.java
deleted file mode 100644
index 9fccc19..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRange.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-/**
- * Show information about an IP range.
- * 
- * @version $Id: IPRange.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class IPRange extends AccessControlUsecase {
-
-    protected static final String IP_RANGE_ID = "ipRangeId";
-    protected static final String IP_RANGE = "ipRange";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
-        if (name.equals(IP_RANGE_ID)) {
-            String ipRangeId = (String) value;
-            org.apache.lenya.ac.IPRange ipRange = getIpRangeManager().getIPRange(ipRangeId);
-            if (ipRange == null) {
-                addErrorMessage("iprange_no_such_iprange", new String[] { ipRangeId });
-            } else {
-                setParameter(IP_RANGE, ipRange);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeGroups.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeGroups.java
deleted file mode 100644
index f4e7f28..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeGroups.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to edit a IP range's group affiliation.
- */
-public class IPRangeGroups extends AccessControlUsecase {
-
-    protected static final String IP_RANGE_GROUPS = "ipRangeGroups";
-    protected static final String OTHER_GROUPS = "otherGroups";
-    protected static final String ADD = "add";
-    protected static final String REMOVE = "remove";
-    protected static final String IP_RANGE_GROUP = "ipRangeGroup";
-    protected static final String OTHER_GROUP = "otherGroup";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        IPRange ipRange = getIpRange();
-        ipRange.removeFromAllGroups();
-        
-        List ipRangeGroups = (List) getParameter(IP_RANGE_GROUPS);
-        for (Iterator i = ipRangeGroups.iterator(); i.hasNext(); ) {
-            Group group = (Group) i.next();
-            group.add(ipRange);
-        }
-        ipRange.save();
-    }
-    
-    protected IPRange getIpRange() {
-        String ipRangeId = getParameterAsString(IPRangeProfile.ID);
-        IPRange ipRange = getIpRangeManager().getIPRange(ipRangeId);
-        if (ipRange == null) {
-            throw new RuntimeException("IP range [" + ipRangeId + "] not found.");
-        }
-        return ipRange;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-
-        String add = getParameterAsString(ADD);
-        String remove = getParameterAsString(REMOVE);
-        if (add != null || remove != null) {
-
-            List ipRangeGroups = (List) getParameter(IP_RANGE_GROUPS);
-            List otherGroups = (List) getParameter(OTHER_GROUPS);
-            
-            if (add != null) {
-                String groupId = getParameterAsString(OTHER_GROUP);
-                if (groupId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("add group [" + groupId + "]");
-                    }
-                    Group group = getGroupManager().getGroup(groupId);
-                    ipRangeGroups.add(group);
-                    otherGroups.remove(group);
-                }
-            }
-
-            if (remove != null) {
-                String groupId = getParameterAsString(IP_RANGE_GROUP);
-                if (groupId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("remove group [" + groupId + "]");
-                    }
-                    Group group = getGroupManager().getGroup(groupId);
-                    otherGroups.add(group);
-                    ipRangeGroups.remove(group);
-                }
-            }
-            
-            deleteParameter(ADD);
-            deleteParameter(REMOVE);
-            deleteParameter(IP_RANGE_GROUP);
-            deleteParameter(OTHER_GROUP);
-        }
-
-    }
-
-    protected void initParameters() {
-        super.initParameters();
-        Group[] ipRangeGroupArray = getIpRange().getGroups();
-        
-        List ipRangeGroups = new ArrayList(Arrays.asList(ipRangeGroupArray));
-        setParameter(IP_RANGE_GROUPS, ipRangeGroups);
-
-        Group[] allGroups = getGroupManager().getGroups();
-        List otherGroups = new ArrayList();
-        for (int i = 0; i < allGroups.length; i++) {
-            if (!ipRangeGroups.contains(allGroups[i])) {
-                otherGroups.add(allGroups[i]);
-            }
-        }
-        setParameter(OTHER_GROUPS, otherGroups);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java
deleted file mode 100644
index 6d1bce0..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRangeProfile.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.ac.IPRange;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Usecase to change the profile of an IP range.
- */
-public class IPRangeProfile extends AccessControlUsecase {
-
-    protected static final String ID = "ipRangeId";
-    protected static final String NAME = "name";
-    protected static final String DESCRIPTION = "description";
-    protected static final String NETWORK_ADDRESS = "networkAddress";
-    protected static final String SUBNET_MASK = "subnetMask";
-    protected static final String PART_NUMBERS = "partNumbers";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        IPRangeProfile.validateAddresses(this);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String name = getParameterAsString(NAME);
-        String description = getParameterAsString(DESCRIPTION);
-
-        IPRange ipRange = getIPRange();
-
-        ipRange.setName(name);
-        ipRange.setDescription(description);
-
-        StringBuffer networkBuffer = new StringBuffer();
-        StringBuffer subnetBuffer = new StringBuffer();
-
-        for (int i = 0; i < 4; i++) {
-            if (i > 0) {
-                networkBuffer.append(".");
-                subnetBuffer.append(".");
-            }
-            Part netPart = (Part) getParameter(IPRangeProfile.NETWORK_ADDRESS + "-" + i);
-            networkBuffer.append(netPart.getValue());
-            Part subPart = (Part) getParameter(IPRangeProfile.SUBNET_MASK + "-" + i);
-            subnetBuffer.append(subPart.getValue());
-        }
-
-        InetAddress networkAddress = InetAddress.getByName(networkBuffer.toString());
-        ipRange.setNetworkAddress(networkAddress.getAddress());
-
-        InetAddress subnetMask = InetAddress.getByName(subnetBuffer.toString());
-        ipRange.setSubnetMask(subnetMask.getAddress());
-
-        ipRange.save();
-
-    }
-
-    private IPRange ipRange;
-
-    /**
-     * @return The IP range.
-     */
-    protected IPRange getIPRange() {
-        return this.ipRange;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String,
-     *      java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
-        if (name.equals(ID)) {
-            String id = (String) value;
-            this.ipRange = getIpRangeManager().getIPRange(id);
-            if (this.ipRange == null) {
-                throw new RuntimeException("IP range [" + id + "] not found.");
-            }
-
-            setParameter(NAME, this.ipRange.getName());
-            setParameter(DESCRIPTION, this.ipRange.getDescription());
-
-            InetAddress networkAddress = this.ipRange.getNetworkAddress();
-            InetAddress subnetMask = this.ipRange.getSubnetMask();
-
-            List partNumbers = new ArrayList();
-            for (byte i = 0; i < 4; i++) {
-                String addrPart = Integer.toString(0xFF & networkAddress.getAddress()[i]);
-                setParameter(NETWORK_ADDRESS + "-" + i, new Part(i, addrPart));
-                String maskPart = Integer.toString(0xFF & subnetMask.getAddress()[i]);
-                setParameter(SUBNET_MASK + "-" + i, new Part(i, maskPart));
-                partNumbers.add(new Integer(i));
-            }
-            setParameter(IPRangeProfile.PART_NUMBERS, partNumbers);
-
-        }
-    }
-
-    protected static void validateAddresses(AbstractUsecase usecase) {
-        String[] names = { "network address", "subnet mask" };
-        String[] params = { IPRangeProfile.NETWORK_ADDRESS, IPRangeProfile.SUBNET_MASK };
-
-        for (byte type = 0; type < names.length; type++) {
-            for (byte i = 0; i < 4; i++) {
-                String paramName = params[type] + "-" + i;
-                Part part = new Part(i);
-                part.setValue(usecase.getParameterAsString(paramName));
-                if (!part.isValid()) {
-                	String[] parameters = { Integer.toString(i + 1), names[type] };
-                    usecase.addErrorMessage("invalid-ip-address-part", parameters);
-                }
-                usecase.setParameter(paramName, part);
-            }
-        }
-    }
-
-    /**
-     * IP address part holder.
-     */
-    public static class Part {
-        private String value;
-        private byte position;
-
-        /**
-         * Ctor.
-         * @param _position The position.
-         * @param _value The value.
-         */
-        public Part(byte _position, String _value) {
-            this.value = _value;
-            this.position = _position;
-        }
-
-        /**
-         * Ctor.
-         * @param _position The position.
-         */
-        public Part(byte _position) {
-            this(_position, "0");
-        }
-
-        /**
-         * Returns the position
-         * @return The position
-         */
-        public byte getPosition() {
-            return this.position;
-        }
-
-        /**
-         * Returns the value
-         * @return The value
-         */
-        public String getValue() {
-            return this.value;
-        }
-
-        /**
-         * @param _value The value.
-         */
-        public void setValue(String _value) {
-            this.value = _value;
-        }
-
-        /**
-         * Checks if the part is valid.
-         * @return A boolean value.
-         */
-        public boolean isValid() {
-
-            boolean valid = true;
-            try {
-                int i = Integer.parseInt(this.value);
-                if (!(0 <= i && i <= 255)) {
-                    valid = false;
-                }
-            } catch (NumberFormatException e) {
-                valid = false;
-            }
-
-            return valid;
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRanges.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRanges.java
deleted file mode 100644
index 99e9256..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/IPRanges.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.lenya.ac.IPRange;
-
-/**
- * Manage IP ranges.
- * 
- * @version $Id: IPRanges.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class IPRanges extends AccessControlUsecase {
-
-    protected static final String IP_RANGES = "ipRanges";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        
-        IPRange[] ipRanges = getIpRangeManager().getIPRanges();
-        List ipRangeList = new ArrayList();
-        ipRangeList.addAll(Arrays.asList(ipRanges));
-        Collections.sort(ipRangeList);
-        setParameter(IP_RANGES, ipRangeList);
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/SessionViewer.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/SessionViewer.java
deleted file mode 100644
index a024321..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/SessionViewer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.WeakHashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import javax.servlet.http.*;
-
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.ac.usecases.AccessControlUsecase;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.SessionListener;
-
-/**
- * SessionViewer usecase which gets all session objects from the SessionListener and extract the
- * necessary informations.
- * 
- * @version $Id: SessionViewer.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class SessionViewer extends AccessControlUsecase {
-
-    private static final String IDENTITY = Identity.class.getName();
-
-    private static final String HISTORY = "org.apache.lenya.cms.cocoon.acting.History";
-
-    protected static final String USERS = "users";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        this.getSourceURL();
-
-        SessionListener sessions = new SessionListener();
-        WeakHashMap allSessions = sessions.getAllSessions();
-        List userList = new ArrayList();
-
-        Iterator userit = allSessions.entrySet().iterator();
-        while (userit.hasNext()) {
-            Map.Entry entry = (Map.Entry) userit.next();
-            HttpSession nextsession = (HttpSession) entry.getValue();
-
-            Identity identity = (Identity) nextsession.getAttribute(IDENTITY);
-            
-            if(identity == null) { 
-                continue;
-            }   
-          
-            User user = identity.getUser();
-            if (user != null) {
-                Vector history = (Vector) nextsession.getAttribute(HISTORY);
-                String publicationID = getPublicationIDfromHistory(history);
-                if (publicationID.equals(getPublicationIDfromURL())) {
-                    userList.add(identity.getUser());
-                }
-            }
-        }
-        setParameter(USERS, userList);
-    }
-
-    /**
-     * Extract the publicationID from the history information stored in the session
-     * 
-     * @param history The history stored in the session.. An entry looks like \/
-     *            <publication-id>/authoring/index.html
-     * @return A publication ID.
-     */
-    private String getPublicationIDfromHistory(Vector history) {
-
-        String firstElement = history.firstElement().toString();
-        String publicationID = firstElement.substring(1, firstElement.indexOf("/", 1));
-
-        return publicationID;
-    }
-
-    /**
-     * @return The publicationID from an URL.
-     */
-    private String getPublicationIDfromURL() {
-        URLInformation info = new URLInformation(getSourceURL());
-        return info.getPublicationId();
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Usecases.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Usecases.java
deleted file mode 100644
index b0293e7..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Usecases.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.Arrays;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.lenya.ac.Authorizer;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-
-/**
- * Edit usecase policies.
- */
-public class Usecases extends AccessControlUsecase {
-
-    protected void initParameters() {
-        super.initParameters();
-
-        UsecaseResolver resolver = null;
-        try {
-            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-            String[] allUsecases = resolver.getUsecaseNames();
-            SortedSet rootUsecases = new TreeSet();
-            for (int i = 0; i < allUsecases.length; i++) {
-                if (allUsecases[i].indexOf("/") == -1) {
-                    rootUsecases.add(allUsecases[i]);
-                }
-            }
-            
-            String[] usecases = (String[]) rootUsecases.toArray(new String[rootUsecases.size()]);
-            
-            setParameter("usecases", usecases);
-
-            Role[] roles = getAccessController().getAccreditableManager().getRoleManager()
-                    .getRoles();
-            String[] roleNames = new String[roles.length];
-            for (int r = 0; r < roles.length; r++) {
-                roleNames[r] = roles[r].getId();
-            }
-            Arrays.sort(roleNames);
-            setParameter("roles", roleNames);
-
-            Publication pub = getPublication();
-            setParameter("publicationId", pub.getId());
-            setParameter("templates", pub.getTemplateIds());
-
-            for (int u = 0; u < usecases.length; u++) {
-                for (int r = 0; r < roles.length; r++) {
-                    boolean value = getUsecaseAuthorizer().isPermitted(usecases[u], pub, roles[r]);
-                    setParameter(usecases[u] + ":" + roles[r], Boolean.valueOf(value));
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-    }
-
-    protected Publication getPublication() throws PublicationException {
-        String pubId = new URLInformation(getSourceURL()).getPublicationId();
-        Publication pub = getDocumentFactory().getPublication(pubId);
-        return pub;
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String[] usecases = (String[]) getParameter("usecases");
-        String[] roleNames = (String[]) getParameter("roles");
-
-        Publication pub = getPublication();
-        for (int u = 0; u < usecases.length; u++) {
-            for (int r = 0; r < roleNames.length; r++) {
-                String key = usecases[u] + ":" + roleNames[r];
-                String stringValue = getBooleanCheckboxParameter(key);
-                boolean value = Boolean.valueOf(stringValue).booleanValue();
-                Role role = getAccessController().getAccreditableManager().getRoleManager()
-                        .getRole(roleNames[r]);
-                getUsecaseAuthorizer().setPermission(usecases[u], pub, role, value);
-            }
-        }
-
-    }
-
-    private UsecaseAuthorizer authorizer;
-
-    protected UsecaseAuthorizer getUsecaseAuthorizer() {
-        if (this.authorizer == null) {
-            Authorizer[] authorizers = getAccessController().getAuthorizers();
-            for (int i = 0; i < authorizers.length; i++) {
-                if (authorizers[i] instanceof UsecaseAuthorizer) {
-                    this.authorizer = (UsecaseAuthorizer) authorizers[i];
-                }
-            }
-        }
-        return this.authorizer;
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/User.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/User.java
deleted file mode 100644
index ad0929e..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/User.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-/**
- * Display user information.
- * 
- * @version $Id: User.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class User extends AccessControlUsecase {
-
-    protected static final String USER_ID = "userId";
-    protected static final String USER = "user";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
-        if (name.equals(USER_ID)) {
-            String userId = (String) value;
-            org.apache.lenya.ac.User user = getUserManager().getUser(userId);
-            if (user == null) {
-                addErrorMessage("user_no_such_user", new String[]{userId});
-            } else {
-                setParameter(USER, user);
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java
deleted file mode 100644
index 6a342ac..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserGroups.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to edit a user's group affiliation.
- */
-public class UserGroups extends AccessControlUsecase {
-
-    protected static final String USER_GROUPS = "userGroups";
-    protected static final String OTHER_GROUPS = "otherGroups";
-    protected static final String ADD = "add";
-    protected static final String REMOVE = "remove";
-    protected static final String USER_GROUP = "userGroup";
-    protected static final String OTHER_GROUP = "otherGroup";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        User user = getUser();
-        user.removeFromAllGroups();
-
-        List userGroups = (List) getParameter(USER_GROUPS);
-        for (Iterator i = userGroups.iterator(); i.hasNext();) {
-            Group group = (Group) i.next();
-            group.add(user);
-        }
-        user.save();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-
-        String add = getParameterAsString(ADD);
-        String remove = getParameterAsString(REMOVE);
-        if (add != null || remove != null) {
-
-            List userGroups = (List) getParameter(USER_GROUPS);
-            List otherGroups = (List) getParameter(OTHER_GROUPS);
-
-            if (add != null) {
-                String groupId = getParameterAsString(OTHER_GROUP);
-                if (groupId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("add group [" + groupId + "]");
-                    }
-                    Group group = getGroupManager().getGroup(groupId);
-                    userGroups.add(group);
-                    otherGroups.remove(group);
-                }
-            }
-
-            if (remove != null) {
-                String groupId = getParameterAsString(USER_GROUP);
-                if (groupId != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("remove group [" + groupId + "]");
-                    }
-                    Group group = getGroupManager().getGroup(groupId);
-                    otherGroups.add(group);
-                    userGroups.remove(group);
-                }
-            }
-
-            deleteParameter(ADD);
-            deleteParameter(REMOVE);
-            deleteParameter(USER_GROUP);
-            deleteParameter(OTHER_GROUP);
-        }
-
-    }
-
-    protected User getUser() {
-        String userId = getParameterAsString(UserProfile.USER_ID);
-        User user = getUserManager().getUser(userId);
-        if (user == null) {
-            throw new RuntimeException("User [" + userId + "] not found.");
-        }
-        return user;
-    }
-
-    protected void initParameters() {
-        super.initParameters();
-        
-        Group[] userGroupArray = getUser().getGroups();
-        List userGroups = new ArrayList(Arrays.asList(userGroupArray));
-        setParameter(USER_GROUPS, userGroups);
-        
-        Group[] allGroups = getGroupManager().getGroups();
-        List otherGroups = new ArrayList();
-        for (int i = 0; i < allGroups.length; i++) {
-            if (!userGroups.contains(allGroups[i])) {
-                otherGroups.add(allGroups[i]);
-            }
-        }
-        setParameter(OTHER_GROUPS, otherGroups);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java
deleted file mode 100644
index f429d57..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/UserProfile.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.ItemUtil;
-
-/**
- * Usecase to edit a user's profile.
- */
-public class UserProfile extends AccessControlUsecase {
-
-    protected static final String USER_ID = "userId";
-    protected static final String FULL_NAME = "fullName";
-    protected static final String EMAIL = "email";
-    protected static final String DESCRIPTION = "description";
-    protected static final String MENU_LOCALE = "defaultMenuLocale";
-    protected static final String DOCUMENT_LOCALE = "defaultDocumentLocale";
-    
-    /**
-     * Ctor.
-     */
-    public UserProfile() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        
-        String email = getParameterAsString(UserProfile.EMAIL);
-        if (!ItemUtil.isValidEmail(email)) {
-            addErrorMessage("Please enter a valid e-mail address.");
-        }
-    }
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        String fullName = getParameterAsString(UserProfile.FULL_NAME);
-        String description = getParameterAsString(UserProfile.DESCRIPTION);
-        String email = getParameterAsString(UserProfile.EMAIL);
-        String defaultMenuLocale = getParameterAsString(UserProfile.MENU_LOCALE);
-        String defaultDocumentLocale = getParameterAsString(UserProfile.DOCUMENT_LOCALE);
-        
-        getUser().setEmail(email);
-        getUser().setName(fullName);
-        getUser().setDescription(description);
-        getUser().setDefaultMenuLocale(defaultMenuLocale);
-        getUser().setDefaultDocumentLocale(defaultDocumentLocale);
-        getUser().save();
-        
-    }
-    
-    private User user;
-    
-    /**
-     * Returns the currently edited user.
-     * @return A user.
-     */
-    protected User getUser() {
-        return this.user;
-    }
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-        
-        if (name.equals(USER_ID)) {
-            String userId = (String) value;
-            this.user = getUserManager().getUser(userId);
-            if (this.user == null) {
-                throw new RuntimeException("User [" + userId + "] not found.");
-            }
-            
-            setParameter(EMAIL, this.user.getEmail());
-            setParameter(DESCRIPTION, this.user.getDescription());
-            setParameter(MENU_LOCALE, this.user.getDefaultMenuLocale());
-            setParameter(DOCUMENT_LOCALE, this.user.getDefaultDocumentLocale());
-            setParameter(FULL_NAME, this.user.getName());
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Users.java b/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Users.java
deleted file mode 100644
index 2861571..0000000
--- a/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/Users.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserType;
-
-/**
- * Manage users.
- * 
- * @version $Id: Users.java 407305 2006-05-17 16:21:49Z andreas $
- */
-public class Users extends AccessControlUsecase {
-
-    protected static final String USERS = "users";
-    protected static final String CURRENT_USER = "currentUser";
-    protected static final String USER_TYPES = "userTypes";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        
-        User[] users = getUserManager().getUsers();
-        List userList = new ArrayList();
-        userList.addAll(Arrays.asList(users));
-        Collections.sort(userList);
-        setParameter(USERS, userList);
-        
-        Request request = ContextHelper.getRequest(getContext());
-        Session session = request.getSession(false);
-        if (session != null) {
-            Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-            if (identity != null) {
-                setParameter(CURRENT_USER, identity.getUser());
-            }
-        }
-        
-        UserType[] types = getUserManager().getUserTypes();
-        setParameter(USER_TYPES, Arrays.asList(types));
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/resources/i18n/cmsui.xml b/trunk/src/modules-core/administration/resources/i18n/cmsui.xml
deleted file mode 100644
index c119e0b..0000000
--- a/trunk/src/modules-core/administration/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Documents in trash">Documents in trash</message>
-  <message key="The trash is empty.">The trash is empty.</message>
-  <message key="Sessions">Sessions</message>
-  <message key="Path">Path</message>
-  <message key="Inbox">Inbox</message>
-  <message key="usecase-policies-message">Here you can choose which usecases should be executable by which roles.</message>
-  <message key="Server Status">Server Status</message>
-  <message key="e-mail">E-Mail</message>
-  <message key="No groups assigned">No groups assigned</message>
-  
-  <message key="Local User">Local User</message>
-  <message key="add-user">Add {0}</message>
-  <message key="This is not a valid user ID.">This is not a valid user ID.</message>
-  <message key="Please enter a valid e-mail address.">Please enter a valid e-mail address.</message>
-  <message key="Password and confirmed password are not equal.">Password and confirmed password are not equal.</message>
-  <message key="This is not a valid group ID.">This is not a valid group ID.</message>
-  <message key="Group Users">Group Users</message>
-  <message key="All Users">All Users</message>
-  <message key="This is not a valid IP range ID.">This is not a valid IP range ID.</message>
-  <message key="invalid-ip-address-part">Part {0} of the {1} is not valid.</message>
-  <message key="The old password is not correct.">The old password is not correct.</message>
-  <message key="The password must be at least six characters long.">The password must be at least six characters long.</message>
-  <message key="The password must contain at least one number.">The password must contain at least one number.</message>
-  <message key="IP Range Groups">IP Range Groups</message>
-  
-  <message key="cannot-assign-role">The role <xhtml:q>{0}</xhtml:q> cannot be assigned.</message>
-  <message key="credential-already-contained">
-    The role <xhtml:q>{1}</xhtml:q> is already assigned to the object <xhtml:q>{0}</xhtml:q>.
-  </message>
-  

-</catalogue>

diff --git a/trunk/src/modules-core/administration/resources/i18n/cmsui_de.xml b/trunk/src/modules-core/administration/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 11e962b..0000000
--- a/trunk/src/modules-core/administration/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Documents in trash">Dokumente im Papierkorb</message>
-  <message key="The trash is empty.">Der Papierkorb ist leer.</message>
-  <message key="Sessions">Sitzungen</message>
-  <message key="Path">Pfad</message>
-  <message key="Inbox">Posteingang</message>
-  <message key="usecase-policies-message">Hier können Sie festlegen, welche Usecases durch welche Rollen ausgeführt werden dürfen.</message>
-  <message key="Server Status">Server-Status</message>
-  <message key="e-mail">E-Mail</message>
-  <message key="No groups assigned">Keine Gruppen zugeordnet</message>
-  
-  <message key="Local User">Lokalen Benutzer</message>
-  <message key="add-user">{0} hinzufügen</message>
-  <message key="This is not a valid user ID.">Die Benutzer-ID ist ungültig.</message>
-  <message key="Please enter a valid e-mail address.">Bitte geben Sie eine gültige E-Mail-Adresse ein.</message>
-  <message key="Password and confirmed password are not equal.">Passwort und Passwortbestätigung stimmen nicht überein.</message>
-  <message key="This is not a valid group ID.">Die Gruppen-ID ist ungültig.</message>
-  <message key="Group Users">Gruppen-Benutzer</message>
-  <message key="All Users">Alle Benutzer</message>
-  <message key="This is not a valid IP range ID.">Die IP-Bereichs-ID ist ungültig.</message>
-  <message key="invalid-ip-address-part">Abschnitt {0} des Feldes "{1}" ist ungültig.</message>
-  <message key="The old password is not correct.">Das bestehende Passwort wurde nicht korrekt eingegeben.</message>
-  <message key="The password must be at least six characters long.">Das Passwort muss mindestens 6 Zeichen lang sein.</message>
-  <message key="The password must contain at least one number.">Das Passwort muss mindestens eine Ziffer enthalten.</message>
-  <message key="IP Range Groups">Gruppen des<br/>IP-Bereichs</message>
-  
-  <message key="cannot-assign-role">Die Rolle <xhtml:q>{0}</xhtml:q> kann nicht zugeordnet werden.</message>
-  <message key="credential-already-contained">
-    Die Rolle <xhtml:q>{1}</xhtml:q> wurde dem Objekt <xhtml:q>{0}</xhtml:q> bereits zugeordnet.
-  </message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules-core/administration/sitemap.xmap b/trunk/src/modules-core/administration/sitemap.xmap
deleted file mode 100644
index 7d8f2eb..0000000
--- a/trunk/src/modules-core/administration/sitemap.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: admin.xmap 160670 2005-04-09 09:12:12Z andreas $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-    <map:pipeline>
-
-      <map:match pattern="status.xml">
-        <map:generate src="status" type="status"/>
-        <map:transform src="fallback://lenya/xslt/admin/status2html.xsl"/>
-        <map:serialize type="xml"/>
-      </map:match>
-    
-    </map:pipeline>
-  </map:pipelines>
-  
-</map:sitemap>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/test/canoo/test.xml b/trunk/src/modules-core/administration/test/canoo/test.xml
deleted file mode 100644
index 37fc4f6..0000000
--- a/trunk/src/modules-core/administration/test/canoo/test.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="administration" basedir="." default="main">
-  
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-
-  <target name="main" depends="admin.users, groupaffiliation"/>
-
-  <target name="admin.users">
-    <webtest name="admin.users">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi"/>
-        
-        <!-- add user -->
-        <invoke url="index.html?lenya.usecase=admin.users"/>
-        <verifyText text="Add User:"/>
-        <clickButton name="input-add_user"/>
-        <verifyElementText type="h1" text="Add Local User"/>
-        <setInputField name="userId" value="webTestUser"/>
-        <setInputField name="fullName" value="WebTest User"/>
-        <setInputField name="description" value="WebTest User description"/>
-        <setInputField name="email" value="webTestUser@apache.org"/>
-        <setInputField name="newPassword" value="webTest123"/>
-        <setInputField name="confirmPassword" value="webTest123"/>
-        <clickButton name="submit"/>
-
-        <verifyText text="User Profile"/>
-        <verifyText text="webTestUser@apache.org"/>
-        
-        <!-- back to users list -->
-        <invoke url="index.html?lenya.usecase=admin.users"/>
-        
-        <!-- user IDs are automatically converted to lowercase -->
-        <verifyXPath xpath="//a[normalize-space(.) = 'webtestuser']"/>
-        
-        <!-- delete user -->
-        <clickButton xpath="//form[input[@value = 'webtestuser']]/input[@type = 'submit']"/>
-        <verifyText text="Delete User"/>
-        <verifyText text="webtestuser"/>
-        <clickButton name="submit"/>
-        <verifyText text="Add User:"/>
-        <not>
-          <verifyXPath xpath="//a[normalize-space(.) = 'webtestuser']"/>
-        </not>
-        
-        <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-
-  <macrodef name="checkGroup"
-           description="check if item 'group' is in listbox 'list-in' and not in 'list-not'">
-    <attribute name="group"/>
-    <attribute name="list-in"/>
-    <attribute name="list-not"/>
-    <sequential>
-      <verifyXPath xpath="//select[@name = '@{list-in}']/option[@value = '@{group}']"/>
-      <not>
-        <verifyXPath xpath="//select[@name = '@{list-not}']/option[@value = '@{group}']"/>
-      </not>
-    </sequential>
-  </macrodef>
-  <macrodef name="checkUserProfile"
-            description="check if user profile looks right">
-    <attribute name="admin"/>
-    <sequential>
-      <verifyText text="User Profile"/>
-      <verifyText text="alice@lenya.org"/>
-      <ifStep test="@{admin}" description="admin affiliation">
-        <verifyText text="groupId=admin"/>
-      </ifStep>
-      <ifStep unless="@{admin}" description="no admin affiliation">
-        <not><verifyText text="groupId=admin"/></not>
-      </ifStep>
-    </sequential>
-  </macrodef>
-
-  <target name="groupaffiliation">
-    <webtest name="groupaffiliation">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi"/>
-
-        <!-- request user profile of user alice -->
-        <invoke url="index.html?lenya.usecase=admin.user&amp;userId=alice"/>
-       <checkUserProfile admin="false"/>
-
-        <!-- request group affiliation page -->
-        <clickButton name="input-edit_group_affiliation"/>
-        <verifyElementText type="h1" text="Group Affiliation"/>
-       <checkGroup group="admin" list-in="otherGroup" list-not="userGroup"/>
-
-        <!-- add user alice to group admin -->
-       <clickElement xpath="//select[@name = 'otherGroup']/option[@value = 'admin']"/>
-       <clickButton name="add"/>
-       <verifyElementText type="h1" text="Group Affiliation"/>
-        <checkGroup group="admin" list-in="userGroup" list-not="otherGroup"/>
-
-       <!-- save and back to user profile -->
-       <clickButton name="submit"/>
-        <checkUserProfile admin="true"/>
-
-       <!-- request group affiliation page -->
-        <clickButton name="input-edit_group_affiliation"/>
-        <verifyElementText type="h1" text="Group Affiliation"/>
-        <checkGroup group="admin" list-in="userGroup" list-not="otherGroup"/>
-
-       <!-- remove user alice from group admin -->
-       <clickElement xpath="//select[@name = 'userGroup']/option[@value = 'admin']"/>
-        <clickButton name="remove"/>
-        <verifyElementText type="h1" text="Group Affiliation"/>
-        <checkGroup group="admin" list-in="otherGroup" list-not="userGroup"/>
-
-        <!-- save and back to user profile -->
-        <clickButton name="submit"/>
-        <checkUserProfile admin="false"/>
-
-        <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-
-</project>
diff --git a/trunk/src/modules-core/administration/usecases/aboutLenya.jx b/trunk/src/modules-core/administration/usecases/aboutLenya.jx
deleted file mode 100644
index 5c0186f..0000000
--- a/trunk/src/modules-core/administration/usecases/aboutLenya.jx
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: addGroup.jx 496697 2007-01-16 14:12:36Z andreas $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"  
-  xmlns:ci="http://apache.org/cocoon/include/1.0"  
-  >
-  
-  <ci:include src="context://lenya/content/about.xml" select="*/*"/>
-  
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/addGroup.jx b/trunk/src/modules-core/administration/usecases/addGroup.jx
deleted file mode 100644
index cb1be65..0000000
--- a/trunk/src/modules-core/administration/usecases/addGroup.jx
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>Add Group</i18n:text></h1>
-    
-    <form id="form-add_group">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="groupId"><i18n:text>Group ID</i18n:text> *</label></td>
-          <td><input type="text" name="groupId" class="lenya-form-element" value="${request.getParameter('groupId')}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="name"><i18n:text>Name</i18n:text></label></td>
-          <td><input type="text" name="name" class="lenya-form-element" value="${request.getParameter('name')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><label for="description"><i18n:text>Description</i18n:text></label></td>
-          <td>
-            <!-- N.B.: do not put spaces or carriage returns inside the
-                 textarea element - these would be rendered -->
-            <textarea name="description" class="lenya-form-element"><jx:out value="${request.getParameter('description')}"/></textarea>
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Add"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/addIPRange.jx b/trunk/src/modules-core/administration/usecases/addIPRange.jx
deleted file mode 100644
index 606a3ef..0000000
--- a/trunk/src/modules-core/administration/usecases/addIPRange.jx
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-    <h1><i18n:text>Add IP Range</i18n:text></h1>
-    
-    <form id="form-add_ip_range">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>IP Range ID</i18n:text> *</td>
-          <td><input type="text" name="ipRangeId" class="lenya-form-entry" value="${request.getParameter('ipRangeId')}"/></td>
-        </tr>
-        
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Name</i18n:text></td>
-          <td><input type="text" name="name" class="lenya-form-entry" value="${request.getParameter('name')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Description</i18n:text></td>
-          <td>
-            <textarea name="description" class="lenya-form-entry">
-              <jx:out value="${request.getParameter('description')}"/>
-            </textarea>
-          </td>
-        </tr>
-
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Network Address</i18n:text></td>
-          <td>
-            <jx:forEach var="part" items="${usecase.getParameter('partNumbers')}">
-              <jx:choose>
-              	<jx:when test="${usecase.getParameter('networkAddress-' + part).isValid()}">
-                  <input type="text" name="networkAddress-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('networkAddress-' + part).getValue()}"
-                         style="text-align: right"/>
-              	</jx:when>
-              	<jx:otherwise>
-                  <input type="text" name="networkAddress-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('networkAddress-' + part).getValue()}"
-                         style="background-color: #FF9999; text-align: right;"/>
-              	</jx:otherwise>
-            	</jx:choose>
-  		      </jx:forEach>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Subnet Mask</i18n:text></td>
-          <td>
-            <jx:forEach var="part" items="${usecase.getParameter('partNumbers')}">
-              <jx:choose>
-              	<jx:when test="${usecase.getParameter('subnetMask-' + part).isValid()}">
-                  <input type="text" name="subnetMask-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('subnetMask-' + part).getValue()}"
-                         style="text-align: right"/>
-              	</jx:when>
-              	<jx:otherwise>
-                  <input type="text" name="subnetMask-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('subnetMask-' + part).getValue()}"
-                         style="background-color: #FF9999; text-align: right;"/>
-              	</jx:otherwise>
-            	</jx:choose>
-  		      </jx:forEach>
-          </td>
-        </tr>
-    
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Add"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/addUser.jx b/trunk/src/modules-core/administration/usecases/addUser.jx
deleted file mode 100644
index dc515ae..0000000
--- a/trunk/src/modules-core/administration/usecases/addUser.jx
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    
-    <h1>
-      <i18n:translate>
-        <i18n:text>add-user</i18n:text>
-        <i18n:param><i18n:text><jx:out value="${request.getParameter('userType')}"/></i18n:text></i18n:param>
-      </i18n:translate>
-    </h1>
-    
-    <form id="form-add_user" method="POST">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="userId"><i18n:text>User ID</i18n:text> *</label></td>
-          <td><input type="text" name="userId" class="lenya-form-element" value="${request.getParameter('userId')}"/></td>
-        </tr>
-        
-        <jx:if test="${request.getParameter('className') == 'org.apache.lenya.ac.ldap.LDAPUser'}">
-          <tr>
-            <td class="lenya-entry-caption"><label for="ldapId"><i18n:text>LDAP ID</i18n:text> *</label></td>
-            <td><input type="text" name="ldapId" class="lenya-form-element" value="${request.getParameter('ldapId')}"/></td>
-          </tr>
-        </jx:if>
-        
-        <tr>
-          <td class="lenya-entry-caption"><label for="fullName"><i18n:text>Name</i18n:text></label></td>
-          <td><input type="text" name="fullName" class="lenya-form-element" value="${request.getParameter('fullName')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><label for="description"><i18n:text>Description</i18n:text></label></td>
-          <td>
-            <!-- N.B.: do not put spaces or carriage returns inside the
-                 textare element - these would be rendered -->
-            <textarea name="description" class="lenya-form-element"><jx:out value="${request.getParameter('description')}"/></textarea>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="email"><i18n:text>E-Mail</i18n:text> *</label></td>
-          <td><input type="text" name="email" class="lenya-form-element" value="${request.getParameter('email')}"/></td>
-        </tr>
-        
-        <jx:if test="${request.getParameter('className') != 'org.apache.lenya.ac.ldap.LDAPUser'}">
-        <tr>
-          <td class="lenya-entry-caption"><label for="newPassword"><i18n:text>Password</i18n:text> *</label></td>
-          <td><input type="password" name="newPassword" class="lenya-form-element" value="${request.getParameter('newPassword')}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="confirmPassword"><i18n:text>Confirm password</i18n:text> *</label></td>
-          <td><input type="password" name="confirmPassword" class="lenya-form-element" value="${request.getParameter('confirmPassword')}"/></td>
-        </tr>
-        </jx:if>
-        
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Add"/>
-            <a href="?lenya.usecase=admin.users">
-              <input type="button" name="cancel" value="Cancel" i18n:attr="value"/>
-            </a>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/changePassword.jx b/trunk/src/modules-core/administration/usecases/changePassword.jx
deleted file mode 100644
index 6432b00..0000000
--- a/trunk/src/modules-core/administration/usecases/changePassword.jx
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:title>
-    <i18n:text>Change Password</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Change Password</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <jx:import uri="fallback://lenya/modules/administration/usecases/passwordForm.jx"/>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/changePasswordAdmin.jx b/trunk/src/modules-core/administration/usecases/changePasswordAdmin.jx
deleted file mode 100644
index 0d40ba5..0000000
--- a/trunk/src/modules-core/administration/usecases/changePasswordAdmin.jx
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    
-      <h1>
-        <i18n:text>Change Password</i18n:text>
-      </h1>
-      
-      <jx:import uri="fallback://lenya/modules/administration/usecases/passwordForm.jx"/>
-
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/deleteGroup.jx b/trunk/src/modules-core/administration/usecases/deleteGroup.jx
deleted file mode 100644
index dfea4c3..0000000
--- a/trunk/src/modules-core/administration/usecases/deleteGroup.jx
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Delete Group</i18n:text></h1>
-    
-    <form id="form-delete_group">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <i18n:translate>
-              <i18n:text i18n:key="delete-object?"/>
-              <i18n:param><i18n:text>group</i18n:text>&#160;<q><jx:out value="${request.getParameter('groupId')}"/></q></i18n:param>
-            </i18n:translate>       
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Yes"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="No"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/deleteUser.jx b/trunk/src/modules-core/administration/usecases/deleteUser.jx
deleted file mode 100644
index 192adbb..0000000
--- a/trunk/src/modules-core/administration/usecases/deleteUser.jx
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Delete User</i18n:text></h1>    
-    <form id="form-delete_user">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <i18n:translate>
-              <i18n:text i18n:key="delete-object?"/>
-              <i18n:param><i18n:text>user</i18n:text>&#160;<q><jx:out value="${request.getParameter('userId')}"/></q></i18n:param>
-            </i18n:translate>       
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Yes"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="No"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/emptyTrash.jx b/trunk/src/modules-core/administration/usecases/emptyTrash.jx
deleted file mode 100644
index 75e5f27..0000000
--- a/trunk/src/modules-core/administration/usecases/emptyTrash.jx
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Delete Trash</i18n:text></h1>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      <p>
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('documents').isEmpty()}">
-          <i18n:text>The trash is empty.</i18n:text>
-        </jx:when>
-        <jx:otherwise>
-          <table class="lenya-table-list-noborder">
-            <tr>
-              <th colspan="2"><i18n:text>Documents in trash</i18n:text></th>
-            </tr>
-            <jx:forEach var="document" items="${usecase.getParameter('documents')}">
-              <tr>
-                <td>
-                  <jx:if test="${document.hasLink()}">
-                    <jx:out value="${document.getPath()}"/>
-                  </jx:if>
-                </td>
-                <td>
-                  <jx:out value="${document.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/>
-                </td>
-              </tr>
-            </jx:forEach>
-          </table>
-        </jx:otherwise>
-      </jx:choose>
-    </p>
-    <form id="form-delete_trash" style="margin-top: 20px">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('documents').isEmpty()}">
-          <input i18n:attr="value" name="submit" type="submit" value="Delete" disabled="disabled"/>
-        </jx:when>
-        <jx:otherwise>
-          <input i18n:attr="value" name="submit" type="submit" value="Delete"/>
-        </jx:otherwise>
-      </jx:choose>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/group.jx b/trunk/src/modules-core/administration/usecases/group.jx
deleted file mode 100644
index a38aced..0000000
--- a/trunk/src/modules-core/administration/usecases/group.jx
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Group Profile</i18n:text></h1>
-      
-      <jx:set var="group" value="${usecase.getParameter('group')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Group ID</i18n:text>:</td>
-          <td><jx:out value="${group.getId()}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Name</i18n:text>:</td>
-          <td><jx:out value="${group.getName()}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
-          <td>
-            <!-- N.B.: do not put spaces or carriage returns inside the
-                 textarea element - these would be rendered -->
-            <jx:out value="${group.getDescription()}"/>
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <form id="form-edit_profile">
-              <input type="hidden" name="lenya.usecase" value="admin.groupProfile"/>
-              <input type="hidden" name="groupId" value="${group.getId()}"/>
-              <input i18n:attr="value" type="submit" value="Edit Profile" name="input-edit_profile"/>
-            </form>
-          </td>
-        </tr>
-        
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Members</i18n:text>:</td>
-          <td>
-            <jx:set var="members" value="${group.getMembers()}"/>
-            <jx:forEach var="member" items="${members}"><jx:if test="${member != members[0]}">, </jx:if>
-              <a href="?lenya.usecase=admin.user&amp;userId=${member.getId()}"><jx:out value="${member.getId()}"/></a></jx:forEach>
-          </td>
-        </tr>
-        <tr>
-          <td/>
-          <td>
-            <form id="form-edit_members">
-              <input type="hidden" name="lenya.usecase" value="admin.groupMembers"/>
-              <input type="hidden" name="groupId" value="${group.getId()}"/>
-              <input i18n:attr="value" type="submit" value="Edit Members" name="input-edit_members"/>
-            </form>
-          </td>
-        </tr>
-        
-        <tr>
-          <td/>
-          <td>
-            <form id="form-cancel">
-              <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-              <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-              <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-            </form>
-          </td>
-        </tr>
-      </table>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/groupMembers.jx b/trunk/src/modules-core/administration/usecases/groupMembers.jx
deleted file mode 100644
index 3eb00b2..0000000
--- a/trunk/src/modules-core/administration/usecases/groupMembers.jx
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Group Affiliation</i18n:text></h1>
-    
-    <form method="post" id="form-group_affiliation">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-       <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-
-      <table class="lenya-table-noborder-nopadding">
-        <tr>
-          <td>
-            <strong>
-              <i18n:text>Group Users</i18n:text>
-            </strong>
-          </td>
-          <td/>
-          <td>
-            <strong>
-              <i18n:text>All Users</i18n:text>
-            </strong>
-          </td>
-        </tr>
-        <tr>
-          <td valign="middle">
-            <select name="groupUser" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="user" items="${usecase.getParameter('groupUsers')}">
-                <option value="${user}"><jx:out value="${user}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-          <td valign="middle">
-            <input name="add" type="submit" value="&lt;"/>
-            <br/>
-            <input name="remove" type="submit" value="&gt;"/>
-          </td>
-          <td valign="middle">
-            <select name="otherUser" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="otherUser" items="${usecase.getParameter('otherUsers')}">
-                <option value="${otherUser}"><jx:out value="${otherUser}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="3" style="text-align: center">
-            <br/>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/groupProfile.jx b/trunk/src/modules-core/administration/usecases/groupProfile.jx
deleted file mode 100644
index 03804f0..0000000
--- a/trunk/src/modules-core/administration/usecases/groupProfile.jx
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Edit Group Profile</i18n:text></h1>
-    
-    <form id="form-edit_group_profile">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Group ID</i18n:text>:</td>
-          <td><jx:out value="${usecase.getParameter('groupId')}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="name"><i18n:text>Name</i18n:text>:</label></td>
-          <td><input type="text" name="name" class="lenya-form-element" value="${usecase.getParameter('name')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><label for="description"><i18n:text>Description</i18n:text>:</label></td>
-          <td>
-            <!-- N.B.: do not put spaces or carriage returns inside the
-                 textarea element - these would be rendered -->
-            <textarea name="description" class="lenya-form-element"><jx:out value="${usecase.getParameter('description')}"/></textarea>
-          </td>
-        </tr>
-        
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/groups.jx b/trunk/src/modules-core/administration/usecases/groups.jx
deleted file mode 100644
index bda1dc6..0000000
--- a/trunk/src/modules-core/administration/usecases/groups.jx
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-      <h1><i18n:text>Groups</i18n:text></h1>
-    
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <div style="margin-bottom: 10px">
-        <table class="lenya-table-noborder">
-      	  <tr>
-            <td style="padding: 0px">
-              <form method="GET" id="form-add_group">
-                <input type="hidden" name="lenya.usecase" value="admin.addGroup"/>
-                <input i18n:attr="value" type="submit" value="Add Group" name="input-add_group"/>
-              </form>
-            </td>
-          </tr>
-        </table>
-      </div>
-      
-      <table cellspacing="0" class="lenya-table-list-noborder">
-        <tr>
-          <th><i18n:text>Group ID</i18n:text></th>
-          <th><i18n:text>Name</i18n:text></th>
-          <th><i18n:text>Actions</i18n:text></th>
-        </tr>
-        <jx:forEach var="group" items="${usecase.getParameter('groups')}">
-          <tr>
-            <td style="vertical-align: middle">
-              <a href="${request.pathInfo}?lenya.usecase=admin.group&amp;groupId=${group.getId()}"><jx:out value="${group.getId()}"/></a>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:if test="${group.getName().equals('')}"><span style="color: #999999">--</span></jx:if>
-              <jx:out value="${group.getName()}"/>
-            </td>
-            <td style="vertical-align: middle">
-              <form method="GET" id="form-delete_group">
-                <input type="hidden" name="lenya.usecase" value="admin.deleteGroup"/>
-                <input name="groupId" type="hidden" value="${group.getId()}"/>
-                <input i18n:attr="value" type="submit" value="Delete" name="input-delete_group"/>
-              </form>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/ipRange.jx b/trunk/src/modules-core/administration/usecases/ipRange.jx
deleted file mode 100644
index 198502e..0000000
--- a/trunk/src/modules-core/administration/usecases/ipRange.jx
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: user.jx 164231 2005-04-22 12:56:59Z jwkaltz $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>IP Range Profile</i18n:text></h1>
-    
-      <jx:set var="ipRange" value="${usecase.getParameter('ipRange')}"/>
-    
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>IP Range ID</i18n:text>:</td>
-          <td><jx:out value="${usecase.getParameter('ipRangeId')}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Name</i18n:text>:</td>
-          <td><jx:out value="${ipRange.getName()}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
-          <td>
-            <jx:out value="${ipRange.getDescription()}"/>
-          </td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Network Address</i18n:text>:</td>
-          <td>
-            <jx:out value="${ipRange.getNetworkAddress().getHostAddress()}"/>
-          </td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Subnet Mask</i18n:text>:</td>
-          <td>
-            <jx:out value="${ipRange.getSubnetMask().getHostAddress()}"/>
-          </td>
-        </tr>
-
-        <tr>
-          <td/>
-          <td>
-            <form id="form-iprange_edit_profile">
-              <input type="hidden" name="lenya.usecase" value="admin.ipRangeProfile"/>
-              <input type="hidden" name="ipRangeId" value="${ipRange.getId()}"/>
-              <input i18n:attr="value" type="submit" value="Edit Profile" name="input-iprange_edit_profile"/>
-            </form>
-          </td>
-        </tr>
-        
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Groups</i18n:text>:</td>
-          <td>
-            <jx:set var="groups" value="${ipRange.getGroups()}"/>
-            <jx:if test="${groups.size() == 0}"><i18n:text>No groups assigned</i18n:text></jx:if>
-            <jx:forEach var="group" items="${groups}">
-              <a href="${usecase.getSourceURL()}?lenya.usecase=admin.group&amp;groupId=${group.getId()}"><jx:out value="${group.getId()}"/></a>
-            </jx:forEach>
-          </td>
-        </tr>
-        
-        <tr>
-          <td/>
-          <td>
-            <form id="form-iprange_edit_group_affiliation">
-              <input type="hidden" name="lenya.usecase" value="admin.ipRangeGroups"/>
-              <input type="hidden" name="ipRangeId" value="${ipRange.getId()}"/>
-              <input i18n:attr="value" type="submit" value="Edit Group Affiliation" name="input-iprange_edit_group_affiliation"/>
-            </form>
-          </td>
-        </tr>
-        
-        <tr>
-          <td/>
-          <td>
-            <form id="form-iprange_cancel">
-              <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-              <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-              <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-            </form>
-          </td>
-        </tr>
-      </table>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/usecases/ipRangeGroups.jx b/trunk/src/modules-core/administration/usecases/ipRangeGroups.jx
deleted file mode 100644
index b994e18..0000000
--- a/trunk/src/modules-core/administration/usecases/ipRangeGroups.jx
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: userGroups.jx 164233 2005-04-22 13:01:45Z jwkaltz $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>Group Affiliation</i18n:text></h1>
-    <form method="post" id="form-group_affiliation">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-       <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-
-      <table class="lenya-table-noborder-nopadding">
-        <tr>
-          <td>
-            <strong>
-              <i18n:text>IP Range Groups</i18n:text>
-            </strong>
-          </td>
-          <td/>
-          <td>
-            <strong>
-              <i18n:text>All Groups</i18n:text>
-            </strong>
-          </td>
-        </tr>
-        <tr>
-          <td valign="middle">
-            <select name="ipRangeGroup" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="group" items="${usecase.getParameter('ipRangeGroups')}">
-                <option value="${group}"><jx:out value="${group}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-          <td valign="middle">
-            <input name="add" type="submit" value="&lt;"/>
-            <br/>
-            <input name="remove" type="submit" value="&gt;"/>
-          </td>
-          <td valign="middle">
-            <select name="otherGroup" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="otherGroup" items="${usecase.getParameter('otherGroups')}">
-                <option value="${otherGroup}"><jx:out value="${otherGroup}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="3" style="text-align: center">
-            <br/>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/ipRangeProfile.jx b/trunk/src/modules-core/administration/usecases/ipRangeProfile.jx
deleted file mode 100644
index c82e25b..0000000
--- a/trunk/src/modules-core/administration/usecases/ipRangeProfile.jx
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-    <h1><i18n:text>IP Range Profile</i18n:text></h1>
-    
-    <form id="form-iprange_profile">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-      
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>IP Range ID</i18n:text>:</td>
-          <td><jx:out value="${usecase.getParameter('ipRangeId')}"/></td>
-        </tr>
-        
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Name</i18n:text>:</td>
-          <td><input type="text" name="name" class="lenya-form-entry" value="${usecase.getParameter('name')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
-          <td>
-            <textarea name="description" class="lenya-form-entry"><jx:out value="${usecase.getParameter('description')}"/></textarea>
-          </td>
-        </tr>
-
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Network Address</i18n:text>:</td>
-          <td>
-            <jx:forEach var="part" items="${usecase.getParameter('partNumbers')}">
-              <jx:choose>
-              	<jx:when test="${usecase.getParameter('networkAddress-' + part).isValid()}">
-                  <input type="text" name="networkAddress-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('networkAddress-' + part).getValue()}"
-                         style="text-align: right"/>
-              	</jx:when>
-              	<jx:otherwise>
-                  <input type="text" name="networkAddress-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('networkAddress-' + part).getValue()}"
-                         style="background-color: #FF9999; text-align: right;"/>
-              	</jx:otherwise>
-            	</jx:choose>
-  		      </jx:forEach>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>Subnet Mask</i18n:text>:</td>
-          <td>
-            <jx:forEach var="part" items="${usecase.getParameter('partNumbers')}">
-              <jx:choose>
-              	<jx:when test="${usecase.getParameter('subnetMask-' + part).isValid()}">
-                  <input type="text" name="subnetMask-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('subnetMask-' + part).getValue()}"
-                         style="text-align: right"/>
-              	</jx:when>
-              	<jx:otherwise>
-                  <input type="text" name="subnetMask-${part}" size="3" maxlength="3"
-                         value="${usecase.getParameter('subnetMask-' + part).getValue()}"
-                         style="background-color: #FF9999; text-align: right;"/>
-              	</jx:otherwise>
-            	</jx:choose>
-  		      </jx:forEach>
-          </td>
-        </tr>
-    
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/ipRanges.jx b/trunk/src/modules-core/administration/usecases/ipRanges.jx
deleted file mode 100644
index 09e83fa..0000000
--- a/trunk/src/modules-core/administration/usecases/ipRanges.jx
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-      <h1><i18n:text>IP Ranges</i18n:text></h1>
-    
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <div style="margin-bottom: 10px">
-        <form method="GET" id="form-add_iprange">
-          <input type="hidden" name="lenya.usecase" value="admin.addIPRange"/>
-          <input i18n:attr="value" type="submit" value="Add IP Range" name="input-add_iprange"/>
-        </form>
-      </div>
-      
-      <table cellspacing="0" class="lenya-table-list-noborder">
-        <tr>
-          <th><i18n:text>IP Range ID</i18n:text></th>
-          <th><i18n:text>Name</i18n:text></th>
-          <th><i18n:text>Groups</i18n:text></th>
-          <th><i18n:text>Actions</i18n:text></th>
-        </tr>
-        <jx:forEach var="ipRange" items="${usecase.getParameter('ipRanges')}">
-          <tr>
-            <td style="vertical-align: middle">
-              <a href="${usecase.getSourceURL()}?lenya.usecase=admin.ipRange&amp;ipRangeId=${ipRange.getId()}"><jx:out value="${ipRange.getId()}"/></a>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:out value="${ipRange.getName()}"/>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:if test="${ipRange.getGroups().size() == 0}"><span style="color: #999999">--</span></jx:if>
-              <jx:forEach var="group" items="${ipRange.getGroups()}">
-                <a href="${usecase.getSourceURL()}?lenya.usecase=admin.groupProfile&amp;groupId=${group.getId()}"><jx:out value="${group.getId()}"/></a>
-              </jx:forEach>
-            </td>
-            <td style="vertical-align: middle">
-              <form method="GET" id="form-delete_iprange">
-                <input type="hidden" name="lenya.usecase" value="admin.deleteIPRange"/>
-                <input name="ipRangeId" type="hidden" value="${ipRange.getId()}"/>
-                <input i18n:attr="value" type="submit" value="Delete" name="input-delete_iprange"/>
-              </form>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-        
-  </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/passwordForm.jx b/trunk/src/modules-core/administration/usecases/passwordForm.jx
deleted file mode 100644
index 76b3859..0000000
--- a/trunk/src/modules-core/administration/usecases/passwordForm.jx
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  name="">
-
-  <form id="form-change_password">
-    <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-    <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-    
-    <jx:set var="currentUserId" value="${usecase.getParameter('private.session').getIdentity().getUser().getId()}"/>
-    <jx:set var="userId" value="${usecase.getParameter('userId', currentUserId)}"/>
-    
-    <table class="lenya-table-noborder">
-      <tr>
-        <td colspan="2">
-          <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-        </td>
-      </tr>
-      <tr>
-        <td class="lenya-entry-caption"><i18n:text>Username</i18n:text></td>
-        <td><jx:out value="${userId}"/></td>
-      </tr>
-      <jx:if test="${usecase.getView().getParameter('checkPassword').equals('true')}">
-        <tr>
-          <td class="lenya-entry-caption"><label for="oldPassword"><i18n:text>Old Password</i18n:text> *</label></td>
-          <td><input type="password" name="oldPassword" class="lenya-form-element" value="${usecase.getParameter('oldPassword')}"/></td>
-        </tr>
-      </jx:if>
-      <tr>
-        <td class="lenya-entry-caption"><label for="newPassword"><i18n:text>New Password</i18n:text> *</label></td>
-        <td><input type="password" name="newPassword" class="lenya-form-element" value="${usecase.getParameter('newPassword')}"/></td>
-      </tr>
-      <tr>
-        <td class="lenya-entry-caption"><label for="confirmPassword"><i18n:text>Confirm Password</i18n:text> *</label></td>
-        <td><input type="password" name="confirmPassword" class="lenya-form-element" value="${usecase.getParameter('confirmPassword')}"/></td>
-      </tr>
-      
-      <tr>
-        <td/>
-        <td>
-          <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-          <a href="?lenya.usecase=admin.user&amp;userId=${userId}">
-            <input type="button" name="cancel" value="Cancel" i18n:attr="value"/>
-          </a>
-        </td>
-      </tr>
-    </table>
-  </form>
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/serverStatus.jx b/trunk/src/modules-core/administration/usecases/serverStatus.jx
deleted file mode 100644
index 2308f2d..0000000
--- a/trunk/src/modules-core/administration/usecases/serverStatus.jx
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-      <h1><i18n:text>Server Status</i18n:text></h1>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <cinclude:includexml>
-        <cinclude:src>cocoon://modules/administration/status.xml</cinclude:src>
-      </cinclude:includexml>
-      
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/sessions.jx b/trunk/src/modules-core/administration/usecases/sessions.jx
deleted file mode 100644
index 000cdb5..0000000
--- a/trunk/src/modules-core/administration/usecases/sessions.jx
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-      <h1><i18n:text>Sessions</i18n:text></h1>
-    
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <table cellspacing="0" class="lenya-table-list-noborder">
-        <tr>
-          <th><i18n:text>User ID</i18n:text></th>
-          <th><i18n:text>Full Name</i18n:text></th>
-          <th><i18n:text>e-mail</i18n:text></th>
-        </tr>
-        <jx:forEach var="user" items="${usecase.getParameter('users')}">
-          <tr>
-            <td style="vertical-align: middle">
-              <a href="${usecase.getSourceURL()}?lenya.usecase=admin.user&amp;userId=${user.getId()}"><jx:out value="${user.getId()}"/></a>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:out value="${user.getName()}"/>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:out value="${user.getEmail()}"/>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-        
-  </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/usecases/siteOverview.jx b/trunk/src/modules-core/administration/usecases/siteOverview.jx
deleted file mode 100644
index 3cafa48..0000000
--- a/trunk/src/modules-core/administration/usecases/siteOverview.jx
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: emptyTrash.jx 164233 2005-04-22 13:01:45Z jwkaltz $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Overview</i18n:text></h1>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      <form id="form-overview">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-      
-      <div class="lenya-box">
-        <div class="lenya-box-title"><i18n:text>Filter</i18n:text></div>
-        <div class="lenya-box-body">
-          <table class="lenya-table-noborder">
-            <jx:forEach var="filter" items="${usecase.getParameter('filters')}">
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text><jx:out value="${filter}"/></i18n:text></td>
-                <td>
-                  <select class="lenya-form-element" name="${filter}">
-                    <jx:forEach var="value" items="${usecase.getParameter(filter + 'Values')}">
-                      <jx:set var="selectedValue" value="${usecase.getParameter(filter)}"/>
-                      <jx:choose>
-                        <jx:when test="${value.equals(selectedValue)}">
-                          <option value="${value}" selected="selected"><i18n:text><jx:out value="${value}"/></i18n:text></option>
-                        </jx:when>
-                        <jx:otherwise>
-                          <option value="${value}"><i18n:text><jx:out value="${value}"/></i18n:text></option>
-                        </jx:otherwise>
-                      </jx:choose>
-                    </jx:forEach>
-                  </select>
-                </td>
-              </tr>
-            </jx:forEach>
-            <tr>
-              <td></td>
-              <td><input i18n:attr="value" type="submit" value="Update" name="input-submit"/></td>
-            </tr>
-          </table>
-        </div>
-      </div>
-      
-      <table class="lenya-table-list-noborder">
-
-        <tr>
-          <jx:forEach var="key" items="${usecase.getParameter('keys')}">
-            <th style="white-space: nowrap"> <i18n:text><jx:out value="${key}"/></i18n:text> 
-              <a class="sortArrow" href="${request.pathInfo}?order=asc&amp;sort=${key}&amp;lenya.usecase=${usecase.getName()}&amp;lenya.continuation=${continuation.id}">
-                &#x25BC;
-              </a>
-              <a class="sortArrow" href="${request.pathInfo}?order=desc&amp;sort=${key}&amp;lenya.usecase=${usecase.getName()}&amp;lenya.continuation=${continuation.id}">
-                &#x25B2;
-              </a>
-            </th>
-          </jx:forEach>
-        </tr>
-        
-        <jx:forEach var="entry" items="${usecase.getParameter('documents')}">
-          <tr>
-            <jx:forEach var="key" items="${usecase.getParameter('keys')}">
-              <td style="white-space: nowrap">
-                <jx:choose>
-                  <jx:when test="${key.equals('keyPath')}">
-                    <a href="${entry.getValue('keyUrl')}">
-                      <i18n:text><jx:out value="${entry.getValue(key)}"/></i18n:text>
-                    </a>
-                  </jx:when>
-                  <jx:when test="${key.equals('keyCheckedOut') &amp;&amp; !entry.getValue(key).equals('')}">
-                    <a href="${usecase.getSourceURL()}?lenya.usecase=admin.user&amp;userId=${entry.getValue(key)}">
-                      <i18n:text><jx:out value="${entry.getValue(key)}"/></i18n:text>
-                    </a>
-                  </jx:when>
-                  <jx:otherwise>
-                    <i18n:text><jx:out value="${entry.getValue(key)}"/></i18n:text>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </jx:forEach>
-          </tr>
-        </jx:forEach>
-        
-      </table>
-      
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/usecases.jx b/trunk/src/modules-core/administration/usecases/usecases.jx
deleted file mode 100644
index df7a4a5..0000000
--- a/trunk/src/modules-core/administration/usecases/usecases.jx
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: user.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>Usecases</i18n:text></h1>
-      
-      <form method="post" id="form-usecases">
-        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-        <p><i18n:text>usecase-policies-message</i18n:text></p>
-        <jx:if test="${usecase.getParameter('templates').size() &gt; 0}">
-          <p><strong>Note:</strong><br/>
-            If you submit this form, all usecase permissions
-            are stored for the publication "<jx:out value="${usecase.getParameter('publicationId')}"/>".
-            If you want to change the inherited usecase permissions of a template publication, please go
-            to the administration GUI of one of the templates
-            (<jx:forEach var="template" items="${usecase.getParameter('templates')}">
-              <a href="${'/' + template + '/authoring/index.html?lenya.usecase=admin.usecases'}"><jx:out value="${template}"/></a>
-            </jx:forEach>).
-          </p>
-        </jx:if>
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-        <table class="lenya-table-list-noborder">
-          <jx:set var="i" value="0"/>
-          <jx:forEach var="usecaseName" items="${usecase.getParameter('usecases')}">
-            <jx:if test="${i % 10 == 0}">
-              <tr>
-                <td colspan="${1 + usecase.getParameter('roles').size()}" style="border-left: 0; border-right: 0;">
-                  <p>
-                    <input type="submit" name="submit" value="Submit" i18n:attr="value"/>
-                  </p>
-                </td>
-              </tr>
-              <tr>
-                <th><i18n:text>Usecase</i18n:text></th>
-                <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                  <th><i18n:text><jx:out value="${role}"/></i18n:text></th>
-                </jx:forEach>
-              </tr>
-            </jx:if>
-            <jx:set var="i" value="${i + 1}"/>
-            <tr>
-              <td><jx:out value="${usecaseName}"/></td>
-              <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                <td>
-                  <jx:set var="name" value="${usecaseName + ':' + role}"/>
-                  <jx:set var="value" value="${usecase.getParameter(name)}"/>
-                  <jx:choose>
-                    <jx:when test="${value == java.lang.Boolean.TRUE}">
-                      <input name="${name}" type="checkbox" checked="checked"/>
-                    </jx:when>
-                    <jx:otherwise>
-                      <input name="${name}" type="checkbox"/>
-                    </jx:otherwise>
-                  </jx:choose>
-                </td>
-              </jx:forEach>
-            </tr>
-          </jx:forEach>
-        </table>
-        <p style="width: 50%">
-          <input type="submit" name="submit" value="Submit" i18n:attr="value"/>
-        </p>
-      </form>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/usecases/user.jx b/trunk/src/modules-core/administration/usecases/user.jx
deleted file mode 100644
index 49a7d6f..0000000
--- a/trunk/src/modules-core/administration/usecases/user.jx
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>User Profile</i18n:text></h1>
-    
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('user')}">
-          <jx:set var="user" value="${usecase.getParameter('user')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>User ID</i18n:text>:</td>
-              <td><jx:out value="${usecase.getParameter('userId')}"/></td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Name</i18n:text>:</td>
-              <td><jx:out value="${user.getName()}"/></td>
-            </tr>
-            <jx:if test="${user.getLdapId()}">
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>LDAP ID</i18n:text>:</td>
-                <td><jx:out value="${user.getLdapId()}"/></td>
-              </tr>
-            </jx:if>
-            <tr>
-              <td valign="top" class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
-              <td>
-                <jx:out value="${user.getDescription()}"/>
-              </td>
-            </tr>
-            
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>E-Mail</i18n:text>:</td>
-              <td><jx:out value="${user.getEmail()}"/></td>
-            </tr>
-            
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Default Menu Locale</i18n:text>:</td>
-              <td><jx:out value="${user.getDefaultMenuLocale()}"/></td>
-            </tr>
-            
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Default Document Locale</i18n:text>:</td>
-              <td><jx:out value="${user.getDefaultDocumentLocale()}"/></td>
-            </tr>
-            
-            <tr>
-              <td/>
-              <td>
-                <form id="form-edit_user_profile">
-                  <input type="hidden" name="lenya.usecase" value="admin.userProfile"/>
-                  <input type="hidden" name="userId" value="${user.getId()}"/>
-                  <input i18n:attr="value" type="submit" value="Edit Profile" name="input-edit_user_profile"/>
-                </form>
-              </td>
-            </tr>
-
-            <jx:if test="${user.canChangePassword() == 'true'}"> 
-              <tr>
-                <td/>
-                <td>
-                  <form id="form-change_user_password">
-                    <input type="hidden" name="lenya.usecase" value="admin.changePasswordAdmin"/>
-                    <input type="hidden" name="userId" value="${user.getId()}"/>
-                    <input i18n:attr="value" type="submit" value="Change Password" name="input-change_user_password"/>
-                  </form>
-                </td>
-              </tr>
-            </jx:if>
-          
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Groups</i18n:text>:</td>
-              <td>
-                <jx:set var="groups" value="${user.getGroups()}"/>
-                <jx:set var="groupIds" value="${java.util.TreeSet()}"/>
-                <jx:forEach var="group" items="${groups}">
-                  <jx:set var="ignore" value="${groupIds.add(group.getId())}"/>
-                </jx:forEach>
-                <jx:choose>
-                  <jx:when test="${groupIds.size() == 0}">
-                    <i18n:text>No groups assigned</i18n:text>
-                  </jx:when>
-                  <jx:otherwise>
-                    <jx:forEach var="group" items="${groupIds}"><jx:if test="${group != groupIds.first()}">, </jx:if>
-                      <a href="${request.pathInfo}?lenya.usecase=admin.group&amp;groupId=${group}"><jx:out value="${group}"/></a></jx:forEach>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            
-            <tr>
-              <td/>
-              <td>
-                <form id="form-edit_group_affiliation">
-                  <input type="hidden" name="lenya.usecase" value="admin.userGroups"/>
-                  <input type="hidden" name="userId" value="${user.getId()}"/>
-                  <input i18n:attr="value" type="submit" value="Edit Group Affiliation" name="input-edit_group_affiliation"/>
-                </form>
-              </td>
-            </tr>
-            
-            <tr>
-              <td/>
-              <td>
-                <form id="form-user_profile_cancel">
-                  <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-                  <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-                  <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                </form>
-              </td>
-            </tr>
-          </table>
-        </jx:when>
-        <jx:otherwise>
-          <p>
-            The parameter 'user' is missing. Please go back to the
-            <a href="?lenya.usecase=admin.users">users overview page</a>
-            and click on a user link.
-          </p>
-        </jx:otherwise>
-      </jx:choose>
-    
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/usecases/userGroups.jx b/trunk/src/modules-core/administration/usecases/userGroups.jx
deleted file mode 100644
index c41c863..0000000
--- a/trunk/src/modules-core/administration/usecases/userGroups.jx
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>Group Affiliation</i18n:text></h1>
-    <form method="post" id="form-user_group_affiliation">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-       <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-
-      <table class="lenya-table-noborder-nopadding">
-        <tr>
-          <td>
-            <strong>
-              <i18n:text>User Groups</i18n:text>
-            </strong>
-          </td>
-          <td/>
-          <td>
-            <strong>
-              <i18n:text>All Groups</i18n:text>
-            </strong>
-          </td>
-        </tr>
-        <tr>
-          <td valign="middle">
-            <select name="userGroup" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="group" items="${usecase.getParameter('userGroups')}">
-                <option value="${group}"><jx:out value="${group}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-          <td valign="middle">
-            <input name="add" type="submit" value="&lt;"/>
-            <br/>
-            <input name="remove" type="submit" value="&gt;"/>
-          </td>
-          <td valign="middle">
-            <select name="otherGroup" size="15" class="lenya-form-element-narrow">
-              <jx:forEach var="otherGroup" items="${usecase.getParameter('otherGroups')}">
-                <option value="${otherGroup}"><jx:out value="${otherGroup}"/></option>
-              </jx:forEach>
-            </select>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="3" style="text-align: center">
-            <br/>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-
-    </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/administration/usecases/userProfile.jx b/trunk/src/modules-core/administration/usecases/userProfile.jx
deleted file mode 100644
index a1c7eca..0000000
--- a/trunk/src/modules-core/administration/usecases/userProfile.jx
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-    <h1><i18n:text>Edit User Profile</i18n:text></h1>
-    
-    <form id="form-edit_user_profile">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><i18n:text>User ID</i18n:text>:</td>
-          <td><jx:out value="${usecase.getParameter('userId')}"/></td>
-        </tr>
-        <tr>
-          <td class="lenya-entry-caption"><label for="name"><i18n:text>Name</i18n:text></label>:</td>
-          <td><input type="text" name="fullName" class="lenya-form-element" value="${usecase.getParameter('fullName')}"/></td>
-        </tr>
-        <tr>
-          <td valign="top" class="lenya-entry-caption"><label for="description"><i18n:text>Description</i18n:text>:</label></td>
-          <td>
-            <!-- N.B.: do not put spaces or carriage returns inside the
-                 textarea element - these would be rendered -->
-            <textarea name="description" class="lenya-form-element"><jx:out value="${usecase.getParameter('description')}"/></textarea>
-          </td>
-        </tr>
-
-        <tr>
-          <td class="lenya-entry-caption"><label for="email"><i18n:text>E-Mail</i18n:text> *</label>:</td>
-          <td><input type="text" name="email" class="lenya-form-element" value="${usecase.getParameter('email')}"/></td>
-        </tr>
-        
-        <tr>
-          <td class="lenya-entry-caption"><label for="defaultMenuLocale"><i18n:text>Default Menu Locale</i18n:text>:</label></td>
-          <td><input type="text" name="defaultMenuLocale" class="lenya-form-element" value="${usecase.getParameter('defaultMenuLocale')}"/></td>
-        </tr>
-        
-        <tr>
-          <td class="lenya-entry-caption"><label for="defaultDocumentLocale"><i18n:text>Default Document Locale</i18n:text>:</label></td>
-          <td><input type="text" name="defaultDocumentLocale" class="lenya-form-element" value="${usecase.getParameter('defaultDocumentLocale')}"/></td>
-        </tr>
-        
-        <tr>
-          <td/>
-          <td>
-            <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-            <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-          </td>
-        </tr>
-      </table>
-    </form>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/administration/usecases/users.jx b/trunk/src/modules-core/administration/usecases/users.jx
deleted file mode 100644
index bb239b6..0000000
--- a/trunk/src/modules-core/administration/usecases/users.jx
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      
-      <h1><i18n:text>Users</i18n:text></h1>
-    
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <div style="margin-bottom: 10px;">
-        <table class="lenya-table-noborder">
-      	  <tr>
-      	    <td style="padding: 0; margin: 0 10px 0 0;">
-      		  <i18n:text>Add User</i18n:text>:&#160;
-    	    </td>
-    	    <jx:forEach var="type" items="${usecase.getParameter('userTypes')}">
-    	      <td style="padding: 0; margin: 0 10px 0 0;">
-    	        <form method="GET" id="form-add_user">
-                <input type="hidden" name="lenya.usecase" value="${type.getCreateUseCase()}"/>
-                <input type="hidden" name="className" value="${type.getClassName()}"/>
-                <input type="hidden" name="userType" value="${type.getKey()}"/>
-                <input i18n:attr="value" type="submit" value="${type.getKey()}" name="input-add_user"/>
-              </form>
-    	      </td>
-    	    </jx:forEach>
-          </tr>
-        </table>
-      </div>
-      
-      <table cellspacing="0" class="lenya-table-list-noborder">
-        <tr>
-          <th><i18n:text>User ID</i18n:text></th>
-          <th><i18n:text>Full Name</i18n:text></th>
-          <th><i18n:text>Groups</i18n:text></th>
-          <th><i18n:text>Actions</i18n:text></th>
-        </tr>
-        <jx:forEach var="user" items="${usecase.getParameter('users')}">
-          <tr>
-            <td style="vertical-align: middle">
-              <a href="${usecase.getSourceURL()}?lenya.usecase=admin.user&amp;userId=${user.getId()}"><jx:out value="${user.getId()}"/></a>
-            </td>
-            <td style="vertical-align: middle">
-              <jx:out value="${user.getName()}"/>
-            </td>
-            <td>
-              <jx:set var="groups" value="${user.getGroups()}"/>
-              <jx:set var="groupIds" value="${java.util.TreeSet()}"/>
-              <jx:forEach var="group" items="${groups}">
-                <jx:set var="ignore" value="${groupIds.add(group.getId())}"/>
-              </jx:forEach>
-              <jx:forEach var="group" items="${groupIds}"><jx:if test="${group != groupIds.first()}">, </jx:if>
-                <a href="${usecase.getSourceURL()}?lenya.usecase=admin.group&amp;groupId=${group}"><jx:out value="${group}"/></a></jx:forEach>
-            </td>
-            <td style="vertical-align: middle">
-              <form method="GET" id="form-delete_user">
-                <input type="hidden" name="lenya.usecase" value="admin.deleteUser"/>
-                <input name="userId" type="hidden" value="${user.getId()}"/>
-                <jx:choose>
-                  <jx:when test="${user.equals(usecase.getParameter('currentUser'))}">
-                    <input i18n:attr="value" type="submit" value="Delete" disabled="disabled" name="input-delete_user"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input i18n:attr="value" type="submit" value="Delete" name="input-delete_user"/>
-                  </jx:otherwise>
-                </jx:choose>
-              </form>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-        
-  </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/cache/config/cocoon-xconf/source-cache.xconf b/trunk/src/modules-core/cache/config/cocoon-xconf/source-cache.xconf
deleted file mode 100644
index effa205..0000000
--- a/trunk/src/modules-core/cache/config/cocoon-xconf/source-cache.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.ac.cache.SourceCache']">

-    <component logger="lenya.ac.cache"

-      class="org.apache.lenya.ac.cache.SourceCacheImpl"

-      role="org.apache.lenya.ac.cache.SourceCache"/>

-  </xconf>

diff --git a/trunk/src/modules-core/cache/config/module.xml b/trunk/src/modules-core/cache/config/module.xml
deleted file mode 100644
index 763b6a2..0000000
--- a/trunk/src/modules-core/cache/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.cache</id>
-  <export package="org.apache.lenya.ac.cache"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Source cache</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Source cache</description>
-</module>
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/BuildException.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/BuildException.java
deleted file mode 100644
index 80413ac..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/BuildException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.ac.cache;
-
-/**
- * Exception for problems when cacheable objects are built.
- */
-public class BuildException extends Exception {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public BuildException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public BuildException(String message) {
-        super(message);
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public BuildException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public BuildException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachedObject.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachedObject.java
deleted file mode 100644
index 8dc28d4..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachedObject.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-import org.apache.excalibur.source.SourceValidity;
-
-/**
- * Cached object.
- * @version $Id$
- */
-public class CachedObject {
-
-    private SourceValidity validityObject;
-    private Object value;
-    
-    /**
-     * Returns the value.
-     * @return An object.
-     */
-    public Object getValue() {
-        return this.value;
-    }
-
-    /**
-     * Returns the source validity.
-     * @return A source validity.
-     */
-    public SourceValidity getValidityObject() {
-        return this.validityObject;
-    }
-
-    /**
-     * Ctor.
-     * @param validity The source validity.
-     * @param _value The value.
-     */
-    public CachedObject(SourceValidity validity, Object _value) {
-        this.validityObject = validity;
-        this.value = _value;
-    }
-
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachingException.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachingException.java
deleted file mode 100644
index 4857287..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/CachingException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-/**
- * Caching exception.
- * @version $Id$
- */
-public class CachingException extends Exception {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public CachingException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public CachingException(String message) {
-        super(message);
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public CachingException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public CachingException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/InputStreamBuilder.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/InputStreamBuilder.java
deleted file mode 100644
index 30cffc5..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/InputStreamBuilder.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-import java.io.InputStream;
-
-/**
- * Interface for objects capable of building objects from input streams.
- * @version $Id$
- */
-public interface InputStreamBuilder {
-
-    /**
-     * Builds an object from an input stream.
-     * @param stream An input stream.
-     * @return An object.
-     * @throws BuildException when building the object failed.
-     */
-    Object build(InputStream stream) throws BuildException;
-
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCache.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCache.java
deleted file mode 100644
index d465f49..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCache.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-import org.apache.avalon.framework.component.Component;
-
-/**
- * Source cache component.
- * @version $Id$
- */
-public interface SourceCache extends Component {
-
-    /**
-     * Avalon role of the SourceCache interface.
-     */
-    String ROLE = SourceCache.class.getName();
-
-    /**
-     * Returns a cached object or builds a new object when the cached
-     * object does not exist or is not up to date.
-     * @param sourceUri The URI to build the source from.
-     * @param builder The builder to create a new object if needed.
-     * @return An object.
-     * @throws CachingException when something went wrong.
-     */
-    Object get(String sourceUri, InputStreamBuilder builder) throws CachingException;
-    
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCacheImpl.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCacheImpl.java
deleted file mode 100644
index eb2c316..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/SourceCacheImpl.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.lenya.util.CacheMap;
-
-/**
- * Basic implementation of a source cache.
- * @version $Id$
- */
-public class SourceCacheImpl
-    extends AbstractLogEnabled
-    implements SourceCache, Serviceable, Disposable, ThreadSafe {
-
-    /**
-     * Returns the service manager.
-     * @return A service manager.
-     */
-    public ServiceManager getManager() {
-        return this.manager;
-    }
-
-    /**
-     * Returns the source resolver.
-     * @return A source resolver.
-     */
-    public SourceResolver getResolver() {
-        return this.resolver;
-    }
-
-    /**
-     * Ctor.
-     */
-    public SourceCacheImpl() {
-    }
-
-    protected static final int CAPACITY = 1000;
-    private CacheMap cache;
-
-    /**
-     * Returns the cache.
-     * @return A cache object.
-     */
-    protected CacheMap getCache() {
-        if (this.cache == null) {
-            this.cache = new CacheMap(CAPACITY, getLogger());
-        }
-        return this.cache;
-    }
-
-    /**
-     * @see org.apache.lenya.ac.cache.SourceCache#get(java.lang.String, org.apache.lenya.ac.cache.InputStreamBuilder)
-     */
-    public synchronized Object get(String sourceUri, InputStreamBuilder builder) throws CachingException {
-
-        String key = sourceUri;
-        Object value = null;
-
-        CachedObject cachedObject = (CachedObject) getCache().get(key);
-        boolean usedCache = false;
-        SourceValidity sourceValidity = null;
-
-        try {
-            if (cachedObject != null) {
-                if (getLogger().isDebugEnabled()){
-                    getLogger().debug("Found cached object [" + cachedObject + "]"); 
-                }
-                SourceValidity cachedValidity = cachedObject.getValidityObject();
-
-                int result = cachedValidity.isValid();
-                boolean valid = false;
-                if (result == 0) {
-
-                    // get source validity and compare
-
-                    sourceValidity = getSourceValidity(sourceUri);
-
-                    if (sourceValidity != null) {
-                        result = cachedValidity.isValid(sourceValidity);
-                        if (result == 0) {
-                            sourceValidity = null;
-                        } else {
-                            valid = (result == 1);
-                        }
-                    }
-                } else {
-                    valid = (result > 0);
-                }
-
-                if (valid) {
-                    if (this.getLogger().isDebugEnabled()) {
-                        this.getLogger().debug(
-                            "Using valid cached source for '" + sourceUri + "'.");
-                    }
-                    usedCache = true;
-                    value = cachedObject.getValue();
-                } else {
-                    if (this.getLogger().isDebugEnabled()) {
-                        this.getLogger().debug(
-                            "Cached content is invalid for '" + sourceUri + "'.");
-                    }
-                    // remove invalid cached object
-                    getCache().remove(key);
-                }
-
-            } else {
-                getLogger().debug("Did not find cached object.");
-            }
-
-            if (!usedCache) {
-                getLogger().debug("Did not use cache.");
-                if (key != null) {
-                    if (sourceValidity == null) {
-                        sourceValidity = getSourceValidity(sourceUri);
-                    }
-                    if (sourceValidity != null) {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Source validity is not null.");
-                        }
-                    } else {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Source validity is null - not caching.");
-                        }
-                        key = null;
-                    }
-                }
-
-                value = buildObject(sourceUri, builder);
-
-                // store the response
-                if (key != null) {
-                    if (this.getLogger().isDebugEnabled()) {
-                        this.getLogger().debug(
-                            "Caching object ["
-                                + value
-                                + "] for further requests of ["
-                                + sourceUri
-                                + "].");
-                    }
-                    getCache().put(key, new CachedObject(sourceValidity, value));
-                }
-            }
-        } catch (final SourceNotFoundException e1) {
-            throw new CachingException(e1);
-        } catch (final MalformedURLException e1) {
-            throw new CachingException(e1);
-        } catch (final IOException e1) {
-            throw new CachingException(e1);
-        } catch (final BuildException e1) {
-            throw new CachingException(e1);
-        }
-
-        return value;
-    }
-
-    /**
-     * Returns the input stream to read a source from.
-     * @param sourceUri The URI of the source.
-     * @param builder The input stream builder that should be used.
-     * @return An object.
-     * @throws MalformedURLException when an error occurs.
-     * @throws IOException when an error occurs.
-     * @throws SourceNotFoundException when an error occurs.
-     * @throws BuildException if an error occurs.
-     */
-    protected synchronized Object buildObject(String sourceUri, InputStreamBuilder builder)
-        throws MalformedURLException, IOException, SourceNotFoundException, BuildException {
-        Object value = null;
-        Source source = null;
-        try {
-            source = getResolver().resolveURI(sourceUri);
-            if (source.exists()) {
-                InputStream stream = source.getInputStream();
-                value = builder.build(stream);
-            }
-        } finally {
-            if (source != null) {
-                getResolver().release(source);
-            }
-        }
-        return value;
-    }
-
-    /**
-     * Returns the validity of a source.
-     * @param sourceUri The URI of the source.
-     * @return A source validity object.
-     * @throws MalformedURLException when an error occurs.
-     * @throws IOException when an error occurs.
-     */
-    protected synchronized SourceValidity getSourceValidity(String sourceUri)
-        throws MalformedURLException, IOException {
-        SourceValidity sourceValidity;
-        Source source = null;
-        try {
-            source = getResolver().resolveURI(sourceUri);
-            sourceValidity = source.getValidity();
-        } finally {
-            if (source != null) {
-                getResolver().release(source);
-            }
-        }
-        return sourceValidity;
-    }
-
-    private ServiceManager manager;
-    private SourceResolver resolver;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-        this.resolver = (SourceResolver) _manager.lookup(SourceResolver.ROLE);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (getResolver() != null) {
-            getManager().release(getResolver());
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/URLKeyUtil.java b/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/URLKeyUtil.java
deleted file mode 100644
index bdaa2a5..0000000
--- a/trunk/src/modules-core/cache/java/src/org/apache/lenya/ac/cache/URLKeyUtil.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.cache;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Utility class to generate String cache keys from webapp URLs.
- * @version $Id$
- */
-public final class URLKeyUtil {
-
-    /**
-     * Ctor.
-     */
-    private URLKeyUtil() {
-	    // do nothing
-    }
-
-    /**
-     * Generates a cache key for a context and a webapp URL.
-     * @param resolver The resolver of the context.
-     * @param webappUrl The webapp Url.
-     * @return A String.
-     * @throws MalformedURLException when something went wrong.
-     * @throws IOException when something went wrong.
-     */
-    public static String generateKey(SourceResolver resolver, String webappUrl)
-        throws MalformedURLException, IOException {
-        Source source = null;
-        String key;
-        try {
-            source = resolver.resolveURI("context:///");
-            key = source.getURI() + "_" + webappUrl;
-        }
-        finally {
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-        return key;
-    }
-
-}
diff --git a/trunk/src/modules-core/janitor/config/cocoon-xconf/content-janitor.xconf b/trunk/src/modules-core/janitor/config/cocoon-xconf/content-janitor.xconf
deleted file mode 100644
index f763f13..0000000
--- a/trunk/src/modules-core/janitor/config/cocoon-xconf/content-janitor.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/component[@role = 'org.apache.lenya.cms.janitor.ContentJanitor']">
-  
-  <component logger="content-janitor"
-    role="org.apache.lenya.cms.janitor.ContentJanitor"
-    class="org.apache.lenya.cms.janitor.ContentJanitor"/>
-	
-</xconf>
diff --git a/trunk/src/modules-core/janitor/config/module.xml b/trunk/src/modules-core/janitor/config/module.xml
deleted file mode 100644
index f89d84f..0000000
--- a/trunk/src/modules-core/janitor/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.janitor</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Janitor Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>The janitor cleans up empty directories etc.</description>
-</module>
diff --git a/trunk/src/modules-core/janitor/java/src/org/apache/lenya/cms/janitor/ContentJanitor.java b/trunk/src/modules-core/janitor/java/src/org/apache/lenya/cms/janitor/ContentJanitor.java
deleted file mode 100644
index 10ffac4..0000000
--- a/trunk/src/modules-core/janitor/java/src/org/apache/lenya/cms/janitor/ContentJanitor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.janitor;
-
-import java.io.File;
-
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.observation.AbstractRepositoryListener;
-import org.apache.lenya.cms.observation.DocumentEvent;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * The content janitor cleans up empty directories after a document is removed.
- */
-public class ContentJanitor extends AbstractRepositoryListener {
-
-    public void eventFired(RepositoryEvent repoEvent) {
-        
-        if (!(repoEvent instanceof DocumentEvent)) {
-            return;
-        }
-        DocumentEvent event = (DocumentEvent) repoEvent;
-        
-        if (!event.getDescriptor().equals(DocumentEvent.REMOVED)) {
-            return;
-        }
-        
-        ContextUtility util = null;
-        try {
-            util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            Request request = util.getRequest();
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            Publication pub = factory.getPublication(event.getPublicationId());
-            File contentFile = pub.getContentDirectory(event.getArea());
-            String contentUri = contentFile.toURI().toString();
-            SourceUtil.deleteEmptyCollections(contentUri, this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (util != null) {
-                this.manager.release(util);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/ldap/config/module.xml b/trunk/src/modules-core/ldap/config/module.xml
deleted file mode 100644
index c23c655..0000000
--- a/trunk/src/modules-core/ldap/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.ldap</id>
-  <export package="org.apache.lenya.ac.ldap"/>
-  <depends module="org.apache.lenya.modules.ac"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>LDAP</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>LDAP user implementation. Also see src/pubs/default/config/ac/passwd/ldap.properties.sample</description>
-</module>
diff --git a/trunk/src/modules-core/ldap/java/src/org/apache/lenya/ac/ldap/LDAPUser.java b/trunk/src/modules-core/ldap/java/src/org/apache/lenya/ac/ldap/LDAPUser.java
deleted file mode 100644
index b8c6daa..0000000
--- a/trunk/src/modules-core/ldap/java/src/org/apache/lenya/ac/ldap/LDAPUser.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.ldap;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Hashtable;
-import java.util.Properties;
-
-import javax.naming.AuthenticationException;
-import javax.naming.Context;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.InitialLdapContext;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.ItemManager;
-import org.apache.lenya.ac.file.FileUser;
-
-import com.sun.jndi.ldap.LdapCtxFactory;
-import com.sun.jndi.ldap.LdapURL;
-
-/**
- * LDAP user.
- * @version $Id$
- */
-public class LDAPUser extends FileUser {
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-
-    private Properties defaultProperties = null;
-
-    /**
-     * <code>LDAP_ID</code> The LDAP id
-     */
-    public static final String LDAP_ID = "ldapid";
-    private static String LDAP_PROPERTIES_FILE = "ldap.properties";
-    private static String PROVIDER_URL_PROP = "provider-url";
-    private static String MGR_DN_PROP = "mgr-dn";
-    private static String MGR_PW_PROP = "mgr-pw";
-    private static String KEY_STORE_PROP = "key-store";
-    private static String SECURITY_PROTOCOL_PROP = "security-protocol";
-    private static String SECURITY_AUTHENTICATION_PROP = "security-authentication";
-    private static String USR_ATTR_PROP = "usr-attr";
-    private static String USR_ATTR_DEFAULT = "uid";
-    private static String USR_NAME_ATTR_PROP = "usr-name-attr";
-    private static String USR_NAME_ATTR_DEFAULT = "gecos";
-    private static String USR_BRANCH_PROP = "usr-branch";
-    private static String USR_BRANCH_DEFAULT = "ou=People";
-    private static String USR_AUTH_TYPE_PROP = "usr-authentication";
-    private static String USR_AUTH_TYPE_DEFAULT = "simple";
-    private static String BASE_DN_PROP = "base-dn";
-    private static String DOMAIN_NAME_PROP = "domain-name";
-    private static String HANDLE_REFERRALS_PROP = "handle-referrals";
-    private static String HANDLE_REFERRALS_DEFAULT = "ignore";
-
-    private String ldapId;
-    private String ldapName;
-
-    // deprecated: for backwards compatibility only !
-    private static String PARTIAL_USER_DN_PROP = "partial-user-dn";
-
-    /**
-     * Creates a new LDAPUser object.
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     */
-    public LDAPUser(ItemManager itemManager, Logger logger) {
-        super(itemManager, logger);
-    }
-
-    /**
-     * Create an LDAPUser
-     * @param itemManager The item manager.
-     * @param logger The logger.
-     * @param id user id of LDAPUser
-     * @param email of LDAPUser
-     * @param _ldapId of LDAPUser
-     * @param _logger The logger.
-     * @throws ConfigurationException if the properties could not be read
-     */
-    public LDAPUser(ItemManager itemManager, Logger logger, String id, String email,
-            String _ldapId, Logger _logger) throws ConfigurationException {
-        super(itemManager, logger, id, null, email, null);
-        this.ldapId = _ldapId;
-        initialize();
-    }
-
-    /**
-     * Create a new LDAPUser from a configuration
-     * @param config the <code>Configuration</code> specifying the user
-     *        details
-     * @throws ConfigurationException if the user could not be instantiated
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        this.ldapId = config.getChild(LDAP_ID).getValue();
-
-        initialize();
-    }
-
-    /**
-     * Checks if a user exists.
-     * @param _ldapId The LDAP id.
-     * @return A boolean value indicating whether the user is found in the
-     *         directory
-     * @throws AccessControlException when an error occurs.
-     */
-    public boolean existsUser(String _ldapId) throws AccessControlException {
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("existsUser() checking id " + _ldapId);
-
-        boolean exists = false;
-
-        try {
-            readProperties();
-            SearchResult entry = getDirectoryEntry(_ldapId);
-
-            exists = (entry != null);
-        } catch (final IOException e) {
-            if (getLogger().isDebugEnabled())
-                getLogger().debug("existsUser() for id " + _ldapId + " got exception: " + e);
-            throw new AccessControlException("Exception during search: ", e);
-        } catch (final NamingException e) {
-            if (getLogger().isDebugEnabled())
-                getLogger().debug("existsUser() for id " + _ldapId + " got exception: " + e);
-            throw new AccessControlException("Exception during search: ", e);
-        }
-
-        return exists;
-    }
-
-    /**
-     * Initializes this user. The current (already authenticated) ldapId is
-     * queried in the directory, in order to retrieve additional information,
-     * such as the user name. In current implementation, only the user name is
-     * actually retrieved, but other attributes may be used in the future (such
-     * as groups ?) TODO: should the code be changed to not throw an exception
-     * when something goes wrong ? After all, it's only used to get additional
-     * info for display? This is a design decision, I'm not sure what's best.
-     * @throws ConfigurationException when something went wrong.
-     */
-    protected void initialize() throws ConfigurationException {
-
-        try {
-            if (getLogger().isDebugEnabled())
-                getLogger().debug("initialize() getting entry ...");
-
-            SearchResult entry = getDirectoryEntry(this.ldapId);
-            if (entry != null) {
-                StringBuffer name = new StringBuffer();
-                /* users full name */
-                String usrNameAttr = defaultProperties.getProperty(USR_NAME_ATTR_PROP,
-                        USR_NAME_ATTR_DEFAULT);
-
-                if (getLogger().isDebugEnabled())
-                    getLogger().debug(
-                            "initialize() got entry, going to look for attribute " + usrNameAttr
-                                    + " in entry, which is: " + entry);
-
-                Attributes attributes = entry.getAttributes();
-                if (attributes != null) {
-                    Attribute userName = attributes.get(usrNameAttr);	
-                    if (userName != null) name.append((String) userName.get());
-                }
-
-                	this.ldapName = name.toString();
-                if (getLogger().isDebugEnabled())
-                    getLogger().debug("initialize() set name to " + this.ldapName);
-            } else {
-                this.ldapName = "";
-            }
-        } catch (final NamingException e1) {
-            throw new ConfigurationException("Could not read properties", e1);
-        } catch (final IOException e1) {
-            throw new ConfigurationException("Could not read properties", e1);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.ac.file.FileUser#createConfiguration()
-     */
-    protected Configuration createConfiguration() {
-        DefaultConfiguration config = (DefaultConfiguration) super.createConfiguration();
-
-        // add ldap_id node
-        DefaultConfiguration child = new DefaultConfiguration(LDAP_ID);
-        child.setValue(this.ldapId);
-        config.addChild(child);
-
-        return config;
-    }
-
-    /**
-     * Get the ldap id
-     * @return the ldap id
-     */
-    public String getLdapId() {
-        return this.ldapId;
-    }
-
-    /**
-     * Set the ldap id
-     * @param string the new ldap id
-     */
-    public void setLdapId(String string) {
-        this.ldapId = string;
-    }
-
-    /**
-     * Authenticate a user against the directory. The principal to be
-     * authenticated is either constructed by use of the configured properties,
-     * or by lookup of this ID in the directory. This principal then attempts to
-     * authenticate against the directory with the provided password.
-     * @see org.apache.lenya.ac.User#authenticate(java.lang.String)
-     */
-    public boolean authenticate(String password) {
-
-        boolean authenticated = false;
-        String principal = "";
-        Context ctx = null;
-
-        try {
-            principal = getPrincipal();
-
-            if (getLogger().isDebugEnabled())
-                getLogger().debug("Authenticating with principal [" + principal + "]");
-
-            ctx = bind(principal, password, defaultProperties.getProperty(USR_AUTH_TYPE_PROP,
-                    USR_AUTH_TYPE_DEFAULT));
-            authenticated = true;
-            close(ctx);
-            if (getLogger().isDebugEnabled())
-                getLogger().debug("Context closed.");
-        } catch (IOException e) {
-            getLogger().warn("authenticate handling IOException, check your setup: " + e);
-        } catch (AuthenticationException e) {
-            getLogger().info("authenticate failed for principal " + principal + ", exception " + e);
-        } catch (NamingException e) {
-            // log this failure
-            if (getLogger().isInfoEnabled()) {
-                getLogger().info("Bind for user " + principal + " to Ldap server failed: ", e);
-            }
-        }
-
-        return authenticated;
-
-    }
-
-    /**
-     * @see org.apache.lenya.ac.Item#getName()
-     */
-    public String getName() {
-        return this.ldapName;
-    }
-
-    /**
-     * LDAP Users fetch their name information from the LDAP server, so we don't
-     * store it locally. Since we only have read access we basically can't set
-     * the name, i.e. any request to change the name is ignored.
-     * @param string is ignored
-     */
-    public void setName(String string) {
-        // we do not have write access to LDAP, so we ignore
-        // change request to the name.
-    }
-
-    /**
-     * The LDAPUser doesn't store any passwords as they are handled by LDAP
-     * @param plainTextPassword is ignored
-     */
-    public void setPassword(String plainTextPassword) {
-        setEncryptedPassword(null);
-    }
-
-    /**
-     * The LDAPUser doesn't store any passwords as they are handled by LDAP
-     * @param encryptedPassword is ignored
-     */
-    protected void setEncryptedPassword(String encryptedPassword) {
-        encryptedPassword = null;
-    }
-
-    /**
-     * The LDAPUser doesn't change any passwords as they are handled by LDAP
-     * @return always returns false
-     */
-    public boolean canChangePassword() {
-        return false;
-    }
-
-    /**
-     * Connect to the LDAP server
-     * @param principal the principal string for the LDAP connection
-     * @param credentials the credentials for the LDAP connection
-     * @param authMethod the authentication method
-     * @return a <code>DirContext</code>
-     * @throws NamingException if there are problems establishing the Ldap
-     *         connection
-     */
-    private DirContext bind(String principal, String credentials, String authMethod)
-            throws NamingException {
-
-        if (getLogger().isInfoEnabled())
-            getLogger().info("Binding principal: [" + principal + "]");
-
-        Hashtable env = new Hashtable();
-
-        System.setProperty("javax.net.ssl.trustStore", getConfigurationDirectory()
-                .getAbsolutePath()
-                + File.separator + defaultProperties.getProperty(KEY_STORE_PROP));
-
-        env.put(Context.INITIAL_CONTEXT_FACTORY, LdapCtxFactory.class.getName());
-
-        String prop = defaultProperties.getProperty(PROVIDER_URL_PROP);
-        if (prop == null)
-            throw new RuntimeException("LDAP configuration error: property " + PROVIDER_URL_PROP
-                    + " is not set in property file " + LDAP_PROPERTIES_FILE);
-        env.put(Context.PROVIDER_URL, prop);
-
-        prop = defaultProperties.getProperty(SECURITY_PROTOCOL_PROP);
-        if (prop == null)
-            throw new RuntimeException("LDAP configuration error: property "
-                    + SECURITY_PROTOCOL_PROP + " is not set in property file "
-                    + LDAP_PROPERTIES_FILE);
-        env.put(Context.SECURITY_PROTOCOL, prop);
-
-        env.put(Context.SECURITY_AUTHENTICATION, authMethod);
-        if (authMethod != null && !authMethod.equals("none")) {
-            env.put(Context.SECURITY_PRINCIPAL, principal);
-            env.put(Context.SECURITY_CREDENTIALS, credentials);
-        }
-        env.put(Context.REFERRAL, defaultProperties.getProperty(HANDLE_REFERRALS_PROP, HANDLE_REFERRALS_DEFAULT));
-
-        DirContext ctx = new InitialLdapContext(env, null);
-
-        if (getLogger().isInfoEnabled())
-            getLogger().info("Finished binding principal.");
-
-        return ctx;
-    }
-
-    /**
-     * Close the connection to the LDAP server
-     * @param ctx the context that was returned from the bind
-     * @throws NamingException if there is a problem communicating to the LDAP
-     *         server
-     */
-    private void close(Context ctx) throws NamingException {
-        if (ctx != null)
-            ctx.close();
-    }
-
-    /**
-     * Read the properties
-     * @throws IOException if the properties cannot be found.
-     */
-    private void readProperties() throws IOException {
-        // create and load default properties
-        File propertiesFile = new File(getConfigurationDirectory(), LDAP_PROPERTIES_FILE);
-
-        if (defaultProperties == null) {
-            defaultProperties = new Properties();
-
-            FileInputStream in = null;
-            try {
-                in = new FileInputStream(propertiesFile);
-                defaultProperties.load(in);
-            } finally {
-                if (in != null) {
-                    in.close();
-                }
-            }
-        }
-    }
-
-    /**
-     * Wrapping of the decision whether a recursive search is wanted or not.
-     * Implementation: If the USR_BRANCH_PROP is present, this is the new style
-     * of configuration (starting Lenya 1.2.2); if it has a value, then a
-     * specific branch is wanted: no recursive search. If the property is
-     * present, but has no value, search recursively.
-     * @return Recursive search
-     */
-    private boolean isSubtreeSearch() {
-        boolean recurse = false;
-        String usrBranchProp = defaultProperties.getProperty(USR_BRANCH_PROP);
-        if (usrBranchProp != null)
-            if (usrBranchProp.trim().length() == 0)
-                recurse = true;
-
-        return recurse;
-    }
-
-    private SearchResult getDirectoryEntry(String userId) throws NamingException, IOException {
-        DirContext context = null;
-        String searchFilter = "";
-        String objectName = "";
-        boolean recursiveSearch;
-        SearchResult result = null;
-
-        try {
-            readProperties();
-
-            context = bind(defaultProperties.getProperty(MGR_DN_PROP), defaultProperties
-                    .getProperty(MGR_PW_PROP), defaultProperties
-                    .getProperty(SECURITY_AUTHENTICATION_PROP));
-
-            // Get search information and user attribute from properties
-            // provide defaults if not present (backward compatibility)
-            String userAttribute = defaultProperties.getProperty(USR_ATTR_PROP, USR_ATTR_DEFAULT);
-            searchFilter = "(" + userAttribute + "=" + userId + ")";
-            SearchControls scope = new SearchControls();
-
-            recursiveSearch = isSubtreeSearch();
-            if (recursiveSearch) {
-                scope.setSearchScope(SearchControls.SUBTREE_SCOPE);
-                objectName = defaultProperties.getProperty(PROVIDER_URL_PROP);
-            } else {
-                scope.setSearchScope(SearchControls.ONELEVEL_SCOPE);
-                objectName = defaultProperties.getProperty(USR_BRANCH_PROP, USR_BRANCH_DEFAULT);
-            }
-
-            if (getLogger().isDebugEnabled())
-                getLogger().debug(
-                        "searching object " + objectName + " filtering with " + searchFilter
-                                + ", recursive search ? " + recursiveSearch);
-
-            NamingEnumeration results = context.search(objectName, searchFilter, scope);
-            if (results != null && results.hasMore())
-                result = (SearchResult) results.next();
-
-            // sanity check: if more than one entry is returned
-            // for a user-id, then the directory is probably flawed,
-            // so it would be nice to warn the administrator.
-            //
-            // This block is commented out for now, because of possible
-            // side-effects, such as unexpected exceptions.
-            // try {
-            // if (results.hasMore()) {
-            // getLogger().warn("Found more than one entry in the directory for
-            // user " + userId + ". You probably should deactivate recursive
-            // searches. The first entry was used as a work-around.");
-            // }
-            // }
-            // catch (javax.naming.PartialResultException e) {
-            // if (getLogger().isDebugEnabled())
-            // getLogger().debug("Catching and ignoring PartialResultException,
-            // as this means LDAP server does not support our sanity check");
-            // }
-
-        } catch (NamingException e) {
-            if (getLogger().isDebugEnabled())
-                getLogger().debug(
-                        "NamingException caught when searching on objectName = " + objectName
-                                + " and searchFilter=" + searchFilter
-                                + ", this exception will be propagated: " + e);
-            throw e;
-        } finally {
-            try {
-                if (context != null) {
-                    close(context);
-                }
-            } catch (NamingException e) {
-                getLogger().warn("this should not happen: exception closing context " + e);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Encapsulation of the creation of a principal: we need to distinguish
-     * three cases, in order to support different modes of using a directory.
-     * The first is the use of a domain-name (requirement of MS Active
-     * Directory): if this property is set, this is used to construct the
-     * principal. The second case is where a user-id is somewhere in a domain,
-     * but not in a specific branch: in this case, a subtree search is performed
-     * to retrieve the complete path. The third case is where a specific branch
-     * of the directory is to be used; this is the case where usr-branch is set
-     * to a value. In this case, this branch is used to construct the principal.
-     * @return The principal
-     * @throws IOException
-     * @throws NamingException
-     */
-    private String getPrincipal() throws IOException, NamingException {
-
-        String principal;
-
-        // 1. Check if domain-name is to be supported
-        String domainProp = defaultProperties.getProperty(DOMAIN_NAME_PROP);
-        if (domainProp != null && domainProp.trim().length() > 0) {
-            principal = domainProp + "\\" + getLdapId();
-        } else {
-            if (isSubtreeSearch()) {
-                // 2. Principal is constructed from directory entry
-                SearchResult entry = getDirectoryEntry(getLdapId());
-                principal = entry.getName();
-                if (entry.isRelative()){
-                    if (principal.length() > 0)
-                        principal = principal + "," + defaultProperties.getProperty(BASE_DN_PROP);	
-                } else {
-                    // if the item is found following a referral an URL string is
-                    // returned which can not be used as principal
-                    LdapURL ldapurl = new LdapURL(principal);
-                    principal = ldapurl.getDN();
-                }
-            } else
-                // 3. Principal is constructed from properties
-                principal = constructPrincipal(getLdapId());
-        }
-
-        return principal;
-    }
-
-    /**
-     * Construct the principal for a user, by using the given userId along with
-     * the configured properties.
-     * @param userId The user id
-     * @return The principal
-     */
-    private String constructPrincipal(String userId) {
-        StringBuffer principal = new StringBuffer();
-        principal.append(defaultProperties.getProperty(USR_ATTR_PROP, USR_ATTR_DEFAULT))
-                .append("=").append(userId).append(",");
-
-        String baseDn = defaultProperties.getProperty(BASE_DN_PROP);
-        if (baseDn != null && baseDn.length() > 0) {
-            // USR_BRANCH_PROP may be empty, so only append when not-empty
-            String usrBranch = defaultProperties.getProperty(USR_BRANCH_PROP);
-            if (usrBranch != null) {
-                if (usrBranch.trim().length() > 0)
-                    principal.append(usrBranch).append(",");
-            } else
-                principal.append(USR_BRANCH_DEFAULT).append(",");
-
-            principal.append(defaultProperties.getProperty(BASE_DN_PROP));
-        } else {
-            // try for backwards compatibility of ldap properties
-            getLogger().warn(
-                    "getPrincipal() read a deprecated format in ldap properties, please update");
-            principal.append(defaultProperties.getProperty(PARTIAL_USER_DN_PROP));
-        }
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("getPrincipal() returning " + principal.toString());
-
-        return principal.toString();
-    }
-
-}
diff --git a/trunk/src/modules-core/ldap/java/test/org/apache/lenya/ac/ldap/AbstractLDAPUserTest.java b/trunk/src/modules-core/ldap/java/test/org/apache/lenya/ac/ldap/AbstractLDAPUserTest.java
deleted file mode 100644
index 79fa4fd..0000000
--- a/trunk/src/modules-core/ldap/java/test/org/apache/lenya/ac/ldap/AbstractLDAPUserTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.ac.ldap;
-
-import java.io.File;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserType;
-import org.apache.lenya.ac.file.FileAccreditableManager;
-import org.apache.lenya.ac.file.FileGroup;
-import org.apache.lenya.ac.file.FileRole;
-import org.apache.lenya.ac.file.FileUserManager;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.ac.ldap.LDAPUser;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * LDAP user test. The name "Abstract..." is used to prevent it from being
- * executed.
- * 
- * @version $Id$
- */
-public class AbstractLDAPUserTest extends AbstractAccessControlTest {
-
-    /**
-     * get a publication
-     * 
-     * @return a <code>Publication</code>
-     * 
-     * @throws PublicationException if an error occurs
-     */
-    final public Publication getPublication() throws PublicationException {
-        return getPublication("test");
-    }
-
-    /**
-     * Create and save an ldap user
-     * 
-     * @param userName name of the user
-     * @param email of the user
-     * @param ldapId ldap id of the user
-     * @throws AccessControlException if the creating or the saving fails
-     * @throws ConfigurationException if the creating or the saving fails
-     */
-    final public void createAndSaveUser(String userName, String email, String ldapId)
-            throws AccessControlException, ConfigurationException {
-        String editorGroupName = "editorGroup";
-        String adminGroupName = "adminGroup";
-        String editorRoleName = "editorRole";
-        String adminRoleName = "adminRole";
-
-        FileRole editorRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger());
-        editorRole.setName(editorRoleName);
-
-        FileRole adminRole = new FileRole(getAccreditableManager().getRoleManager(), getLogger());
-        adminRole.setName(adminRoleName);
-
-        FileGroup editorGroup = new FileGroup(getAccreditableManager().getGroupManager(),
-                getLogger(), editorGroupName);
-        FileGroup adminGroup = new FileGroup(getAccreditableManager().getGroupManager(),
-                getLogger(), adminGroupName);
-
-        LDAPUser user = new LDAPUser(getAccreditableManager().getUserManager(), getLogger(),
-                userName, email, ldapId, getLogger());
-
-        editorRole.save();
-        adminRole.save();
-
-        /*
-         * editorGroup.addRole(editorRole); user.addGroup(editorGroup);
-         * adminGroup.addRole(editorRole); adminGroup.addRole(adminRole);
-         */
-        editorGroup.save();
-        adminGroup.save();
-
-        adminGroup.add(user);
-        user.save();
-    }
-
-    /**
-     * Test loading an LDAPUser
-     * 
-     * @param userName the name of the user
-     * @return an <code>LDAPUser</code>
-     * @throws AccessControlException of the loading fails
-     */
-    final public LDAPUser loadUser(String userName) throws AccessControlException {
-        UserType[] userTypes = { FileAccreditableManager.getDefaultUserType() };
-        FileUserManager _manager = FileUserManager.instance(getAccreditableManager(),
-                getAccreditablesDirectory(), userTypes, getLogger());
-
-        return (LDAPUser) _manager.getUser(userName);
-    }
-
-    /**
-     * Test the ldap id getter
-     * 
-     * @throws AccessControlException if the test fails
-     * @throws ConfigurationException if the creating or the saving fails
-     */
-    final public void testGetLdapId() throws ConfigurationException, AccessControlException {
-        String userName = "felix";
-        String ldapId = "m400032";
-        createAndSaveUser(userName, "felix@wyona.com", ldapId);
-
-        LDAPUser user = null;
-        user = loadUser(userName);
-        assertNotNull(user);
-        assertEquals(ldapId, user.getLdapId());
-    }
-
-    /**
-     * Test settinf the ldap id
-     * 
-     * @throws AccessControlException if the test fails
-     * @throws ConfigurationException if the creating or the saving fails
-     */
-    final public void testSetLdapId() throws ConfigurationException, AccessControlException {
-        String userName = "felix";
-        String newLdapId = "foo";
-        createAndSaveUser(userName, "felix@wyona.com", "bar");
-
-        LDAPUser user = null;
-        user = loadUser(userName);
-        assertNotNull(user);
-        user.setLdapId(newLdapId);
-        user.save();
-        user = null;
-        user = loadUser(userName);
-        assertNotNull(user);
-        assertEquals(newLdapId, user.getLdapId());
-    }
-
-    /**
-     * Test save
-     * 
-     * @throws AccessControlException if the test fails
-     * @throws ConfigurationException if the creating or the saving fails
-     */
-    final public void testSave() throws ConfigurationException, AccessControlException {
-        String userName = "felix";
-        createAndSaveUser(userName, "felix@wyona.com", "m400032");
-
-        User user = null;
-        user = loadUser(userName);
-        assertNotNull(user);
-    }
-
-    /**
-     * Test the deletion of a ldap user
-     * 
-     */
-    final public void testDelete() {
-        // TODO Implement delete().
-    }
-}
diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf
deleted file mode 100644
index 959af32..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.linking.GlobalProxies']">
-
-  <!-- Lenya can rewrite the links to cater to special proxy setups.
-    Make sure to update the proxy configuration in publication.xml as well.
-    For information about these settings, read
-    http://lenya.apache.org/docu/docs/2_0_x/tutorials/proxy.html
-
-    The example setting below describes a test setup that corresponds to the example 
-    in src/pubs/default/config/publication.xml.
-  -->
-  <component logger="lenya.proxy"
-    role="org.apache.lenya.cms.linking.GlobalProxies"
-    class="org.apache.lenya.cms.linking.impl.GlobalProxiesImpl">
-<!--
-    <proxy ssl="false" url="http://www.example.com/lenya"/>
-    <proxy ssl="true" url="https://www.example.com/lenya"/>
--->
-  </component>
-  
-</xconf>
diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/linkingmodule.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/linkingmodule.xconf
deleted file mode 100644
index 4ebf745..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/linkingmodule.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'link']">
-
-  <component-instance logger="core.modules.input.link" name="link"
-    class="org.apache.lenya.cms.cocoon.components.modules.input.LinkingModule"/>
-  
-</xconf>
diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/linkmanager.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/linkmanager.xconf
deleted file mode 100644
index 7bcda0f..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/linkmanager.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.linking.LinkManager']">
-
-  <component logger="" role="org.apache.lenya.cms.linking.LinkManager"
-    class="org.apache.lenya.cms.linking.ContentLinkManager"/>
-  
-</xconf>
diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/linkresolver.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/linkresolver.xconf
deleted file mode 100644
index 63069c0..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/linkresolver.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.linking.LinkResolver']">
-
-  <component logger="" role="org.apache.lenya.cms.linking.LinkResolver"
-    class="org.apache.lenya.cms.linking.LinkResolverImpl"/>
-  
-</xconf>
diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/proxy-url.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/proxy-url.xconf
deleted file mode 100644
index 7e260f3..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/proxy-url.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'proxy']">

-    <component-instance name="proxy" logger="sitemap.modules.input.proxy"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.ProxyModule"/>

-  </xconf>

diff --git a/trunk/src/modules-core/linking/config/cocoon-xconf/sourcefactory.xconf b/trunk/src/modules-core/linking/config/cocoon-xconf/sourcefactory.xconf
deleted file mode 100644
index a56677d..0000000
--- a/trunk/src/modules-core/linking/config/cocoon-xconf/sourcefactory.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'lenya-document']">
-
-  <component-instance logger="" name="lenya-document"
-    class="org.apache.lenya.cms.cocoon.source.DocumentSourceFactory"/>
-  
-</xconf>
diff --git a/trunk/src/modules-core/linking/config/module.xml b/trunk/src/modules-core/linking/config/module.xml
deleted file mode 100644
index 6296c89..0000000
--- a/trunk/src/modules-core/linking/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.linking</id>
-  <export package="org.apache.lenya.cms.linking"/>
-  <export package="org.apache.lenya.cms.cocoon.transformation"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Linking</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Components to handle internal links.</description>
-</module>
diff --git a/trunk/src/modules-core/linking/config/sitemap/transformers.xmap b/trunk/src/modules-core/linking/config/sitemap/transformers.xmap
deleted file mode 100644
index 7db0697..0000000
--- a/trunk/src/modules-core/linking/config/sitemap/transformers.xmap
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'uuid2url']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  

-  <map:transformer name="uuid2url" logger="lenya.sitemap.transformer.uuid2url"
-    src="org.apache.lenya.cms.cocoon.transformation.UuidToUrlTransformer">
-    <transform namespace="http://www.w3.org/1999/xhtml" element="a" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="object" attribute="data"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="img" attribute="src"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="link" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="form" attribute="action"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="script" attribute="src"/>
-  </map:transformer>
-    

-  <map:transformer name="url2uuid" logger="lenya.sitemap.transformer.url2uuid"
-    src="org.apache.lenya.cms.cocoon.transformation.UrlToUuidTransformer">
-    <transform namespace="http://www.w3.org/1999/xhtml" element="a" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="object" attribute="data"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="img" attribute="src"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="link" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="form" attribute="action"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="script" attribute="src"/>
-  </map:transformer>
-    
-  <map:transformer name="proxy" logger="lenya.sitemap.transformer.proxy"
-    src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer">
-    <transform namespace="http://www.w3.org/1999/xhtml" element="a" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="object" attribute="data"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="img" attribute="src"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="link" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="form" attribute="action"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="script" attribute="src"/>

-  </map:transformer>
-
-  <map:transformer name="incoming-proxy" logger="lenya.sitemap.transformer.incoming-proxy"
-    src="org.apache.lenya.cms.cocoon.transformation.IncomingProxyTransformer">
-    <transform namespace="http://www.w3.org/1999/xhtml" element="a" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="object" attribute="data"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="img" attribute="src"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="link" attribute="href"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="form" attribute="action"/>
-    <transform namespace="http://www.w3.org/1999/xhtml" element="script" attribute="src"/>
-  </map:transformer>
-  
-</xmap>

diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/LinkingModule.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/LinkingModule.java
deleted file mode 100644
index 374844a..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/LinkingModule.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-
-/**
- * <p>The linking module is a utility to add parameters to link URLs,
- * depending on request parameters. Supported attributes:</p>
- * <ul>
- * <li><code>rev</code> - inserts the parameter <code>,rev=...</code>
- * if a request parameter <code>lenya.revision</code> is present.</li>
- * </ul>
- */
-public class LinkingModule extends AbstractInputModule {
-    
-    protected static final String ATTRIBUTE_REVISION = "rev";
-    protected static final String REQUEST_PARAM_REVISION = "lenya.revision";
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
-        
-        if (name.equals(ATTRIBUTE_REVISION)) {
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            String revision = request.getParameter(REQUEST_PARAM_REVISION);
-            if (revision != null) {
-                return ",rev=" + revision;
-            }
-            else {
-                return "";
-            }
-        }
-        else {
-            throw new ConfigurationException("The attribute [" + name + "] is not supported.");
-        }
-    }
-
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java
deleted file mode 100644
index 308a839..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * <p>
- * Input module for getting the base URL which may be prepended to internal URLs
- * to construct links. The functionality corresponds to the
- * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer} with one
- * exception: If the <em>webappUrl</em> parameter is an empty string, the root
- * proxy URL (or the context prefix, resp.) is returned.
- * </p>
- * <p>
- * Usage: <code>{proxy:{webappUrl}}</code>
- * </p>
- * <p>
- * The module can be configured to use absolute or relative URLs in the same way
- * as the {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer}.
- * </p>
- */
-public class ProxyModule extends AbstractInputModule implements Serviceable {
-
-    protected static final String ATTRIBUTE_TYPE = "type";
-    protected static final String URL_TYPE_ABSOLUTE = "absolute";
-    protected static final String URL_TYPE_RELATIVE = "relative";
-    protected static final String PARAMETER_URLS = "urls";
-
-    private ServiceManager manager;
-    private boolean relativeUrls;
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        final String webappUrl = name;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        String value = null;
-        try {
-            if (webappUrl.equals("")) {
-                value = rewrite(request, "/");
-                if (value.endsWith("/")) {
-                    value = value.substring(0, value.length() - 1);
-                }
-            } else {
-                value = rewrite(request, webappUrl);
-            }
-        } catch (ConfigurationException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
-        }
-        return value;
-    }
-
-    protected String rewrite(Request request, String url) throws RepositoryException,
-            ConfigurationException {
-        Session session = RepositoryUtil.getSession(this.manager, request);
-        LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, session, request
-                .getRequestURI(), request.isSecure(), false, this.relativeUrls);
-        if (!rewriter.matches(url)) {
-            throw new ConfigurationException("The URL [" + url + "] can't be rewritten!");
-        }
-        return rewriter.rewrite(url);
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-        return objects;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public void configure(Configuration conf) throws ConfigurationException {
-        super.configure(conf);
-        Configuration urlConfig = conf.getChild(PARAMETER_URLS, false);
-        if (urlConfig != null) {
-            String value = urlConfig.getAttribute(ATTRIBUTE_TYPE);
-            setUrlType(value);
-        }
-    }
-    
-    protected void setUrlType(String value) throws ConfigurationException {
-        if (value.equals(URL_TYPE_RELATIVE)) {
-            this.relativeUrls = true;
-        } else if (value.equals(URL_TYPE_ABSOLUTE)) {
-            this.relativeUrls = false;
-        } else {
-            throw new ConfigurationException("Invalid URL type [" + value
-                    + "], must be relative or absolute.");
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
deleted file mode 100644
index dea910e..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-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.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.linking.Link;
-import org.apache.lenya.cms.linking.LinkResolver;
-import org.apache.lenya.cms.linking.LinkTarget;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.Query;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * <p>
- * This source factory allows to access documents using the link syntax of the
- * {@link org.apache.lenya.cms.linking.LinkResolver}.
- * </p>
- * <p>
- * Additional optional parameters, separated using <code>...?f=foo&amp;b=bar</code>:
- * </p>
- * <ul>
- * <li><strong>format</strong> - the resource type format</li>
- * <li><strong>session</strong> - the session.
- *   To use the session of the current usecase, specify <code>session=usecase</code></li>
- * </ul>
- */
-public class DocumentSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
-        Contextualizable, Serviceable, Configurable {
-
-    /**
-     * The URI scheme.
-     */
-    public static final String SCHEME = "lenya-document";
-
-    private Context context;
-    private ServiceManager manager;
-
-    /**
-     * Used for resolving the object model.
-     * 
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-    
-    private SourceResolver sourceResolver;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String,
-     *      java.util.Map)
-     */
-    public Source getSource(String location, Map parameters) throws MalformedURLException,
-            IOException, SourceException {
-        
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        String[] uriAndQuery = location.split("\\?");
-
-        String linkUri = uriAndQuery[0];
-        String queryString = null;
-        if (uriAndQuery.length > 1) {
-            queryString = uriAndQuery[1];
-        }
-
-        LinkResolver resolver = null;
-        try {
-            if (this.sourceResolver == null) {
-                this.sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            }
-
-            resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            String webappUrl = ServletHelper.getWebappURI(request);
-            LinkTarget target;
-            if (factory.isDocument(webappUrl)) {
-                Document currentDoc = factory.getFromURL(webappUrl);
-                target = resolver.resolve(currentDoc, linkUri);
-            }
-            else {
-                Link link = new Link(linkUri);
-                contextualize(link, webappUrl);
-                target = resolver.resolve(factory, link.getUri());
-            }
-
-            Document doc = target.getDocument();
-
-            if (target.isRevisionSpecified()) {
-                if (queryString == null) {
-                    queryString = "";
-                }
-                queryString += "rev=" + target.getRevisionNumber();
-            }
-
-            String format = null;
-            if (queryString != null) {
-                Query query = new Query(queryString);
-                format = query.getValue("format");
-            }
-            if (format != null) {
-                return getFormatSource(doc, format);
-            } else {
-                String lenyaURL = doc.getSourceURI();
-                if (queryString != null) {
-                    lenyaURL += "?" + queryString;
-                }
-                return this.sourceResolver.resolveURI(lenyaURL);
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    /**
-     * If the link doesn't contain context information (publication ID, area), provide it.
-     * @param link The link.
-     * @param webappUrl The web application URL to extract the context information from..
-     */
-    protected void contextualize(Link link, String webappUrl) {
-        URLInformation url = new URLInformation(webappUrl);
-        if (link.getPubId() == null) {
-            link.setPubId(url.getPublicationId());
-        }
-        if (link.getArea() == null) {
-            link.setArea(url.getArea());
-        }
-    }
-
-    protected Source getFormatSource(Document doc, String format) throws DocumentException,
-            ServiceException, IOException {
-        String formatBaseUri = doc.getResourceType().getFormatURI(format);
-        String formatUri = formatBaseUri + "/" + doc.getPublication().getId() + "/" + doc.getArea()
-                + "/" + doc.getUUID() + "/" + doc.getLanguage();
-
-        return this.sourceResolver.resolveURI(formatUri);
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
-     */
-    public void release(Source source) {
-        this.sourceResolver.release(source);
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java
deleted file mode 100644
index 5f1215e..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * <p>
- * This transformer processes all links which are configured using
- * <code>&lt;transform/&gt;</code> elements:
- * </p>
- * <code><pre>
- *   &lt;map:transformer ... &gt;
- *     &lt;transform namespace=&quot;http://www.w3.org/1999/xhtml&quot; element=&quot;a&quot; attribute=&quot;href&quot;/&gt;
- *     &lt;transform namespace=&quot;...&quot; ... /&gt;
- *   &lt;/map:transformer&gt;
- * </pre></code>
- */
-public abstract class AbstractLinkTransformer extends AbstractSAXTransformer {
-    
-    /**
-     * Set of supported local names for quick pre-checks.
-     */
-    private Set localNames = new HashSet();
-    
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        Configuration[] transformConfigs = config.getChildren("transform");
-        for (int i = 0; i < transformConfigs.length; i++) {
-            String namespace = transformConfigs[i].getAttribute("namespace");
-            String element = transformConfigs[i].getAttribute("element");
-            String attribute = transformConfigs[i].getAttribute("attribute");
-            AttributeConfiguration attrConfig = new AttributeConfiguration(namespace, element,
-                    attribute);
-            String key = getCacheKey(namespace, element);
-            Set configs = (Set) this.namespaceLocalname2configSet.get(key);
-            if (configs == null) {
-                configs = new HashSet();
-                this.localNames.add(element);
-                this.namespaceLocalname2configSet.put(key, configs);
-            }
-            configs.add(attrConfig);
-        }
-    }
-
-    /**
-     * Declaration of an attribute which should be transformed.
-     */
-    public static class AttributeConfiguration {
-
-        protected final String element;
-        protected final String namespace;
-        protected final String attribute;
-
-        /**
-         * @param namespace The namespace of the element.
-         * @param element The local name of the element.
-         * @param attribute The name of the attribute to transform.
-         */
-        public AttributeConfiguration(String namespace, String element, String attribute) {
-            this.namespace = namespace;
-            this.element = element;
-            this.attribute = attribute;
-        }
-
-        /**
-         * @param uri The namespace URI.
-         * @param name The local name.
-         * @param attrs The attributes.
-         * @return If this configuration matches the parameters.
-         */
-        public boolean matches(String uri, String name, Attributes attrs) {
-            return this.namespace.equals(uri) && this.element.equals(name)
-                    && attrs.getValue(this.attribute) != null;
-        }
-
-    }
-
-    /**
-     * @param namespace The namespace URI.
-     * @param localName The local name.
-     * @param attrs The attributes.
-     * @return A set of {@link AttributeConfiguration} objects.
-     */
-    protected Set getMatchingConfigurations(String namespace,
-            String localName, Attributes attrs) {
-        
-        // pre-check for performance reasons
-        if (!existsMatchingConfiguration(namespace, localName)) {
-            return Collections.EMPTY_SET;
-        }
-        
-        String key = getCacheKey(namespace, localName);
-        
-        // don't initialize yet for performance reasons
-        Set configs = null;
-        Set allConfigs = (Set) this.namespaceLocalname2configSet.get(key);
-        for (Iterator i = allConfigs.iterator(); i.hasNext(); ) {
-            AttributeConfiguration config = (AttributeConfiguration) i.next();
-            if (config.matches(namespace, localName, attrs)) {
-                if (configs == null) {
-                    configs = new HashSet();
-                }
-                configs.add(config);
-            }
-        }
-        if (configs == null) {
-            configs = Collections.EMPTY_SET;
-        }
-        return configs;
-    }
-    
-    /**
-     * Cache to improve performance.
-     */
-    private Map namespaceLocalname2configSet = new HashMap();
-
-    protected boolean existsMatchingConfiguration(String namespace, String localName) {
-        // quick pre-check
-        if (!this.localNames.contains(localName)) {
-            return false;
-        }
-        
-        // more expensive check
-        String key = getCacheKey(namespace, localName);
-        return this.namespaceLocalname2configSet.containsKey(key);
-    }
-
-    protected String getCacheKey(String namespace, String localName) {
-        return namespace + " " + localName;
-    }
-
-    protected String indent = "";
-    protected boolean ignoreLinkElement = false;
-
-    /**
-     * @see org.xml.sax.ContentHandler#startElement(java.lang.String,
-     *      java.lang.String, java.lang.String, org.xml.sax.Attributes)
-     */
-    public void startElement(String uri, String name, String qname, Attributes attrs)
-            throws SAXException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
-                    this.indent + "<" + qname + "> (ignoreAElement = " + this.ignoreLinkElement
-                            + ")");
-            this.indent += "  ";
-        }
-
-        AttributesImpl newAttrs = null;
-
-        Set configs = getMatchingConfigurations(uri, name, attrs);
-
-        if (!configs.isEmpty()) {
-
-            this.ignoreLinkElement = false;
-
-            for (Iterator i = configs.iterator(); i.hasNext(); ) {
-                AttributeConfiguration config = (AttributeConfiguration) i.next();
-                String linkUrl = attrs.getValue(config.attribute);
-                try {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug(this.indent + "link URL: [" + linkUrl + "]");
-                    }
-                    newAttrs = new AttributesImpl(attrs);
-                    handleLink(linkUrl, config, newAttrs);
-                } catch (final Exception e) {
-                    getLogger().error("startElement failed: ", e);
-                    throw new SAXException(e);
-                }
-            }
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(this.indent + "ignoreAElement: " + this.ignoreLinkElement);
-        }
-
-        if (!(!configs.isEmpty() && this.ignoreLinkElement)) {
-            if (newAttrs != null) {
-                attrs = newAttrs;
-            }
-            super.startElement(uri, name, qname, attrs);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug(this.indent + "<" + qname + "> sent");
-            }
-        }
-    }
-
-    /**
-     * Handle a link in the source SAX stream.
-     * @param linkUrl The link URL.
-     * @param config The attribute configuration which matched the link.
-     * @param newAttrs The new attributes which will be added to the result
-     *        element.
-     * @throws Exception if an error occurs.
-     */
-    protected void handleLink(String linkUrl, AttributeConfiguration config, AttributesImpl newAttrs)
-            throws Exception {
-        if (getLinkRewriter().matches(linkUrl)) {
-            setAttribute(newAttrs, config.attribute, getLinkRewriter().rewrite(linkUrl));
-        }
-    }
-
-    /**
-     * @see org.xml.sax.ContentHandler#endElement(java.lang.String,
-     *      java.lang.String, java.lang.String)
-     */
-    public void endElement(String uri, String name, String qname) throws SAXException {
-        if (getLogger().isDebugEnabled()) {
-            this.indent = this.indent.substring(2);
-            getLogger().debug(this.indent + "</" + qname + ">");
-        }
-        if (existsMatchingConfiguration(uri, name) && this.ignoreLinkElement) {
-            this.ignoreLinkElement = false;
-        } else {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug(this.indent + "</" + qname + "> sent");
-            }
-            super.endElement(uri, name, qname);
-        }
-    }
-
-    /**
-     * Sets the value of a certain attribute.
-     * 
-     * @param attr The attributes.
-     * @param name The attribute name.
-     * @param value The value.
-     * @throws IllegalArgumentException if the href attribute is not contained
-     *         in this attributes.
-     */
-    protected void setAttribute(AttributesImpl attr, String name, String value) {
-        int position = attr.getIndex(name);
-        if (position == -1) {
-            throw new IllegalArgumentException("The attribute [" + name + "] is not available!");
-        }
-        attr.setValue(position, value);
-    }
-
-    /**
-     * @return The link rewriter used by this transformer.
-     */
-    protected abstract LinkRewriter getLinkRewriter();
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
deleted file mode 100644
index c154771..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.linking.IncomingLinkRewriter;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.SAXException;
-
-/**
- * Converts links in proxy syntax to web application links.
- * @see IncomingLinkRewriter
- */
-public class IncomingProxyTransformer extends AbstractLinkTransformer {
-
-    private LinkRewriter rewriter;
-
-    public void setup(SourceResolver _resolver, Map _objectModel, String _source,
-            Parameters _parameters) throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, _source, _parameters);
-        Request request = ObjectModelHelper.getRequest(_objectModel);
-
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            URLInformation info = new URLInformation(ServletHelper.getWebappURI(request));
-            String pubId = info.getPublicationId();
-            this.rewriter = new IncomingLinkRewriter(factory.getPublication(pubId));
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected LinkRewriter getLinkRewriter() {
-        return this.rewriter;
-    }
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java
deleted file mode 100644
index 5772933..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.xml.sax.SAXException;
-
-/**
- * <p>
- * Proxy transformer.
- * </p>
- * <p>
- * The resulting URLs can either be absolute (default) or relative. You can
- * either configure this when declaring the transformer:
- * </p>
- * <code><pre>
- *     &lt;map:transformer ... &gt;
- *       &lt;urls type=&quot;relative&quot;/&gt;
- *       ...
- *     &lt;/map:transformer&gt;
- * </pre></code>
- * <p>
- * or pass a parameter:
- * </p>
- * <code><pre>
- *     &lt;map:parameter name=&quot;urls&quot; value=&quot;relative&quot;/&gt;
- * </pre></code>
- * @see OutgoingLinkRewriter
- */
-public class ProxyTransformer extends AbstractLinkTransformer {
-
-    protected static final String ATTRIBUTE_TYPE = "type";
-    protected static final String URL_TYPE_ABSOLUTE = "absolute";
-    protected static final String URL_TYPE_RELATIVE = "relative";
-    protected static final String PARAMETER_URLS = "urls";
-
-    private boolean relativeUrls = false;
-    private LinkRewriter rewriter;
-
-    public void setup(SourceResolver _resolver, Map _objectModel, String _source,
-            Parameters _parameters) throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, _source, _parameters);
-        Request _request = ObjectModelHelper.getRequest(_objectModel);
-
-        try {
-            if (_parameters.isParameter(PARAMETER_URLS)) {
-                setUrlType(_parameters.getParameter(PARAMETER_URLS));
-            }
-            Session session = RepositoryUtil.getSession(this.manager, _request);
-            this.rewriter = new OutgoingLinkRewriter(this.manager, session, _request
-                    .getRequestURI(), request.isSecure(), false, this.relativeUrls);
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        Configuration urlConfig = config.getChild(PARAMETER_URLS, false);
-        if (urlConfig != null) {
-            String value = urlConfig.getAttribute(ATTRIBUTE_TYPE);
-            setUrlType(value);
-        }
-    }
-
-    protected void setUrlType(String value) throws ConfigurationException {
-        if (value.equals(URL_TYPE_RELATIVE)) {
-            this.relativeUrls = true;
-        } else if (value.equals(URL_TYPE_ABSOLUTE)) {
-            this.relativeUrls = false;
-        } else {
-            throw new ConfigurationException("Invalid URL type [" + value
-                    + "], must be relative or absolute.");
-        }
-    }
-
-    protected LinkRewriter getLinkRewriter() {
-        return this.rewriter;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
deleted file mode 100644
index 9ae9dc3..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.linking.LinkResolver;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.UrlToUuidRewriter;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.SAXException;
-
-/**
- * <p>
- * URL to UUID transformer.
- * </p>
- * 
- * <p>
- * This transformer is applied to an XHMTL document. It processes all URL-based
- * links to links following the {@link LinkResolver} syntax.
- * </p>
- * 
- * $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
- */
-public class UrlToUuidTransformer extends AbstractLinkTransformer {
-
-    private LinkRewriter rewriter;
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String,
-     *      org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String _source,
-            Parameters _parameters) throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, _source, _parameters);
-
-        Request _request = ObjectModelHelper.getRequest(_objectModel);
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, _request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            String url = ServletHelper.getWebappURI(_request);
-            URLInformation info = new URLInformation(url);
-            Publication pub = factory.getPublication(info.getPublicationId());
-            Area area = pub.getArea(info.getArea());
-            this.rewriter = new UrlToUuidRewriter(area);
-        } catch (final Exception e1) {
-            throw new ProcessingException(e1);
-        }
-    }
-
-    protected LinkRewriter getLinkRewriter() {
-        return this.rewriter;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
deleted file mode 100644
index df416ee..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.cms.linking.Link;
-import org.apache.lenya.cms.linking.LinkResolver;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.LinkTarget;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.Query;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * <p>
- * UUID to URL transformer.
- * </p>
- * 
- * <p>
- * This transformer is applied to an XHMTL document. It processes all links following the
- * {@link LinkResolver} syntax which are configured using <code>&lt;transform/&gt;</code> elements
- * (see below).
- * </p>
- * <p>
- * These links are resolved using the following rules:
- * </p>
- * <ul>
- * <li>The current area (obtained from the page envelope) is used.</li>
- * <li>A URL prefix is added depending on the proxy configuration of the publication.</li>
- * <li>If the target document does not exist and is in the authoring area, the href attribute is
- * removed and a class="brokenlink" attribute is added to the <code>&lt;a/&gt;</code> element.</li>
- * <li>If the target document does not exist and is in the live area, the <code>&lt;a/&gt;</code>
- * element is removed to disable the link.</li>
- * </ul>
- * 
- * <p>
- * You can add the query parameter <code>uuid2url.extension</code> to <code>lenya-document:</code>
- * URLs to set a specific link extension.
- * </p>
- * <p>
- * The resulting URLs are absolute web application URLs (without the servlet context path).
- * </p>
- * 
- * $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
- */
-public class UuidToUrlTransformer extends AbstractLinkTransformer implements Disposable {
-
-    protected static final String BROKEN_ATTRIB = "class";
-    protected static final String BROKEN_VALUE = "brokenlink";
-    protected static final String EXTENSION_PARAM = "uuid2url.extension";
-
-    private String currentUrl;
-
-    private DocumentFactory factory;
-    private LinkResolver linkResolver;
-    private Document currentDoc;
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String _source,
-            Parameters _parameters) throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, _source, _parameters);
-
-        Request _request = ObjectModelHelper.getRequest(_objectModel);
-
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, _request);
-            this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            this.currentUrl = ServletHelper.getWebappURI(_request);
-            if (this.factory.isDocument(this.currentUrl)) {
-                this.currentDoc = this.factory.getFromURL(this.currentUrl);
-            }
-            this.linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-        } catch (final Exception e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    protected void handleLink(String linkUrl, AttributeConfiguration config, AttributesImpl newAttrs)
-            throws Exception {
-
-        URLInformation info = new URLInformation(this.currentUrl);
-        if (linkUrl.startsWith("lenya-document:")) {
-
-            String anchor = null;
-            String url = null;
-
-            int anchorIndex = linkUrl.indexOf("#");
-            if (anchorIndex > -1) {
-                url = linkUrl.substring(0, anchorIndex);
-                anchor = linkUrl.substring(anchorIndex + 1);
-            } else {
-                url = linkUrl;
-            }
-
-            StringTokenizer tokenizer = new StringTokenizer(url, "?");
-            String linkUri = tokenizer.nextToken();
-            String queryString = null;
-            String requiredExtension = null;
-            if (tokenizer.hasMoreTokens()) {
-                queryString = tokenizer.nextToken();
-                Query query = new Query(queryString);
-                requiredExtension = query.getValue(EXTENSION_PARAM);
-                query.removeValue(EXTENSION_PARAM);
-                queryString = query.toString();
-            }
-
-            LinkTarget target;
-            if (this.currentDoc != null) {
-                target = this.linkResolver.resolve(this.currentDoc, linkUri);
-            } else {
-                Link link = getAbsoluteLink(info, linkUri);
-                target = this.linkResolver.resolve(this.factory, link.getUri());
-            }
-
-            if (target.exists() && target.getDocument().hasLink()) {
-                Document targetDocument = target.getDocument();
-                String extension = getExtension(targetDocument, requiredExtension);
-                rewriteLink(newAttrs, config.attribute, targetDocument, anchor, queryString,
-                        extension);
-            } else if (info.getArea().equals(Publication.AUTHORING_AREA)) {
-                markBrokenLink(newAttrs, config.attribute, linkUrl);
-            } else {
-                this.ignoreLinkElement = true;
-            }
-        } else {
-            /*
-             * This is legacy code. It rewrites links to non-document images (in resources/shared).
-             * These images shouldn't be referenced in documents since this violates the separation
-             * between content and layout.
-             */
-            String prefix = "/" + info.getPublicationId() + "/";
-            if (linkUrl.startsWith(prefix)) {
-                String pubUrl = linkUrl.substring(prefix.length());
-                StringTokenizer tokenizer = new StringTokenizer(pubUrl, "/");
-                String area = tokenizer.nextToken();
-
-                // don't rewrite /{pub}/modules/...
-                if (area.equals(Publication.AUTHORING_AREA)) {
-                    String areaUrl = pubUrl.substring(area.length());
-                    String newUrl = prefix + area + areaUrl;
-                    setAttribute(newAttrs, config.attribute, newUrl);
-                }
-            }
-        }
-    }
-
-    /**
-     * The link is constructed from the linkUri string. If it lacks the area or publication ID
-     * information, these are obtained from the current URL information.
-     * @param info The current URL information.
-     * @param linkUri The link URI to use.
-     * @return A link.
-     * @throws MalformedURLException if the linkUri parameter is malformed.
-     */
-    protected Link getAbsoluteLink(URLInformation info, String linkUri)
-            throws MalformedURLException {
-        Link link = new Link(linkUri);
-        if (link.getPubId() == null) {
-            link.setPubId(info.getPublicationId());
-        }
-        if (link.getArea() == null) {
-            link.setArea(info.getArea());
-        }
-        return link;
-    }
-
-    /**
-     * Get the extension of a document. Caution: resolving the extension is expensive!
-     * @param targetDocument The document.
-     * @param requiredExtension The required extension.
-     * @return The required extension or, if it is null, the document's default extension.
-     */
-    protected String getExtension(Document targetDocument, String requiredExtension) {
-        String extension = requiredExtension != null ? requiredExtension : targetDocument
-                .getExtension();
-        if (extension.length() > 0) {
-            extension = "." + extension;
-        }
-        return extension;
-    }
-
-    /**
-     * Marks a <code>&lt;a/&gt;</code> element as broken and removes href attribute.
-     * 
-     * @param newAttrs The new attributes.
-     * @param attrName The attribute name.
-     * @param brokenUrl The broken link URI.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected void markBrokenLink(AttributesImpl newAttrs, String attrName, String brokenUrl)
-            throws AccessControlException {
-        if (newAttrs.getIndex(BROKEN_ATTRIB) > -1)
-            newAttrs.removeAttribute(newAttrs.getIndex(BROKEN_ATTRIB));
-        if (newAttrs.getIndex("title") > -1)
-            newAttrs.removeAttribute(newAttrs.getIndex("title"));
-        if (newAttrs.getIndex(attrName) > -1)
-            newAttrs.setAttribute(newAttrs.getIndex(attrName), "", attrName, attrName, "CDATA", "");
-        String warning = "Broken Link: " + brokenUrl;
-        newAttrs.addAttribute("", "title", "title", "CDATA", warning);
-        newAttrs.addAttribute("", BROKEN_ATTRIB, BROKEN_ATTRIB, "CDATA", BROKEN_VALUE);
-    }
-
-    /**
-     * Rewrites a link.
-     * 
-     * @param newAttrs The new attributes.
-     * @param attributeName The name of the attribute to rewrite.
-     * @param targetDocument The target document.
-     * @param anchor The anchor (the string after the # character in the URL).
-     * @param queryString The query string without question mark.
-     * @param extension The extension to use.
-     * @throws AccessControlException when something went wrong.
-     */
-    protected void rewriteLink(AttributesImpl newAttrs, String attributeName,
-            Document targetDocument, String anchor, String queryString, String extension)
-            throws AccessControlException {
-
-        String webappUrl = targetDocument.getCanonicalWebappURL();
-
-        int lastDotIndex = webappUrl.lastIndexOf(".");
-        if (lastDotIndex > -1) {
-            webappUrl = webappUrl.substring(0, lastDotIndex) + extension;
-        }
-
-        if (anchor != null) {
-            webappUrl += "#" + anchor;
-        }
-
-        if (queryString != null && queryString.length() > 0) {
-            webappUrl += "?" + queryString;
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(this.indent + "Rewriting URL to: [" + webappUrl + "]");
-        }
-
-        setAttribute(newAttrs, attributeName, webappUrl);
-    }
-
-    /**
-     * Sets the value of the href attribute.
-     * 
-     * @param attr The attributes.
-     * @param name The attribute name.
-     * @param value The value.
-     * @throws IllegalArgumentException if the href attribute is not contained in this attributes.
-     */
-    protected void setAttribute(AttributesImpl attr, String name, String value) {
-        int position = attr.getIndex(name);
-        if (position == -1) {
-            throw new IllegalArgumentException("The href attribute is not available!");
-        }
-        attr.setValue(position, value);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (this.linkResolver != null) {
-            this.manager.release(this.linkResolver);
-        }
-    }
-
-    /**
-     * @see org.apache.avalon.excalibur.pool.Recyclable#recycle()
-     */
-    public void recycle() {
-        this.ignoreLinkElement = false;
-        this.currentUrl = null;
-    }
-
-    protected LinkRewriter getLinkRewriter() {
-        return null;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ContentLinkManager.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ContentLinkManager.java
deleted file mode 100644
index 05bf3c4..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ContentLinkManager.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Node;
-import org.w3c.dom.traversal.NodeIterator;
-
-/**
- * Basic link manager implementation which searches for links by parsing the
- * document content. For better performance use an implementation which is based
- * on meta data or a centralized link registry.
- */
-public class ContentLinkManager extends AbstractLogEnabled implements LinkManager, Serviceable {
-
-    protected ServiceManager manager;
-
-    public Link[] getLinksFrom(Document source) {
-
-        Set links = new HashSet();
-
-        try {
-            String[] xPaths = source.getResourceType().getLinkAttributeXPaths();
-            if (xPaths.length > 0) {
-                org.w3c.dom.Document xml = DocumentHelper.readDocument(source.getInputStream());
-
-                if (xml == null) {
-                    throw new RuntimeException("The document [" + source
-                            + "] doesn't contain any XML content.");
-                }
-
-                for (int i = 0; i < xPaths.length; i++) {
-                    NodeIterator iter = XPathAPI.selectNodeIterator(xml, xPaths[i]);
-                    Node node;
-                    while ((node = iter.nextNode()) != null) {
-                        Attr attr = (Attr) node;
-                        String uri = attr.getValue();
-                        if (isLinkUri(uri)) {
-                            links.add(new Link(uri));
-                        }
-                    }
-                }
-            }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        return (Link[]) links.toArray(new Link[links.size()]);
-    }
-
-    protected boolean isLinkUri(String uri) {
-        return uri.startsWith(LinkResolver.SCHEME + ":");
-    }
-
-    public Document[] getReferencingDocuments(Document target) {
-
-        Document[] allDocs = target.area().getDocuments();
-        Set docs = new HashSet();
-
-        LinkResolver resolver = null;
-        try {
-            resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-            for (int d = 0; d < allDocs.length; d++) {
-
-                Link[] links = getLinksFrom(allDocs[d]);
-                for (int l = 0; l < links.length; l++) {
-                    LinkTarget linkTarget = resolver.resolve(allDocs[d], links[l].getUri());
-                    if (linkTarget.exists() && linkTarget.getDocument().equals(target)) {
-                        docs.add(allDocs[d]);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-        return (Document[]) docs.toArray(new Document[docs.size()]);
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/GlobalProxies.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/GlobalProxies.java
deleted file mode 100644
index 743fcf4..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/GlobalProxies.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.cms.publication.Proxy;
-
-/**
- * Service to manage the web-application-wide proxy settings.
- */
-public interface GlobalProxies {
-    
-    /**
-     * The service role.
-     */
-    String ROLE = GlobalProxies.class.getName();
-    
-    /**
-     * @param ssl If SSL is used.
-     * @return A proxy.
-     */
-    Proxy getProxy(boolean ssl);
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/IncomingLinkRewriter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/IncomingLinkRewriter.java
deleted file mode 100644
index 0da6eb6..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/IncomingLinkRewriter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * <p>
- * Converts browser-based links to web application links by using the
- * publication's proxy settings.
- * </p>
- * <p>
- * Objects of this class are not thread-safe.
- * </p>
- */
-public class IncomingLinkRewriter implements LinkRewriter {
-
-    private Publication pub;
-
-    /**
-     * @param pub The current publication.
-     */
-    public IncomingLinkRewriter(Publication pub) {
-        this.pub = pub;
-    }
-
-    public boolean matches(String url) {
-        return getMatchingProxyConfiguration(url) != null;
-    }
-
-    protected ProxyConfiguration getMatchingProxyConfiguration(String url) {
-        ProxyConfiguration config = null;
-        String[] areas = this.pub.getAreaNames();
-        Boolean[] sslValues = { Boolean.FALSE, Boolean.TRUE };
-        for (int a = 0; a < areas.length; a++) {
-            for (int s = 0; s < sslValues.length; s++) {
-                Proxy proxy = this.pub.getProxy(areas[a], sslValues[s].booleanValue());
-                if (config == null && url.startsWith(proxy.getUrl())) {
-                    config = new ProxyConfiguration(areas[a], sslValues[s].booleanValue());
-                }
-            }
-        }
-        return config;
-    }
-
-    public String rewrite(String url) {
-        ProxyConfiguration config = getMatchingProxyConfiguration(url);
-        if (config == null) {
-            throw new RuntimeException("No matching proxy config for URL [" + url + "]");
-        }
-        Proxy proxy = this.pub.getProxy(config.area, config.ssl);
-        String suffix = url.substring(proxy.getUrl().length());
-        return "/" + this.pub.getId() + "/" + config.area + suffix;
-    }
-
-    protected static class ProxyConfiguration {
-        protected String area;
-        protected boolean ssl;
-        protected ProxyConfiguration(String area, boolean ssl) {
-            this.area = area;
-            this.ssl = ssl;
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/Link.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/Link.java
deleted file mode 100644
index c0ba9f9..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/Link.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.net.MalformedURLException;
-import java.util.StringTokenizer;
-
-import org.apache.lenya.util.Query;
-
-/**
- * A link to a document.
- */
-public class Link {
-
-    protected static final String PAIR_DELIMITER = ",";
-    protected static final String KEY_VALUE_DELIMITER = "=";
-
-    private String uuid;
-    private String language;
-    private String revision;
-    private String area;
-    private String pubId;
-    
-    /**
-     * Ctor.
-     */
-    public Link() {
-    }
-    
-    /**
-     * Ctor.
-     * @param linkUri The link URI.
-     * @throws MalformedURLException if the URI doesn't represent a link.
-     */
-    public Link(String linkUri) throws MalformedURLException {
-        
-        if (!linkUri.startsWith(LinkResolver.SCHEME + ":")) {
-            throw new MalformedURLException("The string [" + linkUri + "] is not a valid link URI!");
-        }
-        
-        StringTokenizer schemeAndPath = new StringTokenizer(linkUri, ":");
-        schemeAndPath.nextToken();
-        String path = schemeAndPath.nextToken();
-
-        if (path.indexOf(PAIR_DELIMITER) > -1) {
-            int firstDelimiterIndex = path.indexOf(PAIR_DELIMITER);
-            this.uuid = path.substring(0, firstDelimiterIndex);
-            String pathQueryString = path.substring(firstDelimiterIndex + 1);
-            Query query = new Query(pathQueryString, PAIR_DELIMITER, KEY_VALUE_DELIMITER);
-            this.pubId = query.getValue("pub");
-            this.area = query.getValue("area");
-            this.language = query.getValue("lang");
-            this.revision = query.getValue("rev");
-        } else {
-            this.uuid = path;
-        }
-    }
-    
-    /**
-     * @return The area.
-     */
-    public String getArea() {
-        return area;
-    }
-
-    /**
-     * @param area The area.
-     */
-    public void setArea(String area) {
-        this.area = area;
-    }
-
-    /**
-     * @return The language.
-     */
-    public String getLanguage() {
-        return language;
-    }
-
-    /**
-     * @param language The language.
-     */
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    /**
-     * @return The publication ID.
-     */
-    public String getPubId() {
-        return pubId;
-    }
-
-    /**
-     * @param pubId The publication ID.
-     */
-    public void setPubId(String pubId) {
-        this.pubId = pubId;
-    }
-
-    /**
-     * @return The revision.
-     */
-    public String getRevision() {
-        return revision;
-    }
-
-    /**
-     * @param revision The revision.
-     */
-    public void setRevision(String revision) {
-        this.revision = revision;
-    }
-
-    /**
-     * @return The UUID.
-     */
-    public String getUuid() {
-        return uuid;
-    }
-
-    /**
-     * @param uuid The UUID.
-     */
-    public void setUuid(String uuid) {
-        this.uuid = uuid;
-    }
-
-    /**
-     * @return The link URI.
-     */
-    public String getUri() {
-        String uri = LinkResolver.SCHEME + ":";
-        if (this.uuid != null) {
-            uri = uri + this.uuid;
-        }
-        if (this.language != null) {
-            uri = uri + ",lang=" + this.language;
-        }
-        if (this.area != null) {
-            uri = uri + ",area=" + this.area;
-        }
-        if (this.pubId != null) {
-            uri = uri + ",pub=" + this.pubId;
-        }
-        if (this.revision != null) {
-            uri = uri + ",rev=" + this.revision;
-        }
-        return uri;
-    }
-
-    public boolean equals(Object obj) {
-        if (!getClass().isInstance(obj)) {
-            return false;
-        }
-        return ((Link) obj).getUri().equals(getUri());
-    }
-
-    public int hashCode() {
-        return getUri().hashCode();
-    }
-
-    public String toString() {
-        return getUri();
-    }
-    
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkConverter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkConverter.java
deleted file mode 100644
index be2a799..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkConverter.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Utility class to convert <code>lenya-document:</code> links from and to URL
- * links.
- */
-public class LinkConverter extends AbstractLogEnabled {
-
-    private ServiceManager manager;
-
-    /**
-     * Creates a link converter.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public LinkConverter(ServiceManager manager, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-        this.manager = manager;
-    }
-
-    /**
-     * Converts all URL-based links to UUID-based links.
-     * @param doc The document to convert.
-     * @param useContextPath If the request's context path should be considered.
-     */
-    public void convertUrlsToUuids(Document doc, boolean useContextPath) {
-        convertUrlsToUuids(doc.getPublication(), doc, useContextPath);
-    }
-
-    /**
-     * Converts all URL-based links to UUID-based links. The link URLs can
-     * originate from a different publication.
-     * @param srcPub The publication where the content comes from.
-     * @param examinedDocument The document in the target publication.
-     * @param useContextPath If the request's context path should be considered.
-     */
-    public void convertUrlsToUuids(Publication srcPub, Document examinedDocument,
-            boolean useContextPath) {
-        boolean linksRewritten = false;
-        LinkResolver linkResolver = null;
-        try {
-
-            String prefix = "";
-            if (useContextPath) {
-                prefix = getContextPath();
-            }
-
-            ResourceType type = examinedDocument.getResourceType();
-            String[] xPaths = type.getLinkAttributeXPaths();
-
-            if (xPaths.length == 0) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                            "Convert links: No XPaths for resource type [" + type.getName() + "]");
-                }
-            } else {
-                linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-                DocumentFactory factory = examinedDocument.getFactory();
-
-                org.w3c.dom.Document xmlDocument = DocumentHelper.readDocument(examinedDocument
-                        .getInputStream());
-
-                for (int xPathIndex = 0; xPathIndex < xPaths.length; xPathIndex++) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger()
-                                .debug("Convert links: Check XPath [" + xPaths[xPathIndex] + "]");
-                    }
-                    NodeList nodes = XPathAPI.selectNodeList(xmlDocument, xPaths[xPathIndex]);
-                    for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
-                        Node node = nodes.item(nodeIndex);
-                        if (node.getNodeType() != Node.ATTRIBUTE_NODE) {
-                            throw new RuntimeException("The XPath [" + xPaths[xPathIndex]
-                                    + "] may only match attribute nodes!");
-                        }
-                        Attr attribute = (Attr) node;
-                        final String url = attribute.getValue();
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Convert links: Check URL [" + url + "]");
-                        }
-
-                        if (url.startsWith(prefix + "/" + srcPub.getId() + "/"
-                                + examinedDocument.getArea() + "/")) {
-                            String targetPubId = examinedDocument.getPublication().getId();
-                            final String webappUrl = "/" + targetPubId
-                                    + url.substring((prefix + "/" + srcPub.getId()).length());
-                            if (factory.isDocument(webappUrl)) {
-                                Document targetDocument = factory.getFromURL(webappUrl);
-
-                                if (getLogger().isDebugEnabled()) {
-                                    getLogger().debug(
-                                            "Convert links: Check webapp URL [" + webappUrl + "]");
-                                }
-
-                                Link link = new Link();
-                                link.setUuid(targetDocument.getUUID());
-                                attribute.setValue(link.getUri());
-                                linksRewritten = true;
-                            }
-                        }
-                    }
-                }
-
-                if (linksRewritten) {
-                    DocumentHelper.writeDocument(xmlDocument, examinedDocument.getOutputStream());
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException("Error rewriting document: [" + examinedDocument + "]", e);
-        } finally {
-            if (linkResolver != null) {
-                this.manager.release(linkResolver);
-            }
-        }
-    }
-
-    protected String getContextPath() throws ServiceException {
-        String prefix;
-        ContextUtility ctxUtil = null;
-        try {
-            ctxUtil = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            prefix = ctxUtil.getRequest().getContextPath();
-        } finally {
-            if (ctxUtil != null) {
-                this.manager.release(ctxUtil);
-            }
-        }
-        return prefix;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkException.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkException.java
deleted file mode 100644
index 8484c42..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-/**
- * Link exception.
- */
-public class LinkException extends Exception {
-
-    private static final long serialVersionUID = -3304874622495079970L;
-
-    public LinkException() {
-        super();
-    }
-
-    public LinkException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    public LinkException(String arg0) {
-        super(arg0);
-    }
-
-    public LinkException(Throwable arg0) {
-        super(arg0);
-    }
-
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkManager.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkManager.java
deleted file mode 100644
index b8cb709..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkManager.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.cms.publication.Document;
-
-/**
- * Link manager.
- */
-public interface LinkManager {
-    
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = LinkManager.class.getName();
-
-    /**
-     * Returns all links from a document.
-     * @param source The document.
-     * @return An array of links.
-     */
-    Link[] getLinksFrom(Document source);
-
-    /**
-     * Returns all documents which reference a certain document. This depends on
-     * the currently available translations of the target document and the link
-     * resolver fallback mode.
-     * @param target The target document.
-     * @return An array of documents.
-     */
-    Document[] getReferencingDocuments(Document target);
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolver.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolver.java
deleted file mode 100644
index cd6d2f4..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolver.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.net.MalformedURLException;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-
-/**
- * <p>
- * Resolve a link from a document to another document using it's
- * </p>
- * <ul>
- * <li>publication ID</li>
- * <li>area</li>
- * <li>UUID</li>
- * <li>language</li>
- * <li>revision number</li>
- * </ul>
- * <p>
- * All of these parameters are optional and default to the attributes of the
- * document which contains the link.
- * </p>
- * <p>
- * Syntax (square brackets denote optional parts):
- * </p>
- * <code>lenya-document:&lt;uuid&gt;[,lang=...][,area=...][,rev=...][,pub=...]</code>
- * <p>
- * The fallback mode determines the behaviour if the target language is omitted
- * and the target document doesn't exist in the language of the source document.
- * The default fallback mode is {@link #MODE_DEFAULT_LANGUAGE}.
- * <p>
- */
-public interface LinkResolver {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = LinkResolver.class.getName();
-    
-    /**
-     * The link URI scheme.
-     */
-    String SCHEME = "lenya-document";
-    
-    /**
-     * Fail if the target document doesn't exist in the source language.
-     */
-    int MODE_FAIL = 0;
-    
-    /**
-     * Try to fall back to the default language.
-     */
-    int MODE_DEFAULT_LANGUAGE = 1;
-
-    /**
-     * Sets the fallback mode.
-     * @param mode one of {@link #MODE_FAIL} and {@link #MODE_DEFAULT_LANGUAGE}.
-     */
-    void setFallbackMode(int mode);
-
-    /**
-     * @return the fallback mode.
-     */
-    int getFallbackMode();
-
-    /**
-     * Resolve a link.
-     * 
-     * @param currentDocument The document which contains the link.
-     * @param linkUri The link URI.
-     * @return A link target.
-     * @throws MalformedURLException if the URI is invalid.
-     */
-    LinkTarget resolve(Document currentDocument, String linkUri) throws MalformedURLException;
-
-    /**
-     * Resolve a link. The link URI has to contain the UUID, language, area and publication ID.
-     * @param factory The document factory to use.
-     * @param linkUri The link URI.
-     * @return A link target.
-     * @throws MalformedURLException if the URI is invalid.
-     */
-    LinkTarget resolve(DocumentFactory factory, String linkUri) throws MalformedURLException;
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolverImpl.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolverImpl.java
deleted file mode 100644
index 50eb58c..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkResolverImpl.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.net.MalformedURLException;
-
-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.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.util.Assert;
-
-/**
- * Link resolver implementation.
- */
-public class LinkResolverImpl extends AbstractLogEnabled implements LinkResolver, Configurable {
-
-    /**
-     * The Avalon role.
-     */
-    public static final String ROLE = LinkResolverImpl.class.getName();
-
-    public LinkTarget resolve(Document currentDoc, String linkUri) throws MalformedURLException {
-
-        Link link = new Link(linkUri);
-
-        String language = getValue(link.getLanguage(), currentDoc.getLanguage());
-        String revisionString = getValue(link.getRevision(), null);
-        String area = getValue(link.getArea(), currentDoc.getArea());
-        String pubId = getValue(link.getPubId(), currentDoc.getPublication().getId());
-        
-        String uuid = getValue(link.getUuid(), currentDoc.getUUID());
-        if (uuid.length() == 0) {
-            uuid = currentDoc.getUUID();
-        }
-        
-        return resolve(currentDoc.getFactory(), pubId, area, uuid, language, revisionString);
-    }
-
-    protected String getValue(String value, String defaultValue) {
-        if (value == null) {
-            return defaultValue;
-        } else {
-            return value;
-        }
-    }
-
-    private int fallbackMode = MODE_DEFAULT_LANGUAGE;
-
-    public int getFallbackMode() {
-        return this.fallbackMode;
-    }
-
-    public void setFallbackMode(int mode) {
-        this.fallbackMode = mode;
-    }
-
-    protected static final String ELEMENT_FALLBACK = "fallback";
-
-    public void configure(Configuration config) throws ConfigurationException {
-        Configuration fallbackConfig = config.getChild(ELEMENT_FALLBACK, false);
-        if (fallbackConfig != null) {
-            boolean fallback = config.getValueAsBoolean();
-            if (fallback) {
-                setFallbackMode(MODE_DEFAULT_LANGUAGE);
-            } else {
-                setFallbackMode(MODE_FAIL);
-            }
-        }
-    }
-
-    public LinkTarget resolve(DocumentFactory factory, String linkUri) throws MalformedURLException {
-
-        Link link = new Link(linkUri);
-        String language = link.getLanguage();
-        Assert.notNull("language", language);
-        String uuid = link.getUuid();
-        Assert.notNull("uuid", uuid);
-        String area = link.getArea();
-        Assert.notNull("area", area);
-        String pubId = link.getPubId();
-        Assert.notNull("publication ID", pubId);
-
-        String revisionString = getValue(link.getRevision(), null);
-        
-        return resolve(factory, pubId, area, uuid, language, revisionString);
-    }
-
-    protected LinkTarget resolve(DocumentFactory factory, String pubId, String area, String uuid,
-            String language, String revisionString) {
-        int revision;
-        if (revisionString == null) {
-            revision = -1;
-        } else {
-            revision = Integer.valueOf(revisionString).intValue();
-        }
-
-        try {
-            Publication pub = factory.getPublication(pubId);
-            Area areaObj = pub.getArea(area);
-            Document doc;
-            if (areaObj.contains(uuid, language)) {
-                doc = areaObj.getDocument(uuid, language);
-            } else {
-                if (this.fallbackMode == MODE_FAIL) {
-                    doc = null;
-                } else if (this.fallbackMode == MODE_DEFAULT_LANGUAGE) {
-                    if (areaObj.contains(uuid, pub.getDefaultLanguage())) {
-                        doc = factory.get(pub, area, uuid, pub.getDefaultLanguage(), revision);
-                    } else {
-                        doc = null;
-                    }
-                } else {
-                    throw new RuntimeException("The fallback mode [" + this.fallbackMode
-                            + "] is not supported!");
-                }
-            }
-            if (doc == null) {
-                return new LinkTarget();
-            } else {
-                if (revision > -1) {
-                    return new LinkTarget(doc, revision);
-                } else {
-                    return new LinkTarget(doc);
-                }
-            }
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkRewriter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkRewriter.java
deleted file mode 100644
index e08257d..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkRewriter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-/**
- * Interface for services which convert links from one form to another.
- */
-public interface LinkRewriter {
-    
-    /**
-     * @param url The URL.
-     * @return If this rewriter feels responsible for the URL.
-     */
-    boolean matches(String url);
-    
-    /**
-     * @param url The original URL.
-     * @return The rewritten URL.
-     */
-    String rewrite(String url);
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkTarget.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkTarget.java
deleted file mode 100644
index 31ccc74..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/LinkTarget.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.util.Assert;
-
-/**
- * The target of a link.
- */
-public class LinkTarget {
-
-    private Document doc;
-    private int revisionNumber = -1;
-
-    /**
-     * Ctor.
-     * @param doc The document.
-     * @param revisionNumber The revision number.
-     */
-    protected LinkTarget(Document doc, int revisionNumber) {
-        this(doc);
-        this.revisionNumber = revisionNumber;
-    }
-
-    /**
-     * Ctor.
-     * @param doc The document.
-     */
-    protected LinkTarget(Document doc) {
-        Assert.notNull("document", doc);
-        this.doc = doc;
-    }
-
-    /**
-     * Ctor for non-existing targets.
-     */
-    protected LinkTarget() {
-    }
-
-    /**
-     * @return The linked document.
-     * @throws LinkException if the target doesn't exist.
-     */
-    public Document getDocument() throws LinkException {
-        if (!exists()) {
-            throw new LinkException("The target doesn't exist!");
-        }
-        return this.doc;
-    }
-
-    /**
-     * @return The revision number.
-     * @throws LinkException if the target doesn't exist or no revision number
-     *         is specified in the link.
-     */
-    public int getRevisionNumber() throws LinkException {
-        if (!exists()) {
-            throw new LinkException("The target doesn't exist!");
-        }
-        if (this.revisionNumber == -1) {
-            throw new LinkException("No revision specified!");
-        }
-        return this.revisionNumber;
-    }
-
-    /**
-     * @return if the revision is specified in the link.
-     */
-    public boolean isRevisionSpecified() {
-        return this.revisionNumber != -1;
-    }
-
-    /**
-     * @return if the target exists.
-     */
-    public boolean exists() {
-        return this.doc != null;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
deleted file mode 100644
index 47041f1..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Policy;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.StringUtil;
-
-/**
- * <p>
- * Converts web application links to links which will be sent to the browser by using the
- * publication's proxy settings. If the current request is SSL-encrypted, all link URLs will use the
- * SSL proxy.
- * </p>
- * <p>
- * Objects of this class are not thread-safe.
- * </p>
- */
-public class OutgoingLinkRewriter extends ServletLinkRewriter {
-
-    private boolean relativeUrls;
-    private PolicyManager policyManager;
-    private AccreditableManager accreditableManager;
-    private DocumentFactory factory;
-    private boolean ssl;
-    private GlobalProxies globalProxies;
-    private boolean considerSslPolicies;
-
-    /**
-     * @param manager The service manager to use.
-     * @param session The current session.
-     * @param requestUrl The request URL where the links should be rewritten.
-     * @param ssl If the current page is SSL-encrypted.
-     * @param considerSslPolicies If the SSL protection of policies should be considered when
-     *        resolving the corresponding proxy. Setting this to <code>true</code> leads to a
-     *        substantial performance overhead.
-     * @param relativeUrls If relative URLs should be created.
-     */
-    public OutgoingLinkRewriter(ServiceManager manager, Session session, String requestUrl,
-            boolean ssl, boolean considerSslPolicies, boolean relativeUrls) {
-
-        super(manager);
-        this.requestUrl = requestUrl;
-        this.relativeUrls = relativeUrls;
-        this.ssl = ssl;
-        this.considerSslPolicies = considerSslPolicies;
-
-        ServiceSelector serviceSelector = null;
-        AccessControllerResolver acResolver = null;
-
-        try {
-            this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
-
-            if (this.considerSslPolicies) {
-                serviceSelector = (ServiceSelector) this.manager
-                        .lookup(AccessControllerResolver.ROLE + "Selector");
-                acResolver = (AccessControllerResolver) serviceSelector
-                        .select(AccessControllerResolver.DEFAULT_RESOLVER);
-                AccessController accessController = acResolver.resolveAccessController(requestUrl);
-                if (accessController != null) {
-                    this.accreditableManager = accessController.getAccreditableManager();
-                    this.policyManager = accessController.getPolicyManager();
-                }
-            }
-
-            Publication[] pubs = this.factory.getPublications();
-            for (int i = 0; i < pubs.length; i++) {
-                this.publicationCache.put(pubs[i].getId(), pubs[i]);
-            }
-
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (serviceSelector != null) {
-                if (acResolver != null) {
-                    serviceSelector.release(acResolver);
-                }
-                this.manager.release(serviceSelector);
-            }
-        }
-    }
-
-    protected GlobalProxies getGlobalProxies() {
-        if (this.globalProxies == null) {
-            try {
-                this.globalProxies = (GlobalProxies) this.manager.lookup(GlobalProxies.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.globalProxies;
-    }
-
-    public boolean matches(String url) {
-        return url.startsWith("/");
-    }
-
-    private Map publicationCache = new HashMap();
-
-    protected Publication getPublication(String pubId) throws PublicationException {
-        return (Publication) this.publicationCache.get(pubId);
-    }
-
-    public String rewrite(final String url) {
-
-        String rewrittenUrl = "";
-
-        try {
-            String normalizedUrl = normalizeUrl(url);
-            if (this.relativeUrls) {
-                rewrittenUrl = getRelativeUrlTo(normalizedUrl);
-            } else {
-                boolean useSsl = this.ssl;
-                if (!useSsl && this.policyManager != null) {
-                    Policy policy = this.policyManager.getPolicy(this.accreditableManager,
-                            normalizedUrl);
-                    useSsl = policy.isSSLProtected();
-                }
-
-                URLInformation info = new URLInformation(normalizedUrl);
-                String pubId = info.getPublicationId();
-
-                Publication pub = null;
-                if (pubId != null) {
-                    pub = getPublication(pubId);
-                }
-
-                // link points to publication
-                if (pub != null) {
-                    rewrittenUrl = rewriteLink(normalizedUrl, pub, useSsl);
-                }
-
-                // link doesn't point to publication
-                else {
-                    Proxy proxy = getGlobalProxies().getProxy(ssl);
-                    rewrittenUrl = proxy.getUrl() + normalizedUrl;
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return rewrittenUrl;
-    }
-
-    protected String normalizeUrl(final String url) throws URISyntaxException {
-        String normalizedUrl;
-        if (url.indexOf("..") > -1) {
-            normalizedUrl = new URI(url).normalize().toString();
-        } else {
-            normalizedUrl = url;
-        }
-        return normalizedUrl;
-    }
-
-    private String requestUrl;
-
-    private Map pubId2areaList = new HashMap();
-
-    /**
-     * Checks if a publication has an area by using a cache for performance reasons.
-     * @param pub The publication.
-     * @param area The area name.
-     * @return if the publication contains the area.
-     */
-    protected boolean hasArea(Publication pub, String area) {
-        String pubId = pub.getId();
-        List areas = (List) this.pubId2areaList.get(pubId);
-        if (areas == null) {
-            areas = Arrays.asList(pub.getAreaNames());
-            this.pubId2areaList.put(pubId, areas);
-        }
-        return areas.contains(area);
-    }
-
-    /**
-     * @param linkUrl The original link URL.
-     * @param pub The publication to use for proxy resolving.
-     * @param ssl If the URL uses SSL.
-     * @return A link URL.
-     */
-    protected String rewriteLink(String linkUrl, Publication pub, boolean ssl) {
-        URLInformation info = new URLInformation(linkUrl);
-        String rewrittenUrl;
-        String areaName = info.getArea();
-
-        // valid area
-        if (areaName != null && hasArea(pub, areaName)) {
-            Proxy proxy = pub.getProxy(areaName, ssl);
-            rewrittenUrl = proxy.getUrl() + info.getDocumentUrl();
-        }
-
-        // invalid area
-        else {
-            Proxy proxy = getGlobalProxies().getProxy(ssl);
-            rewrittenUrl = proxy.getUrl() + linkUrl;
-        }
-        return rewrittenUrl;
-    }
-
-    protected String getRelativeUrlTo(String webappUrl) {
-        String relativeUrl;
-        if (this.requestUrl.equals(webappUrl)) {
-            relativeUrl = getLastStep(webappUrl);
-        }
-        else {
-            List sourceSteps = toList(this.requestUrl);
-            List targetSteps = toList(webappUrl);
-
-            while (!sourceSteps.isEmpty() && !targetSteps.isEmpty()
-                    && sourceSteps.get(0).equals(targetSteps.get(0))) {
-                sourceSteps.remove(0);
-                targetSteps.remove(0);
-            }
-
-            String prefix = "";
-            if (targetSteps.isEmpty()) {
-                prefix = generateUpDots(sourceSteps.size());
-            }
-            else if (sourceSteps.isEmpty()) {
-                prefix = getLastStep(this.requestUrl) + "/";
-            }
-            else if (sourceSteps.size() > 1) {
-                prefix = generateUpDots(sourceSteps.size() - 1) + "/";
-            }
-
-            String[] targetArray = (String[]) targetSteps.toArray(new String[targetSteps.size()]);
-            String targetPath = StringUtil.join(targetArray, "/");
-            relativeUrl = prefix + targetPath;
-        }
-        return relativeUrl;
-    }
-
-    protected String getLastStep(String url) {
-        return url.substring(url.lastIndexOf("/") + 1);
-    }
-
-    protected String generateUpDots(int length) {
-        String upDots;
-        String[] upDotsArray = new String[length];
-        Arrays.fill(upDotsArray, "..");
-        upDots = StringUtil.join(upDotsArray, "/");
-        return upDots;
-    }
-
-    protected List toList(String url) {
-        return new ArrayList(Arrays.asList(url.substring(1).split("/", -1)));
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ServletLinkRewriter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ServletLinkRewriter.java
deleted file mode 100644
index 80374af..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/ServletLinkRewriter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-
-/**
- * Abstract base class for servlet-oriented link rewriters.
- */
-public abstract class ServletLinkRewriter implements LinkRewriter {
-    
-    protected ServiceManager manager;
-
-    /**
-     * @param manager The service manager.
-     */
-    public ServletLinkRewriter(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    private String contextPath;
-    
-    protected String getContextPath() {
-        if (this.contextPath == null) {
-            ContextUtility context = null;
-            try {
-                context = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-                this.contextPath = context.getRequest().getContextPath();
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            }
-            finally {
-                if (context != null) {
-                    this.manager.release(context);
-                }
-            }
-        }
-        return this.contextPath;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/UrlToUuidRewriter.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/UrlToUuidRewriter.java
deleted file mode 100644
index 39a0b38..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/UrlToUuidRewriter.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-
-/**
- * <p>
- * Converts webapp URLs to UUID-based internal links. If the URL
- * doesn't refer to a document, the original URL is returned.
- * </p>
- * <p>
- * Objects of this class are not thread-safe.
- * </p>
- */
-public class UrlToUuidRewriter implements LinkRewriter {
-
-    private Area area;
-
-    /**
-     * @param area The area to operate in.
-     */
-    public UrlToUuidRewriter(Area area) {
-        this.area = area;
-    }
-
-    public boolean matches(String url) {
-        return url.startsWith("/" + this.area.getPublication().getId() + "/" + this.area.getName());
-    }
-
-    public String rewrite(String webappUrl) {
-
-        String anchor = null;
-        String url = null;
-
-        int anchorIndex = webappUrl.indexOf("#");
-        if (anchorIndex > -1) {
-            url = webappUrl.substring(0, anchorIndex);
-            anchor = webappUrl.substring(anchorIndex + 1);
-        } else {
-            url = webappUrl;
-        }
-
-        String[] linkUrlAndQuery = url.split("\\?");
-        String linkUrl = linkUrlAndQuery[0];
-        String queryString = null;
-        if (linkUrlAndQuery.length > 1) {
-            queryString = linkUrlAndQuery[1];
-        }
-
-        DocumentFactory factory = this.area.getPublication().getFactory();
-
-        String rewrittenUrl;
-
-        try {
-            if (factory.isDocument(linkUrl)) {
-                Document targetDocument = factory.getFromURL(linkUrl);
-                rewrittenUrl = getUuidBasedUri(targetDocument, anchor, queryString);
-            } else {
-                rewrittenUrl = webappUrl;
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return rewrittenUrl;
-    }
-
-    /**
-     * Rewrites a link.
-     * 
-     * @param targetDocument The target document.
-     * @param anchor The anchor (the string after the # character in the URL).
-     * @param queryString The query string without question mark.
-     * @return A UUID-based link URI.
-     */
-    protected String getUuidBasedUri(Document targetDocument, String anchor, String queryString) {
-
-        Link link = new Link();
-        link.setUuid(targetDocument.getUUID());
-
-        String linkUri = link.getUri();
-
-        if (anchor != null) {
-            linkUri += "#" + anchor;
-        }
-
-        if (queryString != null) {
-            linkUri += "?" + queryString;
-        }
-
-        return linkUri;
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/impl/GlobalProxiesImpl.java b/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/impl/GlobalProxiesImpl.java
deleted file mode 100644
index 68f34a2..0000000
--- a/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/linking/impl/GlobalProxiesImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-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.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.linking.GlobalProxies;
-import org.apache.lenya.cms.publication.Proxy;
-
-/**
- * GlobalProxy service implementation.
- * The class is implemented as a singleton.
- */
-public class GlobalProxiesImpl extends AbstractLogEnabled implements GlobalProxies, Serviceable,
-        ThreadSafe, Configurable {
-    
-    private Map ssl2proxy = new HashMap();
-    private ServiceManager manager;
-
-    public Proxy getProxy(boolean ssl) {
-        Object key = Boolean.valueOf(ssl);
-        Proxy proxy = (Proxy) this.ssl2proxy.get(key);
-        if (proxy == null) {
-            proxy = initializeProxy(key);
-        }
-        return proxy;
-    }
-
-    protected synchronized Proxy initializeProxy(Object key) {
-        Proxy proxy;
-        proxy = new Proxy();
-        ContextUtility context = null;
-        try {
-            context = (ContextUtility) manager.lookup(ContextUtility.ROLE);
-            proxy.setUrl(context.getRequest().getContextPath());
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        }
-        finally {
-            if (context != null) {
-                this.manager.release(context);
-            }
-        }
-        this.ssl2proxy.put(key, proxy);
-        return proxy;
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public void configure(Configuration config) throws ConfigurationException {
-        Configuration[] proxyConfigs = config.getChildren("proxy");
-        for (int p = 0; p < proxyConfigs.length; p++) {
-            boolean ssl = proxyConfigs[p].getAttributeAsBoolean("ssl");
-            String url = proxyConfigs[p].getAttribute("url");
-            Proxy proxy = new Proxy();
-            proxy.setUrl(url);
-            setProxy(ssl, proxy);
-        }
-    }
-
-    /**
-     * @param ssl If the proxy is responsible for SSL requests.
-     * @param proxy A proxy.
-     */
-    public void setProxy(boolean ssl, Proxy proxy) {
-        this.ssl2proxy.put(Boolean.valueOf(ssl), proxy);
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/cocoon/transformation/ProxyTransformerTest.java b/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/cocoon/transformation/ProxyTransformerTest.java
deleted file mode 100644
index a60c3a7..0000000
--- a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/cocoon/transformation/ProxyTransformerTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.serializers.XHTMLSerializer;
-import org.apache.cocoon.components.source.SourceResolverAdapter;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.linking.GlobalProxies;
-import org.apache.lenya.cms.linking.impl.GlobalProxiesImpl;
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.templating.Instantiator;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-public class ProxyTransformerTest extends AbstractAccessControlTest {
-
-    protected static final String PUBCONF_NAMESPACE = "http://apache.org/cocoon/lenya/publication/1.1";
-    
-    protected static final String NAMESPACE = XHTMLSerializer.XHTML1_NAMESPACE;
-    protected static final String ELEMENT = "a";
-    protected static final String ATTRIBUTE = "href";
-    
-    protected String getWebappUrl() {
-        return "/default/authoring/index.html";
-    }
-
-    public void testProxyTransformer() throws Exception {
-
-        ProxyTransformer transformer = new ProxyTransformer();
-        transformer.enableLogging(getLogger());
-        transformer.service(getManager());
-        
-        String pubId = "mock";
-        String area = "authoring";
-        String proxyUrl = "http://www.mock.org";
-
-        createMockPublication(pubId, area, proxyUrl);
-
-        Context context = this.context;
-        Map objectModel = (Map) context.get(ContextHelper.CONTEXT_OBJECT_MODEL);
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-            transformer.setup(new SourceResolverAdapter(resolver), objectModel, "",
-                    new Parameters());
-
-            String documentUrl = "/index.html";
-            String linkUrl = "/" + pubId + "/" + area + documentUrl;
-            String targetUrl = proxyUrl + documentUrl;
-            rewriteLink(transformer, linkUrl, targetUrl);
-            
-            String cssUrl = "/lenya/foo.css";
-            rewriteLink(transformer, cssUrl, cssUrl);
-
-            String moduleUrl = "/modules/foo/bar.html?x=y";
-            rewriteLink(transformer, moduleUrl, moduleUrl);
-            
-        } finally {
-            if (resolver != null) {
-                getManager().release(resolver);
-            }
-        }
-    }
-
-    protected void rewriteLink(ProxyTransformer transformer, String linkUrl, String targetUrl) throws Exception {
-        AttributesImpl attrs = new AttributesImpl();
-        attrs.addAttribute("", ATTRIBUTE, ATTRIBUTE, "string", linkUrl);
-
-        AbstractLinkTransformer.AttributeConfiguration config = new AbstractLinkTransformer.AttributeConfiguration(
-                NAMESPACE, ELEMENT, ATTRIBUTE);
-
-        transformer.handleLink(linkUrl, config, attrs);
-
-        String rewrittenUrl = attrs.getValue(ATTRIBUTE);
-        assertEquals(rewrittenUrl, targetUrl);
-    }
-
-    protected void createMockPublication(String pubId, String area, String proxyUrl)
-            throws PublicationException, ServiceException, Exception {
-        if (!existsPublication(pubId)) {
-
-            Publication defaultPub = getPublication("default");
-            Instantiator instantiator = null;
-            ServiceSelector selector = null;
-            try {
-                selector = (ServiceSelector) getManager().lookup(Instantiator.ROLE + "Selector");
-                instantiator = (Instantiator) selector.select(defaultPub.getInstantiatorHint());
-                instantiator.instantiate(defaultPub, pubId, "Mock");
-                configureProxy(area, proxyUrl);
-            } finally {
-                if (selector != null) {
-                    if (instantiator != null) {
-                        selector.release(instantiator);
-                    }
-                    getManager().release(selector);
-                }
-            }
-        }
-    }
-
-    protected void configureProxy(String area, String proxyUrl)
-            throws ServiceException, SourceNotFoundException, ParserConfigurationException,
-            SAXException, IOException, TransformerConfigurationException, TransformerException,
-            MalformedURLException {
-        String configUri = "context://lenya/pubs/mock/config/publication.xml";
-        Document dom = SourceUtil.readDOM(configUri, getManager());
-        NamespaceHelper helper = new NamespaceHelper(PUBCONF_NAMESPACE, "", dom);
-
-        Element proxies = helper.getFirstChild(dom.getDocumentElement(), "proxies");
-        if (proxies == null) {
-            proxies = helper.createElement("proxies");
-            dom.getDocumentElement().appendChild(proxies);
-        }
-
-        addProxyElement(helper, proxies, area, proxyUrl, false);
-        addProxyElement(helper, proxies, area, proxyUrl, true);
-
-        SourceUtil.writeDOM(dom, configUri, getManager());
-    }
-
-    protected void addProxyElement(NamespaceHelper helper, Element proxies, String area,
-            String proxyUrl, boolean ssl) {
-        Element proxyElement = helper.createElement("proxy");
-        proxyElement.setAttribute("ssl", Boolean.toString(ssl));
-        proxyElement.setAttribute("area", area);
-        proxyElement.setAttribute("url", proxyUrl);
-        proxies.appendChild(proxyElement);
-    }
-
-    protected boolean existsPublication(String pubId) {
-        Publication[] pubs = getFactory().getPublications();
-        List pubIds = new ArrayList();
-        for (int i = 0; i < pubs.length; i++) {
-            pubIds.add(pubs[i].getId());
-        }
-        return pubIds.contains(pubId);
-    }
-}
diff --git a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/LinkTest.java b/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/LinkTest.java
deleted file mode 100644
index f87833a..0000000
--- a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/LinkTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import java.util.Arrays;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Test for link functionality.
- */
-public class LinkTest extends AbstractAccessControlTest {
-    
-    /**
-     * Link test.
-     * @throws Exception
-     */
-    public void testLinks() throws Exception {
-        
-        Publication pub = getPublication("test");
-        Area area = pub.getArea("authoring");
-        SiteStructure site = area.getSite();
-        
-        Document source = site.getNode("/index").getLink("en").getDocument();
-        Document target = site.getNode("/tutorial").getLink("en").getDocument();
-        
-        LinkManager linkManager = null;
-        LinkResolver resolver = null;
-        try {
-            linkManager = (LinkManager) getManager().lookup(LinkManager.ROLE);
-            resolver = (LinkResolver) getManager().lookup(LinkResolver.ROLE);
-            
-            Link[] links = linkManager.getLinksFrom(source);
-            
-            boolean matched = false;
-            for (int i = 0; i < links.length; i++) {
-                LinkTarget linkTarget = resolver.resolve(source, links[i].getUri());
-                if (linkTarget.exists() && linkTarget.getDocument().equals(target)) {
-                    matched = true;
-                }
-            }
-            
-            assertTrue(matched);
-            
-            Document[] references = linkManager.getReferencingDocuments(target);
-            assertTrue(Arrays.asList(references).contains(source));
-        }
-        finally {
-            if (linkManager != null) {
-                getManager().release(linkManager);
-            }
-            if (resolver != null) {
-                getManager().release(resolver);
-            }
-        }
-        
-    }
-
-}
diff --git a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java b/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java
deleted file mode 100644
index 073b5e5..0000000
--- a/trunk/src/modules-core/linking/java/test/org/apache/lenya/cms/linking/OutgoingLinkRewriterTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.linking;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.repository.Session;
-
-public class OutgoingLinkRewriterTest extends AbstractAccessControlTest {
-
-    public void testRelativeUrls() throws Exception {
-        Session session = login("lenya");
-        String url = "/aaa/bbb/ccc";
-        OutgoingLinkRewriter rewriter = new OutgoingLinkRewriter(getManager(), session, url, false, false, true);
-        
-        assertEquals(rewriter.rewrite("/aaa/bbb/foo"), "foo");
-        assertEquals(rewriter.rewrite("/aaa/bbb"), "..");
-        assertEquals(rewriter.rewrite("/aaa/bbb/ccc/ddd"), "ccc/ddd");
-        assertEquals(rewriter.rewrite("/aaa/foo"), "../foo");
-        assertEquals(rewriter.rewrite("/aaa/foo/bar"), "../foo/bar");
-        assertEquals(rewriter.rewrite("/foo/bar"), "../../foo/bar");
-        assertEquals(rewriter.rewrite("/aaa/foo/bar/baz"), "../foo/bar/baz");
-    }
-    
-}
diff --git a/trunk/src/modules-core/observation/config/cocoon-xconf/observation-registry.xconf b/trunk/src/modules-core/observation/config/cocoon-xconf/observation-registry.xconf
deleted file mode 100644
index ce8e9d3..0000000
--- a/trunk/src/modules-core/observation/config/cocoon-xconf/observation-registry.xconf
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.observation.ObservationRegistry']">

-    <component logger="lenya.observation.registry"

-      class="org.apache.lenya.cms.observation.ObservationManager"

-      role="org.apache.lenya.cms.observation.ObservationRegistry"/>

-  </xconf>

diff --git a/trunk/src/modules-core/observation/config/module.xml b/trunk/src/modules-core/observation/config/module.xml
deleted file mode 100644
index fd88e5f..0000000
--- a/trunk/src/modules-core/observation/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.observation</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Observation implementation</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Observation implementation</description>
-</module>
diff --git a/trunk/src/modules-core/observation/java/src/org/apache/lenya/cms/observation/ObservationManager.java b/trunk/src/modules-core/observation/java/src/org/apache/lenya/cms/observation/ObservationManager.java
deleted file mode 100644
index cfeb902..0000000
--- a/trunk/src/modules-core/observation/java/src/org/apache/lenya/cms/observation/ObservationManager.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentIdentifier;
-import org.apache.lenya.util.Assert;
-
-/**
- * Observation manager. Works as an observation registry and sends the notifications.
- */
-public class ObservationManager extends AbstractLogEnabled implements ObservationRegistry,
-        ThreadSafe {
-
-    private Map identifier2listeners = new HashMap();
-    private Set listeners = new HashSet();
-
-    public synchronized void registerListener(RepositoryListener listener, Document doc)
-            throws ObservationException {
-        Set listeners = getListeners(doc.getIdentifier());
-        if (listeners.contains(listener)) {
-            throw new ObservationException("The listener [" + listener
-                    + "] is already registered for the document [" + doc + "].");
-        }
-        listeners.add(listener);
-    }
-
-    protected Set getListeners(DocumentIdentifier doc) {
-        Set listeners = (Set) this.identifier2listeners.get(doc);
-        if (listeners == null) {
-            listeners = new HashSet();
-            this.identifier2listeners.put(doc, listeners);
-        }
-        return listeners;
-    }
-
-    public synchronized void registerListener(RepositoryListener listener)
-            throws ObservationException {
-        if (this.listeners.contains(listener)) {
-            throw new ObservationException("The listener [" + listener + "] is already registered.");
-        }
-        this.listeners.add(listener);
-    }
-
-    protected DocumentIdentifier getIdentifier(DocumentEvent event) {
-
-        Assert.notNull("event", event);
-        DocumentIdentifier id = new DocumentIdentifier(event.getPublicationId(), event.getArea(),
-                event.getUuid(), event.getLanguage());
-        return id;
-    }
-
-    protected Set getAllListeners(DocumentIdentifier doc) {
-        Set allListeners = new HashSet();
-        synchronized (this) {
-            allListeners.addAll(this.listeners);
-            allListeners.addAll(getListeners(doc));
-        }
-        return allListeners;
-    }
-
-    protected void notify(Set listeners, RepositoryEvent event) {
-            for (Iterator i = listeners.iterator(); i.hasNext();) {
-                RepositoryListener listener = (RepositoryListener) i.next();
-                listener.eventFired(event);
-            }
-    }
-
-    public void eventFired(RepositoryEvent event) {
-        Assert.notNull("event", event);
-        Set listeners;
-        if (event instanceof DocumentEvent) {
-            DocumentIdentifier id = getIdentifier((DocumentEvent) event);
-            listeners = getAllListeners(id);
-        } else {
-            listeners = this.listeners;
-        }
-        notify(listeners, event);
-    }
-
-}
diff --git a/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/ObservationTest.java b/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/ObservationTest.java
deleted file mode 100644
index 207e8f7..0000000
--- a/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/ObservationTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.observation;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-
-public class ObservationTest extends AbstractAccessControlTest {
-    
-    public void testObservation() throws Exception {
-
-        Publication publication = getPublication("test");
-        SiteStructure site = publication.getArea("authoring").getSite();
-        Document doc = site.getNode("/index").getLink("en").getDocument();
-        
-        TestListener docListener = new TestListener();
-        TestListener allListener = new TestListener();
-        
-        ObservationRegistry registry = null;
-        try {
-            registry = (ObservationRegistry) getManager().lookup(ObservationRegistry.ROLE);
-
-            // check if it works if only the allListener is registered
-            registry.registerListener(allListener);
-            testChanged(doc, allListener);
-            
-            registry.registerListener(docListener, doc);
-            Exception e = null;
-            try {
-                registry.registerListener(docListener, doc);
-            }
-            catch (ObservationException e1) {
-                e = e1;
-            }
-            assertNotNull(e);
-
-            testChanged(doc, docListener);
-            testChanged(doc, allListener);
-            
-            testMetaDataChanged(doc, docListener);
-            testMetaDataChanged(doc, allListener);
-            
-        }
-        finally {
-            if (registry != null) {
-                getManager().release(registry);
-            }
-        }
-        
-        
-    }
-
-    protected void testChanged(Document doc, TestListener listener) throws Exception {
-        listener.reset();
-        org.w3c.dom.Document oldXml = DocumentHelper.readDocument(doc.getInputStream());
-        NamespaceHelper xml = new NamespaceHelper("http://apache.org/lenya/test", "", "test");
-        xml.save(doc.getOutputStream());
-        DocumentHelper.writeDocument(oldXml, doc.getOutputStream());
-        
-        assertFalse(listener.wasChanged());
-        doc.getRepositoryNode().getSession().commit();
-        Thread.currentThread().sleep(100);
-        assertTrue(listener.wasChanged());
-    }
-
-    protected void testMetaDataChanged(Document doc, TestListener listener) throws Exception {
-        listener.reset();
-
-        String mimeType = doc.getMimeType();
-        doc.setMimeType("");
-        doc.setMimeType(mimeType);
-        
-        assertFalse(listener.wasChanged());
-        doc.getRepositoryNode().getSession().commit();
-        Thread.currentThread().sleep(100);
-        assertTrue(listener.wasChanged());
-    }
-
-    protected void testRemoved(Document doc, TestListener listener) throws Exception {
-        listener.reset();
-
-        DocumentManager docManager = null;
-        try {
-            docManager = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            Document target = doc.getFactory().get(doc.getPublication(), doc.getArea(), "/testTarget", doc.getLanguage());
-            docManager.move(doc, target.getLocator());
-
-            assertFalse(listener.wasRemoved());
-            doc.getRepositoryNode().getSession().commit();
-            Thread.currentThread().sleep(100);
-            assertTrue(listener.wasRemoved());
-        
-            docManager.move(target, doc.getLocator());
-            assertFalse(listener.wasChanged());
-            doc.getRepositoryNode().getSession().commit();
-            Thread.currentThread().sleep(100);
-            assertTrue(listener.wasChanged());
-        }
-        finally {
-            if (docManager != null) {
-                getManager().release(docManager);
-            }
-        }
-        
-    }
-
-}
diff --git a/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/TestListener.java b/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/TestListener.java
deleted file mode 100644
index f9dd8de..0000000
--- a/trunk/src/modules-core/observation/java/test/org/apache/lenya/cms/observation/TestListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 
- */
-package org.apache.lenya.cms.observation;
-
-public class TestListener implements RepositoryListener {
-    
-    private boolean changed = false;
-    private boolean removed = false;
-
-    public void eventFired(RepositoryEvent repoEvent) {
-        if (!(repoEvent instanceof DocumentEvent)) {
-            return;
-        }
-        DocumentEvent event = (DocumentEvent) repoEvent;
-        if (event.getDescriptor().equals(DocumentEvent.CHANGED)) {
-            this.changed = true;
-        }
-        else if (event.getDescriptor().equals(DocumentEvent.REMOVED)) {
-            this.removed = true;
-        }
-    }
-    
-    public boolean wasChanged() {
-        return this.changed;
-    }
-    
-    public boolean wasRemoved() {
-        return this.removed;
-    }
-    
-    public void reset() {
-        this.changed = false;
-        this.removed = false;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/properties/config/cocoon-xconf/properties-input-module.xconf b/trunk/src/modules-core/properties/config/cocoon-xconf/properties-input-module.xconf
deleted file mode 100644
index a35c3ee..0000000
--- a/trunk/src/modules-core/properties/config/cocoon-xconf/properties-input-module.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'properties']">
-    <component-instance logger="core.modules.input.properties" name="properties"
-      class="org.apache.lenya.cms.cocoon.components.modules.input.PropertiesModule"/>
-  </xconf>
diff --git a/trunk/src/modules-core/properties/config/module.xml b/trunk/src/modules-core/properties/config/module.xml
deleted file mode 100644
index 3643042..0000000
--- a/trunk/src/modules-core/properties/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.properties</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Property system implementation</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Property system implementation</description>
-</module>
diff --git a/trunk/src/modules-core/properties/java/lib/org.apache.forrest.plugin.output.inputModule-r431162.jar b/trunk/src/modules-core/properties/java/lib/org.apache.forrest.plugin.output.inputModule-r431162.jar
deleted file mode 100644
index a1fe65f..0000000
--- a/trunk/src/modules-core/properties/java/lib/org.apache.forrest.plugin.output.inputModule-r431162.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules-core/properties/java/src/org/apache/lenya/cms/cocoon/components/modules/input/PropertiesModule.java b/trunk/src/modules-core/properties/java/src/org/apache/lenya/cms/cocoon/components/modules/input/PropertiesModule.java
deleted file mode 100644
index c0e7331..0000000
--- a/trunk/src/modules-core/properties/java/src/org/apache/lenya/cms/cocoon/components/modules/input/PropertiesModule.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.avalon.framework.activity.Initializable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.modules.input.DefaultsModule;
-import org.apache.cocoon.components.modules.input.InputModule;
-import org.apache.commons.lang.SystemUtils;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.forrest.conf.AntProperties;
-import org.apache.lenya.cms.publication.Publication;	
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.module.ModuleManager;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-/**
- * Input module for accessing the base properties used in Lenya. The main values
- * are the locations of the <b>source </b> directories and of the <b>Lenya </b>
- * directories.
- */
-public class PropertiesModule extends DefaultsModule implements InputModule,
-        Initializable, ThreadSafe, Serviceable {
-    
-    private HashSet pubInit;
-    
-    private AntProperties filteringProperties;
-
-    private SourceResolver m_resolver;
-
-    private ModuleManager moduleManager;
-    
-    private ServiceManager serviceManager;
-
-    private final static String lenyaHome = "context:/";
-
-    private final static String DEFAULT_HOME_PROP = "lenya.home";
-
-    private final static String PROPERTY_NAME = "lenya.properties.xml";
-
-    private final static String PROPERTY_NAME_LOCAL = "local." + PROPERTY_NAME;
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        String attributeValue;
-
-        loadPublicationPropertiesIfNotDone(objectModel);
-        attributeValue = filteringProperties.getProperty(name);
-        if (attributeValue == null) {
-            String error = "Unable to get attribute value for "
-                + name
-                + ".\n"
-                + "Please make sure you defined "
-                + name
-                + " in lenya.properties.xml either in $LENYA_HOME, $PUB_HOME or "
-                + "in the module that is requesting this property.\n"
-                + "If you see this message, most of the time you spotted a module bug "
-                + "(forget to define the default property). Please report it to "
-                + "our mailing list.";           
-            throw new ConfigurationException(error);
-        }
-
-        if (debugging()) {
-            debug(" - Requested:" + name);
-            debug(" - Given:" + attributeValue);
-        }
-
-        return attributeValue;
-    }
-
-    public Object[] getAttributeValues(String name, Configuration modeConf,
-            Map objectModel) throws ConfigurationException {
-        loadPublicationPropertiesIfNotDone(objectModel);
-        Object[] attributeValues = super.getAttributeValues(name, modeConf,
-                objectModel);
-        for (int i = 0; i < attributeValues.length; i++) {
-            attributeValues[i] = filteringProperties.filter(attributeValues[i]
-                    .toString());
-        }
-
-        return attributeValues;
-    }
-
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        loadPublicationPropertiesIfNotDone(objectModel);
-        SortedSet matchset = new TreeSet();
-        Enumeration enumeration = filteringProperties.keys();
-        while (enumeration.hasMoreElements()) {
-            String key = (String) enumeration.nextElement();
-            matchset.add(key);
-        }
-        Iterator iterator = super.getAttributeNames(modeConf, objectModel);
-        while (iterator.hasNext())
-            matchset.add(iterator.next());
-        return matchset.iterator();
-    }
-
-    public void initialize() throws Exception {
-
-        pubInit = new HashSet();
-        
-        // add all homes important to Lenya to the properties
-        setHomes();
-
-        loadSystemProperties(filteringProperties);
-
-        // NOTE: the first values set get precedence, as in AntProperties
-        // 
-        // Order of precedence:        
-        // 1. Publication (lazy loaded in loadPublicationPropertiesIfNotDone())
-        // 2. Lenya local
-        // 3. Modules (all modules, not only the ones referenced in the publication)
-        // 4. Lenya
-        //
-        String lenyaPropertiesStringURI = "";
-
-        try {
-            // get the values from local.lenya.properties.xml
-            lenyaPropertiesStringURI = lenyaHome + SystemUtils.FILE_SEPARATOR
-                    + PROPERTY_NAME_LOCAL;
-            filteringProperties = loadXMLPropertiesFromURI(filteringProperties,
-                    lenyaPropertiesStringURI, false);
-
-            // get the values from all modules
-            String[] module2src = moduleManager.getModuleIds();
-            for (int i = 0; i < module2src.length; i++) {
-                String id = module2src[i];
-                Object value = moduleManager.getBaseURI(id);
-                if (value != null) {
-                    lenyaPropertiesStringURI = value + SystemUtils.FILE_SEPARATOR
-                            + PROPERTY_NAME;
-                    filteringProperties = loadXMLPropertiesFromURI(
-                            filteringProperties, lenyaPropertiesStringURI, false);
-                }
-            }
-            // get the values from lenya.properties.xml this are the default
-            // lenya values
-            lenyaPropertiesStringURI = lenyaHome + SystemUtils.FILE_SEPARATOR
-                    + PROPERTY_NAME;
-            filteringProperties = loadXMLPropertiesFromURI(filteringProperties,
-                    lenyaPropertiesStringURI, false);
-        } finally {
-            if (debugging())
-                debug("Loaded project lenya.properties.xml:" + filteringProperties);
-        }
-
-    }
-
-    /**
-     * Sets all Lenya related home locations such as - LenyaHome - projectHome -
-     * contextHome
-     * 
-     * @throws Exception
-     */
-    private void setHomes() throws Exception {
-
-        filteringProperties = new AntProperties();
-        filteringProperties.setProperty(DEFAULT_HOME_PROP, lenyaHome);
-    }
-
-    /**
-     * Override any properties for which a system property exists
-     */
-    private void loadSystemProperties(AntProperties props) {
-        for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
-            String propName = (String) e.nextElement();
-            String systemPropValue = System.getProperty(propName);
-            if (systemPropValue != null) {
-                overwriteProperty(props, propName, systemPropValue);
-            }
-        }
-    }
-
-    private void overwriteProperty(AntProperties props, String propName, String propValue) {
-        //
-        // AntProperties.setProperty doesn't let you override, so we
-        // have to remove the property then add it again
-        props.remove(propName);
-        props.setProperty(propName, propValue);
-    }
-
-    /**
-     * @param precedingProperties
-     * @param propertiesStringURI
-     * @param overwrite
-     * @throws IOException
-     * @throws MalformedURLException
-     * @throws ParserConfigurationException
-     * @throws SAXException
-     */
-    private AntProperties loadXMLPropertiesFromURI(AntProperties precedingProperties, 
-            String propertiesStringURI, boolean overwrite)
-            throws MalformedURLException, IOException,
-            ParserConfigurationException, SAXException {
-
-        Source source = null;
-        try {
-
-            source = m_resolver.resolveURI(propertiesStringURI);
-
-            if (source.exists()) {
-
-                DocumentBuilderFactory factory = DocumentBuilderFactory
-                        .newInstance();
-                DocumentBuilder builder = factory.newDocumentBuilder();
-                Document document = builder.parse(source.getURI());
-
-                NodeList nl = document.getElementsByTagName("property");
-                if (nl != null && nl.getLength() > 0) {
-                    for (int i = 0; i < nl.getLength(); i++) {
-                        Element el = (Element) nl.item(i);
-                        if (overwrite == true) {
-                            overwriteProperty(filteringProperties, el.getAttribute("name"), 
-                                              el.getAttribute("value"));
-                        } else {
-                            filteringProperties.setProperty(el.getAttribute("name"), 
-                                                            el.getAttribute("value"));
-                        }
-                    }
-                }
-
-                if (debugging())
-                    debug("Loaded:" + propertiesStringURI
-                            + filteringProperties.toString());
-
-            }
-
-        } finally {
-            if (source != null) {
-                m_resolver.release(source);
-            }
-        }
-
-        return filteringProperties;
-    }
-
-    /**
-     * Get the properties from the requested publication
-     */
-    private void loadPublicationPropertiesIfNotDone(Map objectModel) 
-            throws ConfigurationException {
-        Publication pub;
-        String pubId;
-
-        try {
-            pub = PublicationUtil.getPublication(serviceManager, objectModel);
-        } catch (Exception e) {
-            throw new ConfigurationException(e.getMessage());
-        }
-        pubId = pub.getId();
-        if (pubInit.contains(pubId)) {
-            return;
-        }
-        try {
-            filteringProperties = loadXMLPropertiesFromURI(filteringProperties,
-                                  PROPERTY_NAME, true);
-        } catch (IOException e) {       
-          getLogger().warn("Could not load properties from pub \""+pubId+"\".\n"+e);
-        } catch (Exception e) {
-            throw new ConfigurationException(e.getMessage());
-        }
-        pubInit.add(pubId);
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {        
-        this.serviceManager = manager;
-        m_resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-        moduleManager = (ModuleManager) manager.lookup(ModuleManager.ROLE);
-    }
-
-    /**
-     * Rocked science
-     */
-    private final boolean debugging() {
-        return getLogger().isDebugEnabled();
-    }
-
-    /**
-     * Rocked science
-     * 
-     * @param debugString
-     */
-    private final void debug(String debugString) {
-        getLogger().debug(debugString);
-    }
-
-}
diff --git a/trunk/src/modules-core/properties/sitemap.xmap b/trunk/src/modules-core/properties/sitemap.xmap
deleted file mode 100644
index 57bd12e..0000000
--- a/trunk/src/modules-core/properties/sitemap.xmap
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  <map:components>
-    <map:generators default="file">
-      <map:generator name="module" 
-        src="org.apache.forrest.generation.ModuleGenerator"/>
-    </map:generators>
-  </map:components>
-  <map:pipelines>
-    <!-- ============================================================ -->
-    <!-- input-module properties file                                                    -->
-    <!-- ============================================================ -->
-    <map:pipeline>
-      <map:match pattern="input-module.*.properties.xml">
-        <map:generate type="module">
-          <map:parameter name="input-module" value="{1}"/>
-        </map:generate>
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-archive.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-archive.xconf
deleted file mode 100644
index 60bcc31..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-archive.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.archive']">

-    <component-instance name="sitemanagement.archive" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Archive">

-      <view uri="modules/sitemanagement/usecases/site/archive.jx"/>

-      <exit usecase="tab.overview" />

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeLabel.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeLabel.xconf
deleted file mode 100644
index 89eae5b..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeLabel.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.changeLabel']">

-    <component-instance name="sitemanagement.changeLabel" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeLabel">

-      <view uri="modules/sitemanagement/usecases/site/changeLabel.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeNodeID.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeNodeID.xconf
deleted file mode 100644
index 7a315a5..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeNodeID.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.changeNodeID']">

-    <component-instance name="sitemanagement.changeNodeID" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeNodeID">

-      <view uri="modules/sitemanagement/usecases/site/changeNodeID.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeVisibility.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeVisibility.xconf
deleted file mode 100644
index 4e7fb1c..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-changeVisibility.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.changeVisibility']">

-    <component-instance name="sitemanagement.changeVisibility" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.ChangeVisibility"/>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-copy.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-copy.xconf
deleted file mode 100644
index 6e2f6d2..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-copy.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.copy']">

-    <component-instance name="sitemanagement.copy" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Copy">

-      <view uri="modules/sitemanagement/usecases/site/copy.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-create.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-create.xconf
deleted file mode 100644
index 65424f0..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-create.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.create']">

-    <component-instance name="sitemanagement.create" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateDocument">

-      <view uri="modules/sitemanagement/usecases/site/create.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-createLanguage.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-createLanguage.xconf
deleted file mode 100644
index 30fa589..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-createLanguage.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.createLanguage']">

-    <component-instance name="sitemanagement.createLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateLanguage">

-      <view uri="modules/sitemanagement/usecases/site/createLanguage.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-cut.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-cut.xconf
deleted file mode 100644
index 6ece025..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-cut.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.cut']">

-    <component-instance name="sitemanagement.cut" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Cut">

-      <view uri="modules/sitemanagement/usecases/site/cut.jx"/>

-      <exit usecase="tab.overview" />  

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-delete.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-delete.xconf
deleted file mode 100644
index 4fe07fa..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-delete.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.delete']">

-    <component-instance name="sitemanagement.delete" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Delete">

-      <view uri="modules/sitemanagement/usecases/site/delete.jx"/>

-      <exit usecase="tab.overview" />

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-deleteLanguage.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-deleteLanguage.xconf
deleted file mode 100644
index 4e0c5d4..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-deleteLanguage.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.deleteLanguage']">

-    <component-instance name="sitemanagement.deleteLanguage" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.DeleteLanguage">

-      <view uri="modules/sitemanagement/usecases/site/deleteLanguage.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-forceCheckIn.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-forceCheckIn.xconf
deleted file mode 100644
index 2336f12..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-forceCheckIn.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.forceCheckIn']">

-  <component-instance name="sitemanagement.forceCheckIn" logger="lenya.site"
-    class="org.apache.lenya.cms.site.usecases.ForceCheckIn">

-    <view uri="modules/sitemanagement/usecases/site/forceCheckIn.jx"/>

-  </component-instance>

-</xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-paste.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-paste.xconf
deleted file mode 100644
index 81e6edf..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-paste.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.paste']">

-    <component-instance name="sitemanagement.paste" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Paste">

-      <view uri="modules/sitemanagement/usecases/site/paste.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-restore.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-restore.xconf
deleted file mode 100644
index 0d0decc..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-restore.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.restore']">

-    <component-instance name="sitemanagement.restore" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Restore">

-      <view uri="modules/sitemanagement/usecases/site/restore.jx"/>

-      <exit usecase="tab.overview" />

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf
deleted file mode 100644
index 1fc3016..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.rollback']">

-    <component-instance name="sitemanagement.rollback" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Rollback">
-      <parameter name="workflowEvent" value="edit"/>

-      <exit usecase="tab.revisions" />

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/tabs.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/tabs.xconf
deleted file mode 100644
index 2862e6d..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/tabs.xconf
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/gui-manager" unless="/cocoon/gui-manager/tab-group[@name = 'site']">

-    <tab-group name="site">

-      <tab name="overview" label="Overview" usecase="tab.overview"/>

-      <tab name="meta" label="Meta" usecase="tab.meta"/>

-      <tab name="assets" label="Assets" usecase="tab.assets"/>

-      <tab name="workflow" label="Workflow" usecase="tab.workflow"/>

-      <tab name="revisions" label="Revisions" usecase="tab.revisions"/>

-      <tab name="acAuthoring" label="AC Auth" usecase="tab.acAuthoring">

-        <parameter name="acArea" value="authoring"/>

-      </tab>

-      <tab name="acTrash" label="AC Trash" usecase="tab.acTrash">

-        <parameter name="acArea" value="trash"/>

-      </tab>

-      <tab name="acArchive" label="AC Archive" usecase="tab.acArchive">

-        <parameter name="acArea" value="archive"/>

-      </tab>

-      <tab name="acLive" label="AC Live" usecase="tab.acLive"/>

-      <tab name="scheduler" label="Scheduler" usecase="tab.scheduler"/>

-    </tab-group>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acArchive.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acArchive.xconf
deleted file mode 100644
index 65a43fb..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acArchive.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.acArchive']">

-    <component-instance name="tab.acArchive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">

-      <view uri="modules/sitemanagement/usecases/tab/acArchive.jx" menu="true">

-        <tab group="site" name="acArchive"/>

-      </view>

-      <parameter name="acArea" value="archive"/>

-      <exit usecase="tab.acArchive"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acAuthoring.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acAuthoring.xconf
deleted file mode 100644
index fe1afe8..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acAuthoring.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.acAuthoring']">

-    <component-instance name="tab.acAuthoring" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">

-      <view uri="modules/sitemanagement/usecases/tab/acAuthoring.jx" menu="true">

-        <tab group="site" name="acAuthoring"/>

-      </view>

-      <parameter name="acArea" value="authoring"/>

-      <exit usecase="tab.acAuthoring"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acLive.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acLive.xconf
deleted file mode 100644
index 784e8df..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acLive.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.acLive']">

-    <component-instance name="tab.acLive" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">

-      <view uri="modules/sitemanagement/usecases/tab/acLive.jx" menu="true">

-        <tab group="site" name="acLive"/>

-      </view>

-      <parameter name="acArea" value="live"/>

-      <exit usecase="tab.acLive"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acTrash.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acTrash.xconf
deleted file mode 100644
index 83ff95b..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-acTrash.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.acTrash']">

-    <component-instance name="tab.acTrash" logger="lenya.site" class="org.apache.lenya.cms.ac.usecases.AccessControl">

-      <view uri="modules/sitemanagement/usecases/tab/acTrash.jx" menu="true">

-        <tab group="site" name="acTrash"/>

-      </view>

-      <parameter name="acArea" value="trash"/>

-      <exit usecase="tab.acTrash"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-assets.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-assets.xconf
deleted file mode 100644
index 8e3d2ed..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-assets.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.assets']">

-    <component-instance name="tab.assets" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Assets">

-      <view uri="modules/sitemanagement/usecases/tab/assets.jx" menu="true">

-        <tab group="site" name="assets"/>

-      </view>

-      <exit usecase="tab.assets"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-meta.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-meta.xconf
deleted file mode 100644
index 46c2744..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-meta.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.meta']">

-    <component-instance name="tab.meta" logger="lenya.site" class="org.apache.lenya.cms.metadata.usecases.Metadata">

-      <view uri="modules/sitemanagement/usecases/tab/meta.jx" menu="true">

-        <tab group="site" name="meta"/>

-      </view>

-      <exit usecase="tab.meta" />

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-overview.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-overview.xconf
deleted file mode 100644
index 937bb54..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-overview.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.overview']">

-    <component-instance name="tab.overview" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Overview">

-      <view uri="modules/sitemanagement/usecases/tab/overview.jx" menu="true">

-        <tab group="site" name="overview"/>

-      </view>

-      <exit usecase="tab.overview"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-revisions.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-revisions.xconf
deleted file mode 100644
index b58cd99..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-revisions.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.revisions']">

-    <component-instance name="tab.revisions" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Revisions">

-      <view uri="modules/sitemanagement/usecases/tab/revisions.jx" menu="true">

-        <tab group="site" name="revisions"/>

-      </view>
-      <parameter name="workflowEvent" value="edit"/>

-      <exit usecase="tab.revisions"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-scheduler.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-scheduler.xconf
deleted file mode 100644
index 359079b..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-scheduler.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.workflow']">

-    <component-instance name="tab.scheduler" logger="lenya.site" class="org.apache.lenya.cms.usecase.scheduling.ManageJobs">

-      <view uri="modules/sitemanagement/usecases/tab/scheduler.jx" menu="true">

-        <tab group="site" name="scheduler"/>

-      </view>

-      <exit usecase="tab.scheduler"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-workflow.xconf b/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-workflow.xconf
deleted file mode 100644
index bf0cfc1..0000000
--- a/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/tab/usecase-tab-workflow.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tab.workflow']">

-    <component-instance name="tab.workflow" logger="lenya.site" class="org.apache.lenya.cms.workflow.usecases.History">

-      <view uri="modules/sitemanagement/usecases/tab/workflow.jx" menu="true">

-        <tab group="site" name="workflow"/>

-      </view>

-      <exit usecase="tab.workflow"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/sitemanagement/config/module.xml b/trunk/src/modules-core/sitemanagement/config/module.xml
deleted file mode 100644
index 9df48c9..0000000
--- a/trunk/src/modules-core/sitemanagement/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.sitemanagement</id>
-  <export package="org.apache.lenya.cms.site.usecases"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.workflow"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Site management</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Site management usecases</description>
-</module>
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
deleted file mode 100644
index 8c977ee..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.metadata.usecases;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lenya.cms.metadata.Element;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataRegistry;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.usecases.SiteUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-
-/**
- * Usecase to edit metadata for a resource.
- * 
- * @version $Id$
- */
-public class Metadata extends SiteUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        Node[] objects = new Node[0];
-        if(getSourceDocument() != null) {
-            objects = new Node[] { getSourceDocument().getRepositoryNode() };
-        }
-        return objects;
-    }
-    
-    public static class MetaDataWrapper {
-        
-        private String[] values;
-        private Element element;
-        
-        public MetaDataWrapper(Element element, String[] values) {
-            this.values = values;
-            this.element = element;
-        }
-        
-        public String[] getValues() {
-            return this.values;
-        }
-        
-        public Element getElement() {
-            return this.element;
-        }
-        
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        
-        if (getSourceDocument() == null) {
-            return;
-        }
-
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-
-            List numbers = new ArrayList();
-            Map num2namespace = new HashMap();
-            List keyList = new ArrayList();
-
-            String[] namespaces = registry.getNamespaceUris();
-
-            for (int nsIndex = 0; nsIndex < namespaces.length; nsIndex++) {
-                MetaData meta = getSourceDocument().getMetaData(namespaces[nsIndex]);
-                String[] keys = meta.getPossibleKeys();
-                for (int keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-                    String key = "ns" + nsIndex + "." + keys[keyIndex];
-                    String[] values = meta.getValues(keys[keyIndex]);
-                    Element element = meta.getElementSet().getElement(keys[keyIndex]);
-                    setParameter(key, new MetaDataWrapper(element, values));
-                    keyList.add(key);
-                }
-                numbers.add("" + nsIndex);
-                num2namespace.put("" + nsIndex, namespaces[nsIndex]);
-            }
-
-            setParameter("numbers", numbers);
-            setParameter("namespaces", num2namespace);
-
-            Collections.sort(keyList);
-            setParameter("keys", keyList);
-
-        } catch (Exception e) {
-            getLogger().error("Unable to load meta data.", e);
-            addErrorMessage("Unable to load meta data: " + e.getMessage());
-        } finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-
-    }
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        Document doc = getSourceDocument();
-        if (doc == null) {
-            return;
-        }
-        
-        if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
-                getLogger());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        // we need a reverse lookup to get the correct ns index:
-        Map num2namespace = (Map) getParameter("namespaces");
-        Map namespace2num = new HashMap();
-
-        Iterator iter = num2namespace.keySet().iterator();
-        while (iter.hasNext()) {
-            String key = (String) iter.next();
-            namespace2num.put(num2namespace.get(key), key);
-        }
-
-        Document document = getSourceDocument();
-        String[] namespaces = document.getMetaDataNamespaceUris();
-
-        for (int nsIndex = 0; nsIndex < namespaces.length; nsIndex++) {
-            MetaData meta = document.getMetaData(namespaces[nsIndex]);
-            String orgNsIndex = (String) namespace2num.get(namespaces[nsIndex]);
-
-            String[] keys = meta.getPossibleKeys();
-            for (int keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-                String key = keys[keyIndex];
-                Element element = meta.getElementSet().getElement(key);
-                if (element.isEditable()) {
-                    Object value = getParameter("ns" + orgNsIndex + "." + key);
-                    if (value != null && value instanceof String) {
-                        meta.setValue(key, (String) value);
-                    }
-                }
-            }
-        }
-
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), document, getEvent());
-    }
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Archive.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Archive.java
deleted file mode 100644
index f0c1247..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Archive.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Archive usecase handler.
- * 
- * @version $Id:$
- */
-public class Archive extends MoveSubsite {
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getSourceAreas()
-     */
-    protected String[] getSourceAreas() {
-        return new String[] { Publication.AUTHORING_AREA };
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getTargetArea()
-     */
-    protected String getTargetArea() {
-        return Publication.ARCHIVE_AREA;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getEvent()
-     */
-    protected String getEvent() {
-        return "archive";
-    }
-
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Assets.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Assets.java
deleted file mode 100644
index 89d09aa..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Assets.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * Usecase to add Assets to a resource.
- * 
- * @version $Id$
- */
-public class Assets extends SiteUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        if (getSourceDocument() != null) {
-            try {
-                Document[] resourceDocs = getResourceDocuments();
-                setParameter("resourceDocuments", resourceDocs);
-            } catch (final Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    protected Document[] getResourceDocuments() throws DocumentException, SiteException {
-        List list = new ArrayList();
-        Document[] docs = getSourceDocument().area().getDocuments();
-        SiteNode node = getSourceDocument().getLink().getNode();
-        for (int i = 0; i < docs.length; i++) {
-            if (docs[i].hasLink() && !docs[i].getLink().getNode().isTopLevel()
-                    && docs[i].getLink().getNode().getParent().getPath().equals(node.getPath())
-                    && docs[i].getResourceType().getName().equals("resource")) {
-                list.add(docs[i]);
-            }
-        }
-        return (Document[]) list.toArray(new Document[list.size()]);
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
deleted file mode 100644
index c5e08cb..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-
-/**
- * Change the label of a document.
- * 
- * @version $Id$
- */
-public class ChangeLabel extends DocumentUsecase {
-
-    protected static final String LABEL = "label";
-    protected static final String DOCUMENT_ID = "documentId";
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document doc = getSourceDocument();
-        if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc,
-                getLogger());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        List nodes = new ArrayList();
-        if(getSourceDocument() != null) {
-            SiteStructure structure = getSourceDocument().area().getSite();
-            nodes.add(structure.getRepositoryNode());
-        }    
-
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        Document document = getSourceDocument();
-        try {
-            if (document != null && document.exists()) {
-                setParameter(DOCUMENT_ID, document.getUUID());
-                setParameter(LABEL, document.getLink().getLabel());
-            }
-        } catch (final DocumentException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        String label = getParameterAsString(LABEL);
-        if (label.trim().equals("")) {
-            addErrorMessage("missing-navigation-title");
-        }
-    }
-
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Document document = getSourceDocument();
-        String label = getParameterAsString(LABEL).trim();
-        document.getLink().setLabel(label);
-
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), document, getEvent());
-
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java
deleted file mode 100644
index 3e20641..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentBuilder;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.NodeIterator;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.transaction.TransactionException;
-
-/**
- * Change the node ID of a document.
- * 
- * @version $Id$
- */
-public class ChangeNodeID extends DocumentUsecase {
-
-    protected static final String NODE_ID = "nodeId";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        Document document = getSourceDocument();
-        if (document != null) {
-            setParameter(NODE_ID, document.getName());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-
-        List nodes = new ArrayList();
-
-        try {
-            if(getSourceDocument() != null) {
-                Node siteNode = getSourceDocument().area().getSite().getRepositoryNode();
-                nodes.add(siteNode);
-
-                Document sourceDocument = getSourceDocument();
-  
-                NodeSet subsite = SiteUtil.getSubSite(this.manager, sourceDocument.getLink().getNode());
-                for (NodeIterator i = subsite.ascending(); i.hasNext();) {
-                    SiteNode node = i.next();
-                    String[] languages = node.getLanguages();
-                    for (int l = 0; l < languages.length; l++) {
-                        Document doc = node.getLink(languages[l]).getDocument();
-                        nodes.add(doc.getRepositoryNode());
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-    protected List getAllLanguageVersionNodes(Document doc) throws DocumentException,
-            TransactionException, DocumentBuildException {
-        String[] languages = doc.getLanguages();
-        List nodes = new ArrayList();
-        for (int i = 0; i < languages.length; i++) {
-            nodes.add(doc.getTranslation(languages[i]).getRepositoryNode());
-        }
-        return nodes;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        } else {
-            if (getSourceDocument().existsAreaVersion(Publication.LIVE_AREA)) {
-                addErrorMessage("This usecase cannot be invoked when the live version exists!");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        String nodeId = getParameterAsString(NODE_ID);
-        DocumentBuilder builder = getSourceDocument().getPublication().getDocumentBuilder();
-        if (!builder.isValidDocumentName(nodeId)) {
-            addErrorMessage("The document ID is not valid.");
-        } else {
-            DocumentLocator target = getTargetLocator();
-            Publication pub = getDocumentFactory().getPublication(target.getPublicationId());
-            SiteStructure site = pub.getArea(target.getArea()).getSite();
-            if (site.contains(target.getPath(), target.getLanguage())) {
-                addErrorMessage("The document does already exist.");
-            }
-        }
-    }
-
-    protected DocumentLocator getTargetLocator() throws DocumentBuildException, SiteException,
-            DocumentException {
-        String nodeId = getParameterAsString(NODE_ID);
-        Document doc = getSourceDocument();
-        DocumentLocator loc = DocumentLocator.getLocator(doc.getPublication().getId(), doc
-                .getArea(), doc.getPath(), doc.getLanguage());
-        DocumentLocator parent = loc.getParent();
-        return parent.getChild(nodeId);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Document targetDoc;
-        Document source = getSourceDocument();
-        DocumentLocator target = getTargetLocator();
-        DocumentManager documentManager = null;
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.moveAll(source.area(), source.getPath(), source.area(), target
-                    .getPath());
-            targetDoc = getDocumentFactory().get(target);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-
-        setTargetDocument(targetDoc);
-    }
-
-    /**
-     * Returns the resulting document when the node ID would be changed.
-     * @return A document.
-     */
-    protected String getNewDocumentId() {
-        String nodeId = getParameterAsString(NODE_ID);
-
-        String oldPath;
-        try {
-            oldPath = getSourceDocument().getPath();
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-        int lastSlashIndex = oldPath.lastIndexOf("/");
-        String strippedDocumentId = oldPath.substring(0, lastSlashIndex + 1);
-        String newDocumentId = strippedDocumentId + nodeId;
-
-        return newDocumentId;
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java
deleted file mode 100644
index b0454ce..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-
-/**
- * Switch the navigation visibility of a document.
- */
-public class ChangeVisibility extends DocumentUsecase {
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document doc = getSourceDocument();
-        if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-
-        String[] languages = doc.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            Document version = doc.getTranslation(languages[i]);
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), version,
-                    getLogger());
-        }
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        Document doc = getSourceDocument();
-        SiteNode node = doc.getLink().getNode();
-        node.setVisible(!node.isVisible());
-
-        String[] languages = doc.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            Document version = doc.getTranslation(languages[i]);
-            WorkflowUtil.invoke(this.manager, getSession(), getLogger(), version, getEvent());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        List nodes = new ArrayList();
-        if(getSourceDocument() != null) {
-            SiteStructure structure = getSourceDocument().area().getSite();
-            nodes.add(structure.getRepositoryNode());
-        }
-
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Clipboard.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Clipboard.java
deleted file mode 100644
index f774dcb..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Clipboard.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Clipboard for cut/copy/paste of documents. The clipping method is either {@link #METHOD_CUT} or
- * {@link #METHOD_COPY}.
- * 
- * @version $Id$
- */
-public class Clipboard {
-
-    private String publicationId;
-    private String area;
-    private String uuid;
-    private String language;
-    private int method;
-
-    /**
-     * The "cut" method.
-     */
-    public static final int METHOD_CUT = 0;
-    
-    /**
-     * The "copy" method.
-     */
-    public static final int METHOD_COPY = 1;
-
-    /**
-     * Ctor.
-     * @param document The document to put on the clipboard.
-     * @param _method The clipping method.
-     */
-    public Clipboard(Document document, int _method) {
-        this.publicationId = document.getPublication().getId();
-        this.area = document.getArea();
-        this.uuid = document.getUUID();
-        this.language = document.getLanguage();
-        this.method = _method;
-    }
-
-    /**
-     * Returns the document for the current identity map.
-     * @param identityMap The identity map.
-     * @param publication The publication.
-     * @return A document.
-     * @throws DocumentBuildException if the document could not be built.
-     */
-    public Document getDocument(DocumentFactory identityMap, Publication publication) throws DocumentBuildException {
-        Document document = identityMap.get(publication, this.area, this.uuid, this.language);
-        return document;
-    }
-
-    /**
-     * @return The ID of the publication the document belongs to.
-     */
-    public String getPublicationId() {
-        return this.publicationId;
-    }
-
-    /**
-     * Returns the method of this clipboard.
-     * @return An integer.
-     */
-    public int getMethod() {
-        return this.method;
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ClipboardHelper.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ClipboardHelper.java
deleted file mode 100644
index 512aa0e..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ClipboardHelper.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-
-/**
- * Helper class for clipboard handling.
- * 
- * @version $Id$
- */
-public class ClipboardHelper {
-
-    /**
-     * Returns the clipboard attachted to the session.
-     * @param context The context containing the session.
-     * @return A clipboard or <code>null</code> if no clipboard is attached to
-     *         the session.
-     */
-    public Clipboard getClipboard(Context context) {
-        Session session = getSession(context);
-        Clipboard clipboard = (Clipboard) session.getAttribute(getSessionAttributeName());
-        return clipboard;
-    }
-    
-    /**
-     * @return The name of the session attribute to hold the clipboard.
-     */
-    protected String getSessionAttributeName() {
-        return Clipboard.class.getName();
-    }
-
-    /**
-     * @param context The context.
-     * @return The session of the context.
-     */
-    protected Session getSession(Context context) {
-        Map objectModel = ContextHelper.getObjectModel(context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(true);
-        return session;
-    }
-
-    /**
-     * Saves the clipboard to the session.
-     * @param context The context.
-     * @param clipboard The clipboard.
-     */
-    public void saveClipboard(Context context, Clipboard clipboard) {
-        Session session = getSession(context);
-        session.setAttribute(getSessionAttributeName(), clipboard);
-    }
-    
-    /**
-     * Removes the clipboard from the session.
-     * @param context The context.
-     */
-    public void removeClipboard(Context context) {
-        Session session = getSession(context);
-        session.removeAttribute(getSessionAttributeName());
-    }
-    
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Copy.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Copy.java
deleted file mode 100644
index 3f9b528..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Copy.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-
-/**
- * Copy a document into the clipboard.
- * 
- * @version $Id$
- */
-public class Copy extends DocumentUsecase {
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-        if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("only-in-authoring-area");
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        Clipboard clipboard = new Clipboard(getSourceDocument(), Clipboard.METHOD_COPY);
-        ClipboardHelper helper = new ClipboardHelper();
-        helper.saveClipboard(getContext(), clipboard);
-    }
-    
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Create.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Create.java
deleted file mode 100644
index c722308..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Create.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * <p>
- * Abstract superclass for usecases to create a document.
- * </p>
- * <p>
- * You can pass the following parameters into the usecase:
- * </p>
- * <ul>
- * <li><strong>path</strong> - the path of the document to create (optional)</li>
- * </ul>
- * 
- * @version $Id$
- */
-public abstract class Create extends AbstractUsecase {
-
-    protected static final String RESOURCE_TYPES = "resourceTypes";
-    protected static final String LANGUAGE = "language";
-    protected static final String LANGUAGES = "languages";
-    protected static final String PATH = "path";
-    protected static final String NODE_NAME = "nodeName";
-    protected static final String VISIBLEINNAV = "visibleInNav";
-    protected static final String SAMPLE = "sample";
-    protected static final String SAMPLES = "samples";
-
-    /**
-     * Ctor.
-     */
-    public Create() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        if (!getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        try {
-            SiteStructure structure = getPublication().getArea(getArea()).getSite();
-            Node[] nodes = { structure.getRepositoryNode() };
-            return nodes;
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        String navigationTitle = getDublinCoreParameter(DublinCore.ELEMENT_TITLE);
-        if (navigationTitle.trim().equals("")) {
-            addErrorMessage("missing-navigation-title");
-        }
-
-        if (getInitialDocument() == null) {
-            String[] samples = (String[]) getParameter(SAMPLES);
-            String sample = getParameterAsString(SAMPLE);
-            if (samples != null && samples.length > 1 && (sample == null || sample.equals(""))) {
-                addErrorMessage("missing-page-layout");
-            }
-        }
-
-        if (isPathValid()) {
-            String path = getNewDocumentPath();
-            SiteStructure site = getPublication().getArea(getArea()).getSite();
-            if (!createVersion() && site.contains(path)) {
-                String[] params = { path };
-                addErrorMessage("path-already-exists", params);
-            }
-        }
-
-        String doctypeName = getDocumentTypeName();
-        if (getParameterAsString(SAMPLE) == null && doctypeName != null) {
-            initSampleParameters();
-        }
-    }
-
-    /**
-     * This method is used by {@link #doCheckExecutionConditions()} to check if
-     * the path entered by the user is valid. If not, checking the existence of
-     * the new document in the site structure is omitted because this operation
-     * could cause errors.
-     * @return A boolean value.
-     */
-    protected boolean isPathValid() {
-        return true;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        // create new document
-        DocumentManager documentManager = null;
-        ServiceSelector selector = null;
-        ResourceType resourceType = null;
-        try {
-
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-            String language = getParameterAsString(LANGUAGE);
-            Document initialDocument = getInitialDocument();
-
-            Document document;
-
-            String title = getDublinCoreParameter(DublinCore.ELEMENT_TITLE).trim();
-
-            if (createVersion()) {
-                document = documentManager.addVersion(initialDocument, getArea(), language, true);
-                document.getLink().setLabel(title);
-            } else {
-                if (initialDocument == null) {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-                    resourceType = (ResourceType) selector.select(getDocumentTypeName());
-                    String sampleName = getParameterAsString(SAMPLE, resourceType.getSampleNames()[0]);
-                    ResourceType.Sample sample = resourceType.getSample(sampleName);
-                    document = documentManager.add(getDocumentFactory(), resourceType, sample.getUri(),
-                            getPublication(), getArea(), getNewDocumentPath(), language,
-                            getSourceExtension(), title, getVisibleInNav());
-                    document.setMimeType(sample.getMimeType());
-                } else {
-                    document = documentManager.add(initialDocument, getArea(),
-                            getNewDocumentPath(), language, getSourceExtension(), title,
-                            getVisibleInNav());
-                }
-            }
-
-            setMetaData(document);
-
-            // the location to navigate to after completion of usecase
-            setDefaultTargetURL(document.getCanonicalWebappURL());
-
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-            if (selector != null) {
-                if (resourceType != null) {
-                    selector.release(resourceType);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    protected String getDublinCoreParameter(String name) {
-        Object param = getParameter(DUBLIN_CORE_PREFIX + name);
-        if (param != null && getParameter(DUBLIN_CORE_PREFIX + name).getClass().isArray()) {
-            String[] values = (String[]) getParameter(DUBLIN_CORE_PREFIX + name);
-            StringBuffer paramValue = new StringBuffer();
-            for (int i = 0; i < values.length; i++) {
-                String value = values[i];
-                if (i > 0)
-                    paramValue.append(',').append(value);
-                else
-                    paramValue.append(value);
-            }
-            return paramValue.toString();
-        }
-        return getParameterAsString(DUBLIN_CORE_PREFIX + name, null);
-    }
-
-    protected void setDublinCoreParameter(String name, String value) {
-        setParameter(DUBLIN_CORE_PREFIX + name, value);
-    }
-
-    protected abstract boolean createVersion();
-
-    /**
-     * @return the extension to use for the document source.
-     */
-    protected abstract String getSourceExtension();
-
-    /**
-     * @return the name of the document being created in the usecase
-     */
-    protected abstract String getNewDocumentName();
-
-    /**
-     * @return the id of the new document being created in the usecase
-     */
-    protected abstract String getNewDocumentPath();
-
-    /**
-     * If the document created in the usecase shall have initial contents copied
-     * from an existing document, construct that document in this method.
-     * 
-     * @return A document.
-     */
-    protected Document getInitialDocument() {
-        return null;
-    }
-
-    /**
-     * @return The type of the created document.
-     */
-    protected abstract String getDocumentTypeName();
-
-    protected static final String DUBLIN_CORE_PREFIX = "dublincore.";
-
-    /**
-     * Sets the meta data of the created document.
-     * 
-     * @param document The document.
-     * @throws MetaDataException if an error occurs.
-     */
-    protected void setMetaData(Document document) throws MetaDataException {
-
-        if (document == null)
-            throw new IllegalArgumentException("parameter document may not be null");
-
-        MetaData dcMetaData = document.getMetaData(DublinCore.DC_NAMESPACE);
-        String[] dcKeys = dcMetaData.getAvailableKeys();
-
-        for (int i = 0; i < dcKeys.length; i++) {
-            String param = getDublinCoreParameter(dcKeys[i]);
-            if (param != null) {
-                dcMetaData.setValue(dcKeys[i], param);
-            }
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Map objectModel = ContextHelper.getObjectModel(getContext());
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        User user = identity.getUser();
-        if (user != null) {
-            setDublinCoreParameter(DublinCore.ELEMENT_CREATOR, user.getId());
-        } else {
-            setDublinCoreParameter(DublinCore.ELEMENT_CREATOR, "");
-        }
-
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        setDublinCoreParameter(DublinCore.ELEMENT_DATE, format.format(new GregorianCalendar()
-                .getTime()));
-
-        String doctypeName = getDocumentTypeName();
-        if (doctypeName != null) {
-            initSampleParameters();
-            setParameter(RESOURCE_TYPES, Collections.EMPTY_LIST);
-        } else {
-            String[] resourceTypes = getPublication().getResourceTypeNames();
-            setParameter(RESOURCE_TYPES, Arrays.asList(resourceTypes));
-        }
-    }
-
-    protected void initSampleParameters() {
-        ServiceSelector selector = null;
-        ResourceType resourceType = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = (ResourceType) selector.select(getDocumentTypeName());
-            String[] samples = resourceType.getSampleNames();
-            if (samples.length == 0) {
-                addErrorMessage("The resource type [" + resourceType.getName()
-                        + "] doesn't provide any samples!");
-            } else {
-                setParameter(SAMPLES, samples);
-                String presetSample = getParameterAsString(SAMPLE);
-                if (presetSample == null) {
-                    setParameter(SAMPLE, samples[0]);
-                } else {
-                    List sampleList = Arrays.asList(samples);
-                    if (!sampleList.contains(presetSample)) {
-                        getLogger().warn(
-                                "Sample [" + presetSample + "] not defined, using default sample.");
-                        setParameter(SAMPLE, samples[0]);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (resourceType != null) {
-                    selector.release(resourceType);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    /**
-     * @return The source document or <code>null</code> if the usecase was not
-     *         invoked on a document.
-     */
-    protected Document getSourceDocument() {
-        Document document = null;
-        String url = getSourceURL();
-        try {
-            if (getDocumentFactory().isDocument(url)) {
-                document = getDocumentFactory().getFromURL(url);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return document;
-    }
-
-    /**
-     * @return The new document.
-     */
-    protected Document getNewDocument() {
-        try {
-            String path = getNewDocumentPath();
-            String language = getParameterAsString(LANGUAGE);
-            return getPublication().getArea(getArea()).getSite().getNode(path).getLink(language)
-                    .getDocument();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @return The area without the "info-" prefix.
-     */
-    public String getArea() {
-        URLInformation info = new URLInformation(getSourceURL());
-        return info.getArea();
-    }
-
-    /**
-     * Access to the current publication. Use this when the publication is not
-     * yet known in the usecase: e.g. when creating a global asset. When adding
-     * a resource or a child to a document, access the publication via that
-     * document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        try {
-            return PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
-                    getSourceURL());
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @return the visibleInNav Attribute of the document being created in the
-     *         usecase
-     */
-    protected boolean getVisibleInNav() {
-        if (getParameterAsString(VISIBLEINNAV).equals("false")) {
-            return false;
-        }
-        return true;
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateDocument.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateDocument.java
deleted file mode 100644
index 668373d..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateDocument.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Arrays;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuilder;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Usecase to create a document.
- * 
- * @version $Id$
- */
-public class CreateDocument extends Create {
-
-    protected static final String PARENT_PATH = "parentPath";
-
-    protected static final String DOCUMENT_TYPE = "doctype";
-
-    protected static final String RELATION = "relation";
-    protected static final String RELATIONS = "relations";
-    protected static final String RELATION_CHILD = "child";
-    protected static final String RELATION_BEFORE = "sibling before";
-    protected static final String RELATION_AFTER = "sibling after";
-    protected static final String PATH_PROVIDED = "pathProvided";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Document parent = getSourceDocument();
-        if (parent == null) {
-            setParameter(PARENT_PATH, "");
-        } else {
-            try {
-                setParameter(PARENT_PATH, parent.getPath());
-            } catch (DocumentException e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-        String[] languages = getPublication().getLanguages();
-        if (languages.length == 0) {
-            addErrorMessage("The publication doesn't contain any languages!");
-        }
-        setParameter(LANGUAGES, languages);
-
-        Document sourceDoc = getSourceDocument();
-        String[] childOnly = { RELATION_CHILD };
-        String[] childAndAfter = { RELATION_CHILD, RELATION_AFTER };
-        String[] relations = sourceDoc == null ? childOnly : childAndAfter;
-        
-        setParameter(RELATIONS, relations);
-        setParameter(RELATION, RELATION_CHILD);
-
-        String path = getParameterAsString(PATH);
-        boolean provided = path != null && !path.equals("");
-        setParameter(PATH_PROVIDED, Boolean.valueOf(provided));
-    }
-
-    /**
-     * Override this method to support other relations.
-     * @return The supported relations.
-     */
-    protected String[] getSupportedRelations() {
-        return new String[] { RELATION_CHILD, RELATION_AFTER };
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        String relation = getParameterAsString(RELATION);
-
-        if (!Arrays.asList(getSupportedRelations()).contains(relation)) {
-            addErrorMessage("The relation '" + relation + "' is not supported.");
-        }
-
-        Publication pub = getPublication();
-
-        DocumentBuilder builder = pub.getDocumentBuilder();
-        boolean provided = getParameterAsBoolean(PATH_PROVIDED, false);
-
-        if (provided) {
-            String newPath = getNewDocumentPath();
-            if (pub.getArea(getArea()).getSite().contains(newPath)) {
-                String[] params = { newPath };
-                addErrorMessage("path-already-exists", params);
-            }
-        } else {
-            String nodeName = getNodeName();
-            if (nodeName.equals("")) {
-                addErrorMessage("missing-node-name");
-            } else if (!builder.isValidDocumentName(nodeName)) {
-                addErrorMessage("node-name-special-characters");
-            }
-        }
-    }
-
-    protected String getNodeName() {
-        return getParameterAsString(NODE_NAME).trim();
-    }
-
-    protected boolean isPathValid() {
-        String nodeName = getNewDocumentName();
-        DocumentBuilder builder = getPublication().getDocumentBuilder();
-        return !nodeName.trim().equals("") && builder.isValidDocumentName(nodeName);
-    }
-
-    /**
-     * @see Create#getNewDocumentName()
-     */
-    protected String getNewDocumentName() {
-        String nodeName;
-        if (getParameterAsBoolean(PATH_PROVIDED, false)) {
-            final String path = getParameterAsString(PATH);
-            nodeName = path.substring(path.lastIndexOf("/") + 1);
-        } else {
-            nodeName = getNodeName();
-        }
-        return nodeName;
-    }
-
-    /**
-     * @return The relation between the source document and the created
-     *         document.
-     */
-    protected String getRelation() {
-        return getParameterAsString(RELATION);
-    }
-
-    /**
-     * @see Create#getNewDocumentPath()
-     */
-    protected String getNewDocumentPath() {
-        if (getParameterAsBoolean(PATH_PROVIDED, false)) {
-            return getParameterAsString(PATH);
-        } else {
-            String relation = getRelation();
-            Document sourceDoc = getSourceDocument();
-            if (sourceDoc == null) {
-                return "/" + getNewDocumentName();
-            } else {
-                DocumentLocator sourceLoc = getSourceDocument().getLocator();
-                if (relation.equals(RELATION_CHILD)) {
-                    return sourceLoc.getChild(getNewDocumentName()).getPath();
-                } else if (relation.equals(RELATION_BEFORE) || relation.equals(RELATION_AFTER)) {
-                    return sourceLoc.getParent().getChild(getNewDocumentName()).getPath();
-                } else {
-                    throw new IllegalStateException("unsupported relation " + relation);
-                }
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.Create#getDocumentTypeName()
-     */
-    protected String getDocumentTypeName() {
-        return getParameterAsString(DOCUMENT_TYPE);
-    }
-
-    protected String getSourceExtension() {
-        return "xml";
-    }
-
-    protected boolean createVersion() {
-        return false;
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateLanguage.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateLanguage.java
deleted file mode 100644
index 75fb2d7..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/CreateLanguage.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.site.SiteManager;
-
-/**
- * Usecase to create a new language version of a resource.
- * 
- * @version $Id$
- */
-public class CreateLanguage extends Create {
-
-    private String documentTypeName;
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        if (getSourceDocument() == null) {
-            addErrorMessage("This operation must be invoked on a document.");
-            return;
-        }
-
-        String area = getSourceDocument().getArea();
-        if (!area.equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This operation is only supported in the authoring area.");
-            return;
-        }
-
-        if (getNonExistingLanguages().isEmpty()) {
-            addErrorMessage("All language versions already exist.");
-        }
-    }
-
-    /**
-     * @return All languages supported by the publication for which this document does not yet have
-     *         a version
-     * @throws DocumentBuildException if an error occurs.
-     * @throws DocumentException if an error occurs.
-     */
-    protected List getNonExistingLanguages() throws DocumentBuildException, DocumentException {
-        Document source = getSourceDocument();
-        List nonExistingLanguages = new ArrayList();
-        String[] languages = source.getPublication().getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            if (!source.existsTranslation(languages[i])) {
-                nonExistingLanguages.add(languages[i]);
-            }
-        }
-        return nonExistingLanguages;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Document source = getSourceDocument();
-        if (source != null) {
-            try {
-                setParameter(PATH, source.getPath());
-                List nonExistingLanguages = getNonExistingLanguages();
-                setParameter(LANGUAGES, nonExistingLanguages
-                        .toArray(new String[nonExistingLanguages.size()]));
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    /**
-     * For new language version of a document, name is the same as that document's
-     * @see Create#getNewDocumentName()
-     */
-    protected String getNewDocumentName() {
-        return getSourceDocument().getName();
-    }
-
-    /**
-     * For new language version of a document, the path is the same as that document's
-     * @see Create#getNewDocumentPath()
-     */
-    protected String getNewDocumentPath() {
-        try {
-            return getSourceDocument().getPath();
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * New language version of a document: use that document's content
-     * @see Create#getInitialDocument()
-     */
-    protected Document getInitialDocument() {
-        return getSourceDocument();
-    }
-
-    /**
-     * @see Create#getDocumentTypeName()
-     */
-    protected String getDocumentTypeName() {
-        if (this.documentTypeName == null && getSourceDocument() != null) {
-            try {
-                ResourceType type = getSourceDocument().getResourceType();
-                this.documentTypeName = type.getName();
-
-                List nonExistingLanguages = getNonExistingLanguages();
-                setParameter(LANGUAGES, nonExistingLanguages
-                        .toArray(new String[nonExistingLanguages.size()]));
-
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.documentTypeName;
-    }
-
-    protected boolean getVisibleInNav() {
-        Document source = getSourceDocument();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(source.getPublication()
-                    .getSiteManagerHint());
-            return siteManager.isVisibleInNav(source);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                manager.release(selector);
-            }
-        }
-    }
-
-    protected String getSourceExtension() {
-        return getSourceDocument().getSourceExtension();
-    }
-
-    protected boolean createVersion() {
-        return true;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Cut.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Cut.java
deleted file mode 100644
index 99da15f..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Cut.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-
-/**
- * Cut a document into the clipboard.
- * 
- * @version $Id$
- */
-public class Cut extends DocumentUsecase {
-
-    protected static final String MESSAGE_ISLIVE = "cut-error-islive";
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document doc = getSourceDocument();
-        if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("only-in-authoring-area");
-        }
-        SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA).getSite();
-        if (liveSite.contains(doc.getPath())) {
-            addErrorMessage(MESSAGE_ISLIVE);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        Clipboard clipboard = new Clipboard(getSourceDocument(), Clipboard.METHOD_CUT);
-        ClipboardHelper helper = new ClipboardHelper();
-        helper.saveClipboard(getContext(), clipboard);
-    }
-    
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Delete.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Delete.java
deleted file mode 100644
index d7374be..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Delete.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Delete a document and all its descendants, including all language versions. The documents are
- * moved to the trash.
- * 
- * @version $Id$
- */
-public class Delete extends MoveSubsite {
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getSourceAreas()
-     */
-    protected String[] getSourceAreas() {
-        return new String[] { Publication.AUTHORING_AREA, Publication.ARCHIVE_AREA };
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getTargetArea()
-     */
-    protected String getTargetArea() {
-        return Publication.TRASH_AREA;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getEvent()
-     */
-    protected String getEvent() {
-        return "delete";
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/DeleteLanguage.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/DeleteLanguage.java
deleted file mode 100644
index 15baba7..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/DeleteLanguage.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Delete a language version.
- * 
- * @version $Id$
- */
-public class DeleteLanguage extends DocumentUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document doc = getSourceDocument();
-        
-        if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        } else if (doc.getLanguages().length == 1) {
-            addErrorMessage("The last language version cannot be removed.");
-        }
-        
-        if (doc.existsVersion(Publication.LIVE_AREA, doc.getLanguage())) {
-            addErrorMessage("The document can't be deleted if a live version exists.");
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        List nodes = new ArrayList();
-        if(getSourceDocument() != null) {
-            Node docNode = getSourceDocument().getRepositoryNode();
-            Node siteNode = getSourceDocument().area().getSite().getRepositoryNode();
-            nodes.add(docNode);
-            nodes.add(siteNode);
-        }
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Document document = getSourceDocument();
-        document.getLink().delete();
-        document.delete();
-
-        setTargetDocument(DocumentHelper.getExistingLanguageVersion(document));
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/EmptyTrash.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/EmptyTrash.java
deleted file mode 100644
index 31eec52..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/EmptyTrash.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Empty the trash.
- * 
- * @version $Id$
- */
-public class EmptyTrash extends AbstractUsecase {
-
-    protected static final String DOCUMENTS = "documents";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        try {
-            Document[] documents = getTrashDocuments();
-            setParameter(DOCUMENTS, Arrays.asList(documents));
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Lock the following objects:
-     * <ul>
-     * <li>all involved documents in the trash area</li>
-     * <li>the document trash site structure</li>
-     * </ul>
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        List nodes = new ArrayList();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-
-        try {
-            Publication publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                    getDocumentFactory(),
-                    getSourceURL());
-            DocumentFactory identityMap = getDocumentFactory();
-            Document[] docs = getTrashDocuments();
-            for (int i = 0; i < docs.length; i++) {
-                nodes.add(docs[i].getRepositoryNode());
-            }
-
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(identityMap,
-                    publication,
-                    Publication.TRASH_AREA);
-            nodes.add(structure.getRepositoryNode());
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-        return (org.apache.lenya.cms.repository.Node[]) nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        DocumentManager documentManager = null;
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            Document[] documents = getTrashDocuments();
-            DocumentSet set = new DocumentSet(documents);
-            documentManager.delete(set);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-    }
-
-    /**
-     * @return The documents in the trash area.
-     * @throws PublicationException if an error occurs.
-     * @throws SiteException if an error occurs.
-     */
-    protected Document[] getTrashDocuments() throws PublicationException, SiteException {
-        Publication publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                getDocumentFactory(),
-                getSourceURL());
-        DocumentFactory identityMap = getDocumentFactory();
-        Document[] documents;
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            documents = siteManager.getDocuments(identityMap, publication, Publication.TRASH_AREA);
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        return documents;
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ForceCheckIn.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ForceCheckIn.java
deleted file mode 100644
index ab3ed33..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ForceCheckIn.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-import java.util.WeakHashMap;
-
-import javax.servlet.http.HttpSession;
-
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.util.SessionListener;
-
-/**
- * Force a document to be checked in (override a checkout).
- */
-public class ForceCheckIn extends DocumentUsecase {
-
-    private static final String IDENTITY = Identity.class.getName();
-    private static final String HISTORY = "org.apache.lenya.cms.cocoon.acting.History";
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        Document doc = getSourceDocument();
-        if (doc == null) {
-            return;
-        }
-        
-        Node node = doc.getRepositoryNode();
-        if (!node.isCheckedOut()) {
-            String[] params = { DublinCoreHelper.getTitle(doc, true) };
-            addErrorMessage("not-checked-out", params);
-        }
-    }
-
-    protected void prepareView() throws Exception {
-        Node node = getSourceDocument().getRepositoryNode();
-        if (node.isCheckedOut()) {
-            String userId = node.getCheckoutUserId();
-            String[] params = { userId };
-            if (isLoggedIn(userId)) {
-                addInfoMessage("user-logged-in", params);
-            }
-            else {
-                addInfoMessage("user-not-logged-in", params);
-            }
-        }
-    }
-
-    protected boolean isLoggedIn(String userId) {
-        String pubId = getSourceDocument().getPublication().getId();
-        SessionListener sessions = new SessionListener();
-        WeakHashMap allSessions = sessions.getAllSessions();
-        
-        boolean loggedIn = false;
-        Iterator userit = allSessions.entrySet().iterator();
-        while (userit.hasNext()) {
-            Map.Entry entry = (Map.Entry) userit.next();
-            HttpSession nextsession = (HttpSession) entry.getValue();
-
-            Identity identity = (Identity) nextsession.getAttribute(IDENTITY);
-
-            if(identity == null) {
-                continue;
-            }
-
-            User user = identity.getUser();
-            Vector history = (Vector) nextsession.getAttribute(HISTORY);
-            String publicationID = getPublicationIDfromHistory(history);
-            if (publicationID.equals(pubId) && user != null && user.getId().equals(userId)) {
-                loggedIn = true;
-            }
-        }
-        return loggedIn;
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Document doc = getSourceDocument();
-        Node node = doc.getRepositoryNode();
-
-        node.forceCheckIn();
-    }
-
-    /**
-     * Extract the publicationID from the history information stored in the
-     * session
-     * 
-     * @param history The history stored in the session.. An entry looks like \/
-     *        <publication-id>/authoring/index.html
-     * @return A publication ID.
-     */
-    private String getPublicationIDfromHistory(Vector history) {
-        String firstElement = history.firstElement().toString();
-        String publicationID = firstElement.substring(1, firstElement.indexOf("/", 1));
-        return publicationID;
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Move.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Move.java
deleted file mode 100644
index caf073e..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Move.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.site.usecases.SiteUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Usecase to move a resource.
- * 
- * @version $Id$
- */
-public class Move extends SiteUsecase {
-
-    /**
-     * Ctor.
-     */
-    public Move() {
-        super();
-    }
-
-    /**
-     * Validates the request parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void validate() throws UsecaseException {
-        // do nothing
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        validate();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String,
-     *      java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
deleted file mode 100644
index 4475477..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Usecase to move a subsite to another area.
- * 
- * @version $Id:$
- */
-public abstract class MoveSubsite extends DocumentUsecase {
-
-    /**
-     * @return The possible source areas.
-     */
-    protected abstract String[] getSourceAreas();
-
-    /**
-     * @return The target area.
-     */
-    protected abstract String getTargetArea();
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        List sourceAreas = Arrays.asList(getSourceAreas());
-        if (!sourceAreas.contains(getSourceDocument().getArea())) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        } else {
-
-            Document document = getSourceDocument();
-
-            NodeSet subsite = SiteUtil.getSubSite(this.manager, document.getLink().getNode());
-            Document[] docs = subsite.getDocuments();
-            for (int i = 0; i < docs.length; i++) {
-                if (docs[i].existsAreaVersion(Publication.LIVE_AREA)) {
-                    Document liveVersion = docs[i].getAreaVersion(Publication.LIVE_AREA);
-                    addErrorMessage("delete-doc-live", new String[] { liveVersion.toString() });
-                }
-                UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), docs[i],
-                        getLogger());
-            }
-        }
-    }
-
-    /**
-     * @return The workflow event.
-     */
-    protected abstract String getEvent();
-
-    /**
-     * Lock all source documents and the site structure repository nodes because
-     * changes to the site structure would compromise the operation.
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        Set nodes = new HashSet();
-  
-        if(getSourceDocument() != null) {
-            try {
-
-                SiteStructure sourceSite = getSourceDocument().area().getSite();
-                SiteStructure targetSite = getSourceDocument().getPublication()
-                        .getArea(getTargetArea()).getSite();
-
-                nodes.add(sourceSite.getRepositoryNode());
-                nodes.add(targetSite.getRepositoryNode());
-
-                Document[] docs = SiteUtil.getSubSite(this.manager,
-                        getSourceDocument().getLink().getNode()).getDocuments();
-                for (int i = 0; i < docs.length; i++) {
-                    nodes.add(docs[i].getRepositoryNode());
-                }
-
-            } catch (PublicationException e) {
-                throw new UsecaseException(e);
-            }
-        }
- 
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        String targetAreaName = getTargetArea();
-        Document doc = getSourceDocument();
-        Document[] sources = SiteUtil.getSubSite(this.manager, doc.getLink().getNode())
-                .getDocuments();
-        Area targetArea = doc.getPublication().getArea(targetAreaName);
-
-        DocumentLocator targetLoc = doc.getLocator().getAreaVersion(targetAreaName);
-        targetLoc = SiteUtil.getAvailableLocator(this.manager, getDocumentFactory(), targetLoc);
-
-        for (int i = 0; i < sources.length; i++) {
-            WorkflowUtil.invoke(this.manager, getSession(), getLogger(), sources[i], getEvent(),
-                    true);
-            
-            if (this.getClass().getName().equals(Restore.class.getName())) {
-                Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
-                        getLogger(), sources[i]);
-                String state = workflowable.getLatestVersion().getState();
-                if (!state.equals("authoring")) {
-                    addErrorMessage("The state is [" + state + "] instead of [authoring]!");
-                }
-            }
-            
-        }
-
-        DocumentManager docManager = null;
-        try {
-            docManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            docManager.moveAll(doc.area(), doc.getPath(), targetArea, targetLoc.getPath());
-
-        } finally {
-            if (docManager != null) {
-                this.manager.release(docManager);
-            }
-        }
-
-        setTargetDocument(doc.getAreaVersion(targetAreaName));
-
-    }
-
-    public String getTargetURL(boolean success) {
-        if (getTargetArea().equals(Publication.AUTHORING_AREA)) {
-            return super.getTargetURL(success);
-        }
-
-        String url;
-        if (!success) {
-            url = getSourceURL();
-        } else {
-            try {
-                Document document = getTargetDocument(success);
-                SiteStructure site = document.getPublication().getArea(Publication.AUTHORING_AREA).getSite();
-                return getTargetUrl(site, document.getPath()) + getExitQueryString();
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return url + getExitQueryString();
-    }
-
-    protected static String getTargetUrl(SiteStructure site, String path) throws SiteException {
-        if (path.length() == 0) {
-            return "/" + site.getPublication().getId() + "/" + site.getArea() + "/";
-        } else if (site.contains(path)) {
-            SiteNode node = site.getNode(path);
-            if (node.getLanguages().length > 0) {
-                Link link;
-                String defaultLanguage = site.getPublication().getDefaultLanguage();
-                if (node.hasLink(defaultLanguage)) {
-                    link = node.getLink(defaultLanguage);
-                }
-                else {
-                    link = node.getLink(node.getLanguages()[0]);
-                }
-                return link.getDocument().getCanonicalWebappURL();
-            }
-            else {
-                return getTargetUrl(site, getParentPath(path));
-            }
-        } else {
-            return getTargetUrl(site, getParentPath(path));
-        }
-    }
-
-    protected static String getParentPath(String path) {
-        Assert.notNull("path", path);
-        Assert.isTrue("not empty", path.length() > 0);
-        return path.substring(0, path.lastIndexOf("/"));
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java
deleted file mode 100644
index 2adb81b..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.site.usecases.SiteUsecase;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowManager;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Usecase to display the overview tab in the site area for a document.
- * 
- * @version $Id$
- */
-public class Overview extends SiteUsecase {
-
-    protected static final String LASTMODIFIED = "lastmodified";
-    protected static final String LANGUAGES = "languages";
-    protected static final String STATE = "state";
-    protected static final String ISLIVE = "isLive";
-    protected static final String VISIBLE_IN_NAVIGATION = "visibleInNav";
-    protected static final String WORKFLOW_VARIABLE_ISLIVE = "is_live";
-
-    /**
-     * Ctor.
-     */
-    public Overview() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        WorkflowManager resolver = null;
-        try {
-            Document doc = getSourceDocument();
-            if (doc != null) {
-                // read parameters from Dublin Core meta-data
-                MetaData dc = doc.getMetaData(DublinCore.DC_NAMESPACE);
-                setParameter(DublinCore.ELEMENT_TITLE, dc.getFirstValue(DublinCore.ELEMENT_TITLE));
-                setParameter(DublinCore.ELEMENT_DESCRIPTION, dc
-                        .getFirstValue(DublinCore.ELEMENT_DESCRIPTION));
-
-                // read parameters from document attributes
-                setParameter(LANGUAGES, doc.getLanguages());
-                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
-                String lastModified = format
-                        .format(new Date(getSourceDocument().getLastModified()));
-                setParameter(LASTMODIFIED, lastModified);
-                boolean visible = doc.getLink().getNode().isVisible();
-                setParameter(VISIBLE_IN_NAVIGATION, Boolean.valueOf(visible));
-
-                Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager,
-                        getSession(), getLogger(), doc);
-                resolver = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
-                if (resolver.hasWorkflow(workflowable)) {
-                    Workflow workflow = resolver.getWorkflowSchema(workflowable);
-                    String[] variableNames = workflow.getVariableNames();
-                    Version latestVersion = workflowable.getLatestVersion();
-                    Boolean isLive = null;
-                    if (latestVersion != null) {
-                        setParameter(STATE, latestVersion.getState());
-                        if (Arrays.asList(variableNames).contains(WORKFLOW_VARIABLE_ISLIVE)) {
-                            isLive = Boolean.valueOf(latestVersion
-                                    .getValue(WORKFLOW_VARIABLE_ISLIVE));
-                        }
-                    } else {
-                        setParameter(STATE, workflow.getInitialState());
-                        if (Arrays.asList(variableNames).contains(WORKFLOW_VARIABLE_ISLIVE)) {
-                            isLive = Boolean.valueOf(workflow
-                                    .getInitialValue(WORKFLOW_VARIABLE_ISLIVE));
-                        }
-                    }
-                    setParameter(ISLIVE, isLive);
-                } else {
-                    setParameter(STATE, "");
-                }
-            }
-
-        } catch (final Exception e) {
-            addErrorMessage("Could not read a value. See log files for details.");
-            getLogger().error("Could not read value for Overview usecase. ", e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        // don't complain if document is null
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java
deleted file mode 100644
index c478743..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Paste a document from the clipboard.
- * 
- * @version $Id$
- */
-public class Paste extends AbstractUsecase {
-
-    protected static final String CLIPBOARD_LABEL = "clipboardLabel";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        if (hasErrors()) {
-            return;
-        }
-        
-        if (!getArea().getName().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("only-in-authoring-area");
-        }
-
-        Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
-        if (clipboard == null) {
-            addErrorMessage("clipboard-empty");
-        }
-        else {
-            Document doc = getSourceDocument();
-            if(doc != null) {
-                Document clippedDoc = clipboard.getDocument(getDocumentFactory(), doc.getPublication());
-                String uuid = clippedDoc.getUUID();
-                SiteNode node = doc.getLink().getNode();
-                if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
-                    if (willPasteInOwnSubtree(node, uuid)) {
-                        addErrorMessage("will-paste-in-own-subtree");
-                    }
-                }
-            }
-        }
-    }
-
-    protected boolean willPasteInOwnSubtree(SiteNode node, String uuid) throws SiteException {
-        String nodeUuid = node.getUuid();
-        if (nodeUuid.equals(uuid)) {
-            return true;
-        } else if (!node.isTopLevel()) {
-            return willPasteInOwnSubtree(node.getParent(), uuid);
-        } else {
-            return false;
-        }
-    }
-
-    protected Document getSourceDocument() {
-        Document doc = null;
-        try {
-            DocumentFactory factory = getDocumentFactory();
-            String sourceUrl = getParameterAsString(SOURCE_URL);
-            if (factory.isDocument(sourceUrl)) {
-                doc = factory.getFromURL(sourceUrl);
-            }
-        } catch (DocumentBuildException e) {
-            throw new RuntimeException(e);
-        }
-        return doc;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
-        if (clipboard != null) {
-            String label;
-            try {
-                Publication pub = getPublication();
-                label = clipboard.getDocument(getDocumentFactory(), pub).getLink().getLabel();
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            setParameter(CLIPBOARD_LABEL, label);
-        }
-    }
-
-    protected Publication getPublication() {
-        URLInformation info = new URLInformation(getSourceURL());
-        String pubId = info.getPublicationId();
-        try {
-            return getDocumentFactory().getPublication(pubId);
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        List nodes = new ArrayList();
-
-        try {
-
-            Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
-            if (clipboard != null) {
-                
-                Node siteNode = getArea().getSite().getRepositoryNode();
-                nodes.add(siteNode);
-
-                DocumentFactory map = getDocumentFactory();
-                Publication pub = getPublication();
-                Document clippedDocument = clipboard.getDocument(map, pub);
-    
-                NodeSet subsite = SiteUtil
-                        .getSubSite(this.manager, clippedDocument.getLink().getNode());
-                Document[] subsiteDocs = subsite.getDocuments();
-    
-                for (int i = 0; i < subsiteDocs.length; i++) {
-                    if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
-                        nodes.add(subsiteDocs[i].getRepositoryNode());
-                    }
-                }
-            }
-
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-
-        return (Node[]) nodes.toArray(new Node[nodes.size()]);
-    }
-
-    protected Area getArea() {
-        Publication pub = getPublication();
-        URLInformation info = new URLInformation(getSourceURL());
-        try {
-            return pub.getArea(info.getArea());
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        DocumentFactory identityMap = getDocumentFactory();
-        ClipboardHelper helper = new ClipboardHelper();
-
-        Clipboard clipboard = helper.getClipboard(getContext());
-        Publication pub = getPublication();
-        Document clippedDocument = clipboard.getDocument(identityMap, pub);
-
-        final String targetPath = getTargetPath();
-        final Area area = clippedDocument.area();
-        DocumentManager documentManager = null;
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-            if (clipboard.getMethod() == Clipboard.METHOD_COPY) {
-                documentManager.copyAll(area, clippedDocument.getPath(), area, targetPath);
-            } else if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
-                documentManager.moveAll(area, clippedDocument.getPath(), area, targetPath);
-            } else {
-                throw new RuntimeException("This clipboard method is not supported!");
-            }
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-
-        helper.removeClipboard(getContext());
-    }
-
-    protected String getTargetPath() throws SiteException, DocumentBuildException,
-            ServiceException, DocumentException {
-        DocumentFactory identityMap = getDocumentFactory();
-        Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
-        Publication pub = getPublication();
-        Document clippedDocument = clipboard.getDocument(identityMap, pub);
-
-        String targetArea = getArea().getName();
-        String language = clippedDocument.getLanguage();
-        String nodeId = clippedDocument.getName();
-
-        Document sourceDoc = getSourceDocument();
-        String basePath = sourceDoc != null ? sourceDoc.getPath() : "";
-
-        String potentialPath = basePath + "/" + nodeId;
-
-        DocumentLocator potentialLoc = DocumentLocator.getLocator(getPublication().getId(),
-                targetArea, potentialPath, language);
-        return SiteUtil.getAvailableLocator(this.manager, getDocumentFactory(), potentialLoc)
-                .getPath();
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Restore.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Restore.java
deleted file mode 100644
index 0df3f27..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Restore.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Restore usecase handler.
- * 
- * @version $Id:$
- */
-public class Restore extends MoveSubsite {
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getSourceAreas()
-     */
-    protected String[] getSourceAreas() {
-        return new String[] { Publication.TRASH_AREA, Publication.ARCHIVE_AREA };
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getTargetArea()
-     */
-    protected String getTargetArea() {
-        return Publication.AUTHORING_AREA;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getEvent()
-     */
-    protected String getEvent() {
-        return "restore";
-    }
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        String targetAreaName = getTargetArea(); 
-        Document doc = getSourceDocument();
-        if(doc == null) {
-            return;
-        }
-        // Check to see if parent node exists in target to prevent ghost nodes
-        Area targetArea = doc.getPublication().getArea(targetAreaName);
-        DocumentLocator targetLoc = doc.getLocator().getAreaVersion(targetAreaName);
-        targetLoc = SiteUtil.getAvailableLocator(this.manager, getDocumentFactory(), targetLoc);
-        String targetPath = targetLoc.getPath();
-        targetPath = targetPath.substring(0,targetPath.lastIndexOf('/'));
-        if(!targetArea.getSite().contains(targetPath)) {
-            addErrorMessage("The authoring path [" + targetPath + "] does not exist.");
-        }
-    }
-  
-    protected void doCheckPostconditions() throws Exception {
-        super.doCheckPostconditions();
-
-        Document doc = getTargetDocument(true);
-        Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
-                getLogger(), doc);
-        String state = workflowable.getLatestVersion().getState();
-        if (!state.equals("authoring")) {
-            addErrorMessage("The state is [" + state + "] instead of [authoring]!");
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Revisions.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Revisions.java
deleted file mode 100644
index b59bb30..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Revisions.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.repository.History;
-import org.apache.lenya.cms.repository.Revision;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Usecase to display revisions of a resource.
- * 
- * @version $Id$
- */
-public class Revisions extends SiteUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters() TODO
-     *      filter out checkin entries
-     */
-    protected void initParameters() {
-        super.initParameters();
-        Document sourceDoc = getSourceDocument();
-        if (sourceDoc != null) {
-            try {
-                History history = sourceDoc.getRepositoryNode().getHistory();
-
-                int[] numbers = history.getRevisionNumbers();
-                Revision[] revisions = new Revision[numbers.length];
-                for (int i = 0; i < numbers.length; i++) {
-                    revisions[i] = history.getRevision(numbers[i]);
-                }
-                setParameter("revisions", revisions);
-
-                Boolean canRollback = Boolean.valueOf(WorkflowUtil.canInvoke(this.manager,
-                        getDocumentFactory().getSession(), getLogger(), sourceDoc, getEvent()));
-                setParameter("canRollback", canRollback);
-
-                if (WorkflowUtil.hasWorkflow(this.manager, getSession(), getLogger(), sourceDoc)) {
-                    Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager,
-                            getSession(), getLogger(), sourceDoc);
-                    Version latestVersion = workflowable.getLatestVersion();
-                    String state;
-                    if (latestVersion != null) {
-                        state = latestVersion.getState();
-                    } else {
-                        Workflow workflow = WorkflowUtil.getWorkflowSchema(this.manager,
-                                getSession(), getLogger(), sourceDoc);
-                        state = workflow.getInitialState();
-                    }
-                    setParameter("workflowState", state);
-                }
-            } catch (final Exception e) {
-                throw new RuntimeException(e);
-            }
-
-            /*
-             * // since we need both state and canInvoke, we could deal with the
-             * avalon // component ourselves rather than using WorkflowUtil -
-             * saves one // service manager lookup. // problem is that
-             * DocumentWorkflowable is not public and Workflowable is abstract :(
-             * 
-             * WorkflowManager wfManager = null; String workflowState; Boolean
-             * canRollback; try { wfManager = (WorkflowManager)
-             * this.manager.lookup(WorkflowManager.ROLE); Workflowable
-             * workflowable = new DocumentWorkflowable( this.manager,
-             * getDocumentFactory().getSession(), sourceDoc, getLogger() );
-             * workflowState = workflowable.getLatestVersion().getState();
-             * canRollback = new Boolean(wfManager.canInvoke(workflowable,
-             * WORKFLOW_EVENT_EDIT)); } catch (ServiceException e) { throw new
-             * RuntimeException(e); } finally { if (wfManager != null) {
-             * manager.release(wfManager); } } setParameter("workflowState",
-             * workflowState); setParameter("canRollback", canRollback);
-             */
-
-        }
-    }
-
-    protected String getEvent() {
-        return getParameterAsString("workflowEvent");
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
deleted file mode 100644
index c6f9941..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-
-/**
- * Rollback.
- */
-public class Rollback extends DocumentUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        org.apache.lenya.cms.repository.Node[] objects = { getSourceDocument().getRepositoryNode() };
-        return objects;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
-                getLogger());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        int revision = getParameterAsInteger("rollbackRevision", -1);
-
-        Document document = getSourceDocument();
-        Node node = document.getRepositoryNode();
-        node.rollback(revision);
-        
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), getSourceDocument(),
-                getEvent());
-    }
-
-    protected String getEvent() {
-        return getParameterAsString("workflowEvent");
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java
deleted file mode 100644
index c6552e6..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteOverview.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Overview over all documents.
- */
-public class SiteOverview extends AbstractUsecase {
-
-    protected static final String ALL_DOCUMENTS = "allDocuments";
-    protected static final String DOCUMENTS = "documents";
-    protected static final String FILTER_WORKFLOW_STATE_VALUES = "filterWorkflowStateValues";
-    protected static final String FILTER_RESOURCE_TYPE_VALUES = "filterResourceTypeValues";
-
-    protected static final String KEY_PATH = "keyPath";
-    protected static final String KEY_RESOURCE_TYPE = "keyResourceType";
-    protected static final String KEY_WORKFLOW_STATE = "keyWorkflowState";
-    protected static final String KEY_LANGUAGE = "keyLanguage";
-    protected static final String KEY_LAST_MODIFIED = "keyLastModified";
-    protected static final String KEY_URL = "keyUrl";
-    protected static final String KEY_CHECKED_OUT = "keyCheckedOut";
-    protected static final String PARAMETER_KEYS = "keys";
-
-    protected static final String[] KEYS = { KEY_PATH, KEY_LANGUAGE, KEY_RESOURCE_TYPE,
-            KEY_WORKFLOW_STATE, KEY_LAST_MODIFIED, KEY_CHECKED_OUT };
-
-    protected static final String FILTER_RESOURCE_TYPE = "filterResourceType";
-    protected static final String FILTER_WORKFLOW_STATE = "filterWorkflowState";
-    protected static final String FILTER_LANGUAGE = "filterLanguage";
-    protected static final String PARAMETER_FILTERS = "filters";
-
-    protected static final String[] FILTERS = { FILTER_LANGUAGE, FILTER_RESOURCE_TYPE,
-            FILTER_WORKFLOW_STATE };
-
-    protected static final String VALUE_ALL = "- all -";
-
-    protected static final String SORT = "sort";
-
-    protected static final String ORDER = "order";
-
-    protected static final String DESC = "desc";
-    protected static final String ASC = "asc";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        try {
-            Document[] documents = getDocuments();
-
-            List entries = new ArrayList();
-            for (int i = 0; i < documents.length; i++) {
-
-                Entry entry = new Entry();
-                if (documents[i].hasLink()) {
-                    entry.setValue(KEY_PATH, documents[i].getPath());
-                } else {
-                    entry.setValue(KEY_PATH, "not in site structure");
-                }
-                entry.setValue(KEY_RESOURCE_TYPE, ResourceType.I18N_PREFIX
-                        + documents[i].getResourceType().getName());
-                entry.setValue(KEY_LANGUAGE, documents[i].getLanguage());
-                entry.setValue(KEY_URL, documents[i].getCanonicalWebappURL());
-
-                DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                String lastModified = format.format(new Date(documents[i].getLastModified()));
-                entry.setValue(KEY_LAST_MODIFIED, lastModified);
-
-                if (WorkflowUtil.hasWorkflow(this.manager, getSession(), getLogger(), documents[i])) {
-                    Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager,
-                            getSession(), getLogger(), documents[i]);
-                    Version latestVersion = workflowable.getLatestVersion();
-                    String state;
-                    if (latestVersion != null) {
-                        state = latestVersion.getState();
-                    } else {
-                        Workflow workflow = WorkflowUtil.getWorkflowSchema(this.manager,
-                                getSession(), getLogger(), documents[i]);
-                        state = workflow.getInitialState();
-                    }
-                    entry.setValue(KEY_WORKFLOW_STATE, state);
-                } else {
-                    entry.setValue(KEY_WORKFLOW_STATE, "");
-                }
-
-                Node node = documents[i].getRepositoryNode();
-                if (node.isCheckedOut()) {
-                    entry.setValue(KEY_CHECKED_OUT, node.getCheckoutUserId());
-                } else {
-                    entry.setValue(KEY_CHECKED_OUT, "");
-                }
-                entries.add(entry);
-            }
-
-            for (int i = 0; i < FILTERS.length; i++) {
-                SortedSet filterValues = new TreeSet();
-                filterValues.add(VALUE_ALL);
-
-                String key = "key" + FILTERS[i].substring("filter".length());
-
-                for (Iterator docs = entries.iterator(); docs.hasNext();) {
-                    Entry entry = (Entry) docs.next();
-                    filterValues.add(entry.getValue(key));
-                }
-                setParameter(FILTERS[i] + "Values", filterValues);
-                setParameter(FILTERS[i], VALUE_ALL);
-            }
-            setParameter(PARAMETER_FILTERS, Arrays.asList(FILTERS));
-
-            setParameter(ALL_DOCUMENTS, new ArrayList(entries));
-            setParameter(DOCUMENTS, entries);
-
-            setParameter(PARAMETER_KEYS, Arrays.asList(KEYS));
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @return The documents in the authoring area.
-     * @throws PublicationException if an error occurs.
-     * @throws SiteException if an error occurs.
-     */
-    protected Document[] getDocuments() throws PublicationException, SiteException {
-        Publication publication = getPublication();
-        DocumentFactory identityMap = getDocumentFactory();
-        Document[] documents;
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            documents = siteManager.getDocuments(identityMap, publication,
-                    Publication.AUTHORING_AREA);
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        return documents;
-    }
-
-    /**
-     * @return The publication.
-     * @throws PublicationException if an error occurs.
-     */
-    protected Publication getPublication() throws PublicationException {
-        return PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
-                getSourceURL());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-
-        List allDocuments = (List) getParameter(ALL_DOCUMENTS);
-        List filteredDocuments = new ArrayList(allDocuments);
-
-        for (int i = 0; i < FILTERS.length; i++) {
-            String key = "key" + FILTERS[i].substring("filter".length());
-            String filterValue = getParameterAsString(FILTERS[i]);
-            if (!filterValue.equals(VALUE_ALL)) {
-                Entry[] entries = (Entry[]) filteredDocuments.toArray(new Entry[filteredDocuments
-                        .size()]);
-                for (int entryIndex = 0; entryIndex < entries.length; entryIndex++) {
-                    if (!entries[entryIndex].getValue(key).equals(filterValue)) {
-                        filteredDocuments.remove(entries[entryIndex]);
-                    }
-                }
-            }
-        }
-
-        String sort = getParameterAsString(SORT);
-        String order = getParameterAsString(ORDER, ASC);
-        if (sort != null) {
-            Comparator comparator = new EntryComparator(sort, order);
-            Collections.sort(filteredDocuments, comparator);
-        }
-
-        setParameter(DOCUMENTS, filteredDocuments);
-    }
-
-    /**
-     * Comparator for entries.
-     */
-    public static class EntryComparator implements Comparator {
-
-        private String key;
-        private String order;
-
-        /**
-         * @param key The key to compare.
-         * @param order The order string ({@link SiteOverview#ASC} or {@link SiteOverview#DESC}).
-         */
-        public EntryComparator(String key, String order) {
-            this.key = key;
-            this.order = order;
-        }
-
-        /**
-         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-         */
-        public int compare(Object arg0, Object arg1) {
-            Entry e1 = (Entry) arg0;
-            Entry e2 = (Entry) arg1;
-
-            String value1 = e1.getValue(this.key);
-            String value2 = e2.getValue(this.key);
-            if (this.order.equals(DESC))
-                return value2.compareTo(value1);
-            else
-                return value1.compareTo(value2);
-        }
-
-    }
-
-    /**
-     * Stores document-related information.
-     */
-    public static class Entry {
-
-        private Map values = new HashMap();
-
-        /**
-         * Ctor.
-         */
-        public Entry() {
-        }
-
-        /**
-         * @param key The key.
-         * @param value The value.
-         */
-        public void setValue(String key, String value) {
-            this.values.put(key, value);
-        }
-
-        /**
-         * @param key The key.
-         * @return The value.
-         */
-        public String getValue(String key) {
-            return (String) this.values.get(key);
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteUsecase.java b/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteUsecase.java
deleted file mode 100644
index f98ad05..0000000
--- a/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/SiteUsecase.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-
-/**
- * Super class for site related usecases.
- * 
- * @version $Id$
- */
-public class SiteUsecase extends DocumentUsecase {
-
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/CopyPasteTest.java b/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/CopyPasteTest.java
deleted file mode 100644
index 2fe2d1a..0000000
--- a/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/CopyPasteTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.AbstractUsecaseTest;
-
-public class CopyPasteTest extends AbstractUsecaseTest {
-
-    String PARENT_PATH = "/doctypes";
-    String CHILD_URL = "/test/authoring/doctypes/cforms.html";
-    String VERIFICATION_PATH = "/doctypes/cforms/doctypes/cforms";
-
-    protected String getUsecaseName() {
-        return "sitemanagement.paste";
-    }
-
-    protected Map getParameters() {
-        return Collections.singletonMap("private.sourceUrl", CHILD_URL);
-    }
-
-    protected void prepareUsecase() throws Exception {
-        super.prepareUsecase();
-
-        Publication pub = getPublication("test");
-        SiteStructure site = pub.getArea(Publication.AUTHORING_AREA).getSite();
-        Document parent = site.getNode(PARENT_PATH).getLink(pub.getDefaultLanguage()).getDocument();
-
-        Clipboard clipboard = new Clipboard(parent, Clipboard.METHOD_COPY);
-        ClipboardHelper helper = new ClipboardHelper();
-        helper.saveClipboard(this.context, clipboard);
-    }
-
-    protected void checkPostconditions() throws Exception {
-        super.checkPostconditions();
-        
-        Publication pub = getPublication("test");
-        SiteStructure site = pub.getArea(Publication.AUTHORING_AREA).getSite();
-        assertTrue(site.contains(VERIFICATION_PATH));
-    }
-}
diff --git a/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/MoveSubsiteTest.java b/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/MoveSubsiteTest.java
deleted file mode 100644
index c0f4975..0000000
--- a/trunk/src/modules-core/sitemanagement/java/test/org/apache/lenya/cms/site/usecases/MoveSubsiteTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.AbstractUsecaseTest;
-
-/**
- * Test class for moving subsites to a different area.
- */
-public class MoveSubsiteTest extends AbstractUsecaseTest {
-
-    protected static final String PATH = "/foo/bar/baz";
-    protected static final String DELETE_URL = "/test/authoring" + PATH + ".html";
-    protected static final String TARGET_URL = "/test/authoring/foo_de.html";
-    protected static final String SOURCE_PATH = "/tutorial";
-
-    protected String getUsecaseName() {
-        return "sitemanagement.delete";
-    }
-
-    protected void checkPostconditions() throws Exception {
-
-        assertTrue(getTargetUrl().startsWith(TARGET_URL));
-
-        super.checkPostconditions();
-
-        Area authoring = getPublication("test").getArea("authoring");
-        SiteStructure authoringSite = authoring.getSite();
-        assertFalse(authoringSite.contains(PATH));
-
-        Area trash = getPublication("test").getArea("trash");
-        SiteStructure trashSite = trash.getSite();
-        assertTrue(trashSite.contains(PATH));
-        String trashUuid = trashSite.getNode(PATH).getUuid();
-        assertNotNull(trashUuid);
-        assertEquals(trashUuid, this.uuid);
-
-    }
-
-    protected Map getParameters() {
-        Map params = new HashMap();
-        params.put("private.sourceUrl", DELETE_URL);
-        return params;
-    }
-
-    private String uuid;
-
-    protected void prepareUsecase() throws Exception {
-        super.prepareUsecase();
-        Area authoring = getPublication("test").getArea("authoring");
-
-        SiteStructure authoringSite = authoring.getSite();
-        SiteNode node = authoringSite.getNode(SOURCE_PATH);
-        Document doc = node.getLink("en").getDocument();
-
-        DocumentManager docMgr = null;
-        try {
-            docMgr = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-
-            String pubId = doc.getPublication().getId();
-            String area = doc.getArea();
-            DocumentLocator loc = DocumentLocator.getLocator(pubId, area, PATH, doc.getLanguage());
-
-            authoringSite.add("/foo");
-            authoringSite.add("/foo/bar");
-
-            docMgr.copy(doc, loc);
-
-            // add an ancestor language version to test the method
-            // MoveSubSite.getTargetURL()
-            DocumentLocator ancestorLoc = DocumentLocator.getLocator(pubId, area, "/foo", "de");
-            docMgr.copy(doc, ancestorLoc);
-
-            SiteNode childNode = authoringSite.getNode(PATH);
-            this.uuid = childNode.getUuid();
-        } finally {
-            if (docMgr != null) {
-                getManager().release(docMgr);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml b/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
deleted file mode 100644
index e270ff3..0000000
--- a/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="sitemanagement.delete">Delete</message>
-  <message key="sitemanagement.archive">Archive</message>
-  <message key="sitemanagement.restore">Restore</message>
-  <message key="cut-error-islive">The node cannot be cut when a language version is published.</message>
-  <message key="Parent Path">Parent Path</message>

-  <message key="Node Name">Node Name</message>
-  <message key="missing-node-name">Please enter a node name.</message>
-  <message key="node-name-special-characters">The node name may not contain any special characters.</message>
-  <message key="Document visible in Navigation">Visible in Navigation</message>
-  <message key="Relation">Relation</message>
-  <message key="Page Layout">Page Layout</message>
-  <message key="Document Path">Path</message>
-  <message key="Meta Data">Meta Data</message>
-  <message key="no-assets">No assets uploaded yet.</message>
-  <message key="Editor">Editor</message>
-  <message key="missing-languages">Missing Languages<br/> (click to create)</message>
-  <message key="Namespace">Namespace</message>
-  <message key="http://purl.org/dc/terms/">Dublin Core Terms</message>
-  <message key="http://purl.org/dc/elements/1.1/">Dublin Core Elements</message>
-  <message key="value-not-set">not set</message>
-  <message key="Inherited credentials">Inherited credentials</message>
-  <message key="Subtree credentials">Subtree credentials</message>
-  <message key="New subtree credential">New subtree credential</message>
-  <message key="no-jobs-scheduled">No jobs scheduled.</message>
-  <message key="No overview available.">No overview available.</message>
-  <message key="missing-navigation-title">Please enter a navigation title.</message>
-  <message key="missing-page-layout">Please select a page layout.</message>
-  <message key="path-already-exists">The path {0} already exists.</message>
-  <message key="yes">yes</message>
-  <message key="no">no</message>
-  <message key="Type">Type</message>
-  <message key="Method">Method</message>
-  <message key="grant">grant</message>
-  <message key="deny">deny</message>
-  <message key="world">World</message>
-  <message key="only-in-authoring-area">This usecase can only be invoked in the authoring area.</message>
-  <message key="clipboard-empty">The clipboard is empty.</message>
-  <message key="Resource Type">Resource Type</message>
-  <message key="Mime Type">Mime Type</message>
-  <message key="Document Size">Document Size</message>
-  <message key="no-rollback">Rollback is disabled.</message>

-  <message key="workflow-state">Workflow state is "{0}".</message>

-  <message key="view-revision-in-new-window">view revision in new window</message>  

-  <message key="view-revision">View revision</message>

-  <message key="is-current-version">(is current)</message>

-  <message key="rollback">Roll back</message>

-  <message key="rollback-ok">roll back to this version</message>

-  <message key="no-rollback-in-review">Rollback disabled. Document is in

-  review state.</message>

-  <message key="no-rollback-no-privileges">Rollback disabled. You do not

-  have sufficient privileges.</message>
-  <message key="will-paste-in-own-subtree">Can't paste a cut document in its own subtree.</message>
-  <message key="Change Document URL">Change Document URL</message>
-  <message key="change-document-url">Change the URL of document <q>{0}</q></message>
-  <message key="New URL Fragment">New URL Fragment</message>
-  <message key="The document ID is not valid.">The URL fragment is not valid.</message>
-  <message key="The document can't be deleted if a live version exists.">
-    The document can't be deleted if a live version exists.
-  </message>
-  <message key="child">Child</message>
-  <message key="sibling after">Following sibling</message>
-  <message key="The last language version cannot be removed.">The last language version cannot be removed.</message>
-  <message key="All language versions already exist.">All language versions already exist.</message>
-  
-  <!-- force check-in -->
-  <message key="force-checkin">Force Check-In</message>
-  <message key="force-checkin-question">Do you really want to check-in the document '{0}'?</message>
-  <message key="user-logged-in">The user '{0}' is still logged in.</message>

-  <message key="user-not-logged-in">The user '{0}' is not logged in anymore.</message>
-  <message key="not-checked-out">The document '{0}' is not checked out.</message>
-</catalogue>

diff --git a/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml b/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 6fccce4..0000000
--- a/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="sitemanagement.delete">Löschen</message>
-  <message key="sitemanagement.archive">Archivieren</message>
-  <message key="sitemanagement.restore">Wiederherstellen</message>
-  <message key="cut-error-islive">Der Knoten kann nicht ausgeschnitten werden wenn eine Sprachversion publiziert ist.</message>

-  <message key="Parent Path">Übergeordneter Pfad</message>
-  <message key="Node Name">Knoten-Name</message>
-  <message key="missing-node-name">Bitte geben Sie einen Knoten-Namen ein.</message>
-  <message key="node-name-special-characters">Der Knoten-Name darf keine Sonderzeichen enthalten.</message>
-  <message key="Document visible in Navigation">Sichtbar in Navigation</message>
-  <message key="Relation">Relation</message>
-  <message key="Page Layout">Seitenlayout</message>
-  <message key="Document Path">Pfad</message>
-  <message key="Meta Data">Meta-Daten</message>
-  <message key="no-assets">Es wurden noch keine Anlagen hochgeladen.</message>
-  <message key="Editor">Bearbeiter</message>
-  <message key="missing-languages">Fehlende Sprachen<br/> (Klicken zum Erstellen)</message>
-  <message key="Namespace">Namensraum</message>
-  <message key="http://purl.org/dc/terms/">Dublin-Core-Terme</message>
-  <message key="http://purl.org/dc/elements/1.1/">Dublin-Core-Elemente</message>
-  <message key="value-not-set">nicht gesetzt</message>
-  <message key="Inherited credentials">Vererbte Berechtigungen</message>
-  <message key="Subtree credentials">Berechtigungen für diesen Teilbaum</message>
-  <message key="New subtree credential">Neue Berechtigung für diesen Teilbaum</message>
-  <message key="no-jobs-scheduled">Es wurden keine zeitgesteuerten Aktionen gestartet.</message>
-  <message key="No overview available.">Es ist keine Übersicht verfügbar.</message>
-  <message key="missing-navigation-title">Bitte geben Sie einen Navigationstitel ein.</message>
-  <message key="missing-page-layout">Bitte wählen Sie ein Seiten-Layout.</message>
-  <message key="path-already-exists">Der Pfad {0} existiert bereits.</message>
-  <message key="yes">ja</message>
-  <message key="no">nein</message>
-  <message key="Type">Typ</message>
-  <message key="Method">Methode</message>
-  <message key="grant">erlauben</message>
-  <message key="deny">verbieten</message>
-  <message key="world">Welt</message>
-  <message key="only-in-authoring-area">Dieser Usecase kann nur im Authoring-Bereich ausgeführt werden.</message>
-  <message key="clipboard-empty">Die Zwischenablage ist leer.</message>
-  <message key="Resource Type">Ressourcen-Typ</message>
-  <message key="Mime Type">Mime-Type</message>
-  <message key="Document Size">Größe des Dokuments</message>
-  <message key="no-rollback">Rollback ist deaktiviert.</message>

-  <message key="workflow-state">Das Dokument ist im Arbeitsschritt "{0}".</message>

-  <message key="view-revision-in-new-window">Version in neuem Fenster ansehen</message>

-  <message key="view-revision">Version ansehen</message>

-  <message key="is-current-version">(aktuell)</message>

-  <message key="rollback">Wiederherstellen</message>

-  <message key="rollback-ok">diese Version wiederherstellen</message>

-  <message key="no-rollback-in-review">Im Arbeitsschritt "Freigabe" ist

-  keine Wiederherstellung möglich.</message>

-  <message key="no-rollback-no-privileges">Keine ausreichenden Rechte zum Wiederherstellen.</message>

-  <message key="will-paste-in-own-subtree">
-    Ein ausgeschnittenes Dokument kann nicht im eigenen Teilbaum eingefügt werden.
-  </message>
-  <message key="Change Document URL">URL des Dokuments ändern</message>
-  <message key="change-document-url">URL des Dokuments <q>{0}</q> ändern</message>
-  <message key="New URL Fragment">Neues URL-Fragment</message>
-  <message key="The document ID is not valid.">Das URL-Fragment ist ungültig.</message>
-  <message key="The document can't be deleted if a live version exists.">
-    Das Dokument kann nicht gelöscht werden, wenn eine Live-Version existiert.
-  </message>
-  <message key="child">Kind-Dokument</message>
-  <message key="sibling after">Folgendes Geschwister-Dokument</message>
-  <message key="The last language version cannot be removed.">Die letzte Sprachversion kann nicht gelöscht werden.</message>
-  <message key="All language versions already exist.">Es existieren bereits alle Sprachversionen.</message>
-  

-  <!-- force check-in -->
-  <message key="force-checkin">Check-In erzwingen</message>
-  <message key="force-checkin-question">Wollen Sie das Dokument "{0}" wirklich einchecken?</message>
-  <message key="user-logged-in">Der Nutzer "{0}" ist noch eingeloggt.</message>
-  <message key="user-not-logged-in">Der Nutzer "{0}" ist nicht mehr eingeloggt.</message>
-  <message key="not-checked-out">Das Dokument "{0}" ist nicht ausgecheckt.</message>
-</catalogue>

-

diff --git a/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js b/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js
deleted file mode 100644
index a88df8d..0000000
--- a/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-function lenyaGetTitle(num) {
-  return document.getElementById('lenyaTabTitle' + num);
-}
-
-function lenyaGetBody(num) {
-  return document.getElementById('lenyaTabBody' + num);
-}
-
-function lenyaInitTabs(count) {
-  lenyaToggleTab(count, 0);
-}
-
-function lenyaToggleTab(count, num) {
-  for (var i = 0; i < count; i++) {
-    var title = document.getElementById('lenyaTabTitle' + i);
-    var body = document.getElementById('lenyaTabBody' + i);
-    if (i == num) {
-      title.className = 'lenyaTabTitleActive';
-      body.className = 'lenyaTabBodyActive';
-    }
-    else {
-      title.className = 'lenyaTabTitle';
-      body.className = 'lenyaTabBody';
-    }
-  }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/test/canoo/test.xml b/trunk/src/modules-core/sitemanagement/test/canoo/test.xml
deleted file mode 100644
index bd09bd5..0000000
--- a/trunk/src/modules-core/sitemanagement/test/canoo/test.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="sitemanagement" basedir="." default="main">
-
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-
-  <target name="main">
-    <antcall target="sitemanagement.delete">
-      <param name="webtest.config.basepath" value="default"/>
-    </antcall>
-  </target>
-
-  <target name="sitemanagement.delete">
-    <property name="number" value="1"/>
-    <webtest name="sitemanagement.delete">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi" url="authoring/index.html"/>
-        <repeat count="${number}">
-          <echo>Delete/Restore/Archive/Restore: Test #{count} of ${number}</echo>
-
-          <!-- delete -->
-          <invoke url="authoring/tutorial.html?lenya.usecase=sitemanagement.delete"/>
-          <verifyElementText type="h1" text="Delete Document"/>
-          <clickButton name="submit"/>
-          <verifyElementText type="h1" text="Overview"/>
-          <verifyText text="No overview available."/>
-          <invoke url="trash/tutorial.html?lenya.usecase=tab.overview"/>
-          <verifyElementText type="span" name="workflow-state" text="trash"/>
-
-          <!-- restore -->
-          <invoke url="trash/tutorial.html?lenya.usecase=sitemanagement.restore"/>
-          <verifyElementText type="h1" text="Restore Document"/>
-          <clickButton name="submit"/>
-          <verifyElementText type="h1" text="Overview"/>
-          <verifyText text="A short tutorial on using Apache Lenya"/>
-          <verifyElementText type="span" name="workflow-state" text="authoring"/>
-
-          <!-- archive -->
-          <invoke url="authoring/tutorial.html?lenya.usecase=sitemanagement.archive"/>
-          <verifyElementText type="h1" text="Archive Document"/>
-          <clickButton name="submit"/>
-          <verifyElementText type="h1" text="Overview"/>
-          <verifyText text="No overview available."/>
-          <invoke url="archive/tutorial.html?lenya.usecase=tab.overview"/>
-          <verifyElementText type="span" name="workflow-state" text="archive"/>
-
-          <!-- restore -->
-          <invoke url="archive/tutorial.html?lenya.usecase=sitemanagement.restore"/>
-          <verifyElementText type="h1" text="Restore Document"/>
-          <clickButton name="submit"/>
-          <verifyElementText type="h1" text="Overview"/>
-          <verifyText text="A short tutorial on using Apache Lenya"/>
-          <verifyElementText type="span" name="workflow-state" text="authoring"/>
-
-        </repeat>
-        <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-</project>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/archive.jx b/trunk/src/modules-core/sitemanagement/usecases/site/archive.jx
deleted file mode 100644
index 8767dc7..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/archive.jx
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-           
-  <page:title><i18n:text>Archive Document</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="archive-doc"/>
-          <i18n:param><q><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></q></i18n:param>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <form method="get" id="form-archive_document">
-          
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <i18n:translate>
-                  <i18n:text key="archive-doc?"/>
-                  <i18n:param><strong><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></strong></i18n:param>
-                </i18n:translate><br/><br/>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <jx:if test="${not(empty(usecase.getParameter('inconsistentdocument')))}">
-                <td class="lenya-entry-caption">
-                  <span class="lenya-form-message-error"><i18n:text key="docs-have-links-to-doc"/>:</span>
-                </td>
-                <td valign="top">
-                  <jx:forEach var="item" items="${usecase.getParameter('inconsistentdocument')}">
-                    <a target="_blank" href="{@href}"><jx:out value="${item.id}"/><jx:out value="."/></a><br/>
-                  </jx:forEach>
-                </td>
-              </jx:if>
-            </tr>
-            <tr>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Archive"/>&#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/changeLabel.jx b/trunk/src/modules-core/sitemanagement/usecases/site/changeLabel.jx
deleted file mode 100644
index ef581cd..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/changeLabel.jx
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: renameLabel.jx 123364 2004-12-26 16:11:27Z gregor $ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Edit Navigation Title</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="rename-label-doc"/>
-          <i18n:param>
-            <q><jx:out value="${usecase.getParameter('document')
-                .getMetaData('http://purl.org/dc/elements/1.1/')
-                .getFirstValue('title')}"/></q>
-          </i18n:param>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <form method="post" action="" id="form-change_label">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="label"><i18n:text>New Navigation Title</i18n:text>:</label></td>
-              <td><input type="text" class="lenya-form-element" name="label" value="${usecase.getParameter('label')}"/></td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/changeNodeID.jx b/trunk/src/modules-core/sitemanagement/usecases/site/changeNodeID.jx
deleted file mode 100644
index 1f50ad5..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/changeNodeID.jx
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: renameLabel.jx 123364 2004-12-26 16:11:27Z gregor $ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Change Document URL</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="change-document-url"/>
-          <i18n:param><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></i18n:param>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <form method="post" action="" id="form-change_node_id">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="nodeId"><i18n:text>New URL Fragment</i18n:text>: *</label></td>
-              <td><input type="text" class="lenya-form-element" name="nodeId" value="${usecase.getParameter('nodeId')}"/></td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Save"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/copy.jx b/trunk/src/modules-core/sitemanagement/usecases/site/copy.jx
deleted file mode 100644
index b5ee1a9..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/copy.jx
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Copy Document</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Copy Document</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="get" action="" id="form-copy_document">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <i18n:translate>
-                  <i18n:text key="copy-doc-to-clip?"/>
-                  <i18n:param>${usecase.getParameter('document').getLink().getLabel()}</i18n:param>
-                </i18n:translate>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Copy"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/create.jx b/trunk/src/modules-core/sitemanagement/usecases/site/create.jx
deleted file mode 100644
index 5cf2734..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/create.jx
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title>
-    <jx:choose>
-      <jx:when test="${usecase.getParameter('doctype') == null}">
-        <i18n:translate>
-          <i18n:text>New Document</i18n:text>
-        </i18n:translate>
-      </jx:when>
-      <jx:otherwise>
-        <i18n:translate>
-          <i18n:text>New ... Document</i18n:text>
-          <i18n:param><i18n:text>resourceType-<jx:out value="${usecase.getParameter('doctype')}"/></i18n:text></i18n:param>
-        </i18n:translate>
-      </jx:otherwise>
-    </jx:choose>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text>New Document</i18n:text>
-        </i18n:translate>
-      </div>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form method="post" id="form-create">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/site/createFields.jx"/>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Create"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/createFields.jx b/trunk/src/modules-core/sitemanagement/usecases/site/createFields.jx
deleted file mode 100644
index 17efff0..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/createFields.jx
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: create.jx 486213 2006-12-12 16:14:30Z andreas $ -->
-
-<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <jx:set var="newLanguageVersion" value="${usecase.getName().equals('sitemanagement.createLanguage')}"/>
-  
-  <jx:choose>
-    <jx:when test="${usecase.getParameter('pathProvided')}">
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="nodeName"><i18n:text>Path</i18n:text>: </label>
-        </td>
-        <td>
-          <jx:out value="${usecase.getParameter('path')}"/>
-        </td>
-      </tr>
-    </jx:when>
-    <jx:when test="${newLanguageVersion}">
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="nodeName"><i18n:text>Path</i18n:text>: </label>
-        </td>
-        <td>
-          <jx:out value="${usecase.getParameter('path')}"/>
-        </td>
-      </tr>
-    </jx:when>
-    <jx:otherwise>
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="nodeName"><i18n:text>Parent Path</i18n:text>: </label>
-        </td>
-        <td>
-          <jx:out value="${usecase.getParameter('parentPath')}"/>
-        </td>
-      </tr>
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="nodeName"><i18n:text>Node Name</i18n:text>*: </label>
-        </td>
-        <td>
-          <input class="lenya-form-element" type="text" name="nodeName" value="${usecase.getParameter('nodeName')}"/>
-          <br/> (<i18n:text>No whitespace, no special characters</i18n:text>)
-        </td>
-      </tr>
-    </jx:otherwise>
-  </jx:choose>
-  <tr>
-    <td class="lenya-entry-caption">
-      <label for="dublincore.title"><i18n:text>Navigation Title</i18n:text>*: </label></td>
-    <td>
-      <input class="lenya-form-element" type="text"
-        name="dublincore.title" value="${usecase.getParameter('dublincore.title')}"/>
-    </td>
-  </tr>
-  <jx:if test="${!newLanguageVersion}">
-    <tr>
-      <td class="lenya-entry-caption">
-        <label for="visibleinnav"><i18n:text>Document visible in Navigation</i18n:text>*: </label></td>
-      <jx:set var="visible" value="yes"/>
-      <jx:if test="${usecase.getParameter('visibleInNav').equals('false')}">
-        <jx:set var="visible" value="no"/>
-      </jx:if> 
-      <td>
-        <select class="lenya-form-element" name="visibleInNav">
-          <jx:choose>
-            <jx:when test="${visible.equals('yes')}">
-              <option value="true" selected="selected"><i18n:text>yes</i18n:text></option>
-              <option value="false"><i18n:text>no</i18n:text></option>
-            </jx:when>
-            <jx:otherwise>
-              <option value="true"><i18n:text>yes</i18n:text></option>
-              <option value="false" selected="selected"><i18n:text>no</i18n:text></option>
-            </jx:otherwise>
-          </jx:choose>
-        </select>
-      </td>
-    </tr>
-  </jx:if>
-  <jx:set var="relations" value="${usecase.getParameter('relations')}"/>
-  <jx:if test="${relations.size() &gt; 1}">
-    <tr>
-      <td class="lenya-entry-caption">
-        <label for="relation"><i18n:text>Relation</i18n:text>*: </label>
-      </td>
-      <td>
-        <jx:forEach var="relation" items="${relations}">
-          <jx:choose>
-            <jx:when test="${relation.equals(usecase.getParameter('relation'))}">
-              <input type="radio" name="relation" value="${relation}" checked="checked"/><i18n:text>${relation}</i18n:text>
-            </jx:when>
-            <jx:otherwise>
-              <input type="radio" name="relation" value="${relation}"/><i18n:text>${relation}</i18n:text>
-            </jx:otherwise>
-          </jx:choose>
-        </jx:forEach>
-      </td>
-    </tr>
-  </jx:if>
-  <jx:set var="languages" value="${usecase.getParameter('languages')}"/>
-  <jx:choose>
-    <jx:when test="${languages.size() &gt; 1}">            
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="language"><i18n:text>Language</i18n:text>*: </label></td>
-        <td>
-          <select class="lenya-form-element" name="language">
-            <jx:forEach var="language" items="${usecase.getParameter('languages')}">
-              <jx:choose>
-                <jx:when test="${language.equals(usecase.getParameter('language'))}">
-                  <option value="${language}" selected="selected">${language} (<i18n:text>${language}</i18n:text>)</option>
-                </jx:when>
-                <jx:otherwise>
-                  <option value="${language}">${language} (<i18n:text>${language}</i18n:text>)</option>
-                </jx:otherwise>
-              </jx:choose>
-            </jx:forEach>
-          </select>
-        </td>
-      </tr>
-    </jx:when>
-    <jx:otherwise>
-      <tr>
-        <td class="lenya-entry-caption">
-          <label for="language"><i18n:text>Language</i18n:text>: </label></td>
-        <td>
-          <jx:set var="language" value="${languages[0]}"/>
-          <input type="hidden" name="language" value="${language}"/>
-          <jx:out value="${language}"/>
-        </td>
-      </tr>
-    </jx:otherwise>
-  </jx:choose>
-  <tr>
-    <td class="lenya-entry-caption">
-      <label for="dublincore.creator"><i18n:text>Creator</i18n:text>:</label></td>
-    <td>
-      <input class="lenya-form-element" type="text" name="dublincore.creator" value="${usecase.getParameter('dublincore.creator')}"/>
-    </td>
-  </tr>
-  <tr>
-    <td class="lenya-entry-caption">
-      <label for="dublincore.subject"><i18n:text>Subject</i18n:text>:</label></td>
-    <td>
-      <input class="lenya-form-element" type="text" name="dublincore.subject" value="${usecase.getParameter('dublincore.subject')}"/>
-    </td>
-  </tr>
-  <tr>
-    <td class="lenya-entry-caption">
-      <label for="dublincore.publisher"><i18n:text>Publisher</i18n:text>:</label></td>
-    <td>
-      <input class="lenya-form-element" type="text" name="dublincore.publisher" value="${usecase.getParameter('dublincore.publisher')}"/>
-    </td>
-  </tr>
-  <tr>
-    <td class="lenya-entry-caption">
-      <i18n:text>Date</i18n:text>:</td>
-    <td>
-      <jx:out value="${usecase.getParameter('dublincore.date')}"/>
-    </td>
-  </tr>
-  <tr>
-    <td class="lenya-entry-caption">
-      <label for="dublincore.rights"><i18n:text>Rights</i18n:text>:</label></td>
-    <td>
-      <input class="lenya-form-element" type="text" name="dublincore.rights" value="${usecase.getParameter('dublincore.rights')}"/>
-    </td>
-  </tr>
-  <jx:set var="resourceTypes" value="${usecase.getParameter('resourceTypes')}"/>
-  <jx:if test="${resourceTypes.size()  &gt; 0}">
-    <tr>
-      <td class="lenya-entry-caption">
-        <label for="sample"><i18n:text>Resource Type</i18n:text>:</label></td>
-      <td>
-        <select name="doctype">
-          <jx:forEach var="item" items="${resourceTypes}">
-            <jx:choose>
-              <jx:when test="${usecase.getParameter('doctype').equals(item)}">
-                <option value="${item}" selected="selected">${item}</option>
-              </jx:when>
-              <jx:otherwise>
-                <option value="${item}">${item}</option>
-              </jx:otherwise>
-            </jx:choose>
-          </jx:forEach>
-        </select>
-      </td>
-    </tr>
-  </jx:if>
-  <jx:set var="samples" value="${usecase.getParameter('samples')}"/>
-  <jx:if test="${samples.size() &gt; 0 &amp;&amp; !newLanguageVersion}">
-    <tr>
-      <td class="lenya-entry-caption" style="vertical-align: top">
-        <label for="sample"><i18n:text>Page Layout</i18n:text>:</label></td>
-      <td>
-        <jx:forEach var="item" items="${samples}">
-          <jx:choose>
-            <jx:when test="${usecase.getParameter('sample').equals(item)}">
-              <input type="radio" name="sample" value="${item}" checked="checked"/>${item}<br />
-            </jx:when>
-            <jx:otherwise>
-              <input type="radio" name="sample" value="${item}"/>${item}<br />
-            </jx:otherwise>
-          </jx:choose>
-        </jx:forEach>
-      </td>
-    </tr>
-  </jx:if>  
-  <tr>
-    <td class="lenya-entry-caption">* <i18n:text>required fields</i18n:text>
-    </td>
-  </tr>
-  
-</jx:template>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/createLanguage.jx b/trunk/src/modules-core/sitemanagement/usecases/site/createLanguage.jx
deleted file mode 100644
index 501c828..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/createLanguage.jx
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>New Language Version</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>New Language Version</i18n:text>
-      </div>
-
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form method="post" id="form-create_language">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/site/createFields.jx"/>
-            <tr>
-                <td/>
-                <td>
-                  <input i18n:attr="value" type="submit" name="submit" value="Create"/>
-                  &#160;
-                  <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                </td>
-              </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/cut.jx b/trunk/src/modules-core/sitemanagement/usecases/site/cut.jx
deleted file mode 100644
index 6dab595..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/cut.jx
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Cut Document</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Cut Document</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="get" action="" id="form-cut_document">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <i18n:translate>
-                  <i18n:text key="cut-doc-to-clip?"/>
-                  <i18n:param>${usecase.getParameter('document').getLink().getLabel()}</i18n:param>
-                </i18n:translate>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Cut"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/deactivate.jx b/trunk/src/modules-core/sitemanagement/usecases/site/deactivate.jx
deleted file mode 100644
index 8f46eca..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/deactivate.jx
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" >
-           
-  <page:title>
-    <i18n:text>Deactivate Document</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="deactivate-doc"/>
-          <i18n:param>
-            <q>
-              <jx:out value="${usecase.getParameter('documentid')}"/>
-            </q>
-          </i18n:param>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <jx:choose>
-          <jx:when test="${not(empty(usecase.getParameter('message')))}"> <!-- there is a warning -->
-            <form method="get" id="form-deactivate">
-              <div class="lenya-box">
-                <div class="lenya-box-title"><i18n:text>Deactivate Document</i18n:text></div>
-                <div class="lenya-box-body">
-                  <table class="lenya-table-noborder">
-                    <tr>
-                      <td class="lenya-entry-caption"><i18n:text>Document</i18n:text>:</td>
-                      <td><jx:out value="${usecase.getParameter('documentid')}"/> [<jx:out value="${usecase.getParameter('language')}"/>]</td>
-                    </tr>
-                    <tr>
-                      <td valign="top" class="lenya-entry-caption"><i18n:text>Problem</i18n:text>:</td>
-                      <td>
-                        <span class="lenya-form-error"><i18n:text key="cannot-deactivate-unless-children-deactivated"/>:</span>
-                        <ul>
-                          <jx:forEach var="item" items="${usecase.getParameter('livechildren')}">
-                            <li><a href="{@href}"><jx:out value="${item.id}"/> [<jx:out value="${item.language}"/>]</a></li>
-                          </jx:forEach>
-                        </ul>
-                      </td>
-                    </tr>
-                  </table>
-                </div>
-              </div>
-              <input onClick="location.href='{$request-uri}';" type="button" value="Cancel" name="input-cancel"/>
-            </form>
-          </jx:when>
-          <jx:otherwise> <!-- no warning -->
-            <form method="get" action="">
-              <input type="hidden" name="lenya.usecase" value="deactivate"/>
-              <table class="lenya-table-noborder">
-                <tr>
-                  <td>
-                    <br/>
-                    <i18n:translate>
-                      <i18n:text key="deactivate-doc?"/>
-                      <i18n:param>
-                        <strong>
-                          <jx:out value="${usecase.getParameter('documentid')}"/>
-                        </strong>
-                      </i18n:param>
-                    </i18n:translate>
-                  </td>
-                </tr>
-                <tr>
-                  <jx:if test="${not(empty(usecase.getParameter('inconsistentdocument')))}">
-                    <td class="lenya-entry-caption">
-                      <span class="lenya-form-message-error"><i18n:text key="docs-have-links-to-doc"/>:</span>
-                    </td>
-                    <td valign="top">
-                      <jx:forEach var="item" items="${usecase.getParameter('inconsistentdocument')}">
-                        <a target="_blank" href="{@href}"><jx:out value="${item.id}"/><jx:out value="."/></a><br/>
-                      </jx:forEach>
-                    </td>
-                  </jx:if>
-                </tr>
-                <tr>
-                  <td>
-                    <br/><input i18n:attr="value" type="submit" value="Deactivate" name="input-deactivate"/>&#160; 
-                    <input i18n:attr="value" type="button" onClick="location.href='${requesturi}';" value="Cancel" name="input-cancel"/> 
-                  </td>
-                </tr>
-              </table>
-            </form>
-          </jx:otherwise>
-        </jx:choose>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/delete.jx b/trunk/src/modules-core/sitemanagement/usecases/site/delete.jx
deleted file mode 100644
index bed2f78..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/delete.jx
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>Delete Document</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="delete-doc"/>
-          <jx:set var="document" value="${usecase.getParameter('document')}"/>
-          <jx:choose>
-            <jx:when test="${document.hasLink()}">
-              <i18n:param><q><jx:out value="${document.getLink().getLabel()}"/></q></i18n:param>
-            </jx:when>
-            <jx:otherwise>
-              <i18n:param>(not available)</i18n:param>
-            </jx:otherwise>
-          </jx:choose>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <form method="post" id="form-delete">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <jx:choose>
-              <jx:when test="${usecase.hasErrors()}">
-                <tr>
-                  <td>
-                    <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                  </td>
-                </tr>
-              </jx:when>
-              <jx:otherwise>
-                <tr>
-                  <td>
-                    <i18n:translate>
-                      <i18n:text key="delete-language-versions?"/>
-                      <i18n:param><strong><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></strong></i18n:param>
-                    </i18n:translate><br/><br/>
-                  </td>
-                </tr>
-                <tr>
-                  <jx:if test="${not(empty(usecase.getParameter('inconsistentdocument')))}">
-                    <td class="lenya-entry-caption">
-                      <span class="lenya-form-message-error"><i18n:text key="docs-have-links-to-doc"/>:</span>
-                    </td>
-                    <td valign="top">
-                      <jx:forEach var="item" items="${usecase.getParameter('inconsistentdocument')}">
-                        <a target="_blank" href="{@href}"><jx:out value="${item.id}"/><jx:out value="."/></a><br/>
-                      </jx:forEach>
-                    </td>
-                  </jx:if>
-                </tr>
-                <tr>
-                  <td>
-                    <input i18n:attr="value" type="submit" name="submit" value="Delete"/>
-                    &#160;
-                    <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                  </td>
-                </tr>
-              </jx:otherwise>
-            </jx:choose>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/deleteLanguage.jx b/trunk/src/modules-core/sitemanagement/usecases/site/deleteLanguage.jx
deleted file mode 100644
index e574b2c..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/deleteLanguage.jx
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: login.jx 123986 2005-01-03 15:23:11Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>Remove Language Version</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Remove Language Version</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="post" id="form-delete_language">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-              <tr>
-                <td class="lenya-entry-caption">
-                  <i18n:text>Document</i18n:text>: </td>
-                <td>
-                  <jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/>
-                </td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption">
-                  <i18n:text>Language</i18n:text>*: </td>
-                <td>
-                  <jx:out value="${usecase.getParameter('document').getLanguage()}"/>
-                </td>
-              </tr>
-              <tr>
-                <td/>
-                <td>
-                  <input i18n:attr="value" type="submit" name="submit" value="Delete"/>
-                  &#160;
-                  <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                </td>
-              </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/forceCheckIn.jx b/trunk/src/modules-core/sitemanagement/usecases/site/forceCheckIn.jx
deleted file mode 100644
index e801166..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/forceCheckIn.jx
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: delete.jx 499060 2007-01-23 15:50:56Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>force-checkin</i18n:text></page:title>
-  <page:body>
-    <p>
-      <i18n:translate>
-        <i18n:text key="force-checkin-question"/>
-        <jx:set var="document" value="${usecase.getParameter('document')}"/>
-        <i18n:param><jx:out value="${document.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/></i18n:param>
-      </i18n:translate>
-    </p>
-    
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <form method="post" action="" id="form-force_checkin">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      
-      <p>
-        <jx:if test="${!usecase.hasErrors()}">
-          <input i18n:attr="value" type="submit" name="submit" value="Submit"/>
-          &#160;
-        </jx:if>
-        <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-      </p>
-    </form>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/paste.jx b/trunk/src/modules-core/sitemanagement/usecases/site/paste.jx
deleted file mode 100644
index cd7c915..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/paste.jx
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Paste Document</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Paste Document</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="post" action="" id="form-paste">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td>
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <i18n:translate>
-                  <i18n:text key="paste-doc-from-clip?"/>
-                  <i18n:param>${usecase.getParameter('clipboardLabel')}</i18n:param>
-                </i18n:translate>
-              </td>
-            </tr>
-            <tr>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Paste"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/site/restore.jx b/trunk/src/modules-core/sitemanagement/usecases/site/restore.jx
deleted file mode 100644
index d29aae1..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/site/restore.jx
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" >
-           
-  <page:title>
-    <i18n:text>Restore Document</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:translate>
-          <i18n:text key="restore-doc"/>
-          <i18n:param>
-            <q>
-              <jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/>
-            </q>
-          </i18n:param>
-        </i18n:translate>
-      </div>
-      <div class="lenya-box-body">
-        <jx:choose>
-          <jx:when test="${usecase.hasErrors()}">		
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            <input type="button" class="lenya-form-element" onClick="location.href='${requesturi}';" value="Back"/>
-          </jx:when>
-          <jx:otherwise>
-            <form method="post" id="form-restore">
-              <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-              <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-              <i18n:translate>
-                <i18n:text key="restore-doc?"/>
-                <i18n:param>
-                  <strong>
-                    <jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/>
-                  </strong>
-                </i18n:param>
-              </i18n:translate>
-              <br/><br/>
-              <input i18n:attr="value" type="submit" name="submit" value="Restore"/>
-              &#160;
-              <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-            </form>
-          </jx:otherwise>
-        </jx:choose>	
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ac.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ac.jx
deleted file mode 100644
index 4b4f002..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ac.jx
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import
-      uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    
-    <jx:set var="area" value="${usecase.getParameter('acArea')}"/>
-    
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      
-      <h1><i18n:text><jx:out value="${usecase.getView().getTab().getLabel()}"/></i18n:text></h1>
-
-      <!--
-      <div class="lenya-box-toggled">
-        <div class="lenya-box-title"><i18n:text>Help</i18n:text></div>
-        <div class="lenya-box-body">
-          I guess a help text would be necessary for this page.
-          Would someone mind adding some hints? Or maybe we should add a
-          link to the documentation.
-        </div>
-      </div>
-      -->
-      
-      <table class="lenya-table-list-noborder">
-        <tr>
-          <td colspan="5" style="border-left: 0; border-right: 0; border-top: 0px;">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="5">
-            <jx:import
-              uri="fallback://lenya/modules/sitemanagement/usecases/tab/ac/ssl-form.jx"/>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="5" style="border-left: 0; border-right: 0;">
-            <h4 style="margin: 30px 0 0 0;">
-              <i18n:text>Inherited credentials</i18n:text>
-            </h4>
-          </td>
-        </tr>
-        <tr>
-          <th><i18n:text>Type</i18n:text></th>
-          <th><i18n:text>ID</i18n:text></th>
-          <th><i18n:text>Role</i18n:text></th>
-          <th colspan="2"><i18n:text>Method</i18n:text></th>
-        </tr>
-        <jx:forEach var="credential"
-          items="${usecase.getParameter('parentCredentials')}">
-          <tr>
-            <td>
-              <i18n:text><jx:out value="${credential.getType()}"/></i18n:text>
-            </td>
-            <td>
-              <jx:out value="${credential.getAccreditableId()}"/>
-            </td>
-            <td>
-              <jx:out value="${credential.getRoleId()}"/>
-            </td>
-            <td colspan="2">
-              <i18n:text><jx:out value="${credential.getMethod()}"/></i18n:text>
-            </td>
-          </tr>
-        </jx:forEach>
-        
-        
-        <tr>
-          <td colspan="5" style="border-left: 0; border-right: 0;">
-            <h4 style="margin: 30px 0 0 0;">
-              <i18n:text>Subtree credentials</i18n:text>
-            </h4>
-          </td>
-        </tr>
-        <tr>
-          <th><i18n:text>Type</i18n:text></th>
-          <th><i18n:text>ID</i18n:text></th>
-          <th><i18n:text>Role</i18n:text></th>
-          <th><i18n:text>Method</i18n:text></th>
-          <th>&#160;
-          </th>
-        </tr>
-        <jx:forEach var="credential" varStatus="status"
-          items="${usecase.getParameter('subCredentials')}">
-          <form method="post" id="form-deleteSubCredential">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="submit" value="Submit"/>
-            <tr>
-              <td>
-                <i18n:text><jx:out value="${credential.getType()}"/></i18n:text>
-              </td>
-              <td>
-                <input type="hidden" name="${credential.getType()}" value="${credential.getAccreditableId()}"/>
-                <jx:out value="${credential.getAccreditableId()}"/>
-              </td>
-              <td>
-                <input type="hidden" name="role" value="${credential.getRoleId()}"/>
-                <jx:out value="${credential.getRoleId()}"/>
-              </td>
-              <td>
-                <input type="hidden" name="method" value="${credential.getMethod()}"/>
-                <i18n:text><jx:out value="${credential.getMethod()}"/></i18n:text>
-              </td>
-              <td>
-                <input type="submit"
-                  name="deleteCredential_${credential.getType()}"
-                  i18n:attr="value" value="Delete"/>
-                <jx:if test="${status.count>1}">
-                  <input type="submit"
-                    name="upCredential_${credential.getType()}"
-                    i18n:attr="value" value="Move Up"/>
-                </jx:if>
-                <jx:if test="${!status.last}">
-                  <input type="submit"
-                    name="downCredential_${credential.getType()}"
-                    i18n:attr="value" value="Move Down"/>
-                </jx:if>
-              </td>
-            </tr>
-          </form>
-        </jx:forEach>
-        
-        <tr>
-          <td colspan="5" style="border-left: 0; border-right: 0; border-top: 0px;">
-            <h4 style="margin: 30px 0 0 0;">
-              <i18n:text>New subtree credential</i18n:text>
-            </h4>
-          </td>
-        </tr>
-        <tr>
-          <th><i18n:text>Type</i18n:text></th>
-          <th><i18n:text>ID</i18n:text></th>
-          <th><i18n:text>Role</i18n:text></th>
-          <th><i18n:text>Method</i18n:text></th>
-          <th>&#160;
-          </th>
-        </tr>
-        <tr>
-          
-          <form method="post" id="form-addCredential_user">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="submit" value="Submit"/>
-            <td>
-              <i18n:text>user</i18n:text>
-            </td>
-            <td>
-              <select name="user" class="lenya-form-element-verynarrow">
-                <jx:forEach var="user" items="${usecase.getParameter('users')}">
-                  <option value="${user}">
-                    <jx:out value="${user}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="role" class="lenya-form-element-verynarrow">
-                <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                  <option value="${role}">
-                    <jx:out value="${role}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="method" class="lenya-form-element-verynarrow">
-                <option value="deny"><i18n:text>deny</i18n:text></option>
-                <option value="grant"><i18n:text>grant</i18n:text></option>
-              </select>
-            </td>
-            <td>
-              <input i18n:attr="value" type="submit" name="addCredential_user"
-                value="Add"/>
-            </td>
-          </form>
-          
-        </tr>
-        <tr>
-          <form method="post" id="form-addCredential_group">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="submit" value="Submit"/>
-            <td>
-              <i18n:text>group</i18n:text>
-            </td>
-            <td>
-              <select name="group" class="lenya-form-element-verynarrow">
-                <jx:forEach var="group" items="${usecase.getParameter('groups')}">
-                  <option value="${group}">
-                    <jx:out value="${group}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="role" class="lenya-form-element-verynarrow">
-                <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                  <option value="${role}">
-                    <jx:out value="${role}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="method" class="lenya-form-element-verynarrow">
-                <option value="deny"><i18n:text>deny</i18n:text></option>
-                <option value="grant"><i18n:text>grant</i18n:text></option>
-              </select>
-            </td>
-            <td>
-              <input i18n:attr="value" type="submit" name="addCredential_group"
-                value="Add"/>
-            </td>
-          </form>
-        </tr>
-        
-        <tr>
-          <form method="post" id="form-addCredential_ipRange">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="submit" value="Submit"/>
-            <td>
-              <i18n:text>IP Range</i18n:text>
-            </td>
-            <td>
-              <select name="ipRange" class="lenya-form-element-verynarrow">
-                <jx:forEach var="ipRange" items="${usecase.getParameter('ipRanges')}">
-                  <option value="${ipRange}">
-                    <jx:out value="${ipRange}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="role" class="lenya-form-element-verynarrow">
-                <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                  <option value="${role}">
-                    <jx:out value="${role}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="method" class="lenya-form-element-verynarrow">
-                <option value="deny"><i18n:text>deny</i18n:text></option>
-                <option value="grant"><i18n:text>grant</i18n:text></option>
-              </select>
-            </td>
-            <td>
-              <input i18n:attr="value" type="submit" name="addCredential_ipRange"
-                value="Add"/>
-            </td>
-          </form>
-        </tr>
-        
-        <tr>
-          <form method="post" id="form-addCredential_world">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="submit" value="Submit"/>
-            <td>
-              <i18n:text>world</i18n:text>
-            </td>
-            <td/>
-            <td>
-              <select name="role" class="lenya-form-element-verynarrow">
-                <jx:forEach var="role" items="${usecase.getParameter('roles')}">
-                  <option value="${role}">
-                    <jx:out value="${role}"/>
-                  </option>
-                </jx:forEach>
-              </select>
-            </td>
-            <td>
-              <select name="method" class="lenya-form-element-verynarrow">
-                <option value="deny"><i18n:text>deny</i18n:text></option>
-                <option value="grant"><i18n:text>grant</i18n:text></option>
-              </select>
-            </td>
-            <td>
-              <input i18n:attr="value" type="submit" name="addCredential_world"
-                value="Add"/>
-            </td>
-          </form>
-        </tr>
-        
-      </table>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ssl-form.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ssl-form.jx
deleted file mode 100644
index 2d1fb95..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/ac/ssl-form.jx
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  name="">
-<jx:set var="area" value="${usecase.getParameter('document').getArea()}"/>
-<form method="POST" name="form_ssl_${area}" id="form_ssl_${area}">
-  <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-  <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-  <input type="hidden" name="lenya.submit" value="ok"/>
-  <input type="hidden" name="change_ssl" value="true"/>
-  <jx:set var="ssl" value="${usecase.getParameter('ssl')}"/>
-  <jx:set var="ancestorSsl" value="${usecase.getParameter('ancestorSsl')}"/>
-  <jx:choose>
-    <jx:when test="${ssl.equals('true') || ancestorSsl.equals('true')}">
-      <jx:choose>
-        <jx:when test="${ancestorSsl.equals('true')}">
-          <input type="checkbox" name="ssl" checked="checked" disabled="disabled">
-            <i18n:text>SSL Encryption</i18n:text>
-          </input>
-        </jx:when>
-        <jx:otherwise>
-          <input type="checkbox" name="ssl" onchange="document.forms.form_ssl_${area}.submit()" checked="checked">
-            <i18n:text>SSL Encryption</i18n:text>
-          </input>
-        </jx:otherwise>
-      </jx:choose>
-    </jx:when>
-    <jx:otherwise>
-      <jx:choose>
-        <jx:when test="${ancestorSsl.equals('true')}">
-          <input type="checkbox" name="ssl" disabled="disabled">
-            <i18n:text>SSL Encryption</i18n:text>
-          </input>
-        </jx:when>
-        <jx:otherwise>
-          <input type="checkbox" name="ssl" onchange="document.forms.form_ssl_${area}.submit()">
-            <i18n:text>SSL Encryption</i18n:text>
-          </input>
-        </jx:otherwise>
-      </jx:choose>
-    </jx:otherwise>
-  </jx:choose>
-</form>
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/acArchive.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/acArchive.jx
deleted file mode 100644
index 421d63b..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/acArchive.jx
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/ac/ac.jx"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"/>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/acAuthoring.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/acAuthoring.jx
deleted file mode 100644
index 421d63b..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/acAuthoring.jx
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/ac/ac.jx"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"/>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/acLive.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/acLive.jx
deleted file mode 100644
index 421d63b..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/acLive.jx
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/ac/ac.jx"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"/>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/acTrash.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/acTrash.jx
deleted file mode 100644
index 421d63b..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/acTrash.jx
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ac.jx 156161 2005-03-04 15:23:21Z andreas $ -->
-<jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/ac/ac.jx"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"/>
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/assets.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/assets.jx
deleted file mode 100644
index 9b3ab4f..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/assets.jx
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      
-      <h1><i18n:text>Assets</i18n:text></h1>
-
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('resourceDocuments').size() == 0}">
-          <i18n:text>no-assets</i18n:text>
-        </jx:when>
-        <jx:otherwise>
-          <table class="lenya-table-list-noborder">
-            <tr>
-              <th><i18n:text>Title</i18n:text></th>
-              <th><i18n:text>Preview</i18n:text></th>
-              <th><i18n:text>File Size</i18n:text></th>
-              <th><i18n:text>Dimension (w x h)</i18n:text></th>
-              <th><i18n:text>Creation Date</i18n:text></th>
-            </tr>
-            <jx:forEach var="doc" items="${usecase.getParameter('resourceDocuments')}">
-              <tr>
-                <jx:set var="title" value="${doc.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/>
-                <td>
-                  <a href="${doc.getCanonicalWebappURL()}"><jx:out value="${title}"/></a>
-                </td>
-                <td>        
-                  <jx:set var="mimeType" value="${doc.getMimeType()}"/>
-                  <jx:if test="${mimeType.startsWith('image/')}">
-                    <jx:set var="extension" value="${doc.getSourceExtension()}"/>
-                    <jx:set var="url" value="${doc.getCanonicalWebappURL()}"/>
-                    <jx:set var="imageUrl" value="${url.replaceFirst('\.html', '\.' + extension)}"/>
-                    <img src="${imageUrl}"
-                      style="height: 32px; vertical-align: middle;"/>&#160;
-                  </jx:if>
-                </td>
-                <td align="right"><jx:out value="${doc.getContentLength() / 1000}"/> kB</td>
-                <td align="right">
-                  <jx:if test="${mimeType.startsWith('image/')}">
-                    <jx:set var="mediaMeta" value="${doc.getMetaData('http://apache.org/lenya/metadata/media/1.0')}"/>
-                    <jx:out value="${mediaMeta.getFirstValue('width')}"/> x <jx:out value="${mediaMeta.getFirstValue('height')}"/>
-                  </jx:if>
-                </td>
-                <td align="right"><jx:out value="${java.text.DateFormat.getDateInstance().format(doc.getLastModified())}"/></td>
-              </tr> 
-            </jx:forEach>
-          </table>
-        </jx:otherwise>
-      </jx:choose>
-      
-     <jx:if test="${usecase.getParameter('document').getArea().equals('authoring')}">
-      <form method="GET" id="form-add_asset" style="margin-top: 20px">
-        <input type="hidden" name="lenya.usecase" value="resource.create"/>
-        <input type="hidden" name="doctype" value="resource"/>
-        <input type="hidden" name="lenya.exitUsecase" value="tab.assets"/>
-        <input type="hidden" name="lenya.exitUri" value="${usecase.getParameter('document').getCanonicalWebappURL()}"/>
-        <input i18n:attr="value" name="submit" type="submit" value="New Asset"/>
-       </form>
-     </jx:if>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx
deleted file mode 100644
index 5f63dbd..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: overview.jx 123960 2005-01-03 12:39:05Z andreas $ -->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  name="">
-  
-  <page:head>
-    <jx:set var="pubId" value="${usecase.getParameter('document').getPublication().getId()}"/>
-    <jx:set var="area" value="${usecase.getParameter('document').getArea()}"/>
-    <jx:set var="language" value="${usecase.getParameter('document').getLanguage()}"/>
-    <script src="/modules/sitetree/javascript/tree.js"/>
-    <script src="/modules/sitetree/javascript/lenyatree.js"/>
-    <script src="/modules/sitetree/javascript/navtree.js"/>
-    <script src="/modules/sitemanagement/javascript/lenyaTabs.js"/>
-  </page:head>
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx
deleted file mode 100644
index 06a0ad3..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  
-  <jx:set var="count" value="${usecase.getParameter('numbers').size()}"/>
-  <page:body onload="lenyaInitTabs(${count})">
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      <h1 id="form-meta" style="width: 600px"><i18n:text>Meta Data</i18n:text></h1>
-      <form>
-        
-        <jx:set var="num2namespace" value="${usecase.getParameter('namespaces')}"/>
-        
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-        
-        <jx:set var="count" value="${usecase.getParameter('numbers').size()}"/>
-        <jx:forEach var="num" items="${usecase.getParameter('numbers')}">
-          <div class="lenyaTabTitle" id="lenyaTabTitle${num}" onclick="lenyaToggleTab(${count}, ${num})">
-            <!--<i18n:text>Namespace</i18n:text>:-->
-            <a><i18n:text><jx:out value="${num2namespace.get(num)}"/></i18n:text></a>
-          </div>
-        </jx:forEach>
-        <jx:forEach var="num" items="${usecase.getParameter('numbers')}">
-            <div class="lenyaTabBody" id="lenyaTabBody${num}">
-              <table class="lenya-table-list-noborder">
-                <jx:forEach var="key" items="${usecase.getParameter('keys')}">
-                  <jx:if test="${key.startsWith('ns' + num + '.')}">
-                    <tr>
-                      <td class="lenya-entry-caption">
-                        <label for="${key}"><i18n:text><jx:out value="${key.substring(key.indexOf('.')).substring(1)}"/></i18n:text>:</label>
-                      </td>
-                      <td>
-                        <jx:set var="wrapper" value="${usecase.getParameter(key)}"/>
-                        <jx:set var="values" value="${wrapper.getValues()}"/>
-                        <jx:choose>
-                          <jx:when test="${wrapper.getElement().isEditable()}">
-                            <jx:choose>
-                              <jx:when test="${values.size() &gt; 0}">
-                                <input type="text" id="${key}" name="${key}" class="lenya-form-element" value="${values[0]}"/>
-                              </jx:when>
-                              <jx:otherwise>
-                                <input type="text" id="${key}" name="${key}" class="lenya-form-element" value=""/>
-                              </jx:otherwise>
-                            </jx:choose>
-                          </jx:when>
-                          <jx:otherwise>
-                            <jx:set var="value" value="${wrapper.getValue()}"/>
-                            <jx:choose>
-                              <jx:when test="${values.size() == 0}"><em><i18n:text>value-not-set</i18n:text></em></jx:when>
-                              <jx:otherwise>
-                                <jx:forEach var="value" items="${values}">
-                                  ${value}<br/>
-                                </jx:forEach>
-                              </jx:otherwise>
-                            </jx:choose>
-                          </jx:otherwise>
-                        </jx:choose>
-                      </td>
-                    </tr>
-                  </jx:if>
-                </jx:forEach>
-              </table>
-            </div>
-        </jx:forEach>
-
-        <jx:choose>
-          <jx:when
-            test="${usecase.getParameter('document').getArea().equals('authoring') &amp;&amp; ! usecase.hasErrors()}">
-            <input i18n:attr="value" name="submit" type="submit" value="Save"/>
-          </jx:when>
-          <jx:otherwise>
-            <input i18n:attr="value" name="submit" type="submit" disabled="disabled" value="Save"/>
-          </jx:otherwise>
-        </jx:choose>
-        
-        <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/overview.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/overview.jx
deleted file mode 100644
index 224d397..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/overview.jx
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      <h1><i18n:text>Overview</i18n:text></h1>
-      <jx:choose>
-        <jx:when test="${not(empty(usecase.getParameter('title')))}">
-          <jx:set var="document" value="${usecase.getParameter('document')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Title</i18n:text>:</td>
-              <td>
-                <jx:out value="${usecase.getParameter('title')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
-              <td>
-                <jx:out value="${usecase.getParameter('description')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Workflow State</i18n:text>:</td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${not(empty(usecase.getParameter('state')))}">
-                    <i18n:text><jx:out value="${usecase.getParameter('state')}"/></i18n:text>
-                  </jx:when>
-                  <jx:otherwise><span style="color: #999999;"><i18n:text>[no workflow]</i18n:text></span></jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Live</i18n:text>:</td>
-              <td>
-                <i18n:text><jx:out value="${usecase.getParameter('isLive')}"/></i18n:text>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Available Languages</i18n:text>:</td>
-              <td>
-                <jx:forEach var="language" items="${usecase.getParameter('languages')}">
-                  <jx:choose>
-                    <jx:when test="${language.equals(document.getLanguage())}">
-                      <jx:out value="${language}"/>
-                    </jx:when>
-                    <jx:otherwise>
-                      <jx:set var="translation" value="${document.getTranslation(language)}"/>
-                      <a href="${translation.getCanonicalWebappURL()}?lenya.usecase=tab.overview">
-                        <jx:out value="${language}"/></a>
-                    </jx:otherwise>
-                  </jx:choose>
-                </jx:forEach>
-              </td>
-            </tr>
-            <jx:set var="docLanguages" value="${document.getLanguages().size()}"/>
-            <jx:set var="pubLanguages" value="${document.getPublication().getLanguages().size()}"/>
-            <jx:if test="${docLanguages lt pubLanguages}">
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>missing-languages</i18n:text>:</td>
-                <td>
-                  <jx:forEach var="language" items="${document.getPublication().getLanguages()}">
-                    <jx:if test="${!document.existsTranslation(language)}">
-                      <a href="?lenya.usecase=sitemanagement.createLanguage&amp;lenya.exitUsecase=tab.overview&amp;language=${language}">
-                        <jx:out value="${language}"/></a>
-                    </jx:if>
-                  </jx:forEach>
-                </td>
-              </tr>
-            </jx:if>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Last modified</i18n:text>:</td>
-              <td>
-                <jx:out value="${usecase.getParameter('lastmodified')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>UUID</i18n:text>:</td>
-              <td>
-                <jx:out value="${document.getUUID()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Path</i18n:text>:</td>
-              <td>
-                <jx:out value="${document.getPath()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Resource Type</i18n:text>:</td>
-              <td>
-                <i18n:text>resourceType-<jx:out value="${document.getResourceType().getName()}"/></i18n:text>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Mime Type</i18n:text>:</td>
-              <td>
-                <jx:out value="${document.getMimeType()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Document Size</i18n:text>:</td>
-              <td>
-                <jx:out value="${document.getContentLength()}"/> B
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Visible in Navigation</i18n:text>:</td>
-              <td>
-                <i18n:text><jx:out value="${usecase.getParameter('visibleInNav')}"/></i18n:text>
-              </td>
-            </tr>
-          </table>
-        </jx:when>
-        <jx:when test="${usecase.getParameter('languageexists').equals('false')}">
-          <i18n:text>This document is not available in this language.</i18n:text><br/><br/>
-          <i18n:text>Available Languages</i18n:text>: <jx:out value="${usecase.getParameter('languages')}"/>
-        </jx:when>
-        <jx:otherwise><i18n:text>No overview available.</i18n:text></jx:otherwise>
-      </jx:choose>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/revisions.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/revisions.jx
deleted file mode 100644
index 21bb6e4..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/revisions.jx
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-
-  <!-- if the usecase cannot be invoked, find the cause: -->
-  <jx:choose>
-    <jx:when test="${usecase.getParameter('canRollback') == 'true'}">
-      <jx:set var="rollbackMessage" value="rollback-ok"/>
-    </jx:when>
-    <jx:otherwise>
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('workflowState') == 'review'}">
-          <jx:set var="rollbackMessage" value="no-rollback-in-review"/>
-        </jx:when>
-        <jx:otherwise>
-          <jx:set var="rollbackMessage" value="no-rollback-no-privileges"/>
-        </jx:otherwise>
-      </jx:choose>
-    </jx:otherwise>
-  </jx:choose>
-
-  <page:head>
-    <script type="text/javascript">
-
-  function showRevision(revision) {
-    window.open(
-        '?lenya.revision=' + revision,
-        'Lenya_ViewRevision',
-        'menubar=no,addressbar=no,toolbar=no,statusbar=no'
-    );
-  }
-
-  function rollback(toRevision) {
-    window.location.href="?lenya.usecase=sitemanagement.rollback"
-        + String.fromCharCode(38)  // an &amp; does not work, since it's not being decoded
-        + "rollbackRevision=" + toRevision;
-  }
-
-    </script>
-  </page:head>
-  <page:body>
-
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      <h1><i18n:text>Revisions</i18n:text></h1>
-  
-      <form name="revisions">
-  
-        <table class="lenya-table-list-noborder">
-
-          <tr>
-            <th><i18n:text>No.</i18n:text></th>
-            <th><i18n:text>Time</i18n:text></th>
-            <th><i18n:text>Editor</i18n:text></th>
-            <th><i18n:text>Actions</i18n:text></th>
-          </tr>
-  
-          <jx:set var="count" value="${usecase.getParameter('revisions').size()}"/>
-          <jx:set var="isFirstItem" value="true"/>
-          <jx:forEach var="revision" items="${usecase.getParameter('revisions')}" begin="0">
-            <tr>
-              <td align="right">
-                <input 
-                  type="button" 
-                  i18n:attr="title" 
-                  onclick="showRevision(${revision.getNumber()});"
-                  title="view-revision-in-new-window"
-                  value="${revision.getNumber()}"
-                />
-              </td>
-              <td align="right"><i18n:date-time src-pattern="yyyy-MM-dd HH:mm:ss"><jx:formatDate value="${revision.getTime()}" pattern="yyyy-MM-dd HH:mm:ss"/></i18n:date-time></td>
-              <td><jx:out value="${revision.getUserId()}"/></td>
-              <td>
-                <input 
-                  type="button" 
-                  i18n:attr="value title" 
-                  onclick="showRevision(${revision.getNumber()});"
-                  title="view-revision-in-new-window"
-                  value="view-revision"
-                />
-                <jx:choose>
-                  <jx:when test="${isFirstItem == 'true'}">
-                    <jx:set var="isFirstItem" value="false"/>
-                    <i18n:text key="is-current-version"/>
-                  </jx:when>
-                  <jx:when test="${usecase.getParameter('canRollback') == 'true'}">
-                    &#160;
-                    <input type="button" i18n:attr="value title" title="${rollbackMessage}" value="rollback" 
-                      onclick="void rollback(${revision.getNumber()});" 
-                    />
-                  </jx:when>
-                  <jx:otherwise>
-                    <input type="button" i18n:attr="value title" title="${rollbackMessage}" disabled="disabled" value="rollback"/>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-          </jx:forEach>
-  
-          <jx:if test="${usecase.getParameter('canRollback') != 'true'}">
-            <tr>
-              <td/>
-              <td colspan="3">
-                <strong><i18n:text key="${rollbackMessage}"/></strong>
-              </td>
-            </tr>
-          </jx:if>
-
-        </table>
-  
-      </form>
-  
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/scheduler.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/scheduler.jx
deleted file mode 100644
index fa5d378..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/scheduler.jx
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      
-      <h1><i18n:text>Scheduler</i18n:text></h1>
-      
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('jobs').size() == 0}">
-          <i18n:text>no-jobs-scheduled</i18n:text>
-        </jx:when>
-        <jx:otherwise>
-          <table class="lenya-table-list-noborder">
-            <tr>
-              <th><i18n:text>Job</i18n:text></th>
-              <th><i18n:text>User</i18n:text></th>
-              <th><i18n:text>Time</i18n:text></th>
-            </tr>
-            <jx:forEach var="job" items="${usecase.getParameter('jobs')}">
-              <!-- see UsecaseSchedulerImpl for job name encoding -->
-              <jx:set var="name" value="${job.getName()}"/>
-              <jx:set var="parts" value="${name.split(':')}"/>
-              <jx:set var="usecaseName" value="${parts[0]}"/>
-              <jx:set var="userId" value="${parts[1]}"/>
-              <tr>
-                <td>
-                  <jx:out value="${usecaseName}"/>
-                </td>
-                <td>
-                  <a href="${usecase.getSourceURL()}?lenya.usecase=admin.user&amp;userId=${userId}"><jx:out value="${userId}"/></a>
-                </td>
-                <td>
-                  <i18n:date-time src-pattern="yyyy-MM-dd HH:mm:ss Z">
-                    <jx:formatDate pattern="yyyy-MM-dd HH:mm:ss Z" value="${job.getNextTime()}"/>
-                  </i18n:date-time>
-                </td>
-              </tr>
-            </jx:forEach>
-          </table>
-        </jx:otherwise>
-      </jx:choose>
-      
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/sitetree.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/sitetree.jx
deleted file mode 100644
index d6bc6ef..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/sitetree.jx
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: overview.jx 123960 2005-01-03 12:39:05Z andreas $ -->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:proxy="http://apache.org/lenya/proxy/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  name="">
-  
-  <jx:set var="url" value="${usecase.getParameter('private.sourceUrl')}"/>
-  <jx:set var="steps" value="${url.split('/')}"/>
-  <jx:set var="area" value="${steps[2]}"/>
-  <jx:set var="publicationId" value="${steps[1]}"/>
-  <jx:set var="factory" value="${usecase.getParameter('private.factory')}"/>
-  <jx:set var="publication" value="${factory.getPublication(publicationId)}"/>
-  
-  <jx:set var="document" value="${usecase.getParameter('document')}"/>
-  <jx:set var="docExists" value="${java.lang.Boolean.valueOf(document.getClass().getName().equals('org.apache.lenya.cms.publication.DocumentImpl'))}"/>
-  
-  <div id="lenya-info-treecanvas">
-    <div class="lenya-tabs">
-      <jx:forEach var="language" items="${publication.getLanguages()}">
-        <jx:choose>
-          <jx:when test="${!docExists.booleanValue() &amp;&amp; url.endsWith('_' + language)}">
-            <a id="${language}" class="lenya-tablink-active"><jx:out value="${language}"/></a>
-          </jx:when>
-          <jx:when test="${!docExists.booleanValue() &amp;&amp; url.endsWith('/') &amp;&amp; language.equals(publication.getDefaultLanguage())}">
-            <a id="${language}" class="lenya-tablink-active"><jx:out value="${language}"/></a>
-          </jx:when>
-          <jx:when test="${document != null &amp;&amp; document.existsTranslation(language)}">
-            <jx:set var="languageVersion" value="${document.getFactory().getLanguageVersion(document, language)}"/>
-            <jx:set var="languageUrl" value="${'/' + publicationId + '/' + area + languageVersion.getCanonicalDocumentURL()}"/>
-            <jx:choose>
-              <jx:when test="${language.equals(document.getLanguage())}">
-                <a id="${language}" class="lenya-tablink-active" href="${languageUrl}?lenya.usecase=${usecase.getName()}"><jx:out value="${language}"/></a>
-              </jx:when>
-              <jx:otherwise>
-                <a id="${language}" class="lenya-tablink" href="${languageUrl}?lenya.usecase=${usecase.getName()}"><jx:out value="${language}"/></a>
-              </jx:otherwise>
-            </jx:choose>
-          </jx:when>
-          <jx:otherwise>
-            <a id="${language}" class="lenya-tablink" title="This language version doesn't exist.">
-              <jx:out value="${language}"/>
-            </a>
-          </jx:otherwise>
-        </jx:choose>
-      </jx:forEach>
-    </div>
-    
-    <div id="lenya-info-tree">
-      <div id="tree">
-        <script type="text/javascript">
-          WEBAPP_BASE_PATH = '<proxy:url href="/"/>';
-          AREA_BASE_PATH = '<proxy:url href="/${publicationId}/${area}"/>';
-          
-          PUBLICATION_ID = '<jx:out value="${publicationId}"/>';
-          <jx:choose>
-            <jx:when test="${docExists.booleanValue()}">
-              CHOSEN_LANGUAGE = '<jx:out value="${document.getLanguage()}"/>';
-            </jx:when>
-            <jx:otherwise>
-              CHOSEN_LANGUAGE = '<jx:out value="${publication.getDefaultLanguage()}"/>';
-            </jx:otherwise>
-          </jx:choose>
-          DEFAULT_LANGUAGE = '<jx:out value="${publication.getDefaultLanguage()}"/>';
-          IMAGE_PATH = '<proxy:url href="/lenya/images/tree/"/>';
-          
-          
-          <jx:set var="clipboard" value="${request.getSession().getAttribute('org.apache.lenya.cms.site.usecases.Clipboard')}"/>
-          <jx:choose>
-            <jx:when test="${clipboard != null &amp;&amp; clipboard.getMethod() == Packages.org.apache.lenya.cms.site.usecases.Clipboard.METHOD_CUT}">
-              <jx:set var="cutDocument" value="${clipboard.getDocument(publication.getFactory(), publication)}"/>
-              CUT_DOCUMENT_ID = '<jx:out value="${cutDocument.getPath()}"/>';
-            </jx:when>
-            <jx:otherwise>
-              CUT_DOCUMENT_ID = '';
-            </jx:otherwise>
-          </jx:choose>
-          
-          ALL_AREAS = 'authoring,trash,archive';
-          PIPELINE_PATH = '/sitetree-fragment.xml';
-          SHOW_LOADING_HINT = true;
-          SHOW_ICONS = true;
-          
-          <jx:set var="pubName" value="${publication.getName()}"/>
-          var pubName = '<i18n:translate><i18n:text>... Publication</i18n:text><i18n:param><jx:out value="${pubName}"/></i18n:param></i18n:translate>';
-          
-          var tree = new NavTree(document, document.getElementById('tree'));
-          
-          tree.init(PUBLICATION_ID, pubName);
-          tree.render();
-          <jx:choose>
-            <jx:when test="${docExists.booleanValue()}">
-              tree.loadInitialTree('<jx:out value="${area}"/>', '<jx:out value="${document.getPath()}"/>');
-            </jx:when>
-            <jx:otherwise>
-              tree.loadInitialTree('<jx:out value="${area}"/>', '');
-            </jx:otherwise>
-          </jx:choose>
-        </script>
-      </div>
-    </div>
-  </div>
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules-core/sitemanagement/usecases/tab/workflow.jx b/trunk/src/modules-core/sitemanagement/usecases/tab/workflow.jx
deleted file mode 100644
index 4165c52..0000000
--- a/trunk/src/modules-core/sitemanagement/usecases/tab/workflow.jx
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      <h1><i18n:text>Workflow</i18n:text></h1>
-      <!--
-      <table class="lenya-table-list-noborder">
-        <tr><th><i18n:text>Name</i18n:text></th><th><i18n:text>Value</i18n:text></th></tr>
-        <jx:forEach var="item" items="${usecase.getParameter('variables')}">
-          <tr>
-            <td>
-              <jx:out value="${item.name}"/>
-            </td>
-            <td>
-              <jx:out value="${item.value}"/>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-      -->
-      <table class="lenya-table-list-noborder">
-      <tr>
-          <th><i18n:text>Date</i18n:text></th>
-          <th><i18n:text>Event</i18n:text></th>
-          <th><i18n:text>State</i18n:text></th>
-          <th><i18n:text>User</i18n:text></th>
-          <th><i18n:text>IP Address</i18n:text></th>
-        </tr>
-        <jx:forEach var="item" items="${usecase.getParameter('versions')}" varStatus="status">
-          <tr>
-            <td><jx:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${item.getDate()}"/></td>
-            <td><i18n:text><jx:out value="${item.event}"/></i18n:text></td>
-            <td><i18n:text><jx:out value="${item.state}"/></i18n:text></td>
-            <td>
-              <span style="white-space: nobreak">
-                <jx:out value="${item.userId}"/>
-              </span>
-            </td>
-            <td>
-              <jx:out value="${item.iPAddress}"/>
-            </td>
-          </tr>
-        </jx:forEach>
-      </table>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/templating/config/cocoon-xconf/template-manager.xconf b/trunk/src/modules-core/templating/config/cocoon-xconf/template-manager.xconf
deleted file mode 100644
index 7d80353..0000000
--- a/trunk/src/modules-core/templating/config/cocoon-xconf/template-manager.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon"

-    unless="/cocoon/component[@role = 'org.apache.lenya.cms.publication.templating.PublicationTemplateManager']">

-    <component logger="lenya.publication.templatemanager"

-      class="org.apache.lenya.cms.publication.templating.PublicationTemplateManagerImpl"

-      role="org.apache.lenya.cms.publication.templating.PublicationTemplateManager"/>

-  </xconf>

diff --git a/trunk/src/modules-core/templating/config/cocoon-xconf/usecase-createPulicationFromTemplate.xconf b/trunk/src/modules-core/templating/config/cocoon-xconf/usecase-createPulicationFromTemplate.xconf
deleted file mode 100644
index f1c351b..0000000
--- a/trunk/src/modules-core/templating/config/cocoon-xconf/usecase-createPulicationFromTemplate.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'templating.createPublicationFromTemplate']">

-    <component-instance name="templating.createPublicationFromTemplate" logger="lenya.publication"

-      class="org.apache.lenya.cms.publication.usecases.CreatePublicationFromTemplate">

-      <view uri="modules/templating/usecases/createPublicationFromTemplate.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/templating/config/module.xml b/trunk/src/modules-core/templating/config/module.xml
deleted file mode 100644
index 00ad022..0000000
--- a/trunk/src/modules-core/templating/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.templating</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Publication templating implementation</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Publication templating implementation</description>
-</module>
diff --git a/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java b/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java
deleted file mode 100644
index 21b2773..0000000
--- a/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.templating;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-
-/**
- * Manager for publication templates.
- * 
- * @version $Id: PublicationTemplateManagerImpl.java 474729 2006-11-14 11:07:44Z
- *          andreas $
- */
-public class PublicationTemplateManagerImpl extends AbstractLogEnabled implements
-        PublicationTemplateManager, Serviceable {
-
-    /**
-     * Ctor.
-     */
-    public PublicationTemplateManagerImpl() {
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.templating.PublicationTemplateManager#visit(org.apache.lenya.cms.publication.Publication,
-     *      java.lang.String,
-     *      org.apache.lenya.cms.publication.templating.SourceVisitor)
-     */
-    public void visit(Publication publication, String path, SourceVisitor visitor) {
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            String[] baseUris = getBaseURIs(publication);
-            for (int i = 0; i < baseUris.length; i++) {
-                String uri = baseUris[i] + "/" + path;
-
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Trying to resolve URI [" + uri + "]");
-                }
-
-                visitor.visit(resolver, uri);
-            }
-
-        } catch (Exception e) {
-            throw new TemplatingException("Visiting path [" + path + "] failed: ", e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    /**
-     * Returns the publication.
-     * @return A publication. protected Publication getPublication1() { return
-     *         this.publication; }
-     */
-
-    /**
-     * Returns the base URIs in traversing order.
-     * @param publication The original publication.
-     * @return An array of strings.
-     */
-    protected String[] getBaseURIs(Publication publication) {
-
-        List uris = new ArrayList();
-
-        Publication[] publications = getPublications(publication);
-        for (int i = 0; i < publications.length; i++) {
-            uris.add(getBaseURI(publications[i]));
-        }
-
-        String coreBaseURI = publication.getServletContext().getAbsolutePath() + "/";
-        uris.add(coreBaseURI);
-
-        return (String[]) uris.toArray(new String[uris.size()]);
-    }
-
-    /**
-     * Returns the base URI for a certain publication.
-     * @param publication The publication.
-     * @return A string.
-     */
-    public static String getBaseURI(Publication publication) {
-        return publication.getDirectory().getAbsolutePath() + "/";
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.templating.PublicationTemplateManager#visit(org.apache.lenya.cms.publication.Publication,
-     *      org.apache.lenya.cms.publication.templating.PublicationVisitor)
-     */
-    public void visit(Publication publication, PublicationVisitor visitor) {
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            Publication[] publications = getPublications(publication);
-            for (int i = 0; i < publications.length; i++) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Visiting publication [" + publications[i] + "]");
-                }
-                visitor.visit(publications[i]);
-            }
-
-        } catch (Exception e) {
-            throw new TemplatingException("Visiting publications failed: ", e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-    }
-
-    /**
-     * Returns the publications in traversing order.
-     * @param publication The original publication.
-     * @return An array of strings.
-     */
-    protected Publication[] getPublications(Publication publication) {
-
-        List publications = new ArrayList();
-
-        publications.add(publication);
-
-        String[] templateIds = publication.getTemplateIds();
-        for (int i = 0; i < templateIds.length; i++) {
-            try {
-                Publication template = publication.getFactory().getPublication(templateIds[i]);
-                Publication[] templateTemplates = getPublications(template);
-                publications.addAll(Arrays.asList(templateTemplates));
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-        return (Publication[]) publications.toArray(new Publication[publications.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.publication.templating.PublicationTemplateManager#getSelectableHint(org.apache.lenya.cms.publication.Publication,
-     *      org.apache.avalon.framework.service.ServiceSelector,
-     *      java.lang.String)
-     */
-    public Object getSelectableHint(Publication publication, ServiceSelector selector,
-            final String originalHint) throws ServiceException {
-        Object selectableHint = null;
-
-        try {
-            ExistingServiceVisitor resolver = new ExistingServiceVisitor(selector, originalHint,
-                    getLogger());
-            visit(publication, resolver);
-            selectableHint = resolver.getSelectableHint();
-            if (selectableHint == null) {
-                selectableHint = originalHint;
-            }
-
-        } catch (Exception e) {
-            String message = "Resolving hint [" + originalHint + "] failed: ";
-            getLogger().error(message, e);
-            throw new RuntimeException(message, e);
-        } 
-        return selectableHint;
-    }
-
-    /**
-     * Searches for a declared service of the form "publicationId/service".
-     */
-    public class ExistingServiceVisitor implements PublicationVisitor {
-
-        /**
-         * Ctor.
-         * @param selector The service selector to use.
-         * @param hint The hint to check.
-         * @param logger The logger.
-         */
-        public ExistingServiceVisitor(ServiceSelector selector, Object hint, Logger logger) {
-            this.selector = selector;
-            this.hint = hint;
-            this.logger = logger;
-        }
-
-        private ServiceSelector selector;
-        private Object hint;
-        private Object selectableHint = null;
-        private Logger logger;
-
-        /**
-         * @see org.apache.lenya.cms.publication.templating.PublicationVisitor#visit(org.apache.lenya.cms.publication.Publication)
-         */
-        public void visit(Publication publication) {
-            String publicationHint = publication.getId() + "/" + this.hint;
-            boolean success = false;
-            if (this.selector.isSelectable(publicationHint)) {
-                this.selectableHint = publicationHint;
-                success = true;
-            }
-            if (this.logger.isDebugEnabled()) {
-                this.logger.debug("Checking hint [" + publicationHint + "]: " + success);
-            }
-        }
-
-        /**
-         * @return The publication hint that could be selected or
-         *         <code>null</code> if no hint could be selected.
-         */
-        public Object getSelectableHint() {
-            return this.selectableHint;
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java b/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java
deleted file mode 100644
index e221d3a..0000000
--- a/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication.usecases;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.templating.Instantiator;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Create a new publication based on a template publication.
- * 
- * @version $Id$
- */
-public class CreatePublicationFromTemplate extends AbstractUsecase {
-
-    protected static final String AVAILABLE_TEMPLATES = "availableTemplates";
-    protected static final String PUBLICATION_ID = "publicationId";
-    protected static final String PUBLICATION_NAME = "publicationName";
-    protected static final String TEMPLATE = "template";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Publication[] pubs = getDocumentFactory().getPublications();
-        List templates = new ArrayList();
-        for (int i = 0; i < pubs.length; i++) {
-            if (pubs[i].getInstantiatorHint() != null) {
-                templates.add(pubs[i].getId());
-            }
-        }
-        Collections.sort(templates);
-        setParameter(AVAILABLE_TEMPLATES, templates);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        String publicationId = getParameterAsString(PUBLICATION_ID).trim();
-
-        if (!PublicationUtil.isValidPublicationID(publicationId)) {
-            addErrorMessage("Please enter a valid publication ID!");
-        } else {
-            if (getDocumentFactory().existsPublication(publicationId)) {
-                addErrorMessage("A publication with this ID already exists.");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String templateId = getParameterAsString(TEMPLATE);
-
-        ServiceSelector selector = null;
-        Instantiator instantiator = null;
-
-        try {
-
-            Publication template = getDocumentFactory().getPublication(templateId);
-            String name = getParameterAsString(PUBLICATION_NAME);
-
-            selector = (ServiceSelector) this.manager.lookup(Instantiator.ROLE + "Selector");
-            instantiator = (Instantiator) selector.select(template.getInstantiatorHint());
-
-            instantiator.instantiate(template, getParameterAsString(PUBLICATION_ID), name);
-
-        } finally {
-            if (selector != null) {
-                if (instantiator != null) {
-                    selector.release(instantiator);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/templating/usecases/createPublicationFromTemplate.jx b/trunk/src/modules-core/templating/usecases/createPublicationFromTemplate.jx
deleted file mode 100644
index 79d1c54..0000000
--- a/trunk/src/modules-core/templating/usecases/createPublicationFromTemplate.jx
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: renameLabel.jx 123364 2004-12-26 16:11:27Z gregor $ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Create Publication from Template</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Create Publication from Template</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="get" action="" id="form-create_pub_from_template">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="publicationId"><i18n:text>Publication ID</i18n:text>:</label></td>
-              <td><input type="text" class="lenya-form-element" name="publicationId" value="${usecase.getParameter('publicationId')}"/></td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="publicationName"><i18n:text>Publication Name</i18n:text>:</label></td>
-              <td><input type="text" class="lenya-form-element" name="publicationName" value="${usecase.getParameter('publicationName')}"/></td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="template"><i18n:text>Template</i18n:text>:</label></td>
-              <td>
-                <select name="template" class="lenya-form-element">
-                  <jx:forEach var="template" items="${usecase.getParameter('availableTemplates')}">
-                    <jx:choose>
-                      <jx:when test="${template.equals(usecase.getParameter('template'))}">
-                        <option value="${template}" selected="selected"><jx:out value="${template}"/></option>
-                      </jx:when>
-                      <jx:otherwise>
-                        <option value="${template}"><jx:out value="${template}"/></option>
-                      </jx:otherwise>
-                    </jx:choose>
-                  </jx:forEach>
-                </select>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Create"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/gui-manager.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/gui-manager.xconf
deleted file mode 100644
index e6e0ad9..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/gui-manager.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon" unless="/cocoon/gui-manager">

-    <gui-manager/>

-  </xconf>

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/test-usecase-invoker.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/test-usecase-invoker.xconf
deleted file mode 100644
index 628ae54..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/test-usecase-invoker.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon"

-    unless="/cocoon/component[@role = 'org.apache.lenya.cms.usecase.impl.TestUsecaseInvoker']">

-    <component logger="lenya.usecase.invoker"

-      class="org.apache.lenya.cms.usecase.impl.TestUsecaseInvoker"

-      role="org.apache.lenya.cms.usecase.impl.TestUsecaseInvoker"/>

-  </xconf>

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecase-authorizer.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecase-authorizer.xconf
deleted file mode 100644
index f7e913d..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecase-authorizer.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-
-  <xconf xpath="/cocoon/authorizers" unless="/cocoon/authorizers/component-instance[@name = 'usecase']">
-    <component-instance name="usecase"

-      class="org.apache.lenya.cms.ac.usecase.impl.UsecaseAuthorizerImpl"

-      logger="lenya.ac.authorizer.usecase"/>
-  </xconf>

-  

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasecronjob.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasecronjob.xconf
deleted file mode 100644
index 14cd8f8..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasecronjob.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.cocoon.components.cron.CronJob/usecase']">

-    <component role="org.apache.cocoon.components.cron.CronJob/usecase"

-      class="org.apache.lenya.cms.usecase.scheduling.impl.UsecaseCronJob"

-      logger="cron.usecase"/>

-    

-  </xconf>

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseinvoker.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseinvoker.xconf
deleted file mode 100644
index 4f172f2..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseinvoker.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.usecase.UsecaseInvoker']">

-    <component
-      role="org.apache.lenya.cms.usecase.UsecaseInvoker"
-      class="org.apache.lenya.cms.usecase.impl.UsecaseInvokerImpl"

-      logger="lenya.usecase"/>

-  </xconf>

-  

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasemodule.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasemodule.xconf
deleted file mode 100644
index 7007dfe..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasemodule.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'usecase']">
-
-  <component-instance logger="core.modules.input.usecase" name="usecase"
-    class="org.apache.lenya.cms.usecase.cocoon.UsecaseModule"/>
-  
-</xconf>
diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseresolver.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseresolver.xconf
deleted file mode 100644
index 2c64a78..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecaseresolver.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.usecase.UsecaseResolver']">

-    <component
-      role="org.apache.lenya.cms.usecase.UsecaseResolver"
-      class="org.apache.lenya.cms.usecase.impl.UsecaseResolverImpl"

-      logger="lenya.usecase"/>

-  </xconf>

-  

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecases.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecases.xconf
deleted file mode 100644
index d6325e6..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecases.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon" unless="/cocoon/usecases">

-    <usecases/>

-  </xconf>

diff --git a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasescheduler.xconf b/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasescheduler.xconf
deleted file mode 100644
index 043f9e7..0000000
--- a/trunk/src/modules-core/usecase/config/cocoon-xconf/usecasescheduler.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler']">

-    <component
-      role="org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler"
-      class="org.apache.lenya.cms.usecase.scheduling.impl.UsecaseSchedulerImpl"

-      logger="lenya.usecase"/>

-  </xconf>

-  

diff --git a/trunk/src/modules-core/usecase/config/module.xml b/trunk/src/modules-core/usecase/config/module.xml
deleted file mode 100644
index 683193e..0000000
--- a/trunk/src/modules-core/usecase/config/module.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.usecase</id>
-  <export package="org.apache.lenya.cms.ac.usecase"/>
-  <export package="org.apache.lenya.cms.usecase"/>
-  <export package="org.apache.lenya.cms.usecase.scheduling"/>
-  <export package="org.apache.lenya.cms.usecase.xml"/>
-  <depends module="org.apache.lenya.modules.ac"/>
-  <depends module="org.apache.lenya.modules.cache"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Usecase framework API</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Usecase framework API</description>
-</module>
diff --git a/trunk/src/modules-core/usecase/config/sitemap/transformers.xmap b/trunk/src/modules-core/usecase/config/sitemap/transformers.xmap
deleted file mode 100644
index 7f42bfe..0000000
--- a/trunk/src/modules-core/usecase/config/sitemap/transformers.xmap
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'usecasemenu']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-    <map:transformer name="usecasemenu" logger="lenya.sitemap.transformer.usecasemenu" src="org.apache.lenya.cms.cocoon.transformation.UsecaseMenuTransformer"/>

-</xmap>

diff --git a/trunk/src/modules-core/usecase/edit-document.js b/trunk/src/modules-core/usecase/edit-document.js
deleted file mode 100644
index 8b86940..0000000
--- a/trunk/src/modules-core/usecase/edit-document.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/*
-  This file is deprecated. You should not base new code on it. 
-  It's still used by Kupu and BXE,  that's why it remains for now. 
-  In the future, generic editor functionality and document handling 
-  helpers should be provided by the editors module only.
-*/
-
-importClass(Packages.org.apache.lenya.cms.cocoon.flow.FlowHelper);
-importClass(Packages.org.apache.excalibur.source.SourceResolver);
-importClass(Packages.org.apache.lenya.cms.cocoon.source.SourceUtil);
-
-/**
- * Provides general flow functions for document editing.
- * @version $Id$
- */
-
-function checkoutDocument() {
-}
-
-function checkinDocument() {
-}
-
-/**
- * Saves a Source to the document in the current PageEnvelope.
- * TODO: Use nobby's new usecase fw in 2.0 branch. Exception handling e.g. display appropriate error pages.
- * @param sourceUri An URI of a Source providing the edited document data
- * @param useBuffer If "true", the source Source is read into a buffer before it is written to its final destination.
- * @param workflowEvent Name of the workflow event to trigger. Default is "edit".
- * @param noWorkflow If true, no workflow event will be triggered. Default is false.
- * @param noCheckin If true, the current document is not checked in. Default is false.
- * @param backup If true, a new revision is created on checkin. Default is true.
- * @param status Default int value is 204. Used to set the response status.
- * @param noStatus If true, then no response status will be set.     
- */
-function editDocument() {
-    var usecaseName = cocoon.parameters["lenya.usecase"];
-    
-    var usecaseResolver;
-    var usecase;
-    
-    try {
-        var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-        var request = flowHelper.getRequest(cocoon);
-        var sourceUrl = Packages.org.apache.lenya.util.ServletHelper.getWebappURI(request);
-
-        usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-        usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-
-        if (cocoon.log.isDebugEnabled()) {
-            cocoon.log.debug("edit-document.js::editDocument() calling usecase methods, usecaseName [" + usecaseName + "], sourceUrl [" + sourceUrl + "]");    
-        }
-
-        usecase.setSourceURL(sourceUrl);
-        usecase.setName(usecaseName);
-
-        usecase.checkPreconditions();
-        usecase.lockInvolvedObjects();
-        if (!usecase.getErrorMessages().isEmpty()) {
-            throw new Exception("Checking pre-conditions or locking failed!");
-        }
-        else {
-            usecase.execute();
-            if (!usecase.getErrorMessages().isEmpty()) {
-                throw new Exception("Saving failed!");
-            }
-        }
-
-        if (cocoon.log.isDebugEnabled()) {
-            cocoon.log.debug("edit-document.js::editDocument() after usecase.execute(), hasErrors ? " + usecase.hasErrors());
-        }
-
-        // FIXME: handle error messages
-        //if (usecase.hasErrors()) {
-        //}
-
-        if(_getParameter("noStatus", "false") == "false")
-            cocoon.sendStatus(_getParameter("status", 204));
-        else
-            cocoon.redirectTo(_getParameter("redirectUrl", "FIXME"));
-
-    } catch (exception) {
-
-	/* FIXME: This is unclean because the flow will not return a value
-	   if there is an exception */
-        cocoon.log.error("Can not edit document.", exception);
-        
-    }
-    finally {
-        /* done with usecase component, tell usecaseResolver to release it */
-        if (usecaseResolver != null) {
-            if (usecase != null) {
-                usecaseResolver.release(usecase);
-                usecase = undefined;
-            }
-            cocoon.releaseComponent(usecaseResolver);
-        }
-    }
-        
-}
-
-function _getParameter(name, defaultValue) {
-    if(cocoon.parameters[name])
-        return cocoon.parameters[name];
-    else
-        return defaultValue;
-}
-
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java
deleted file mode 100644
index 7f8965e..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecase;
-
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Authorizer;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.publication.Publication;
-
-/**
- * Authorizer for usecases.
- * @version $Id: UsecaseAuthorizer.java 392449 2006-04-07 23:20:38Z michi $
- */
-public interface UsecaseAuthorizer extends Authorizer {
-
-    /**
-     * Authorizes a usecase by considering all roles of the current identity
-     * 
-     * @param usecase The usecase ID.
-     * @param roles The roles of the current identity.
-     * @param publication The publication.
-     * @return A boolean value.
-     * @throws AccessControlException when something went wrong.
-     */
-    boolean authorizeUsecase(String usecase, Role[] roles, Publication publication) 
-            throws AccessControlException;
-
-    /**
-     * Grants or denies a usecase to a role
-     *
-     * @param usecase The usecase.
-     * @param publication The publication.
-     * @param role The role.
-     * @param granted If the usecase shall be permitted.
-     * @throws AccessControlException if an error occurs.
-     */
-    void setPermission(String usecase, Publication publication, Role role, boolean granted)
-            throws AccessControlException;
-
-    /**
-     * Checks whether the specified role is permitted to invoke a given usecase
-     *
-     * @param usecase The usecase.
-     * @param publication The publication.
-     * @param role The role.
-     * @return A boolean value.
-     * @throws AccessControlException if an error occurs.
-     */
-    boolean isPermitted(String usecase, Publication publication, Role role)
-            throws AccessControlException;
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseAuthorizerImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseAuthorizerImpl.java
deleted file mode 100644
index 7632dc6..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseAuthorizerImpl.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecase.impl;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.cache.BuildException;
-import org.apache.lenya.ac.cache.CachingException;
-import org.apache.lenya.ac.cache.SourceCache;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-
-/**
- * Authorizer for usecases.
- * <p>
- * Supported parameters via {@link Parameterizable}:
- * </p>
- * <ul>
- * <li> {@link #PARAMETER_CONFIGURATION} - location of the usecase policies file
- * (parameterizable for testing purposes) </li>
- * </ul>
- * @version $Id: UsecaseAuthorizer.java 392449 2006-04-07 23:20:38Z michi $
- */
-public class UsecaseAuthorizerImpl extends AbstractLogEnabled implements UsecaseAuthorizer,
-        Serviceable, Disposable, Parameterizable {
-
-    /**
-     * The name of the pseudo-usecase that governs access to pages.
-     */
-    public static final String VISIT_USECASE = "ac.visit";
-
-    protected static final String PARAMETER_CONFIGURATION = "configuration";
-    protected static final String TYPE = "usecase";
-    protected static final String USECASE_PARAMETER = "lenya.usecase";
-    private static final String AC_CONFIGURATION_FILE = "config/access-control/access-control.xml"
-            .replace('/', File.separatorChar);
-
-    private SourceCache cache;
-    /**
-     * the configuration URI for this component
-     */
-    private String configurationUri;
-    private ServiceManager manager;
-
-    /**
-     * Maps publication IDs to their configuration URIs. This is a persistent
-     * map to avoid unnecessary publication lookups. Whenever an authorization
-     * request for a new publication is dealt with, the publication's
-     * configuration URI is stored, to be re-used on later occasions (for the
-     * lifetime of the component).
-     */
-    private Map pubId2configUri = new HashMap();
-
-    /**
-     * @see org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer#authorizeUsecase(java.lang.String,
-     *      org.apache.lenya.ac.Role[],
-     *      org.apache.lenya.cms.publication.Publication)
-     */
-    public boolean authorizeUsecase(String usecase, Role[] roles, Publication publication)
-            throws AccessControlException {
-        return authorizeUsecase(usecase, roles, getConfigurationURI(publication));
-    }
-
-    private boolean authorizeUsecase(String usecase, Role[] roles, String _configurationUri)
-            throws AccessControlException {
-        getLogger().debug("Authorizing usecase [" + usecase + "]");
-        boolean authorized = false;
-
-        UsecaseRoles usecaseRoles = getUsecaseRoles(_configurationUri);
-
-        if (usecaseRoles == null) {
-            throw new AccessControlException("Usecase policies configuration not found at ["
-                    + _configurationUri + "]");
-        }
-
-        if (usecaseRoles.hasRoles(usecase)) {
-            getLogger().debug("Roles for usecase found.");
-
-            List usecaseRoleIds = Arrays.asList(usecaseRoles.getRoles(usecase));
-
-            int i = 0;
-            while (!authorized && i < roles.length) {
-                authorized = usecaseRoleIds.contains(roles[i].getId());
-                getLogger()
-                        .debug(
-                                "Authorization for role [" + roles[i].getId() + "] is ["
-                                        + authorized + "]");
-                i++;
-            }
-        } else {
-            getLogger().debug("No roles for usecase [" + usecase + "] found. Denying access.");
-        }
-        return authorized;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer#isPermitted(java.lang.String,
-     *      org.apache.lenya.cms.publication.Publication,
-     *      org.apache.lenya.ac.Role)
-     */
-    public boolean isPermitted(String usecase, Publication publication, Role role)
-            throws AccessControlException {
-        String configUri = getConfigurationURI(publication);
-        UsecaseRoles usecaseRoles = getUsecaseRoles(configUri);
-        String[] roles = usecaseRoles.getRoles(usecase);
-        return Arrays.asList(roles).contains(role.getId());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer#setPermission(java.lang.String,
-     *      org.apache.lenya.cms.publication.Publication,
-     *      org.apache.lenya.ac.Role, boolean)
-     */
-    public void setPermission(String usecase, Publication publication, Role role, boolean granted)
-            throws AccessControlException {
-        String configUri = getConfigurationURI(publication);
-        if (configUri.startsWith("aggregate-")) {
-            configUri = configUri.substring("aggregate-".length());
-        }
-        UsecaseRoles usecaseRoles = getUsecaseRoles(configUri);
-        List roles = Arrays.asList(usecaseRoles.getRoles(usecase));
-        String roleId = role.getId();
-        if (granted) {
-            if (!roles.contains(roleId)) {
-                usecaseRoles.addRole(usecase, roleId);
-            }
-        } else {
-            if (roles.contains(roleId)) {
-                usecaseRoles.removeRole(usecase, roleId);
-            }
-        }
-        UsecaseRolesBuilder builder = new UsecaseRolesBuilder();
-        try {
-            builder.save(usecaseRoles, configUri, this.manager);
-        } catch (BuildException e) {
-            throw new AccessControlException(e);
-        }
-    }
-
-    /**
-     * This method will substitute VISIT_USECASE if no USECASE_PARAMETER is set,
-     * so that it can be used to authorize plain page access as well.
-     * @see org.apache.lenya.ac.Authorizer#authorize(org.apache.cocoon.environment.Request)
-     */
-    public boolean authorize(Request request) throws AccessControlException {
-
-        String usecase = request.getParameter(USECASE_PARAMETER);
-        if (usecase == null || "".equals(usecase)) {
-            usecase = VISIT_USECASE;
-        }
-
-        boolean authorized = false;
-
-        try {
-            String _configurationUri;
-            // Check if the service has been parameterized with a
-            // configuration URI. This can be used for testing purposes etc.
-            if (getConfigurationURI() != null) {
-                _configurationUri = getConfigurationURI();
-            } else {
-                Publication publication = PublicationUtil.getPublication(this.manager, request);
-                _configurationUri = getConfigurationURI(publication);
-            }
-
-            Role[] roles = PolicyUtil.getRoles(request);
-            authorized = authorizeUsecase(usecase, roles, _configurationUri);
-        } catch (final PublicationException e) {
-            throw new AccessControlException(e);
-        } catch (final AccessControlException e) {
-            throw new AccessControlException(e);
-        }
-
-        return authorized;
-    }
-
-    /**
-     * Returns the configuration source cache.
-     * @return A source cache.
-     */
-    private SourceCache getCache() {
-        return this.cache;
-    }
-
-    /**
-     * Returns the source URI of the usecase role configuration file for a
-     * certain publication.
-     * 
-     * @param publication The publication.
-     * @return A string representing a URI.
-     */
-    protected String getConfigurationURI(Publication publication) {
-
-        String configURI = (String) this.pubId2configUri.get(publication.getId());
-        if (configURI == null) {
-            try {
-                Configuration config = getConfiguration(publication);
-                Configuration[] authorizerConfigs = config.getChildren("authorizer");
-                for (int i = 0; i < authorizerConfigs.length; i++) {
-                    if (authorizerConfigs[i].getAttribute("type").equals("usecase")) {
-                        Configuration paraConfig = authorizerConfigs[i].getChild("parameter");
-                        configURI = paraConfig.getAttribute("value");
-                        this.pubId2configUri.put(publication.getId(), configURI);
-                    }
-                }
-            } catch (Exception e) {
-                getLogger().error(e.getMessage(), e);
-            }
-        }
-        return configURI;
-    }
-
-    protected UsecaseRoles getUsecaseRoles(String _configurationUri) throws AccessControlException {
-        UsecaseRolesBuilder builder = new UsecaseRolesBuilder();
-        UsecaseRoles usecaseRoles;
-        try {
-            usecaseRoles = (UsecaseRoles) getCache().get(_configurationUri, builder);
-        } catch (CachingException e) {
-            throw new AccessControlException(e);
-        }
-        return usecaseRoles;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        getLogger().debug("Servicing [" + getClass().getName() + "]");
-        this.manager = _manager;
-        this.cache = (SourceCache) _manager.lookup(SourceCache.ROLE);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (getCache() != null) {
-            this.manager.release(getCache());
-        }
-    }
-
-    public void parameterize(Parameters parameters) throws ParameterException {
-        if (parameters.isParameter(PARAMETER_CONFIGURATION)) {
-            this.configurationUri = parameters.getParameter(PARAMETER_CONFIGURATION);
-        }
-    }
-
-    private String getConfigurationURI() {
-        return this.configurationUri;
-    }
-
-    /**
-     * Retrieves access control configuration of a specific publication.
-     * @param publication The publication.
-     * @return Configuration
-     * @throws AccessControlException when something went wrong.
-     */
-    private Configuration getConfiguration(Publication publication) throws AccessControlException {
-        File configurationFile = new File(publication.getDirectory(), AC_CONFIGURATION_FILE);
-
-        if (configurationFile.isFile()) {
-            try {
-                Configuration configuration = new DefaultConfigurationBuilder()
-                        .buildFromFile(configurationFile);
-                return configuration;
-            } catch (Exception e) {
-                throw new AccessControlException(e);
-            }
-        } else {
-            throw new AccessControlException("No such file or directory: " + configurationFile);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRoles.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRoles.java
deleted file mode 100644
index 444c8fa..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRoles.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecase.impl;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Class to manage roles for a usecase.
- * 
- * @version $Id$
- */
-public class UsecaseRoles {
-
-    private Map usecaseToRoles = new HashMap();
-
-    /**
-     * Ctor.
-     */
-    public UsecaseRoles() {
-        // do nothing
-    }
-
-    /**
-     * Sets the roles for a usecase.
-     * @param usecaseId The usecase ID.
-     * @param roleIds The role IDs.
-     */
-    public void setRoles(String usecaseId, String[] roleIds) {
-        this.usecaseToRoles.put(usecaseId, roleIds);
-    }
-
-    /**
-     * Returns the roles for a usecase. If no roles are defined for this
-     * usecase, an array of size 0 is returned.
-     * @param usecaseId The usecase ID.
-     * @return A role array.
-     */
-    public String[] getRoles(String usecaseId) {
-        String[] usecaseRoles;
-        if (this.usecaseToRoles.containsKey(usecaseId)) {
-            usecaseRoles = (String[]) this.usecaseToRoles.get(usecaseId);
-        } else {
-            usecaseRoles = new String[0];
-        }
-        return usecaseRoles;
-    }
-
-    /**
-     * Checks if a usecase has roles.
-     * @param usecaseId The usecase ID.
-     * @return A boolean value.
-     */
-    public boolean hasRoles(String usecaseId) {
-        return this.usecaseToRoles.containsKey(usecaseId);
-    }
-
-    /**
-     * @return All available usecase names.
-     */
-    public String[] getUsecaseNames() {
-        Set names = this.usecaseToRoles.keySet();
-        return (String[]) names.toArray(new String[names.size()]);
-    }
-
-    /**
-     * @param usecase The usecase name.
-     * @param role The role ID.
-     */
-    public void addRole(String usecase, String role) {
-        String[] usecaseRoles = getRoles(usecase);
-        Set newRoles = new HashSet();
-        newRoles.addAll(Arrays.asList(usecaseRoles));
-        newRoles.add(role);
-        this.usecaseToRoles.put(usecase, newRoles.toArray(new String[newRoles.size()]));
-    }
-
-    /**
-     * @param usecase The usecase.
-     * @param role The role.
-     */
-    public void removeRole(String usecase, String role) {
-        String[] usecaseRoles = getRoles(usecase);
-        Set newRoles = new HashSet();
-        newRoles.addAll(Arrays.asList(usecaseRoles));
-
-        if (!newRoles.contains(role)) {
-            throw new RuntimeException("The role [" + role + "] is not set for usecase [" + usecase
-                    + "]");
-        }
-
-        newRoles.remove(role);
-        this.usecaseToRoles.put(usecase, newRoles.toArray(new String[newRoles.size()]));
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRolesBuilder.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRolesBuilder.java
deleted file mode 100644
index 55fdb63..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/ac/usecase/impl/UsecaseRolesBuilder.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.ac.usecase.impl;
-
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.cache.BuildException;
-import org.apache.lenya.ac.cache.InputStreamBuilder;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Builder for usecase roles.
- * 
- * @version $Id$
- */
-public class UsecaseRolesBuilder implements InputStreamBuilder {
-
-    protected static final String USECASES_ELEMENT = "usecases";
-    protected static final String USECASE_ELEMENT = "usecase";
-    protected static final String ROLE_ELEMENT = "role";
-    protected static final String ID_ATTRIBUTE = "id";
-
-    /**
-     * @see org.apache.lenya.ac.cache.InputStreamBuilder#build(java.io.InputStream)
-     */
-    public Object build(InputStream stream) throws BuildException {
-
-        UsecaseRoles usecaseRoles = new UsecaseRoles();
-
-        Document document;
-        try {
-            document = DocumentHelper.readDocument(stream);
-        } catch (Exception e) {
-            throw new BuildException(e);
-        }
-        Assert.isTrue("Correct usecase policies XML", document.getDocumentElement().getLocalName()
-                .equals(USECASES_ELEMENT));
-
-        NamespaceHelper helper = new NamespaceHelper(AccessController.NAMESPACE,
-                AccessController.DEFAULT_PREFIX, document);
-
-        Element[] usecaseElements = helper.getChildren(document.getDocumentElement(),
-                USECASE_ELEMENT);
-        for (int i = 0; i < usecaseElements.length; i++) {
-            String usecaseId = usecaseElements[i].getAttribute(ID_ATTRIBUTE);
-
-            // add roles only if not overridden by child publication
-            if (!usecaseRoles.hasRoles(usecaseId)) {
-                Element[] roleElements = helper.getChildren(usecaseElements[i], ROLE_ELEMENT);
-                Set roleIds = new HashSet();
-                for (int j = 0; j < roleElements.length; j++) {
-                    String roleId = roleElements[j].getAttribute(ID_ATTRIBUTE);
-                    roleIds.add(roleId);
-                }
-                String[] roleIdArray = (String[]) roleIds.toArray(new String[roleIds.size()]);
-                usecaseRoles.setRoles(usecaseId, roleIdArray);
-            }
-        }
-        return usecaseRoles;
-    }
-
-    /**
-     * Saves the usecase roles.
-     * @param usecaseRoles The roles.
-     * @param sourceUri The source to save to.
-     * @param manager The service manager.
-     * @throws BuildException if an error occurs.
-     */
-    public void save(UsecaseRoles usecaseRoles, String sourceUri, ServiceManager manager) throws BuildException {
-        try {
-            NamespaceHelper helper = new NamespaceHelper(AccessController.NAMESPACE,
-                    AccessController.DEFAULT_PREFIX, USECASES_ELEMENT);
-            String[] usecaseNames = usecaseRoles.getUsecaseNames();
-            for (int u = 0; u < usecaseNames.length; u++) {
-                Element usecaseElement = helper.createElement(USECASE_ELEMENT);
-                helper.getDocument().getDocumentElement().appendChild(usecaseElement);
-                usecaseElement.setAttribute(ID_ATTRIBUTE, usecaseNames[u]);
-                String[] roles = usecaseRoles.getRoles(usecaseNames[u]);
-                for (int r = 0; r < roles.length; r++) {
-                    Element roleElement = helper.createElement(ROLE_ELEMENT);
-                    usecaseElement.appendChild(roleElement);
-                    roleElement.setAttribute(ID_ATTRIBUTE, roles[r]);
-                }
-            }
-            SourceUtil.writeDOM(helper.getDocument(), sourceUri, manager);
-        } catch (Exception e) {
-            throw new BuildException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/matching/UsecaseRegistrationMatcher.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/matching/UsecaseRegistrationMatcher.java
deleted file mode 100644
index e296345..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/matching/UsecaseRegistrationMatcher.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.matching;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.excalibur.pool.Poolable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.matching.Matcher;
-import org.apache.cocoon.sitemap.PatternException;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Matches if the request calls a usecase which is registered for the Usecase Framework.
- */
-public class UsecaseRegistrationMatcher extends AbstractLogEnabled implements Matcher, Serviceable, Poolable {
-
-    /**
-     * @see org.apache.cocoon.matching.Matcher#match(java.lang.String,
-     *      java.util.Map, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map match(String pattern, Map objectModel, Parameters parameters)
-            throws PatternException {
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        String usecaseName = request.getParameter("lenya.usecase");
-
-        Map result = null;
-
-        if (usecaseName == null) {
-            if (getLogger().isDebugEnabled()) {
-               getLogger().debug("match() called, usecase parameter is empty - returning false");
-            }
-        }
-        else {
-            if (getLogger().isDebugEnabled()) {
-               getLogger().debug("match() called for request parameter lenya.usecase = [" + usecaseName + "]; note that pattern is not relevant for this matcher");
-            }
-            // Parameter for usecase is set, see if this is a registered component
-            UsecaseResolver resolver = null;
-            try {
-               resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-               String url = ServletHelper.getWebappURI(request);
-               if (resolver.isRegistered(url, usecaseName)) {
-                   result = Collections.EMPTY_MAP;
-               }
-               if (getLogger().isDebugEnabled()) {
-                   getLogger().debug("Usecase [" + usecaseName + "] exists: [" + !(result == null) + "]");
-               }
-            } catch (ServiceException e) {
-               throw new PatternException(e);
-            } finally {
-               if (resolver != null) {
-                  this.manager.release(resolver);
-               }
-            }
-        }
-        return result;
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
deleted file mode 100644
index c9b0c0c..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: UsecaseMenuTransformer.java 407248 2006-05-17 13:20:01Z andreas $  */
-
-package org.apache.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.Authorizer;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This transformer disables menu items (by removing the href attribute) which are not allowed with
- * respect to the usecase policies.
- */
-public class UsecaseMenuTransformer extends AbstractSAXTransformer implements Disposable {
-
-    /**
-     * <code>MENU_ELEMENT</code> The menu element
-     */
-    public static final String MENU_ELEMENT = "menu";
-    /**
-     * The menu namespace.
-     */
-    public static final String MENU_NAMESPACE = "http://apache.org/cocoon/lenya/menubar/1.0";
-    /**
-     * <code>ITEM_ELEMENT</code> The item element
-     */
-    public static final String ITEM_ELEMENT = "item";
-    /**
-     * <code>USECASE_ATTRIBUTE</code> The usecase attribute
-     */
-    public static final String USECASE_ATTRIBUTE = "usecase";
-    /**
-     * Comment for <code>HREF_ATTRIBUTE</code> The href attribute
-     */
-    public static final String HREF_ATTRIBUTE = "href";
-    /**
-     * <code>NAMESPACE</code> The usecase namespace
-     */
-    public static final String NAMESPACE = "http://apache.org/cocoon/lenya/usecase/1.0";
-
-    /**
-     * (non-Javadoc)
-     * 
-     * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
-     *      java.lang.String, org.xml.sax.Attributes)
-     */
-    public void startElement(String uri, String localName, String raw, Attributes attr)
-            throws SAXException {
-
-        Attributes attributes = attr;
-        List messages = null;
-
-        UsecaseResolver usecaseResolver = null;
-        try {
-            usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-
-            if (this.authorizer != null && localName.equals(ITEM_ELEMENT)) {
-                String usecaseName = attr.getValue(NAMESPACE, USECASE_ATTRIBUTE);
-
-                // filter item if usecase not allowed
-                if (usecaseName != null) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("Found usecase [" + usecaseName + "]");
-                    }
-                    if (!this.authorizer.authorizeUsecase(usecaseName,
-                            this.roles,
-                            this.publication)) {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Usecase not authorized");
-                        }
-                        attributes = removeHrefAttribute(attr);
-                        UsecaseMessage message = new UsecaseMessage("Access denied");
-                        messages = Collections.singletonList(message);
-                    }
-                }
-
-                if (usecaseResolver.isRegistered(this.sourceUrl, usecaseName)) {
-                    Usecase usecase = null;
-                    try {
-                        usecase = usecaseResolver.resolve(this.sourceUrl, usecaseName);
-                        usecase.setSourceURL(this.sourceUrl);
-                        usecase.setName(usecaseName);
-                        if (attr.getValue(HREF_ATTRIBUTE) != null) {
-                            passRequestParameters(usecase, attr.getValue(HREF_ATTRIBUTE));
-                        }
-                        usecase.checkPreconditions();
-                        if (usecase.hasErrors()) {
-                            if (getLogger().isDebugEnabled()) {
-                                getLogger().debug("Usecase preconditions not complied");
-                            }
-
-                            attributes = removeHrefAttribute(attr);
-                            messages = usecase.getErrorMessages();
-                        }
-                    } finally {
-                        if (usecase != null) {
-                            usecaseResolver.release(usecase);
-                        }
-                    }
-                }
-            }
-        } catch (final Exception e) {
-            throw new SAXException(e);
-        } finally {
-            if (usecaseResolver != null) {
-                this.manager.release(usecaseResolver);
-            }
-        }
-
-        super.startElement(uri, localName, raw, attributes);
-
-        if (messages != null) {
-            addMessages(messages);
-        }
-
-    }
-
-    /**
-     * Removes the <code>href</code> attribute.
-     * 
-     * @param attr The original attributes.
-     * @return An attributes object.
-     */
-    protected Attributes removeHrefAttribute(Attributes attr) {
-        Attributes attributes = attr;
-        int hrefIndex = attributes.getIndex(HREF_ATTRIBUTE);
-        if (hrefIndex > -1) {
-            attributes = new AttributesImpl(attr);
-            ((AttributesImpl) attributes).removeAttribute(hrefIndex);
-        }
-        return attributes;
-    }
-
-    protected void addMessages(List messages) throws SAXException {
-
-        for (Iterator i = messages.iterator(); i.hasNext();) {
-            UsecaseMessage message = (UsecaseMessage) i.next();
-            super.startElement(MENU_NAMESPACE, "message", "message", new AttributesImpl());
-            String messageString = message.getMessage();
-            super.characters(messageString.toCharArray(), 0, messageString.length());
-            if (message.hasParameters()) {
-                String[] parameters = message.getParameters();
-                for (int p = 0; p < parameters.length; p++) {
-                    super.startElement(MENU_NAMESPACE,
-                            "parameter",
-                            "parameter",
-                            new AttributesImpl());
-                    super.characters(parameters[p].toCharArray(), 0, parameters[p].length());
-                    super.endElement(MENU_NAMESPACE, "parameter", "parameter");
-                }
-            }
-            super.endElement(MENU_NAMESPACE, "message", "message");
-        }
-
-    }
-
-    /**
-     * Pass the request parameters from the <code>href</code> attribute to the usecase handler.
-     * 
-     * @param usecase The usecase handler.
-     * @param href The value of the <code>href</code> attribute.
-     */
-    void passRequestParameters(Usecase usecase, String href) {
-        int questionMarkIndex = href.indexOf("?");
-        if (questionMarkIndex > -1) {
-            String queryString = href.substring(questionMarkIndex + 1);
-            String[] nameValuePairs = queryString.split("&");
-            for (int i = 0; i < nameValuePairs.length; i++) {
-                String[] pair = nameValuePairs[i].split("=");
-                if (pair.length == 2) {
-                    String name = pair[0];
-                    String value = pair[1];
-                    usecase.setParameter(name, value);
-                }
-            }
-        }
-    }
-
-    private UsecaseAuthorizer authorizer;
-    private ServiceSelector serviceSelector = null;
-    private Role[] roles;
-    private Publication publication;
-    private AccessControllerResolver acResolver;
-    private String sourceUrl;
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String src, Parameters _parameters)
-            throws ProcessingException, SAXException, IOException {
-
-        super.setup(_resolver, _objectModel, src, _parameters);
-
-        getLogger().debug("Setting up transformer");
-
-        this.serviceSelector = null;
-        this.acResolver = null;
-        this.authorizer = null;
-
-        this.sourceUrl = ServletHelper.getWebappURI(this.request);
-
-        try {
-            this.roles = PolicyUtil.getRoles(this.request);
-            this.publication = PublicationUtil.getPublication(this.manager, _objectModel);
-
-            this.serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-            this.acResolver = (AccessControllerResolver) this.serviceSelector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-            getLogger().debug("Resolved AC resolver [" + this.acResolver + "]");
-
-            String webappUrl = ServletHelper.getWebappURI(this.request);
-            AccessController accessController = this.acResolver.resolveAccessController(webappUrl);
-
-            Authorizer[] authorizers = accessController.getAuthorizers();
-            for (int i = 0; i < authorizers.length; i++) {
-                if (authorizers[i] instanceof UsecaseAuthorizer) {
-                    this.authorizer = (UsecaseAuthorizer) authorizers[i];
-                }
-            }
-
-            getLogger().debug("Using authorizer [" + this.authorizer + "]");
-        } catch (final Exception e) {
-            throw new ProcessingException(e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        getLogger().debug("Disposing transformer");
-        if (this.serviceSelector != null) {
-            if (this.acResolver != null) {
-                this.serviceSelector.release(this.acResolver);
-            }
-            this.manager.release(this.serviceSelector);
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/AbstractUsecase.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/AbstractUsecase.java
deleted file mode 100644
index 5fae8be..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/AbstractUsecase.java
+++ /dev/null
@@ -1,919 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.activity.Initializable;
-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.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.transaction.ConcurrentModificationException;
-import org.apache.lenya.transaction.LockException;
-import org.apache.lenya.transaction.TransactionLock;
-
-/**
- * Abstract usecase implementation.
- * 
- * @version $Id$
- */
-public class AbstractUsecase extends AbstractLogEnabled implements Usecase, Configurable,
-        Contextualizable, Serviceable, Initializable {
-
-    protected static final String EVENT_CHECK_POSTCONDITIONS = "checkPostconditions";
-
-    protected static final String EVENT_EXECUTE = "execute";
-
-    protected static final String EVENT_CHECK_PRECONDITIONS = "checkPreconditions";
-
-    protected static final String EVENT_CHECK_EXECUTION_CONDITIONS = "checkExecutionConditions";
-
-    protected static final String ERROR_OBJECTS_CHECKED_OUT = "objects-checked-out";
-
-    protected static final StateMachine.Transition[] TRANSITIONS = {
-            new StateMachine.Transition("start", "preChecked", EVENT_CHECK_PRECONDITIONS),
-            new StateMachine.Transition("preChecked", "preChecked", EVENT_CHECK_PRECONDITIONS),
-            new StateMachine.Transition("preChecked", "nodesLocked", "lockInvolvedObjects"),
-            new StateMachine.Transition("nodesLocked", "execChecked",
-                    EVENT_CHECK_EXECUTION_CONDITIONS),
-            new StateMachine.Transition("execChecked", "execChecked",
-                    EVENT_CHECK_EXECUTION_CONDITIONS),
-            new StateMachine.Transition("nodesLocked", "preChecked", EVENT_CHECK_PRECONDITIONS),
-            new StateMachine.Transition("execChecked", "executed", EVENT_EXECUTE),
-            new StateMachine.Transition("executed", "postChecked", EVENT_CHECK_POSTCONDITIONS) };
-
-    protected static final StateMachine.Model MODEL = new StateMachine.Model("start", TRANSITIONS);
-
-    protected static final String PARAMETER_STATE_MACHINE = "private.stateMachine";
-    protected static final String PARAMETER_SESSION = "private.session";
-    protected static final String PARAMETER_FACTORY = "private.factory";
-    protected static final String PARAMETER_CHECKOUT_RESTRICTED_TO_SESSION = "checkoutRestrictedToSession";
-
-    protected static final String PARAMETERS_INITIALIZED = "private.parametersInitialized";
-
-    /**
-     * Override to initialize parameters.
-     */
-    protected void initParameters() {
-    }
-
-    /**
-     * Advance the usecase state machine to the next state. This method has to be called at the end
-     * of the corresponding method to ensure that the subsequent methods can only be invoked if
-     * nothing went wrong.
-     * @param event The vent to invoke.
-     */
-    protected void advanceState(String event) {
-        getStateMachine().invoke(event);
-    }
-
-    protected StateMachine getStateMachine() {
-        StateMachine machine = (StateMachine) getParameter(PARAMETER_STATE_MACHINE);
-        return machine;
-    }
-
-    protected void checkEvent(String event) {
-        getStateMachine().checkEvent(event);
-    }
-
-    protected String SOURCE_URL = "private.sourceUrl";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getSourceURL() We don't use getParameterAsString()
-     *      because this will typically cause stack overflows or NPEs in connection with
-     *      initParameters().
-     */
-    public String getSourceURL() {
-        return (String) this.parameters.get(SOURCE_URL);
-    }
-
-    /**
-     * Returns the context.
-     * @return A context.
-     */
-    protected Context getContext() {
-        return this.context;
-    }
-
-    /**
-     * Determine if the usecase has error messages. Provides a way of checking for errors without
-     * actually retrieving them.
-     * @return true if the usecase resulted in error messages.
-     */
-    public boolean hasErrors() {
-        boolean ret = false;
-        if (this.errorMessages != null)
-            ret = !this.errorMessages.isEmpty();
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("AbstractUsecase::hasErrors() called, returning " + ret);
-
-        return ret;
-    }
-
-    /**
-     * Determine if the usecase has info messages. Provides a way of checking for info messages
-     * without actually retrieving them.
-     * @return true if the usecase resulted in info messages being generated.
-     */
-    public boolean hasInfoMessages() {
-        boolean ret = false;
-        if (this.infoMessages != null)
-            ret = !this.infoMessages.isEmpty();
-        return ret;
-    }
-
-    /**
-     * Checks if the operation can be executed and returns the error messages. Error messages
-     * prevent the operation from being executed.
-     * @return A boolean value.
-     */
-    public List getErrorMessages() {
-        return Collections.unmodifiableList(new ArrayList(this.errorMessages));
-    }
-
-    /**
-     * Returns the information messages to show on the confirmation screen.
-     * @return An array of strings. Info messages do not prevent the operation from being executed.
-     */
-    public List getInfoMessages() {
-        return Collections.unmodifiableList(new ArrayList(this.infoMessages));
-    }
-
-    private List errorMessages = new ArrayList();
-    private List infoMessages = new ArrayList();
-
-    /**
-     * Adds an error message.
-     * @param message The message.
-     */
-    public void addErrorMessage(String message) {
-        this.errorMessages.add(new UsecaseMessage(message));
-    }
-
-    /**
-     * Adds an error message.
-     * @param message The message.
-     * @param _params parameters
-     */
-    public void addErrorMessage(String message, String[] _params) {
-        this.errorMessages.add(new UsecaseMessage(message, _params));
-    }
-
-    /**
-     * Adds an error message.
-     * @param messages The messages.
-     */
-    public void addErrorMessages(String[] messages) {
-        for (int i = 0; i < messages.length; i++) {
-            addErrorMessage(messages[i]);
-        }
-    }
-
-    /**
-     * Adds an info message.
-     * @param message The message.
-     * @param _params parameters
-     */
-    public void addInfoMessage(String message, String[] _params) {
-        this.infoMessages.add(new UsecaseMessage(message, _params));
-    }
-
-    /**
-     * Adds an info message.
-     * @param message The message.
-     */
-    public void addInfoMessage(String message) {
-        this.infoMessages.add(new UsecaseMessage(message));
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#checkExecutionConditions()
-     */
-    public final void checkExecutionConditions() throws UsecaseException {
-        checkEvent(EVENT_CHECK_EXECUTION_CONDITIONS);
-        try {
-            clearErrorMessages();
-            clearInfoMessages();
-            doCheckExecutionConditions();
-            dumpErrorMessages();
-        } catch (Exception e) {
-            getLogger().error(e.getMessage(), e);
-            addErrorMessage(e.getMessage() + " - Please consult the logfiles.");
-            if (getLogger().isDebugEnabled()) {
-                throw new UsecaseException(e);
-            }
-        }
-        if (!hasErrors()) {
-            advanceState(EVENT_CHECK_EXECUTION_CONDITIONS);
-        }
-    }
-
-    /**
-     * Checks the execution conditions.
-     * @throws Exception if an error occurs.
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        // do nothing
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#checkPreconditions()
-     */
-    public final void checkPreconditions() throws UsecaseException {
-        checkEvent(EVENT_CHECK_PRECONDITIONS);
-        try {
-            clearErrorMessages();
-            clearInfoMessages();
-
-            Node[] nodes = getNodesToLock();
-            if (!canCheckOut(nodes)) {
-                addErrorMessage(ERROR_OBJECTS_CHECKED_OUT);
-            }
-            doCheckPreconditions();
-
-            List _errorMessages = getErrorMessages();
-            for (int i = 0; i < _errorMessages.size(); i++) {
-                getLogger().info(_errorMessages.get(i).toString());
-            }
-        } catch (Exception e) {
-            getLogger().error(e.getMessage(), e);
-            addErrorMessage(e.getMessage() + " - Please consult the logfiles.");
-            if (getLogger().isDebugEnabled()) {
-                throw new UsecaseException(e);
-            }
-        }
-        if (!hasErrors()) {
-            advanceState(EVENT_CHECK_PRECONDITIONS);
-        }
-    }
-
-    /**
-     * Checks the preconditions.
-     * @throws Exception if an error occurs.
-     */
-    protected void doCheckPreconditions() throws Exception {
-        // do nothing
-    }
-
-    /**
-     * Clears the error messages.
-     */
-    protected void clearErrorMessages() {
-        this.errorMessages.clear();
-    }
-
-    /**
-     * Clears the info messages.
-     */
-    protected void clearInfoMessages() {
-        this.infoMessages.clear();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#execute()
-     */
-    public final void execute() throws UsecaseException {
-        checkEvent(EVENT_EXECUTE);
-        Exception exception = null;
-        try {
-            clearErrorMessages();
-            clearInfoMessages();
-            doExecute();
-            dumpErrorMessages();
-        } catch (LockException e) {
-            exception = e;
-            addErrorMessage("The operation could not be completed because an involved object was changed by another user.");
-        } catch (Exception e) {
-            exception = e;
-            getLogger().error(e.getMessage(), e);
-            addErrorMessage(e.getMessage() + " - Please consult the logfiles.");
-            throw new UsecaseException(e);
-        } finally {
-            try {
-                if (this.commitEnabled && getErrorMessages().isEmpty() && exception == null) {
-                    getSession().commit();
-                } else {
-                    getSession().rollback();
-                }
-            } catch (ConcurrentModificationException e) {
-                getLogger()
-                        .error("Could not commit usecase [" + getName() + "]: " + e.getMessage());
-                addErrorMessage(e.getMessage());
-            } catch (Exception e1) {
-                getLogger().error("Could not commit/rollback usecase [" + getName() + "]: ", e1);
-                addErrorMessage("Exception during commit or rollback: " + e1.getMessage()
-                        + " (see logfiles for details)");
-            }
-        }
-        if (!hasErrors()) {
-            advanceState(EVENT_EXECUTE);
-        }
-    }
-
-    /**
-     * Dumps the error messages to the log.
-     */
-    protected void dumpErrorMessages() {
-        List _errorMessages = getErrorMessages();
-        for (int i = 0; i < _errorMessages.size(); i++) {
-            getLogger().error(_errorMessages.get(i).toString());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#checkPostconditions()
-     */
-    public void checkPostconditions() throws UsecaseException {
-        checkEvent(EVENT_CHECK_POSTCONDITIONS);
-        try {
-            clearErrorMessages();
-            clearInfoMessages();
-            doCheckPostconditions();
-            dumpErrorMessages();
-        } catch (Exception e) {
-            getLogger().error(e.getMessage(), e);
-            addErrorMessage(e.getMessage() + " - Please consult the logfiles.");
-            if (getLogger().isDebugEnabled()) {
-                throw new UsecaseException(e);
-            }
-        }
-        if (!hasErrors()) {
-            advanceState(EVENT_CHECK_POSTCONDITIONS);
-        }
-    }
-
-    /**
-     * Checks the post conditions.
-     * @throws Exception if an error occured.
-     */
-    protected void doCheckPostconditions() throws Exception {
-        // do nothing
-    }
-
-    /**
-     * Executes the operation.
-     * @throws Exception when something went wrong.
-     */
-    protected void doExecute() throws Exception {
-        // do nothing
-    }
-
-    private Map parameters = new HashMap();
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Setting parameter [" + name + "] = [" + value + "]");
-        }
-        this.parameters.put(name, value);
-        // set any exit parameters that are missing values
-        if (this.exitUsecaseParameters.containsKey(name)
-                && this.exitUsecaseParameters.get(name) == null) {
-            setExitParameter(name, value.toString());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getParameter(java.lang.String)
-     */
-    public Object getParameter(String name) {
-        if (!this.parameters.containsKey(name)) {
-            initializeParametersIfNotDone();
-        }
-        return this.parameters.get(name);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getParameter(java.lang.String, java.lang.Object)
-     */
-    public Object getParameter(String name, Object defaultValue) {
-        Object value = getParameter(name);
-        if (value == null) {
-            value = defaultValue;
-        }
-        return value;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getParameterAsString(java.lang.String)
-     */
-    public String getParameterAsString(String name) {
-        String valueString = null;
-        Object value = getParameter(name);
-        if (value != null) {
-            valueString = value.toString();
-        }
-        return valueString;
-    }
-
-    /**
-     * Returns a parameter as string. If the parameter does not exist, a default value is returned.
-     * @param name The parameter name.
-     * @param defaultValue The default value.
-     * @return A string.
-     */
-    public String getParameterAsString(String name, String defaultValue) {
-        String valueString = defaultValue;
-        Object value = getParameter(name);
-        if (value != null) {
-            valueString = value.toString();
-        }
-        return valueString;
-    }
-
-    /**
-     * Returns a parameter as integer. If the parameter does not exist, a default value is returned.
-     * @param name The parameter name.
-     * @param defaultValue The default value.
-     * @return An integer.
-     */
-    public int getParameterAsInteger(String name, int defaultValue) {
-        int valueInt = defaultValue;
-        Object value = getParameter(name);
-        if (value != null) {
-            valueInt = Integer.valueOf(value.toString()).intValue();
-        }
-        return valueInt;
-    }
-
-    /**
-     * Returns a parameter as boolean. If the parameter does not exist, a default value is returned.
-     * @param name The parameter name.
-     * @param defaultValue The default value.
-     * @return A boolean value..
-     */
-    public boolean getParameterAsBoolean(String name, boolean defaultValue) {
-        boolean valueBoolean = defaultValue;
-        Object value = getParameter(name);
-        if (value != null) {
-            if (value instanceof String) {
-                valueBoolean = Boolean.valueOf((String) value).booleanValue();
-            } else if (value instanceof Boolean) {
-                valueBoolean = ((Boolean) value).booleanValue();
-            } else {
-                throw new IllegalArgumentException("Cannot get boolean value of parameter [" + name
-                        + "] (class " + value.getClass().getName() + ")");
-            }
-        }
-        return valueBoolean;
-    }
-
-    /**
-     * Return a map of all parameters
-     * @return the map
-     */
-    public Map getParameters() {
-        initializeParametersIfNotDone();
-        return Collections.unmodifiableMap(this.parameters);
-    }
-
-    /**
-     * Returns one of the strings "true" or "false" depending on whether the corresponding checkbox
-     * was checked.
-     * @param name The parameter name.
-     * @return A string.
-     */
-    public String getBooleanCheckboxParameter(String name) {
-        String value = "false";
-        if (getParameter(name) != null && getParameter(name).equals("on")) {
-            value = "true";
-        }
-        return value;
-    }
-
-    private String EXIT_URI = "lenya.exitUri";
-    private String DEFAULT_TARGET_URL = "private.defaultTargetUrl";
-
-    /**
-     * Sets the default target URL which should be used if no explicit target URL is set.
-     * @param url A URL string.
-     */
-    protected void setDefaultTargetURL(String url) {
-        setParameter(DEFAULT_TARGET_URL, url);
-    }
-
-    /**
-     * If {@link #setDefaultTargetURL(String)}was not called, the source document (
-     * {@link #getSourceURL()}) is returned.
-     * @see org.apache.lenya.cms.usecase.Usecase#getTargetURL(boolean)
-     */
-    public String getTargetURL(boolean success) {
-        String url = getParameterAsString(EXIT_URI);
-        if (url == null) {
-            url = getParameterAsString(DEFAULT_TARGET_URL);
-        }
-        if (url == null) {
-            url = getSourceURL();
-        }
-        return url + getExitQueryString();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setPart(java.lang.String,
-     *      org.apache.cocoon.servlet.multipart.Part)
-     */
-    public void setPart(String name, Part value) {
-        if (!Part.class.isInstance(value)) {
-            String className = "";
-            if (value != null) {
-                className = value.getClass().getName();
-            }
-            throw new RuntimeException("[" + name + "] = (" + className + ")  [" + value
-                    + "] is not a part object. Maybe you have to enable uploads?");
-        }
-        setParameter(name, value);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getPart(java.lang.String)
-     */
-    public Part getPart(String name) {
-        return (Part) getParameter(name);
-    }
-
-    protected DocumentFactory getDocumentFactory() {
-        DocumentFactory factory = (DocumentFactory) getParameter(PARAMETER_FACTORY);
-        Session session = getSession();
-        if (factory == null || factory.getSession() != session) {
-            factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            setParameter(PARAMETER_FACTORY, factory);
-        }
-        return factory;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Initializable#initialize()
-     */
-    public final void initialize() throws Exception {
-        Request request = ContextHelper.getRequest(this.context);
-        Session session = RepositoryUtil.getSession(this.manager, request);
-        setSession(session);
-        setParameter(PARAMETER_STATE_MACHINE, new StateMachine(MODEL));
-    }
-
-    /**
-     * Does the actual initialization. Template method.
-     */
-    protected final void doInitialize() {
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        // do nothing
-    }
-
-    /**
-     * Deletes a parameter.
-     * @param name The parameter name.
-     */
-    protected void deleteParameter(String name) {
-        this.parameters.remove(name);
-    }
-
-    private String name;
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setName(java.lang.String)
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getName()
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getParameterNames()
-     */
-    public String[] getParameterNames() {
-        initializeParametersIfNotDone();
-        Set keys = this.parameters.keySet();
-        return (String[]) keys.toArray(new String[keys.size()]);
-    }
-
-    protected void initializeParametersIfNotDone() {
-        if (this.parameters.get(PARAMETERS_INITIALIZED) == null) {
-            this.parameters.put(PARAMETERS_INITIALIZED, Boolean.TRUE);
-            initParameters();
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String)
-     */
-    public void setSourceURL(String url) {
-        setParameter(SOURCE_URL, url);
-    }
-
-    private UsecaseView view;
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#getView()
-     */
-    public UsecaseView getView() {
-        try {
-            prepareView();
-        } catch (Exception e) {
-            getLogger().error("View preparation for usecase [" + getName() + "] failed: ", e);
-            addErrorMessage(e.getMessage());
-        }
-        return this.view;
-    }
-
-    /**
-     * Override this method to prepare the view (add information messages etc.).
-     * @throws Exception If an error occurs.
-     */
-    protected void prepareView() throws Exception {
-    }
-
-    protected static final String ELEMENT_PARAMETER = "parameter";
-    protected static final String ATTRIBUTE_NAME = "name";
-    protected static final String ATTRIBUTE_VALUE = "value";
-    protected static final String ELEMENT_VIEW = "view";
-    protected static final String ELEMENT_TRANSACTION = "transaction";
-    protected static final String ATTRIBUTE_POLICY = "policy";
-    protected static final String VALUE_OPTIMISTIC = "optimistic";
-    protected static final String VALUE_PESSIMISTIC = "pessimistic";
-    protected static final String ELEMENT_EXIT = "exit";
-    protected static final String ATTRIBUTE_USECASE = "usecase";
-
-    private boolean isOptimistic = true;
-
-    /**
-     * @return <code>true</code> if the transaction policy is optimistic offline lock,
-     *         <code>false</code> if it is pessimistic offline lock.
-     */
-    public boolean isOptimistic() {
-        return this.isOptimistic;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-
-        Configuration[] parameterConfigs = config.getChildren(ELEMENT_PARAMETER);
-        for (int i = 0; i < parameterConfigs.length; i++) {
-            String name = parameterConfigs[i].getAttribute(ATTRIBUTE_NAME);
-            String value = parameterConfigs[i].getAttribute(ATTRIBUTE_VALUE);
-            setParameter(name, value);
-        }
-
-        Configuration viewConfig = config.getChild(ELEMENT_VIEW, false);
-        if (viewConfig != null) {
-            this.view = new UsecaseView();
-            try {
-                view.service(this.manager);
-            } catch (ServiceException e) {
-                throw new ConfigurationException("Couldn't service view: ", e);
-            }
-            view.configure(viewConfig);
-        }
-
-        Configuration transactionConfig = config.getChild(ELEMENT_TRANSACTION, false);
-        if (transactionConfig != null) {
-            String policy = transactionConfig.getAttribute(ATTRIBUTE_POLICY);
-            if (policy.equals(VALUE_PESSIMISTIC)) {
-                this.isOptimistic = false;
-            }
-        }
-
-        Configuration exitConfig = config.getChild(ELEMENT_EXIT, false);
-        if (exitConfig != null) {
-            this.exitUsecaseName = exitConfig.getAttribute(ATTRIBUTE_USECASE);
-            Configuration[] exitParameterConfigs = exitConfig.getChildren(ELEMENT_PARAMETER);
-            for (int i = 0; i < exitParameterConfigs.length; i++) {
-                String name = exitParameterConfigs[i].getAttribute(ATTRIBUTE_NAME);
-                String value = null;
-                String[] attributeNames = exitParameterConfigs[i].getAttributeNames();
-                for (int j = 0; j < attributeNames.length; j++) {
-                    if (attributeNames[j].equals(ATTRIBUTE_VALUE))
-                        value = exitParameterConfigs[i].getAttribute(ATTRIBUTE_VALUE);
-                }
-                setExitParameter(name, value);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setView(org.apache.lenya.cms.usecase.UsecaseView)
-     */
-    public void setView(UsecaseView view) {
-        this.view = view;
-    }
-
-    /**
-     * @return The objects that could be changed during the usecase.
-     * @throws UsecaseException if an error occurs.
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        return new Node[0];
-    }
-
-    /**
-     * <p>
-     * This method starts the transaction and locks all involved objects immediately.
-     * This way, all changes to the objects in the session occur after the locking,
-     * avoiding overriding changes of other sessions.
-     * </p>
-     * <p>
-     * This method is locked via the class lock to avoid inter-usecase synchronization issues.
-     * </p>
-     * @see org.apache.lenya.cms.usecase.Usecase#lockInvolvedObjects()
-     */
-    public final void lockInvolvedObjects() throws UsecaseException {
-        try {
-            startTransaction();
-        } catch (RepositoryException e) {
-            throw new UsecaseException(e);
-        }
-        synchronized (TransactionLock.LOCK) {
-            lockInvolvedObjects(getNodesToLock());
-        }
-        advanceState("lockInvolvedObjects");
-    }
-
-    /**
-     * Start a transaction by using a new, modifiable session.
-     * @throws RepositoryException if an error occurs.
-     */
-    protected void startTransaction() throws RepositoryException {
-        if (this.commitEnabled) {
-            setSession(RepositoryUtil.createSession(this.manager, getSession().getIdentity(), true));
-        }
-    }
-
-    /**
-     * <p>
-     * Lock the objects, for example when you need to change them (for example, delete). If you know
-     * when entering the usecase what these objects are, you do not need to call this, the framework
-     * will take of it if you implement getObjectsToLock(). If you do not know in advance what the
-     * objects are, you can call this method explicitly when appropriate.
-     * </p>
-     * 
-     * @param objects the transactionable objects to lock
-     * @throws UsecaseException if an error occurs.
-     * @see #lockInvolvedObjects()
-     * @see #getNodesToLock()
-     */
-    public final void lockInvolvedObjects(Node[] objects) throws UsecaseException {
-        try {
-            for (int i = 0; i < objects.length; i++) {
-                if (!objects[i].isLocked()) {
-                    objects[i].lock();
-                }
-                if (!isOptimistic() && !objects[i].isCheckedOutBySession(getSession())) {
-                    objects[i].checkout(checkoutRestrictedToSession());
-                }
-            }
-        } catch (RepositoryException e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    protected boolean canCheckOut(Node[] objects) throws RepositoryException {
-        boolean canExecute = true;
-
-        for (int i = 0; i < objects.length; i++) {
-            if (objects[i].isCheckedOut() && !objects[i].isCheckedOutBySession(getSession())) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug(
-                            "AbstractUsecase::lockInvolvedObjects() can not execute, object ["
-                                    + objects[i] + "] is already checked out");
-                }
-                canExecute = false;
-            }
-        }
-        return canExecute;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#cancel()
-     */
-    public void cancel() throws UsecaseException {
-        if (getSession().isModifiable()) {
-            try {
-                getSession().rollback();
-            } catch (Exception e) {
-                throw new UsecaseException(e);
-            }
-        }
-    }
-
-    private String exitUsecaseName = null;
-    private Map exitUsecaseParameters = new HashMap();
-
-    /**
-     * Sets a parameter to pass to the exit usecase.
-     * @param name The parameter name.
-     * @param value The parameter value.
-     */
-    protected void setExitParameter(String name, String value) {
-        this.exitUsecaseParameters.put(name, value);
-    }
-
-    /**
-     * Returns the query string to access the exit usecase of this usecase.
-     * @return A query string of the form
-     *         <code>?lenya.usecase=...&amp;param1=foo&amp;param2=bar</code>.
-     */
-    protected String getExitQueryString() {
-        StringBuffer queryBuffer = new StringBuffer();
-        if (this.exitUsecaseName != null) {
-            queryBuffer.append("?lenya.usecase=").append(this.exitUsecaseName);
-            for (Iterator i = this.exitUsecaseParameters.keySet().iterator(); i.hasNext();) {
-                String key = (String) i.next();
-                String value = (String) this.exitUsecaseParameters.get(key);
-                queryBuffer.append("&").append(key).append("=").append(value);
-            }
-        } else {
-            String exitUsecase = getParameterAsString("lenya.exitUsecase");
-            if (exitUsecase != null && !"".equals(exitUsecase)) {
-                queryBuffer.append("?lenya.usecase=").append(exitUsecase);
-            }
-        }
-        return queryBuffer.toString();
-    }
-
-    public Session getSession() {
-        return (Session) getParameter(PARAMETER_SESSION);
-    }
-
-    protected Context context;
-
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    protected void setSession(org.apache.lenya.cms.repository.Session session) {
-        setParameter(PARAMETER_SESSION, session);
-    }
-
-    private boolean commitEnabled = true;
-
-    public void setTestSession(Session session) {
-        this.commitEnabled = false;
-        setSession(session);
-    }
-    
-    protected boolean checkoutRestrictedToSession() {
-        return getParameterAsBoolean(PARAMETER_CHECKOUT_RESTRICTED_TO_SESSION, true);
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DocumentUsecase.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DocumentUsecase.java
deleted file mode 100644
index 0d35f94..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DocumentUsecase.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-
-/**
- * <p>
- * Extends AbstractUsecase with document helper methods.
- * </p>
- * <p>
- * Some parameters are initialized by default:
- * </p>
- * <ul>
- * <li><code>document</code>- the document</li>
- * </ul>
- */
-public class DocumentUsecase extends AbstractUsecase {
-
-    protected static final String DOCUMENT = "document";
-    protected static final String TARGET_DOCUMENT = "private.targetDocument";
-
-    /**
-     * Ctor.
-     */
-    public DocumentUsecase() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (getSourceDocument() == null) {
-            addErrorMessage("This usecase can only be invoked on documents!");
-        }
-    }
-
-    /*
-    public void setParameter(String name, Object value) {
-        if (name.equals(SOURCE_URL)) {
-            setSourceURL((String) value);
-        }
-        else {
-            super.setParameter(name, value);
-        }
-    }
-    */
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String)
-    public void setSourceURL(String url) {
-        try {
-            DocumentFactory factory = getDocumentFactory();
-            if (factory.isDocument(url)) {
-                Document document = factory.getFromURL(url);
-                setParameter(DOCUMENT, document);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        super.setParameter(SOURCE_URL, url);
-    }
-     */
-
-    /**
-     * Returns the source document.
-     * @return A document.
-     */
-    protected Document getSourceDocument() {
-        Document doc = (Document) getParameter(DOCUMENT);
-        if (doc == null || doc.getFactory().getSession() != getSession()) {
-            try {
-                DocumentFactory factory = getDocumentFactory();
-                String sourceUrl = getParameterAsString(SOURCE_URL);
-                if (factory.isDocument(sourceUrl)) {
-                    doc = factory.getFromURL(sourceUrl);
-                    setParameter(DOCUMENT, doc);
-                }
-            } catch (DocumentBuildException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return doc;
-    }
-
-    /**
-     * Sets the target document for the case that the usecase execution
-     * succeeded (see {@link #getTargetDocument(boolean)}).
-     * @param document A document.
-     */
-    protected void setTargetDocument(Document document) {
-        setParameter(TARGET_DOCUMENT, document);
-    }
-
-    /**
-     * Returns the document to be redirected to after the usecase has been
-     * completed. If the parameter <code>success</code> is false, the source
-     * document is returned (override this method to change this behaviour).
-     * @param success If the usecase was successfully completed.
-     * @return A document.
-     */
-    protected Document getTargetDocument(boolean success) {
-        if (success) {
-            return (Document) getParameter(TARGET_DOCUMENT, getSourceDocument());
-        } else {
-            return getSourceDocument();
-        }
-    }
-
-    /**
-     * If {@link #setTargetDocument(Document)}was not called, the URL of the
-     * source document ( {@link #getSourceDocument()}) is returned.
-     * @see org.apache.lenya.cms.usecase.Usecase#getTargetURL(boolean)
-     */
-    public String getTargetURL(boolean success) {
-        Document document = getTargetDocument(success);
-        String documentUrl = document.getCanonicalDocumentURL();
-        String url = "/" + document.getPublication().getId() + "/" + document.getArea()
-                + documentUrl;
-        return url + getExitQueryString();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getSourceURL()
-     */
-    public String getSourceURL() {
-        Document doc = getSourceDocument();
-        if (doc == null || !doc.hasLink()) {
-            return super.getSourceURL();
-        }
-        return doc.getCanonicalWebappURL();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#setDefaultTargetURL(java.lang.String)
-     */
-    protected void setDefaultTargetURL(String url) {
-        try {
-            Document target = getDocumentFactory().getFromURL(url);
-            setParameter(TARGET_DOCUMENT, target);
-        } catch (DocumentBuildException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-    protected void initParameters() {
-        super.initParameters();
-
-        setParameter(DOCUMENT, getSourceDocument());
-    }
-     */
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DummyUsecase.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DummyUsecase.java
deleted file mode 100644
index 9bdfd2a..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/DummyUsecase.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-/**
- * Usecase for presentation purposes using a plain JX template.
- *
- * @version $Id$
- */
-public class DummyUsecase extends AbstractUsecase {
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/StateMachine.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/StateMachine.java
deleted file mode 100644
index 5ddd756..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/StateMachine.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import org.apache.lenya.util.Assert;
-
-/**
- * A simple state machine.
- */
-public class StateMachine {
-
-    String currentState;
-    private Model model;
-
-    /**
-     * @param model The model to use.
-     */
-    public StateMachine(Model model) {
-        this.model = model;
-        this.currentState = model.getInitialState();
-    }
-
-    void invoke(String event) {
-        Transition transition = getTransition(event);
-        checkTransition(event, transition);
-        this.currentState = transition.destination;
-    }
-
-    protected Transition getTransition(String event) {
-        Assert.notNull("event", event);
-        Transition[] transitions = this.model.getTransitions();
-        Transition transition = null;
-        for (int i = 0; i < transitions.length; i++) {
-            Transition t = transitions[i];
-            if (canFire(t, event)) {
-                if (transition != null) {
-                    throw new IllegalStateException("More than 1 transition for event [" + event
-                            + "] in state [" + this.currentState + "]!");
-                }
-                transition = t;
-            }
-        }
-        return transition;
-    }
-
-    protected boolean canFire(Transition t, String event) {
-        return t.getSource().equals(this.currentState) && t.getEvent().equals(event);
-    }
-    
-    void checkEvent(String event) {
-        Transition transition = getTransition(event);
-        checkTransition(event, transition);
-    }
-
-    protected void checkTransition(String event, Transition transition) {
-        if (transition == null) {
-            throw new IllegalStateException("No transition found for event [" + event
-                    + "] in state [" + this.currentState + "]!");
-        }
-    }
-
-    /**
-     * A state machine model.
-     */
-    public static class Model {
-
-        private String initialState;
-
-        /**
-         * @param initialState The initial state.
-         * @param transitions The transitions.
-         */
-        public Model(String initialState, Transition[] transitions) {
-            this.transitions = transitions;
-            this.initialState = initialState;
-        }
-
-        /**
-         * @return The initial state.
-         */
-        public String getInitialState() {
-            return this.initialState;
-        }
-
-        private Transition[] transitions;
-
-        /**
-         * @return The transitions.
-         */
-        public Transition[] getTransitions() {
-            return this.transitions;
-        }
-    }
-
-    /**
-     * A transition switches from a source state to a destination state if an
-     * event is invoked.
-     */
-    public static class Transition {
-
-        /**
-         * @param source The source state.
-         * @param destination The destination state.
-         * @param event The event.
-         */
-        public Transition(String source, String destination, String event) {
-            this.source = source;
-            this.destination = destination;
-            this.event = event;
-        }
-
-        private String source;
-        private String destination;
-        private String event;
-
-        /**
-         * @return The destination state.
-         */
-        public String getDestination() {
-            return destination;
-        }
-
-        /**
-         * @return The event.
-         */
-        public String getEvent() {
-            return event;
-        }
-
-        /**
-         * @return The source state.
-         */
-        public String getSource() {
-            return source;
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/Usecase.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/Usecase.java
deleted file mode 100644
index 1e46d66..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/Usecase.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import java.util.List;
-
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Usecase interface.
- * 
- * @version $Id$
- */
-public interface Usecase {
-
-    /**
-     * The <code>Usecase</code> role.
-     */
-    String ROLE = Usecase.class.getName();
-    
-    /**
-     * @param url The URL the usecase is invoked on.
-     */
-    void setSourceURL(String url);
-
-    /**
-     * Sets a parameter from the form.
-     * @param name The parameter name.
-     * @param value The parameter value.
-     */
-    void setParameter(String name, Object value);
-
-    /**
-     * Returns the current value of a parameter.
-     * @param name The parameter name.
-     * @return An object.
-     */
-    Object getParameter(String name);
-
-    /**
-     * Returns the current value of a parameter.
-     * @param name The parameter name.
-     * @param defaultValue The default value to return if the parameter is not set.
-     * @return An object.
-     */
-    Object getParameter(String name, Object defaultValue);
-
-    /**
-     * Returns the current value of a parameter as a string.
-     * @param name The parameter name.
-     * @return A string or <code>null</code> if the parameter was not set.
-     */
-    String getParameterAsString(String name);
-    
-    /**
-     * @return The parameter names.
-     */
-    String[] getParameterNames();
-
-    /**
-     * Sets a parameter from the form. This method is called for parts in
-     * multipart requests.
-     * @param name The parameter name.
-     * @param value The parameter value.
-     */
-    void setPart(String name, Part value);
-
-    /**
-     * Returns the current value of a part parameter as a string.
-     * @param name The part parameter name.
-     * @return A part or <code>null</code> if the part was not set.
-     */
-    Part getPart(String name);
-
-    /**
-     * Advances the usecase to the next step. This method is called when all
-     * parameters are set.
-     * @throws UsecaseException if an error occurs.
-     */
-    void advance() throws UsecaseException;
-
-    /**
-     * Checks the conditions before a form is displayed.
-     * @throws UsecaseException if an error occurs that causes an unstable
-     *             system.
-     */
-    void checkPreconditions() throws UsecaseException;
-
-    /**
-     * Checks the conditions after the usecase was executed.
-     * @throws UsecaseException if an error occurs that causes an unstable
-     *             system.
-     */
-    void checkPostconditions() throws UsecaseException;
-
-    /**
-     * Checks the conditions right before the operation is executed.
-     * @throws UsecaseException if an error occurs that causes an unstable
-     *             system.
-     */
-    void checkExecutionConditions() throws UsecaseException;
-    
-    /**
-     * Locks all objects that are involved in the transaction.
-     * @throws UsecaseException if an error occurs.
-     */
-    void lockInvolvedObjects() throws UsecaseException;
-
-    /**
-     * Returns the error messages from the previous operation. Error messages
-     * prevent the operation from being executed.
-     * @return A list of {@link UsecaseMessage} objects.
-     */
-    List getErrorMessages();
-
-    /**
-     * Returns the info messages from the previous operation. Info messages do
-     * not prevent the operation from being executed.
-     * @return A list of {@link UsecaseMessage} objects.
-     */
-    List getInfoMessages();
-
-    /**
-     * Determine if the usecase has error messages.
-     * Provides a way of checking for errors without actually retrieving them.
-     * @return true if the usecase resulted in error messages.
-     */
-    public boolean hasErrors();
-
-    /**
-     * Determine if the usecase has info messages.
-     * Provides a way of checking for info messages without actually retrieving them.
-     * @return true if the usecase resulted in info messages being generated.
-     */
-    public boolean hasInfoMessages();
-
-    /**
-     * Executes the usecase. During this method error and info messages are
-     * filled in. If getErrorMessages() returns an empty array, the operation
-     * succeeded. Otherwise, the operation failed.
-     * @throws UsecaseException if an error occured that causes an unstable
-     *             system.
-     */
-    void execute() throws UsecaseException;
-    
-    /**
-     * Cancels the usecase.
-     * @throws UsecaseException if an error occurs.
-     */
-    void cancel() throws UsecaseException;
-    
-    /**
-     * @return The web application URL the usecase was invoked on.
-     */
-    String getSourceURL();
-
-    /**
-     * Returns the webapp URL which should be redirected to after the usecase is
-     * completed.
-     * @param success If the usecase was completed successfully.
-     * @return A web application URL.
-     */
-    String getTargetURL(boolean success);
-
-    /**
-     * @param name The name of this usecase.
-     */
-    void setName(String name);
-    
-    /**
-     * @return The name of this usecase.
-     */
-    String getName();
-    
-    /**
-     * @return The view of the usecase.
-     */
-    UsecaseView getView();
-
-    /**
-     * @param view The view of the usecase.
-     */
-    void setView(UsecaseView view);
-
-    /**
-     * @return The repository session.
-     */
-    Session getSession();
-    
-    /**
-     * If you invoke this method, the usecase won't use its own isolated session,
-     * but the passed test session. The session will not be committed when the usecase
-     * is invoked, so you can check it for modifications without modifying the repository.
-     * @param session The test session.
-     */
-    void setTestSession(Session session);
-    
-    /**
-     * @return if the usecase uses optimistic offline lock.
-     */
-    boolean isOptimistic();
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseException.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseException.java
deleted file mode 100644
index 2868903..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-/**
- * Usecase exception.
- *
- * @version $Id$
- */
-public class UsecaseException extends Exception {
-
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-     * Ctor.
-     */
-    public UsecaseException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     */
-    public UsecaseException(String message) {
-        super(message);
-    }
-
-    /**
-     * Ctor.
-     * @param message The message.
-     * @param cause The cause.
-     */
-    public UsecaseException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Ctor.
-     * @param cause The cause.
-     */
-    public UsecaseException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseInvoker.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseInvoker.java
deleted file mode 100644
index feafb4f..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseInvoker.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * <p>
- * This service allows to invoke a usecase in a convenient way. A typical usage
- * scenario is the composition of usecases - you can invoke one or multiple
- * "child" usecases from another usecase.
- * </p>
- * <p>
- * Example:
- * </p>
- * 
- * <pre>
- *     UsecaseInvoker invoker = null;
- *     try {
- *         invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
- *         Map params = new HashMap();
- *         params.put(..., ...);
- *         invoker.invoke(getSourceUrl(), childUsecaseName, params);
- *     
- *         if (invoker.getResult() != UsecaseInvoker.SUCCESS) {
- *             List messages = invoker.getErrorMessages();
- *             for (Iterator i = messages.iterator(); i.hasNext();) {
- *                 UsecaseMessage message = (UsecaseMessage) i.next();
- *                 addErrorMessage(message.getMessage(), message.getParameters());
- *             }
- *         }
- *     } finally {
- *         if (invoker != null) {
- *             this.manager.release(invoker);
- *         }
- *     }
- *     
- * </pre>
- * 
- * @version $Id$
- */
-public interface UsecaseInvoker {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = UsecaseInvoker.class.getName();
-
-    /**
-     * Invokes a usecase.
-     * @param webappUrl The URL to invoke the usecase on.
-     * @param usecaseName The name of the usecase.
-     * @param parameters The parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void invoke(String webappUrl, String usecaseName, Map parameters) throws UsecaseException;
-
-    /**
-     * @return The result of the invocation.
-     */
-    int getResult();
-
-    /**
-     * The invocation was successful.
-     */
-    int SUCCESS = 0;
-
-    /**
-     * The precondition check failed.
-     */
-    int PRECONDITIONS_FAILED = 1;
-
-    /**
-     * The execution condition check failed.
-     */
-    int EXECUTION_CONDITIONS_FAILED = 2;
-
-    /**
-     * The execution itself failed.
-     */
-    int EXECUTION_FAILED = 3;
-
-    /**
-     * The postcondition check failed.
-     */
-    int POSTCONDITIONS_FAILED = 4;
-
-    /**
-     * Returns the error messages from the previous operation. Error messages
-     * prevent the operation from being executed.
-     * @return A list of {@link UsecaseMessage} objects.
-     */
-    List getErrorMessages();
-
-    /**
-     * Returns the info messages from the previous operation. Info messages do
-     * not prevent the operation from being executed.
-     * @return A list of {@link UsecaseMessage} objects.
-     */
-    List getInfoMessages();
-
-    /**
-     * @return The target URL of the usecase, based on the success. This method
-     *         throws a RuntimeException if the usecase hasn't been executed
-     *         yet.
-     */
-    String getTargetUrl();
-
-    /**
-     * @param session The test session to use.
-     */
-    void setTestSession(Session session);
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseMessage.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseMessage.java
deleted file mode 100644
index d20622d..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseMessage.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import org.apache.lenya.util.Assert;
-
-/**
- * A message in a usecase. This an encapsulation for an internationalizable
- * message, containing a message content and potentially some parameters. The
- * parameters correspond to the placeholders in dictionary entries.
- * 
- * @version $Id$
- */
-public class UsecaseMessage {
-
-    private String message;
-    private String[] params;
-
-    /**
-     * Ctor.
-     * @param _message The message.
-     */
-    public UsecaseMessage(String _message) {
-        Assert.notNull("message", _message);
-        this.message = _message;
-    }
-
-    /**
-     * Ctor.
-     * @param _message The message.
-     * @param _params The parameters.
-     */
-    public UsecaseMessage(String _message, String[] _params) {
-        this(_message);
-
-        Assert.notNull("params", _params);
-        for (int i = 0; i < _params.length; i++) {
-            Assert.notNull("params[" + i + "]", _params[i]);
-        }
-        this.params = (String[])_params.clone();
-    }
-
-    /**
-     * Determine if this message has parameters
-     * @return true if the message has parameters
-     */
-    public boolean hasParameters() {
-        return params != null && params.length > 0;
-    }
-
-    /**
-     * Retrieve the message content
-     * @return the message
-     */
-    public String getMessage() {
-        return message;
-    }
-
-    /**
-     * Returns the parameters of this message. If no parameters are set,
-     * an empty String array is returned.
-     * @return the parameters
-     */
-    public String[] getParameters() {
-        return this.params == null ? new String[0] : this.params;
-    }
-
-    /**
-     * @return A string representation, the parameters are included as a comma-separated list.
-     */
-    public String toString() {
-        StringBuffer msg = new StringBuffer(getMessage());
-        String[] params = getParameters();
-        for (int i = 0; i < params.length; i++) {
-            msg.append(", " + params[i]);
-        }
-        return msg.toString();
-    }
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseResolver.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseResolver.java
deleted file mode 100644
index 59ae495..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseResolver.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import org.apache.avalon.framework.service.ServiceException;
-
-/**
- * Usecase resolver interface.
- *
- * @version $Id$
- */
-public interface UsecaseResolver {
-
-    /**
-     * The Avalon role.
-     */
-    String ROLE = UsecaseResolver.class.getName();
-    
-    /**
-     * Resolves a usecase object.
-     * @param webappUrl The web application URL.
-     * @param name The name of the usecase.
-     * @return A usecase object.
-     * @throws ServiceException if the object could not be created.
-     */
-    Usecase resolve(String webappUrl, String name) throws ServiceException;
-    
-    /**
-     * Checks if a certain usecase is registered.
-     * @param webappUrl The web application URL.
-     * @param name The usecase name.
-     * @return A boolean value.
-     * @throws ServiceException if an error occurs.
-     */
-    boolean isRegistered(String webappUrl, String name) throws ServiceException;
-    
-    /**
-     * Releases a usecase object.
-     * @param usecase The usecase object.
-     * @throws ServiceException if an error occurs.
-     */
-    void release(Usecase usecase) throws ServiceException;
-    
-    /**
-     * @return The names of all registered usecases in alphabetical order.
-     */
-    String[] getUsecaseNames();
-
-    /**
-     * @param usecaseName The usecase to register.
-     */
-    void register(String usecaseName);
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseView.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseView.java
deleted file mode 100644
index 3d3c346..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/UsecaseView.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase;
-
-import java.util.HashMap;
-import java.util.Map;
-
-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.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.usecase.gui.GUIManager;
-import org.apache.lenya.cms.usecase.gui.Tab;
-
-/**
- * Information about a usecase view.
- * 
- * @version $Id$
- * <p>
- * Example configuration:
- * <code><pre>&lt;view uri="/modules/foo/usecases/foo-mogrify.jx"
- *     customFlow="/modules/foo/flow/myflow.js"
- *     menu="false|true"
- *     createContinuation="false|true"
- * &gt;
- *   &lt;tab group="foo" name="bar"/&gt;      // optional
- *   &lt;parameter name="foo" value="bar/&gt; // optional
- * &lt;/view&gt;</pre></code>
- * </p>
- * <p>
- * <code>uri</code> is the relative URL of the page to be sent back to the client. If the URI
- * starts with a slash, it is resolved starting at the root sitemap, otherwise it
- * is resolved relative to the current sitemap. The URI should not contain a
- * scheme (such as cocoon:).
- * </p>
- * <p>
- * <code>menu</code> is a boolean that governs whether the Lenya GUI menu is displayed while
- * the usecase is running. The displaying of the menu is handled by the usecase.xmap sitemap;
- * hence this option is only functional if <code>uri</code> does <em>not</em> start with a slash
- * (or if you implement it yourself based on the <code>showMenu()</code> method of this object).<br>
- * Default is <em>false</em>.
- * </p>
- * <p>
- * <code>customFlow</code> is a javascript file where you can provide custom methods that will override
- * those in the default usecase handler (<code>modules-core/usecase/usecases.js</code>).
- * Currently, it provides support for "customLoopFlow" and "customSubmitFlow". Refer to the default handler
- * for function prototypes and more information.
- * NB: the "menu" and "createContinuation" attributes will have no effect when you use custom flow code, unless
- * you check for them and implement the respective functions yourself.
- * </p>
- * <p>
- * <code>createContinuation</code> can be set to false, in which case the generic flowscript
- * uses "sendPage" instead of "sendPageAndWait" and terminates after the view has been sent.
- * When <code>createContinuation</code> is false, you must not specify <code>submitFlow</code> 
- * or <code>loopFlow</code>.<br>
- * Default is <em>true</em>.
- * </p>
- * <p>
- * For tabbed usecases, you can optionally specify a tab group and name. Additional custom
- * configuration can be passed via the generic "parameter" element. 
- * </p>
- * <p>
- * For backwards compatibility with existing usecases, the constructor looks for a <code>template</code>
- * attribute if no <code>uri</code> is present. It is mapped to the same field, viewUri, internally.
- * </p>
- */
-public class UsecaseView implements Configurable, Serviceable {
-
-    protected static final String ATTRIBUTE_URI = "uri";
-    protected static final String ATTRIBUTE_TEMPLATE = "template"; // backwards compatibility, mapped to "uri"
-
-    protected static final String ATTRIBUTE_CUSTOM_FLOW = "customFlow";
-    protected static final String ATTRIBUTE_SHOW_MENU = "menu";
-    protected static final String ATTRIBUTE_CREATE_CONT = "createContinuation";
-
-    // additional parameters:
-    protected static final String ELEMENT_PARAMETER = "parameter";
-    protected static final String ATTRIBUTE_NAME = "name";
-    protected static final String ATTRIBUTE_VALUE = "value";
-
-    // tabbed usecases:
-    protected static final String ATTRIBUTE_GROUP = "group"; 
-    protected static final String ELEMENT_TAB = "tab";
-
-
-    private Map parameters = new HashMap();
-    private ServiceManager manager;
-
-    private String viewUri;
-    private String customFlow;
-    
-    private boolean showMenu;
-    private boolean createContinuation;
-    private Tab tab;
-
-
-    
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        // get <view> attributes:
-        this.viewUri = config.getAttribute(ATTRIBUTE_URI, "");
-        if (this.viewUri == "") {
-           // fall back to "template" attribute for backwards compatibility (rip out eventually).
-           this.viewUri = config.getAttribute(ATTRIBUTE_TEMPLATE, "");
-        }
-        this.showMenu = config.getAttributeAsBoolean(ATTRIBUTE_SHOW_MENU, false);
-        this.customFlow = config.getAttribute(ATTRIBUTE_CUSTOM_FLOW, "");
-        this.createContinuation = config.getAttributeAsBoolean(ATTRIBUTE_CREATE_CONT, true);
-
-
-        // get <tab/> configuration:
-        Configuration tabConfig = config.getChild(ELEMENT_TAB, false);
-        if (tabConfig != null) {
-            String tabName = tabConfig.getAttribute(ATTRIBUTE_NAME);
-            String tabGroup = tabConfig.getAttribute(ATTRIBUTE_GROUP);
-            GUIManager guiMgr = null;
-            try {
-                guiMgr = (GUIManager) this.manager.lookup(GUIManager.ROLE);
-                this.tab = guiMgr.getTab(tabGroup, tabName);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (guiMgr != null) {
-                    this.manager.release(guiMgr);
-                }
-            }
-        }
-
-        // get <parameter/> configuration
-        Configuration[] parameterConfigs = config.getChildren(ELEMENT_PARAMETER);
-        for (int i = 0; i < parameterConfigs.length; i++) {
-            String name = parameterConfigs[i].getAttribute(ATTRIBUTE_NAME);
-            String value = parameterConfigs[i].getAttribute(ATTRIBUTE_VALUE);
-            this.parameters.put(name, value);
-        }
-
-        checkConfig();
-
-    }
-
-    /**
-     * @return The URI of the JX template;
-     */
-    public String getViewURI() {
-        return this.viewUri;
-    }
-
-    /**
-     * @return whether the menubar should be visible on usecase screens.
-     */
-    public boolean showMenu() {
-        return this.showMenu;
-    }
-
-    /**
-     * @return whether a continuation should be created.
-     */
-    public boolean createContinuation() {
-        return this.createContinuation;
-    }
-
-    /**
-     * @return the Flowscript snippet to be executed during the usecase view loop.
-     */
-    public String getCustomFlow() {
-        return this.customFlow;
-    }
-
-    /**
-     * @param name The parameter name.
-     * @return The parameter value.
-     */
-    public String getParameter(String name) {
-        return (String) this.parameters.get(name);
-    }
-
-    /**
-     * @return The tab the usecase belongs to or <code>null</code>.
-     */
-    public Tab getTab() {
-        return this.tab;
-    }
-
-    /**
-     * @return All tabs in the same group.
-     */
-    public Tab[] getTabsInGroup() {
-        if (getTab() == null) {
-            return null;
-        } else {
-            GUIManager guiMgr = null;
-            try {
-                guiMgr = (GUIManager) this.manager.lookup(GUIManager.ROLE);
-                return guiMgr.getActiveTabs(getTab().getGroup());
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (guiMgr != null) {
-                    this.manager.release(guiMgr);
-                }
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    private void checkConfig() throws ConfigurationException {
-        if (this.tab != null && this.viewUri == "") {
-            throw new ConfigurationException("When you specify a <tab/>, you must specify a <view uri=\"..\"/> as well!");
-        }
-    }
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/cocoon/UsecaseModule.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/cocoon/UsecaseModule.java
deleted file mode 100644
index a9ac45d..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/cocoon/UsecaseModule.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.cocoon;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-import org.apache.lenya.cms.usecase.gui.Tab;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Input module to obtain information about usecases.
- */
-public class UsecaseModule extends AbstractInputModule implements Serviceable {
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        
-        Object value = "";
-        
-        String prefix = "tabGroup:";
-        if (name.startsWith(prefix) && name.length() > prefix.length()) {
-            String[] steps = name.split(":");
-            String usecaseName = steps[1];
-            
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            String webappUrl = ServletHelper.getWebappURI(request);
-            
-            UsecaseResolver resolver = null;
-            Usecase usecase = null;
-            try {
-                resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-                usecase = resolver.resolve(webappUrl, usecaseName);
-                if (usecase.getView() != null) {
-                    Tab tab = usecase.getView().getTab();
-                    if (tab != null) {
-                        value = tab.getGroup();
-                    }
-                }
-            } catch (ServiceException e) {
-                throw new ConfigurationException("Error: ", e);
-            }
-            finally {
-                if (resolver != null) {
-                    if (usecase != null) {
-                        try {
-                            resolver.release(usecase);
-                        } catch (ServiceException e) {
-                            throw new RuntimeException(e);
-                        }
-                    }
-                    this.manager.release(resolver);
-                }
-            }
-        }
-        
-        return value;
-
-    }
-    
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/GUIManager.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/GUIManager.java
deleted file mode 100644
index dbefdfe..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/GUIManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.usecase.gui;

-

-/**

- * Usecase GUI manager.

- */

-public interface GUIManager {

-

-    /**

-     * The service role.

-     */

-    String ROLE = GUIManager.class.getName();

-

-    /**

-     * @param group A tab group.

-     * @return All tabs of this group.

-     */

-    Tab[] getActiveTabs(String group);

-    

-    /**

-     * @param group The group.

-     * @param name The tab name.

-     * @return The tab of this name within this group.

-     */

-    Tab getTab(String group, String name);

-    

-}

diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/Tab.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/Tab.java
deleted file mode 100644
index 27a106c..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/Tab.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.usecase.gui;

-

-/**

- * Tab in a tabbed multiple-usecase environment.

- */

-public interface Tab {

-

-    /**

-     * @return The name of the tab.

-     */

-    String getName();

-

-    /**

-     * @return The label.

-     */

-    public String getLabel();

-

-    /**

-     * @return The usecase which is displayed on the tab.

-     */

-    public String getUsecase();

-

-    /**

-     * @return The group this tab belongs to.

-     */

-    public String getGroup();

-    

-    /**

-     * @return The names of the parameters to pass to the usecase upon invocation.

-     */

-    public String[] getParameterNames();

-    

-    /**

-     * Returns the value of a certain parameter to pass to the usecase upon invocation. 

-     * @param key The value.

-     * @return A string.

-     */

-    public String getParameter(String key);

-    

-}

diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
deleted file mode 100644
index 2006c1f..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.usecase.gui.impl;

-

-import java.util.ArrayList;

-import java.util.HashMap;

-import java.util.List;

-import java.util.Map;

-

-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.context.Context;

-import org.apache.avalon.framework.context.ContextException;

-import org.apache.avalon.framework.context.Contextualizable;

-import org.apache.avalon.framework.logger.AbstractLogEnabled;

-import org.apache.avalon.framework.service.ServiceException;

-import org.apache.avalon.framework.service.ServiceManager;

-import org.apache.avalon.framework.service.ServiceSelector;

-import org.apache.avalon.framework.service.Serviceable;

-import org.apache.cocoon.components.ContextHelper;

-import org.apache.cocoon.environment.Request;

-import org.apache.lenya.ac.AccessControlException;

-import org.apache.lenya.ac.AccessController;

-import org.apache.lenya.ac.AccessControllerResolver;

-import org.apache.lenya.ac.Authorizer;

-import org.apache.lenya.ac.Role;

-import org.apache.lenya.cms.ac.PolicyUtil;

-import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;

-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;

-import org.apache.lenya.cms.publication.DocumentFactory;

-import org.apache.lenya.cms.publication.DocumentUtil;

-import org.apache.lenya.cms.publication.Publication;

-import org.apache.lenya.cms.publication.PublicationUtil;

-import org.apache.lenya.cms.usecase.Usecase;

-import org.apache.lenya.cms.usecase.UsecaseMessage;

-import org.apache.lenya.cms.usecase.UsecaseResolver;

-import org.apache.lenya.cms.usecase.gui.GUIManager;

-import org.apache.lenya.cms.usecase.gui.Tab;

-import org.apache.lenya.util.ServletHelper;

-

-/**

- * GUI manager implementation.

- */

-public class GUIManagerImpl extends AbstractLogEnabled implements GUIManager, Configurable,

-        Serviceable, Contextualizable {

-

-    protected static final String ELEMENT_PARAMETER = "parameter";

-    protected static final String ELEMENT_TAB_GROUP = "tab-group";

-    protected static final String ELEMENT_TAB = "tab";

-    protected static final String ATTRIBUTE_NAME = "name";

-    protected static final String ATTRIBUTE_VALUE = "value";

-    protected static final String ATTRIBUTE_LABEL = "label";

-    protected static final String ATTRIBUTE_USECASE = "usecase";

-

-    private Map name2group = new HashMap();

-

-    /**

-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)

-     */

-    public void configure(Configuration config) throws ConfigurationException {

-        Configuration[] tabGroupConfigs = config.getChildren(ELEMENT_TAB_GROUP);

-        for (int i = 0; i < tabGroupConfigs.length; i++) {

-            String groupName = tabGroupConfigs[i].getAttribute(ATTRIBUTE_NAME);

-            List group = new ArrayList();

-            Configuration[] tabConfigs = tabGroupConfigs[i].getChildren(ELEMENT_TAB);

-            for (int j = 0; j < tabConfigs.length; j++) {

-                String name = tabConfigs[j].getAttribute(ATTRIBUTE_NAME);

-                String label = tabConfigs[j].getAttribute(ATTRIBUTE_LABEL);

-                String usecase = tabConfigs[j].getAttribute(ATTRIBUTE_USECASE);

-                TabImpl tab = new TabImpl(groupName, name, usecase, label);

-                group.add(tab);

-

-                Configuration[] paramConfigs = tabConfigs[j].getChildren(ELEMENT_PARAMETER);

-                for (int p = 0; p < paramConfigs.length; p++) {

-                    String paramName = paramConfigs[p].getAttribute(ATTRIBUTE_NAME);

-                    String paramValue = paramConfigs[p].getAttribute(ATTRIBUTE_VALUE);

-                    tab.setParameter(paramName, paramValue);

-                }

-            }

-            name2group.put(groupName, group.toArray(new Tab[group.size()]));

-        }

-    }

-

-    /**

-     * @see org.apache.lenya.cms.usecase.gui.GUIManager#getActiveTabs(java.lang.String)

-     */

-    public Tab[] getActiveTabs(String group) {

-        Tab[] tabs = getTabs(group);

-        List activeTabs = new ArrayList();

-        for (int i = 0; i < tabs.length; i++) {

-            if (getErrorMessages(tabs[i]).length == 0) {

-                activeTabs.add(tabs[i]);

-            }

-        }

-        return (Tab[]) activeTabs.toArray(new Tab[activeTabs.size()]);

-    }

-

-    protected Tab[] getTabs(String group) {

-        Tab[] tabs = (Tab[]) name2group.get(group);

-        return tabs;

-    }

-

-    /**

-     * @see org.apache.lenya.cms.usecase.gui.GUIManager#getTab(java.lang.String, java.lang.String)

-     */

-    public Tab getTab(String group, String name) {

-        Tab[] tabs = getTabs(group);

-        for (int i = 0; i < tabs.length; i++) {

-            if (name.equals(tabs[i].getName())) {

-                return tabs[i];

-            }

-        }

-        throw new IllegalArgumentException("No tab [" + name + "] in group [" + group + "]");

-    }

-

-    /**

-     * Checks if a tab's usecase can be executed.

-     * @param tab The tab.

-     * @return An array of error messages.

-     */

-    protected UsecaseMessage[] getErrorMessages(Tab tab) {

-

-        UsecaseMessage[] messages;

-

-        ServiceSelector selector = null;

-        AccessControllerResolver acResolver = null;

-        AccessController accessController = null;

-        UsecaseResolver usecaseResolver = null;

-        UsecaseAuthorizer authorizer = null;

-        try {

-

-            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE

-                    + "Selector");

-            acResolver = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);

-            accessController = acResolver.resolveAccessController(this.webappUrl);

-

-            Authorizer[] authorizers = accessController.getAuthorizers();

-            for (int i = 0; i < authorizers.length; i++) {

-                if (authorizers[i] instanceof UsecaseAuthorizer) {

-                    authorizer = (UsecaseAuthorizer) authorizers[i];

-                }

-            }

-

-            usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);

-

-            // filter item if usecase not allowed

-            if (tab.getUsecase() != null) {

-                if (getLogger().isDebugEnabled()) {

-                    getLogger().debug("Found usecase [" + tab.getUsecase() + "]");

-                }

-

-                DocumentFactory factory;

-                ContextUtility util = null;

-                try {

-                    util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);

-                    Request request = util.getRequest();

-                    factory = DocumentUtil.getDocumentFactory(this.manager, request);

-                } finally {

-                    if (util != null) {

-                        this.manager.release(util);

-                    }

-                }

-

-                Publication pub = PublicationUtil.getPublicationFromUrl(this.manager,

-                        factory,

-                        this.webappUrl);

-                if (!authorizer.authorizeUsecase(tab.getUsecase(), this.roles, pub)) {

-                    if (getLogger().isDebugEnabled()) {

-                        getLogger().debug("Usecase not authorized");

-                    }

-                    messages = new UsecaseMessage[1];

-                    messages[0] = new UsecaseMessage("Access denied");

-                }

-            }

-

-            if (usecaseResolver.isRegistered(this.webappUrl, tab.getUsecase())) {

-                Usecase usecase = null;

-                try {

-                    usecase = usecaseResolver.resolve(this.webappUrl, tab.getUsecase());

-                    usecase.setSourceURL(this.webappUrl);

-                    usecase.setName(tab.getUsecase());

-                    String[] keys = tab.getParameterNames();

-                    for (int i = 0; i < keys.length; i++) {

-                        usecase.setParameter(keys[i], tab.getParameter(keys[i]));

-                    }

-                    usecase.checkPreconditions();

-                    if (usecase.hasErrors()) {

-                        if (getLogger().isDebugEnabled()) {

-                            getLogger().debug("Usecase preconditions not complied");

-                        }

-

-                        List msgs = usecase.getErrorMessages();

-                        messages = (UsecaseMessage[]) msgs.toArray(new UsecaseMessage[msgs.size()]);

-                    } else {

-                        messages = new UsecaseMessage[0];

-                    }

-                } finally {

-                    if (usecase != null) {

-                        usecaseResolver.release(usecase);

-                    }

-                }

-            } else {

-                messages = new UsecaseMessage[1];

-                messages[0] = new UsecaseMessage("Usecase [" + tab.getUsecase()

-                        + "] is not registered!", null);

-            }

-        } catch (final Exception e) {

-            throw new RuntimeException(e);

-        } finally {

-            if (usecaseResolver != null) {

-                this.manager.release(usecaseResolver);

-            }

-            if (selector != null) {

-                if (acResolver != null) {

-                    if (accessController != null) {

-                        acResolver.release(accessController);

-                    }

-                    selector.release(acResolver);

-                }

-                this.manager.release(selector);

-            }

-        }

-

-        return messages;

-    }

-

-    private ServiceManager manager;

-

-    /**

-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)

-     */

-    public void service(ServiceManager manager) throws ServiceException {

-        this.manager = manager;

-    }

-

-    private String webappUrl;

-    private Role[] roles;

-

-    /**

-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)

-     */

-    public void contextualize(Context context) throws ContextException {

-        Request request = ContextHelper.getRequest(context);

-        try {

-            this.roles = PolicyUtil.getRoles(request);

-        } catch (AccessControlException e) {

-            throw new ContextException("Obtaining roles failed: ", e);

-        }

-        this.webappUrl = ServletHelper.getWebappURI(request);

-    }

-

-}

diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/TabImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/TabImpl.java
deleted file mode 100644
index 7167d04..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/gui/impl/TabImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.gui.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lenya.cms.usecase.gui.Tab;
-
-/**
- * Tab implementation.
- */
-public class TabImpl implements Tab {
-
-    /**
-     * Ctor.
-     * @param group The name of the usecase group.
-     * @param name The name of the tab.
-     * @param usecase The usecase to be displayed.
-     * @param label The label to be displayed on the tab.
-     */
-    public TabImpl(String group, String name, String usecase, String label) {
-        this.name = name;
-        this.group = group;
-        this.usecase = usecase;
-        this.label = label;
-    }
-    
-    private Map parameters = new HashMap();
-
-    private String name;
-
-    void setParameter(String name, String value) {
-        this.parameters.put(name, value);
-    }
-    
-    public String getName() {
-        return this.name;
-    }
-
-    private String usecase;
-
-    private String label;
-
-    public String getLabel() {
-        return label;
-    }
-
-    public String getUsecase() {
-        return usecase;
-    }
-
-    private String group;
-
-    public String getGroup() {
-        return this.group;
-    }
-    
-    public String[] getParameterNames() {
-        Set keys = this.parameters.keySet();
-        return (String[]) keys.toArray(new String[keys.size()]);
-    }
-    
-    public String getParameter(String key) {
-        return (String) this.parameters.get(key);
-    }
-    
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/TestUsecaseInvoker.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/TestUsecaseInvoker.java
deleted file mode 100644
index 36f3900..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/TestUsecaseInvoker.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.impl;
-
-
-/**
- * Invoker for test usecases. The transactions are not committed.
- */
-public class TestUsecaseInvoker extends UsecaseInvokerImpl {
-    
-    /**
-     * The Avalon role.
-     */
-    public static final String ROLE = TestUsecaseInvoker.class.getName();
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
deleted file mode 100644
index 571bda8..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.impl;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.UsecaseInvoker;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-
-/**
- * Usecase invoker implementation.
- * 
- * @version $Id$
- */
-public class UsecaseInvokerImpl extends AbstractLogEnabled implements UsecaseInvoker, Serviceable {
-
-    private String targetUrl;
-
-    /**
-     * @see org.apache.lenya.cms.usecase.UsecaseInvoker#invoke(java.lang.String, java.lang.String,
-     *      java.util.Map)
-     */
-    public void invoke(String webappUrl, String usecaseName, Map parameters)
-            throws UsecaseException {
-
-        this.errorMessages.clear();
-        this.infoMessages.clear();
-
-        UsecaseResolver resolver = null;
-        Usecase usecase = null;
-        this.result = SUCCESS;
-        try {
-
-            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-            usecase = resolver.resolve(webappUrl, usecaseName);
-
-            Session testSession = getTestSession();
-            if (testSession != null) {
-                usecase.setTestSession(testSession);
-            }
-
-            passParameters(usecase, parameters);
-
-            usecase.checkPreconditions();
-
-            if (succeeded(PRECONDITIONS_FAILED, usecase)) {
-
-                usecase.lockInvolvedObjects();
-                usecase.checkExecutionConditions();
-
-                if (succeeded(EXECUTION_CONDITIONS_FAILED, usecase)) {
-                    usecase.execute();
-
-                    boolean success = succeeded(EXECUTION_FAILED, usecase);
-                    this.targetUrl = usecase.getTargetURL(success);
-                    if (success) {
-                        usecase.checkPostconditions();
-                        succeeded(POSTCONDITIONS_FAILED, usecase);
-                    }
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (usecase != null) {
-                    try {
-                        resolver.release(usecase);
-                    } catch (ServiceException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-    
-    private Session testSession = null;
-    
-    protected Session getTestSession() {
-        return this.testSession;
-    }
-
-    protected boolean succeeded(int result, Usecase usecase) {
-
-        this.errorMessages.addAll(usecase.getErrorMessages());
-        this.infoMessages.addAll(usecase.getInfoMessages());
-
-        if (usecase.getErrorMessages().isEmpty()) {
-            return true;
-        } else {
-            this.result = result;
-            String message = null;
-            switch (result) {
-            case PRECONDITIONS_FAILED:
-                message = "Precondition messages:";
-                break;
-            case EXECUTION_CONDITIONS_FAILED:
-                message = "Execution condition messages:";
-                break;
-            case EXECUTION_FAILED:
-                message = "Execution messages:";
-                break;
-            case POSTCONDITIONS_FAILED:
-                message = "Postcondition messages:";
-                break;
-            }
-            logErrorMessages(usecase.getName(), message, usecase.getErrorMessages());
-            return false;
-        }
-    }
-
-    /**
-     * @param usecase The usecase to pass the parameters to.
-     * @param parameters The parameters.
-     */
-    protected void passParameters(Usecase usecase, Map parameters) {
-        for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            Object value = parameters.get(key);
-            usecase.setParameter(key, value);
-        }
-    }
-
-    /**
-     * @param usecaseName The name of the usecase.
-     * @param headline The headline of the messages.
-     * @param errorMessages The messages to log.
-     */
-    protected void logErrorMessages(String usecaseName, String headline, List errorMessages) {
-        getLogger().error("Usecase [" + usecaseName + "] - " + headline);
-        for (Iterator i = errorMessages.iterator(); i.hasNext();) {
-            getLogger().error("" + (UsecaseMessage) i.next());
-        }
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    private List errorMessages = new ArrayList();
-    private List infoMessages = new ArrayList();
-
-    public List getErrorMessages() {
-        return Collections.unmodifiableList(this.errorMessages);
-    }
-
-    public List getInfoMessages() {
-        return Collections.unmodifiableList(this.infoMessages);
-    }
-
-    private int result = SUCCESS;
-
-    public int getResult() {
-        return this.result;
-    }
-
-    public String getTargetUrl() {
-        if (this.targetUrl == null) {
-            throw new IllegalStateException("The usecase has not been executed yet.");
-        }
-        return this.targetUrl;
-    }
-
-    public void setTestSession(Session session) {
-        this.testSession = session;
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseProxy.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseProxy.java
deleted file mode 100644
index 00babbb..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseProxy.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.impl;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseView;
-
-/**
- * Proxy which holds the parameters of a usecase. It is used to restore the usecase after the
- * flowscript is re-entered and to pass the usecase parameters to a JX template.
- * 
- * @version $Id$
- */
-public class UsecaseProxy {
-
-    private Map parameters = new HashMap();
-    private String name;
-    private String sourceUrl;
-    private UsecaseView view;
-
-    /**
-     * Ctor.
-     * @param usecase The usecase to extract the parameters from.
-     */
-    public UsecaseProxy(Usecase usecase) {
-        this.name = usecase.getName();
-
-        String[] names = usecase.getParameterNames();
-        for (int i = 0; i < names.length; i++) {
-            this.parameters.put(names[i], usecase.getParameter(names[i]));
-        }
-
-        this.errorMessages = usecase.getErrorMessages();
-        this.infoMessages = usecase.getInfoMessages();
-        this.sourceUrl = usecase.getSourceURL();
-        this.view = usecase.getView();
-    }
-
-    /**
-     * Initializes a usecase from this proxy.
-     * @param usecase The usecase.
-     */
-    public void setup(Usecase usecase) {
-        usecase.setName(this.name);
-        usecase.setSourceURL(this.sourceUrl);
-        usecase.setView(this.view);
-
-        String[] names = getParameterNames();
-        for (int i = 0; i < names.length; i++) {
-            usecase.setParameter(names[i], parameters.get(names[i]));
-        }
-    }
-
-    /**
-     * Returns the current value of a parameter.
-     * @param name The parameter name.
-     * @return An object.
-     */
-    public Object getParameter(String name) {
-        return this.parameters.get(name);
-    }
-
-    /**
-     * Returns the current value of a parameter.
-     * @param name The parameter name.
-     * @param defaultValue The default value to use when the parameter is not set.
-     * @return An object.
-     */
-    public Object getParameter(String name, Object defaultValue) {
-        Object value = this.parameters.get(name);
-        if (value == null) {
-            value = defaultValue;
-        }
-        return value;
-    }
-
-    /**
-     * Returns the current value of a parameter as a string.
-     * @param name The parameter name.
-     * @return A string or <code>null</code> if the parameter was not set.
-     */
-    public String getParameterAsString(String name) {
-        String valueString = null;
-        Object value = getParameter(name);
-        if (value != null) {
-            valueString = value.toString();
-        }
-        return valueString;
-    }
-
-    /**
-     * @return The parameter names.
-     */
-    public String[] getParameterNames() {
-        Set keys = this.parameters.keySet();
-        return (String[]) keys.toArray(new String[keys.size()]);
-    }
-
-    private List errorMessages;
-    private List infoMessages;
-
-    /**
-     * Returns the error messages from the previous operation. Error messages prevent the operation
-     * from being executed.
-     * @return A list of strings.
-     */
-    public List getErrorMessages() {
-        return this.errorMessages;
-    }
-
-    /**
-     * Returns the info messages from the previous operation. Info messages do not prevent the
-     * operation from being executed.
-     * @return A list of strings.
-     */
-    public List getInfoMessages() {
-        return this.infoMessages;
-    }
-
-    /**
-     * Determine if the usecase has error messages. Provides a way of checking for errors without
-     * actually retrieving them.
-     * @return true if the usecase resulted in error messages.
-     */
-    public boolean hasErrors() {
-        boolean ret = false;
-        if (this.errorMessages != null)
-            ret = !this.errorMessages.isEmpty();
-        return ret;
-    }
-
-    /**
-     * Determine if the usecase has info messages. Provides a way of checking for info messages
-     * without actually retrieving them.
-     * @return true if the usecase resulted in info messages being generated.
-     */
-    public boolean hasInfoMessages() {
-        boolean ret = false;
-        if (this.infoMessages != null)
-            ret = !this.infoMessages.isEmpty();
-        return ret;
-    }
-
-    /**
-     * @return The name of this usecase.
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * @return The view of the usecase.
-     */
-    public UsecaseView getView() {
-        return this.view;
-    }
-    
-    /**
-     * @return The session of the usecase.
-     */
-    public Session getSession() {
-        return (Session) getParameter("private.session");
-    }
-
-    /**
-     * Returns one of the strings "true" or "false" depending on whether the
-     * corresponding checkbox was checked.
-     * @param name The parameter name.
-     * @return A string.
-     */
-    public String getBooleanCheckboxParameter(String name) {
-        String value = "false";
-        String paramValue = getParameterAsString(name);
-        if (paramValue != null && (paramValue.equals("on") || paramValue.equals("true"))) {
-            value = "true";
-        }
-        return value;
-    }
-    
-    /**
-     * @return The source URL of the usecase.
-     */
-    public String getSourceURL() {
-        return this.sourceUrl;
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
deleted file mode 100644
index 0fcad3d..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.impl;
-
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-
-/**
- * Usecase resolver implementation.
- * 
- * @version $Id$
- */
-public class UsecaseResolverImpl extends AbstractLogEnabled implements UsecaseResolver,
-        Serviceable, Disposable, ThreadSafe {
-
-    /**
-     * Ctor.
-     */
-    public UsecaseResolverImpl() {
-        // do nothing
-    }
-
-    private ServiceSelector selector;
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager _manager) throws ServiceException {
-        this.manager = _manager;
-    }
-
-    protected ServiceSelector getSelector() throws ServiceException {
-        if (this.selector == null) {
-            this.selector = (ServiceSelector) this.manager.lookup(Usecase.ROLE + "Selector");
-        }
-        return this.selector;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.UsecaseResolver#release(org.apache.lenya.cms.usecase.Usecase)
-     */
-    public void release(Usecase usecase) throws ServiceException {
-        if (usecase == null) {
-            throw new IllegalArgumentException("The usecase to release must not be null.");
-        }
-        getSelector().release(usecase);
-
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (this.selector != null) {
-            this.manager.release(this.selector);
-        }
-    }
-
-    /**
-     * Returns the name of the publication-overridden usecase to be resolved.
-     * @param webappUrl The web application URL.
-     * @param name The plain usecase name.
-     * @return A string.
-     * @throws ServiceException if an error occurs.
-     */
-    protected String getUsecaseName(String webappUrl, final String name) throws ServiceException {
-        String newName = null;
-
-        Publication publication = getPublication(webappUrl);
-        if (publication != null) {
-            PublicationTemplateManager templateManager = null;
-            try {
-                templateManager = (PublicationTemplateManager) this.manager
-                        .lookup(PublicationTemplateManager.ROLE);
-                newName = (String) templateManager.getSelectableHint(publication, getSelector(),
-                        name);
-            } finally {
-                if (templateManager != null) {
-                    this.manager.release(templateManager);
-                }
-            }
-        } else {
-            newName = name;
-        }
-
-        return newName;
-    }
-
-    /**
-     * Returns the publication the usecase was invoked in.
-     * @param webappUrl The web application URL.
-     * @return A publication.
-     */
-    protected Publication getPublication(String webappUrl) {
-        Publication publication = null;
-        ContextUtility util = null;
-        try {
-            util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            Request request = util.getRequest();
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-
-            URLInformation info = new URLInformation(webappUrl);
-            String pubId = info.getPublicationId();
-
-            if (pubId != null && factory.existsPublication(pubId)) {
-                publication = factory.getPublication(pubId);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (util != null) {
-                this.manager.release(util);
-            }
-        }
-        return publication;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.UsecaseResolver#resolve(java.lang.String,
-     *      java.lang.String)
-     */
-    public Usecase resolve(String webappUrl, String name) throws ServiceException {
-        Object usecaseName = getUsecaseName(webappUrl, name);
-        Usecase usecase = (Usecase) getSelector().select(usecaseName);
-        usecase.setName(name);
-        usecase.setSourceURL(webappUrl);
-        return usecase;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.UsecaseResolver#isRegistered(java.lang.String,
-     *      java.lang.String)
-     */
-    public boolean isRegistered(String webappUrl, String name) throws ServiceException {
-        String usecaseName = getUsecaseName(webappUrl, name);
-        return getSelector().isSelectable(usecaseName);
-    }
-
-    /**
-     * @return The names of all registered usecases in alphabetical order.
-     */
-    public String[] getUsecaseNames() {
-        if (this.usecaseNames == null) {
-            throw new IllegalStateException("No usecase registered!");
-        }
-        return (String[]) this.usecaseNames.toArray(new String[this.usecaseNames.size()]);
-    }
-
-    private SortedSet usecaseNames;
-    
-    public void register(String usecaseName) {
-        if (this.usecaseNames == null) {
-            this.usecaseNames = new TreeSet();
-        }
-        this.usecaseNames.add(usecaseName);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseSelector.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseSelector.java
deleted file mode 100644
index e3a5e0b..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseSelector.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.impl;
-
-import java.util.Iterator;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.avalon.framework.activity.Startable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ExtendedComponentSelector;
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-
-/**
- * Usecase selector.
- */
-public class UsecaseSelector extends ExtendedComponentSelector implements ThreadSafe, Startable, Serviceable {
-    
-    private SortedSet usecaseNames;
-    private ServiceManager manager;
-    
-    /**
-     * @return The names of all registered usecases in alphabetical order.
-     */
-    public String[] getUsecaseNames() {
-        return (String[]) this.usecaseNames.toArray(new String[this.usecaseNames.size()]);
-    }
-
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        
-        this.usecaseNames = new TreeSet();
-        Configuration[] usecaseConfigs = config.getChildren("component-instance");
-        for (int i = 0; i < usecaseConfigs.length; i++) {
-            this.usecaseNames.add(usecaseConfigs[i].getAttribute("name"));
-        }
-    }
-
-    public void start() throws Exception {
-        UsecaseResolver resolver = null;
-        try {
-            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-            for (Iterator i = this.usecaseNames.iterator(); i.hasNext(); ) {
-                resolver.register((String) i.next());
-            }
-        }
-        finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    public void stop() throws Exception {
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/ManageJobs.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/ManageJobs.java
deleted file mode 100644
index 9c5529e..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/ManageJobs.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.scheduling;
-
-import java.util.Arrays;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.cocoon.components.cron.JobSchedulerEntry;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-
-/**
- * Usecase to manage scheduled jobs.
- * 
- * @version $Id$
- */
-public class ManageJobs extends DocumentUsecase {
-
-    protected static final String JOBS = "jobs";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        UsecaseScheduler scheduler = null;
-        try {
-            scheduler = (UsecaseScheduler) this.manager.lookup(UsecaseScheduler.ROLE);
-            JobSchedulerEntry[] jobs = scheduler.getJobs();
-            setParameter(JOBS, Arrays.asList(jobs));
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (scheduler != null) {
-                this.manager.release(scheduler);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/UsecaseScheduler.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/UsecaseScheduler.java
deleted file mode 100644
index 8fbd2bc..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/UsecaseScheduler.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.scheduling;
-
-import java.util.Date;
-
-import org.apache.cocoon.components.cron.JobSchedulerEntry;
-import org.apache.lenya.cms.usecase.Usecase;
-
-/**
- * Service to schedule usecases.
- * 
- * @version $Id$
- */
-public interface UsecaseScheduler {
-    
-    /**
-     * The Avalon role.
-     */
-    String ROLE = UsecaseScheduler.class.getName();
-
-    /**
-     * Schedules a usecase at a certain date.
-     * @param usecase The usecase.
-     * @param date The invocation date.
-     */
-    void schedule(Usecase usecase, Date date);
-    
-    /**
-     * @return All scheduled jobs.
-     */
-    JobSchedulerEntry[] getJobs();
-}
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java
deleted file mode 100644
index 5f789f7..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.scheduling.impl;
-
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.components.CocoonComponentManager;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.cron.ConfigurableCronJob;
-import org.apache.cocoon.components.cron.ServiceableCronJob;
-import org.apache.cocoon.environment.Environment;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.environment.commandline.CommandLineRequest;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.UsecaseInvoker;
-
-/**
- * Job to schedule usecase execution.
- * 
- * @version $Id$
- */
-public class UsecaseCronJob extends ServiceableCronJob implements ConfigurableCronJob,
-        Contextualizable {
-
-    /**
-     * Initializes the job.
-     * @param usecase The usecase.
-     */
-    public void setup(Usecase usecase) {
-        this.usecaseName = usecase.getName();
-        String[] keys = usecase.getParameterNames();
-        for (int i = 0; i < keys.length; i++) {
-            this.parameters.put(keys[i], usecase.getParameter(keys[i]));
-        }
-    }
-
-    private String usecaseName;
-    private String sourceUrl;
-    private String userId;
-    private String machineIp;
-
-    private Map parameters = new HashMap();
-
-    protected static final String USECASE_NAME = "usecaseName";
-    protected static final String SOURCE_URL = "sourceUrl";
-    protected static final String USER_ID = "userId";
-    protected static final String MACHINE_IP = "machineIp";
-
-    /**
-     * @return The name of the usecase to execute.
-     */
-    public String getUsecaseName() {
-        return this.usecaseName;
-    }
-    
-    /**
-     * @return The ID of the user who scheduled the job.
-     */
-    public String getUserId() {
-        return this.userId;
-    }
-
-    protected String getSourceURL() {
-        return this.sourceUrl;
-    }
-
-    protected Map getParameters() {
-        return Collections.unmodifiableMap(this.parameters);
-    }
-
-    /**
-     * @see org.apache.cocoon.components.cron.CronJob#execute(java.lang.String)
-     */
-    public void execute(String jobname) {
-        UsecaseInvoker invoker = null;
-        try {
-            setupOriginalRequest();
-            authorizeRequest();
-
-            invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
-            invoker.invoke(getSourceURL(), getUsecaseName(), getParameters());
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (invoker != null) {
-                this.manager.release(invoker);
-            }
-        }
-    }
-
-    /**
-     * Creates a new request object based on the information from the original request which
-     * triggered the usecase.
-     */
-    protected void setupOriginalRequest() {
-        Environment env = CocoonComponentManager.getCurrentEnvironment();
-
-        Request request = ContextHelper.getRequest(this.context);
-        Map attributes = new HashMap();
-        for (Enumeration e = request.getAttributeNames(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            attributes.put(key, request.getAttribute(key));
-        }
-
-        Map requestParameters = new HashMap();
-        for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            requestParameters.put(key, request.getParameter(key));
-        }
-
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        objectModel.put(ObjectModelHelper.REQUEST_OBJECT, new CommandLineRequest(env,
-                request.getContextPath(),
-                request.getServletPath(),
-                getSourceURL(),
-                attributes,
-                requestParameters));
-    }
-
-    /**
-     * Initializes the session with the access control information.
-     * @throws AccessControlException if an error occurs.
-     * @throws ServiceException if the access controller resolver could not be created.
-     */
-    protected void authorizeRequest() throws AccessControlException, ServiceException {
-
-        ServiceSelector selector = null;
-        AccessControllerResolver acResolver = null;
-        AccessController controller = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-            acResolver = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-            controller = acResolver.resolveAccessController(getSourceURL());
-
-            getLogger().debug("Add identity to session");
-            getLogger().debug("User ID: [" + this.userId + "]");
-            getLogger().debug("Machine: [" + this.machineIp + "]");
-
-            Request request = ContextHelper.getRequest(this.context);
-            controller.setupIdentity(request);
-            Session session = request.getSession(false);
-            Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-            Identifiable[] identifiables = identity.getIdentifiables();
-            for (int i = 0; i < identifiables.length; i++) {
-                identity.removeIdentifiable(identifiables[i]);
-            }
-
-            UserManager userManager = controller.getAccreditableManager().getUserManager();
-            if (this.userId != null) {
-                User user = userManager.getUser(this.userId);
-
-                if (user == null) {
-                    throw new RuntimeException("User [" + this.userId + "] does not exist!");
-                }
-
-                identity.addIdentifiable(user);
-            }
-            if (this.machineIp != null) {
-                Machine machine = new Machine(this.machineIp);
-                identity.addIdentifiable(machine);
-            }
-
-            controller.authorize(request);
-
-        } finally {
-            if (selector != null) {
-                if (acResolver != null) {
-                    if (controller != null) {
-                        acResolver.release(controller);
-                    }
-                    selector.release(acResolver);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-    }
-
-    /**
-     * @see org.apache.cocoon.components.cron.ConfigurableCronJob#setup(org.apache.avalon.framework.parameters.Parameters,
-     *      java.util.Map)
-     */
-    public void setup(Parameters parameters, Map objects) {
-        this.parameters.putAll(Parameters.toProperties(parameters));
-        this.usecaseName = (String) objects.get(USECASE_NAME);
-        this.sourceUrl = (String) objects.get(SOURCE_URL);
-        this.userId = (String) objects.get(USER_ID);
-        this.machineIp = (String) objects.get(MACHINE_IP);
-    }
-
-    private Context context;
-
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseSchedulerImpl.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseSchedulerImpl.java
deleted file mode 100644
index 93e5e30..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseSchedulerImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecase.scheduling.impl;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.cron.CronJob;
-import org.apache.cocoon.components.cron.JobScheduler;
-import org.apache.cocoon.components.cron.JobSchedulerEntry;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.usecase.Usecase;
-import org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler;
-
-/**
- * <p>
- * Usecase scheduler implementation.
- * </p>
- * <p>
- * The names of the scheduled jobs have the syntax
- * <code>{usecaseName}:{userId}</code>.
- * 
- * @version $Id$
- */
-public class UsecaseSchedulerImpl extends AbstractLogEnabled implements UsecaseScheduler,
-        Serviceable, Contextualizable {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler#schedule(org.apache.lenya.cms.usecase.Usecase,
-     *      java.util.Date)
-     */
-    public void schedule(Usecase usecase, Date date) {
-        JobScheduler scheduler = null;
-        try {
-            scheduler = (JobScheduler) this.manager.lookup(JobScheduler.ROLE);
-
-            Parameters parameters = new Parameters();
-            String[] names = usecase.getParameterNames();
-            for (int i = 0; i < names.length; i++) {
-                Object value = usecase.getParameter(names[i]);
-                if (value instanceof String) {
-                    parameters.setParameter(names[i], (String) value);
-                } else {
-                    getLogger().warn(
-                            "Parameter [" + names[i] + "] = [" + value + "] ("
-                                    + value.getClass().getName()
-                                    + ") ignored, only string values are supported.");
-                }
-            }
-
-            Map objects = new HashMap();
-            objects.put(UsecaseCronJob.USECASE_NAME, usecase.getName());
-            objects.put(UsecaseCronJob.SOURCE_URL, usecase.getSourceURL());
-
-            String userId = "";
-            Request request = ContextHelper.getRequest(this.context);
-            Session session = request.getSession(false);
-            if (session != null) {
-                Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-                if (identity != null) {
-                    User user = identity.getUser();
-                    if (user != null) {
-                        userId = user.getId();
-                        objects.put(UsecaseCronJob.USER_ID, userId);
-                    }
-                    Machine machine = identity.getMachine();
-                    if (machine != null) {
-                        objects.put(UsecaseCronJob.MACHINE_IP, machine.getIp());
-                    }
-                }
-            }
-
-            String role = CronJob.class.getName() + "/usecase";
-            String name = getJobName(usecase, userId);
-            scheduler.fireJobAt(date, name, role, parameters, objects);
-
-        } catch (Exception e) {
-            getLogger().error("Could not create job: ", e);
-            throw new RuntimeException(e);
-        } finally {
-            if (scheduler != null) {
-                this.manager.release(scheduler);
-            }
-        }
-    }
-
-    protected String getJobName(Usecase usecase, String userId) {
-        return usecase.getName() + ":" + userId;
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    private Context context;
-
-    /**
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler#getJobs()
-     */
-    public JobSchedulerEntry[] getJobs() {
-        JobScheduler scheduler = null;
-        JobSchedulerEntry[] entries = null;
-        try {
-            scheduler = (JobScheduler) this.manager.lookup(JobScheduler.ROLE);
-
-            String[] jobNames = scheduler.getJobNames();
-            entries = new JobSchedulerEntry[jobNames.length];
-
-            for (int i = 0; i < jobNames.length; i++) {
-                JobSchedulerEntry entry = scheduler.getJobSchedulerEntry(jobNames[i]);
-                entries[i] = entry;
-            }
-
-        } catch (Exception e) {
-            getLogger().error("Could not obtain job list: ", e);
-            throw new RuntimeException(e);
-        } finally {
-            if (scheduler != null) {
-                this.manager.release(scheduler);
-            }
-        }
-        return entries;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/xml/UsecaseErrorHandler.java b/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/xml/UsecaseErrorHandler.java
deleted file mode 100644
index 613d54e..0000000
--- a/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/xml/UsecaseErrorHandler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.usecase.xml;
-
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-import com.thaiopensource.xml.sax.ErrorHandlerImpl;
-
-/**
- * Error handler which outputs its errors to usecase messages.
- */
-public class UsecaseErrorHandler extends ErrorHandlerImpl {
-    
-    private AbstractUsecase usecase;
-    
-    /**
-     * Ctor.
-     * @param usecase The usecase.
-     */
-    public UsecaseErrorHandler(AbstractUsecase usecase) {
-        this.usecase = usecase;
-    }
-
-    public void print(String message) {
-        this.usecase.addErrorMessage(message);
-    }
-
-}
diff --git a/trunk/src/modules-core/usecase/resources/i18n/cmsui.xml b/trunk/src/modules-core/usecase/resources/i18n/cmsui.xml
deleted file mode 100644
index c9fd5e2..0000000
--- a/trunk/src/modules-core/usecase/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="could-not-execute-usecase">Could not execute usecase</message>
-  <message key="objects-checked-out">
-    Involved objects are checked out.
-  </message>
-  <message key="Access denied">Access denied</message>
-  
-</catalogue>

diff --git a/trunk/src/modules-core/usecase/resources/i18n/cmsui_de.xml b/trunk/src/modules-core/usecase/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 1a5d76a..0000000
--- a/trunk/src/modules-core/usecase/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="could-not-execute-usecase">Der Usecase konnte nicht ausgeführt werden</message>
-  <message key="objects-checked-out">
-    Beteiligte Objekte sind ausgecheckt.
-  </message>
-  <message key="Access denied">Zugriff verweigert</message>
-  
-</catalogue>

diff --git a/trunk/src/modules-core/usecase/templates/error.jx b/trunk/src/modules-core/usecase/templates/error.jx
deleted file mode 100644
index ceed905..0000000
--- a/trunk/src/modules-core/usecase/templates/error.jx
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: login.jx 496697 2007-01-16 14:12:36Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <jx:set var="pubId" value="${usecase.getParameterAsString('publicationId')}"/>
-
-  <page:title>
-    <i18n:text>could-not-execute-usecase</i18n:text>
-  </page:title>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/usecase/templates/messages.jx b/trunk/src/modules-core/usecase/templates/messages.jx
deleted file mode 100644
index 938efb2..0000000
--- a/trunk/src/modules-core/usecase/templates/messages.jx
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<jx:template name="messages"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <!-- 
-     Note: in current implementation, ${usecase} refers to an 
-     instance of UsecaseProxy, not of Usecase !
-     -->
-  <jx:if test="${usecase.hasErrors() || usecase.hasInfoMessages()}">
-    <div class="lenya-error">
-      <ul>
-        
-        <jx:forEach var="message" items="${usecase.getErrorMessages()}">
-          <li>
-            <i18n:translate>
-              <i18n:text><jx:out value="${message.getMessage()}"/></i18n:text>
-                <jx:if test="${message.hasParameters()}"> 
-                    <jx:forEach var="param" items="${message.getParameters()}">
-                        <i18n:param><jx:out value="${param}"/></i18n:param>
-                    </jx:forEach>
-                </jx:if>
-            </i18n:translate>
-          </li>
-        </jx:forEach>
-        
-        <jx:forEach var="message" items="${usecase.getInfoMessages()}">
-          <li>
-            <i18n:translate>
-              <i18n:text><jx:out value="${message.getMessage()}"/></i18n:text>
-                <jx:if test="${message.hasParameters()}"> 
-                    <jx:forEach var="param" items="${message.getParameters()}">
-                        <i18n:param><jx:out value="${param}"/></i18n:param>
-                    </jx:forEach>
-                </jx:if>
-            </i18n:translate>
-          </li>
-        </jx:forEach>
-        
-      </ul>
-    </div>
-  </jx:if>
-
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/templates/tabs.jx b/trunk/src/modules-core/usecase/templates/tabs.jx
deleted file mode 100644
index 8e4f26e..0000000
--- a/trunk/src/modules-core/usecase/templates/tabs.jx
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: tabs.jx 227396 2005-08-04 13:13:35Z andreas $ -->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  name="">
-  
-  <div class="lenya-tabs">
-    <jx:set var="usecaseTab" value="${usecase.getView().getTab()}"/>
-    <jx:forEach var="tab" items="${usecase.getView().getTabsInGroup()}">
-      <jx:choose>
-        <jx:when test="${usecaseTab.getName().equals(tab.getName())}">
-          <a href="?lenya.usecase=${tab.getUsecase()}" class="lenya-tablink-active"><i18n:text><jx:out value="${tab.getLabel()}"/></i18n:text></a>
-        </jx:when>
-        <jx:otherwise>
-          <a href="?lenya.usecase=${tab.getUsecase()}" class="lenya-tablink"><i18n:text><jx:out value="${tab.getLabel()}"/></i18n:text></a>
-        </jx:otherwise>
-      </jx:choose>
-    </jx:forEach>
-  </div>
-</jx:template>
diff --git a/trunk/src/modules-core/usecase/usecase.xmap b/trunk/src/modules-core/usecase/usecase.xmap
deleted file mode 100644
index 1e03c55..0000000
--- a/trunk/src/modules-core/usecase/usecase.xmap
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-<!--
-    This sitemap handles calls to usecases which are registered in the
-    usecase framework.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:components>
-    <map:transformers default="xslt">    
-      <map:transformer name="browser-update" src="org.apache.cocoon.ajax.BrowserUpdateTransformer"/>
-      <map:transformer name="usecase-proxy" logger="lenya.sitemap.transformer.proxy"
-        src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer">
-        <transform namespace="http://apache.org/lenya/proxy/1.0" element="url" attribute="href"/>
-      </map:transformer>
-    </map:transformers>
-    <map:selectors>
-      <map:selector name="ajax-request" src="org.apache.cocoon.ajax.AjaxRequestSelector"/>
-    </map:selectors>
-  </map:components>
-  
-  <!-- =========================== FlowScript =============================== -->
-
-  <map:flow language="javascript">
-    <map:script src="fallback://lenya/modules/usecase/usecases.js"/>
-  </map:flow>
-  
-  <!-- =========================== Pipelines ================================ -->
-
-  <map:pipelines>
-    
-    <map:pipeline type="noncaching" internal-only="true">
-      <!-- 
-        This internal pipeline renders the usecase, once the
-        executeUsecase() flowscript has completed and issued a redirect,
-        which is matched here.
-        -->
-      <map:match pattern="usecases-view/*/**">
-        
-        <map:generate type="jx" src="fallback://lenya/{2}"/>
-        <map:transform type="browser-update"/>
-        <map:transform type="cinclude"/>
-        <map:transform type="forms" />
-        
-        <map:transform type="usecase-proxy"/>
-        <map:transform src="xslt/proxyUrl2text.xsl"/>
-        
-        <map:transform src="cocoon://lenya-screen.xsl"/>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <!-- Strip xhtml namespace from <head> and <body> element -->
-        <map:transform src="fallback://lenya/xslt/cforms/strip-xhtml-namespace.xsl"/>
-        <map:transform src="fallback://lenya/xslt/cforms/forms-samples-styling.xsl">
-          <map:parameter name="resources-uri" value="{page-envelope:context-prefix}/cforms"/>
-        </map:transform>
-        <map:transform src="fallback://lenya/xslt/cforms/add-xhtml-namespace.xsl"/>
-        <map:match pattern="usecases-view/menu/**">
-          <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{page-envelope:area}/default.xml"/>
-        </map:match>
-        <map:select type="ajax-request">
-          <map:when test="true">
-            <map:serialize type="xml"/>
-          </map:when>
-        </map:select>
-        <map:select type="request-parameter">
-          <map:parameter name="parameter-name" value="asXML"/>
-          <map:when test="true">
-            <map:serialize type="xml"/>
-          </map:when>
-        </map:select>
-        
-        <map:transform type="proxy"/>
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xhtml"/>
-
-     </map:match>
-      
-    </map:pipeline>
-
-    <map:pipeline>
-      <map:match type="request-parameter" pattern="lenya.continuation">
-        <map:call continuation="{1}"/>
-      </map:match>
-      <map:match type="usecase" pattern="*">
-        <map:call function="executeUsecase">
-          <map:parameter name="usecaseName" value="{request-param:lenya.usecase}"/>
-        </map:call>
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-	
-</map:sitemap>
diff --git a/trunk/src/modules-core/usecase/usecases.js b/trunk/src/modules-core/usecase/usecases.js
deleted file mode 100644
index 232d107..0000000
--- a/trunk/src/modules-core/usecase/usecases.js
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-/* $Id$ */
- 
-cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/Form.js");
-importPackage(Packages.org.apache.lenya.cms.linking)
-
-//placeholders for custom flow code:
-var customLoopFlow = undefined;
-var customSubmitFlow = undefined;
-
-/**
- * Get usecase.
- *
- * @param usecaseName, a string
- * @return a new org.apache.lenya.cms.usecase.Usecase Avalon component
- */
-function getUsecase(usecaseName) {
-    var flowHelper;
-    var request;
-    var sourceUrl;
-    var usecaseResolver;
-    var usecase;
-    try {
-        flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-        request = flowHelper.getRequest(cocoon);
-        sourceUrl = Packages.org.apache.lenya.util.ServletHelper.getWebappURI(request);
-        usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-        usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-        usecase.setSourceURL(sourceUrl);
-        usecase.setName(usecaseName);
-    } catch (exception) {
-        log("error", "Error in getUsecase(): " + exception);
-        log("debug", "usecaseName = " + usecaseName);
-        log("debug", "flowHelper = " + flowHelper);
-        log("debug", "request = " + request);
-        log("debug", "sourceUrl = " + sourceUrl);
-        log("debug", "usecaseResolver = " + usecaseResolver);
-        log("debug", "usecase = " + usecase);
-        throw exception;
-    } finally {
-        cocoon.releaseComponent(flowHelper);
-        cocoon.releaseComponent(usecaseResolver);
-    }
-    return usecase;
-}
-
-/**
- * Release usecase. Since usecases are Avalon Components, they must
- * be released before a continuation is created.
- *
- * @param usecase, a org.apache.lenya.cms.usecase.Usecase Avalon component
- */
-function releaseUsecase(usecase) {
-    var usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-    try {
-        usecaseResolver.release(usecase);
-    } finally {
-        cocoon.releaseComponent(usecaseResolver);
-    }
-}
-
-/**
- * Pass all parameters from the current request to a usecase
- * (except lenya.usecase, lenya.continuation and submit).
- *
- * @param usecase, a org.apache.lenya.cms.usecase.Usecase Avalon component
- */
-function passRequestParameters(usecase) {
-    var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-    var names = cocoon.request.getParameterNames();
-    while (names.hasMoreElements()) {
-        var name = names.nextElement();
-        // some parameters are handled elsewhere:
-        if (!name.equals("lenya.usecase") 
-            && !name.equals("lenya.continuation") 
-            && !name.equals("submit")) { 
-            // pass the rest on:
-            var value = flowHelper.getRequest(cocoon).get(name);
-            var string = new Packages.java.lang.String();
-            var vector = new Packages.java.util.Vector();
-            if (string.getClass().isInstance(value) || vector.getClass().isInstance(value)) {
-                // use getParameters() to avoid character encoding problems
-                var values = flowHelper.getRequest(cocoon).getParameterValues(name);
-                if (values.length < 2) {
-                    usecase.setParameter(name, values[0]);
-                } else {
-                    usecase.setParameter(name, values);
-                }
-            } else if (value == null) {
-                value = cocoon.request.getParameter(name);
-                usecase.setParameter(name, value);
-            } else {
-                usecase.setPart(name, value);
-            }
-        }
-    }
-    cocoon.releaseComponent(flowHelper);
-}
-
-/**
- * Load the custom flow functions as provided in the view 
- * configuration, if any.
- *
- * @param view, a org.apache.lenya.cms.usecase.UsecaseView object
- */
-function loadCustomFlow(view) {
-    customLoopFlow = undefined;
-    customSubmitFlow = undefined;
-    
-    var flowUri;
-    if (view != null) {
-        flowUri = view.getCustomFlow();
-        if (flowUri != null && flowUri != "") { // for some reason, flowUri is not correctly cast into a Boolean, so "if (flowUri)" does not work
-            log("debug", "customFlow uri: [" + flowUri + "]");
-            cocoon.load(flowUri);
-        }
-    } else {
-        log("debug", "Usecase does not define a view.");
-    }
-}
-
-
-/**
- * Log messages via cocoon.log.
- *
- * @param level, one of ("debug"|"info"|"warn"|"error")
- * @param message, a string
- * @param usecaseName, a string.
- */
-function log(level, message, usecaseName) {
-    var msg = "usecases.js::executeUsecase() "
-        + (usecaseName ? "with lenya.usecase=[" + usecaseName + "]" : "")
-        + ": " 
-        + message;
-    switch (level) {
-        case "debug":
-            if (cocoon.log.isDebugEnabled())
-                cocoon.log.debug(msg);
-            break;
-        case "info":
-            cocoon.log.info(msg);
-            break;
-       case "warn":
-            cocoon.log.warn(msg);
-            break;
-        case "error":
-            cocoon.log.error(msg);
-            break;
-        default:
-            cocoon.log.error(msg + "[Unknown log level " + level + "]"); 
-            break;
-    }
-}
-
-/**
- * The Loop stage of the flow, in which a view is displayed. 
- * <em>Note:</em> All Avalon components should be released before calling
- * this function! This means that you cannot hold a usecase object,
- * hence the proxy.
- * 
- * @param view, a org.apache.lenya.cms.usecase.UsecaseView object
- * @param proxy, a org.apache.lenya.cms.usecase.UsecaseProxy object
- * @param generic, a generic Javascript object for custom flow code to preserve state information (currently not used by the default code)
- *
- * This function invokes customLoopFlow if it exists.
- * Otherwise it falls back to defaultLoopFlow.
- */
-function loopFlow(view, proxy, generic) {
-    if (customLoopFlow != undefined) {
-        log("info", "Using customLoopFlow function", proxy.getName());
-        return customLoopFlow(view, proxy, generic);
-    } else{
-        return defaultLoopFlow(view, proxy);
-    }
-}
-
-
-/**
- * The Submit stage of the flow, in which a user interaction is processed.
- * and the usecase is advanced. If the user has submitted, the usecase is executed.
- * 
- * @param usecase, a org.apache.lenya.cms.usecase.Usecase Avalon component
- * @param generic, a generic Javascript object for custom flow code to preserve state information (currently not used by the default code)
- * @return a string with the return state ("success"|"cancel"|"continue").
- *
- * This function invokes customSubmitFlow if it exists.
- * Otherwise it falls back to defaultSubmitFlow.
- */
-function submitFlow(usecase, generic) {
-    if (customSubmitFlow != null) {
-        log("info", "Using customSubmitFlow function", usecase.getName());
-        return customSubmitFlow(usecase, generic);
-    } else{
-
-        return defaultSubmitFlow(usecase);
-    }
-}
-
-/**
- * @see loopFlow.
- */
-function defaultLoopFlow(view, proxy) {
-    var viewUri = view.getViewURI();
-    // we used to allow a cocoon:/ and cocoon:// prefix (which sendPageXXX does not handle),
-    // but it is now deprecated!
-    if (viewUri.startsWith("cocoon:/")) {
-        // leave leading / in case of cocoon:// for root sitemap
-        viewUri = viewUri.substring(new Packages.java.lang.String("cocoon:/").length());
-        log("warn", "The use of the cocoon:/ protocol prefix in the <view uri=\"...\"> attribute is deprecated!");
-    }
-    if (! viewUri.startsWith("/")) {
-        // a local URI must be handled by usecase.xmap, which assumes a prefix "usecases-view/[menu|nomenu]/
-        // that determines whether the menu is to be displayed. this mechanism is used by most lenya core usecases.
-        viewUri = "usecases-view/" 
-            + (view.showMenu() ? "menu" : "nomenu")
-            + "/" + viewUri;
-    }
-    if (view.createContinuation()) {
-        log("debug", "Creating view and continuation, calling Cocoon with viewUri = [" + viewUri + "]");
-        cocoon.sendPageAndWait(viewUri, { "usecase" : proxy });
-    } else {
-        log("debug", "Creating view without continuation (!), calling Cocoon with viewUri = [" + viewUri + "]");
-        cocoon.sendPage(viewUri, { "usecase" : proxy});
-        cocoon.exit(); // we're done.
-    }
-}
-
-/**
- * @see submitFlow
- */
-function defaultSubmitFlow(usecase) {
-    var preconditionsOk = true;
-    if (cocoon.request.getParameter("submit")||cocoon.request.getParameter("lenya.submit")=="ok") {
-        if (usecase.isOptimistic()) {
-            usecase.checkPreconditions();
-            preconditionsOk = !usecase.hasErrors();
-        }
-        if (preconditionsOk) {
-            if (usecase.isOptimistic()) {
-                usecase.lockInvolvedObjects();
-            }
-            usecase.checkExecutionConditions();
-            if (! usecase.hasErrors()) {
-                return executeFlow(usecase);
-            }
-        }
-    } else if (cocoon.request.getParameter("cancel")) {
-        usecase.cancel();
-        return "cancel";
-    }
-    else {
-        usecase.advance();
-    }
-    return "continue"
-}
-
-/**
- * The Execute stage of the flow, in which the usecase is finally executed.
- *
- * @param a org.apache.lenya.cms.usecase.Usecase object
- * @return a string with the return state ("success"|"continue").
- */
-function executeFlow(usecase) {
-    usecase.execute();
-    if (! usecase.hasErrors()) {
-        usecase.checkPostconditions();
-        if (! usecase.hasErrors()) {
-            return "success";
-        }
-    }
-    return "continue";
-}
-
-/**
- * Redirect to target URL after finishing the usecase, 
- * taking proxy settings into account.
- *
- * @param the webapp-internal target URL
- */
-function redirect(targetUrl) {
-    var flowHelper;  // needed to obtain the current objectModel 
-    var objectModel; // needed to provide context to the proxyModule 
-    var inputModuleSelector; // needed to obtain a proxyModule
-    var proxyModule; // used to rewrite the targetUrl according to the publication's proxy settings
-    var proxyUrl;    // the rewritten target Url
-
-    flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-    try {
-        objectModel = flowHelper.getObjectModel(cocoon);
-    } finally {
-        cocoon.releaseComponent(flowHelper);
-    }
-
-    inputModuleSelector = cocoon.getComponent(org.apache.cocoon.components.modules.input.InputModule.ROLE + "Selector");
-    try {
-        proxyModule = inputModuleSelector.select("proxy");
-        try {
-            proxyUrl = proxyModule.getAttribute(targetUrl, null, objectModel);
-        } finally {
-            cocoon.releaseComponent(proxyModule);
-        }
-    } finally {
-        cocoon.releaseComponent(inputModuleSelector);
-    }
-
-    log("debug", "Redirecting to {proxy:" + targetUrl + "} = " + proxyUrl + ".");
-
-    cocoon.redirectTo(proxyUrl, true);
-}
-
-
-
-/**
- * Main function to execute a usecase. This is called from <map:flow/>.
- *
- * Uses request parameter "lenya.usecase" to determine what
- * usecase to execute.
- * 
- * Since "usecase" and "flowHelper" are avalon components, 
- * they must be released before a continuation is created.
- * In order to preserve state information, a "proxy" object
- * is used.
- */
-function executeUsecase() {
-
-    var usecaseName;
-    var usecase; // the Usecase object
-    var proxy; // a UsecaseProxy to make the usecase state persistent across continuations
-    var view; // the UsecaseView object that belongs to our usecase.
-    var state; // the state of the usecase ("continue"|"success"|"cancel");
-    var targetUrl; // URL to redirect to after completion.
-    var generic = new Object; // a generic helper object for custom flow code to preserve state information.
-    
-    var preconditionsOK;
-
-    try {
-        usecaseName = cocoon.parameters["usecaseName"];
-        usecase = getUsecase(usecaseName);
-        passRequestParameters(usecase);
-        usecase.checkPreconditions();
-        preconditionsOK = !usecase.hasErrors();
-        if (preconditionsOK && !usecase.isOptimistic()) {
-            usecase.lockInvolvedObjects();
-        }
-        // create proxy object to save usecase state
-        view = usecase.getView();
-        proxy = new Packages.org.apache.lenya.cms.usecase.impl.UsecaseProxy(usecase);
-        log("debug", "Successfully prepared usecase.", usecaseName);
-    } catch (exception) {
-        log("error", "Could not prepare usecase: " + exception, usecaseName);
-        throw exception;
-    } finally {
-        releaseUsecase(usecase);
-    }
-    loadCustomFlow(view);
-    // If the usecase has a view uri, this means we want to display something 
-    // to the user before proceeding. This also means the usecase can consist
-    // of several steps; repeated until the user chooses to submit or cancel.
-    if (view != null && view.getViewURI()) {
-        do {
-            // show the view:
-            try {
-                loopFlow(view, proxy, generic); //usecase must be released here!
-            } catch (exception) {
-                // if something went wrong, try and rollback the usecase:
-                log("error", "Exception during loopFlow(): " + exception, usecaseName);
-                try {
-                    usecase = getUsecase(usecaseName);
-                    proxy.setup(usecase);
-                    usecase.cancel();
-                    throw exception;
-                } finally {
-                    releaseUsecase(usecase);
-                }
-            }
-            if (preconditionsOK) {
-                log("debug", "Advancing in usecase.", usecaseName);
-                // restore the usecase state and handle the user input:
-                usecase = getUsecase(usecaseName);
-                proxy.setup(usecase);
-                passRequestParameters(usecase);
-                state = submitFlow(usecase, generic);
-                // create a new proxy with the updated usecase state
-                proxy = new Packages.org.apache.lenya.cms.usecase.impl.UsecaseProxy(usecase);
-                releaseUsecase(usecase);
-            }
-        } while (state == "continue");
-    // If the usecase does not have a view uri, we can directly jump to 
-    // executeFlow().
-    } else {
-        usecase = getUsecase(usecaseName);
-        proxy.setup(usecase);
-        passRequestParameters(usecase);
-        
-        if (usecase.isOptimistic()) {
-            usecase.checkPreconditions();
-            preconditionsOK = !usecase.hasErrors();
-        }
-        
-        if (preconditionsOK) {
-            if (usecase.isOptimistic()) {
-                usecase.lockInvolvedObjects();
-            }
-            usecase.checkExecutionConditions();
-            var hasErrors = usecase.hasErrors();
-            if (!hasErrors) {
-                state = executeFlow(usecase);
-                hasErrors = usecase.hasErrors();
-            }
-        }
-        releaseUsecase(usecase);
-        if (hasErrors) {
-            proxy = new Packages.org.apache.lenya.cms.usecase.impl.UsecaseProxy(usecase);
-            cocoon.sendPage("usecases-view/nomenu/modules/usecase/templates/error.jx", { "usecase" : proxy});
-            return;
-        }
-    }
-    //getTargetURL takes a boolean that is true on success:
-    targetUrl = usecase.getTargetURL(state == "success");
-    log("debug", "Completed, redirecting to url = [" + targetUrl + "]", usecaseName);
-    // jump to the appropriate URL:
-    redirect(targetUrl);
-}
diff --git a/trunk/src/modules-core/usecase/xslt/initUsecasePolicies.xsl b/trunk/src/modules-core/usecase/xslt/initUsecasePolicies.xsl
deleted file mode 100644
index f9cb1a3..0000000
--- a/trunk/src/modules-core/usecase/xslt/initUsecasePolicies.xsl
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--

-  Run this stylesheet over build/lenya/webapp/WEB-INF/cocoon.xconf to

-  get a default permissions file with all usecases allowed for the "admin" role.

-

-  Example for Xalan on Linux:

-  Xalan -i 2 $LENYA_HOME/build/lenya/webapp/WEB-INF/cocoon.xconf \

-    $LENYA_HOME/src/modules-core/usecase-impl/xslt/initUsecasePolicies.xsl \

-    > $YOUR_PUB/config/ac/usecase-policies.xml

--->

-

-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"

-  xmlns="http://apache.org/cocoon/lenya/ac/1.0">

-  

-  <xsl:template match="cocoon">

-    <xsl:apply-templates select="usecases"/>

-  </xsl:template>

-

-  <xsl:template match="usecases">

-    <xsl:text>

-</xsl:text>

-    <xsl:comment>+++NOTE+++ The usecase list was initialized using modules/usecase-impl/xslt/initUsecasePolicies.xsl.</xsl:comment>

-    <xsl:text>

-</xsl:text>

-    <usecases>

-      <xsl:apply-templates select="component-instance"/>

-    </usecases>

-  </xsl:template>

-  

-  <xsl:template match="usecases/component-instance">

-    <usecase id="{@name}"><role id="admin" method="grant"/></usecase>

-  </xsl:template>

-

-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules-core/usecase/xslt/proxyUrl2text.xsl b/trunk/src/modules-core/usecase/xslt/proxyUrl2text.xsl
deleted file mode 100644
index cd98bae..0000000
--- a/trunk/src/modules-core/usecase/xslt/proxyUrl2text.xsl
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-Replace intermediate <proxy:url href=""/> elements with the plain URL.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:proxy="http://apache.org/lenya/proxy/1.0">
-  
-  <xsl:template match="proxy:url">
-    <xsl:value-of select="@href"/>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflow.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflow.xconf
deleted file mode 100644
index 9436187..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflow.xconf
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.multiWorkflow']">

-    <component-instance name="workflow.multiWorkflow" logger="lenya.workflow" class="org.apache.lenya.cms.workflow.usecases.MultiWorkflow">

-      <view uri="modules/workflow/usecases/multiWorkflow.jx" menu="true"/>

-      <exit usecase="workflow.multiWorkflow"/>
-      <usecase name="workflow.submit" event="submit"/>

-      <usecase name="workflow.publish" event="publish"/>
-      <usecase name="workflow.reject" event="reject"/>
-      <usecase name="workflow.deactivate" event="deactivate"/>
-      <usecase name="sitemanagement.delete" event="delete"/>
-      <usecase name="sitemanagement.archive" event="archive"/>
-      <usecase name="sitemanagement.restore" event="restore"/>
-      <parameter name="style" value="text"/>
-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflowInvoke.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflowInvoke.xconf
deleted file mode 100644
index 0d7dba5..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecase-workflow-multiWorkflowInvoke.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.multiWorkflowInvoke']">

-    <component-instance name="workflow.multiWorkflowInvoke" logger="lenya.workflow"
-      class="org.apache.lenya.cms.workflow.usecases.MultiWorkflowInvoke">

-      <exit usecase="workflow.multiWorkflow"/>
-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-deactivate.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-deactivate.xconf
deleted file mode 100644
index edf2613..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-deactivate.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.deactivate']">

-

-    <component-instance name="workflow.deactivate"

-                        logger="lenya.usecases.workflow"

-                        class="org.apache.lenya.cms.workflow.usecases.Deactivate">

-      <view uri="modules/workflow/usecases/deactivate.jx"/>

-      <event id="deactivate"/>

-    </component-instance>

-

-  </xconf>

diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-publish.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-publish.xconf
deleted file mode 100644
index c4bbd41..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-publish.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.publish']">

-

-    <component-instance name="workflow.publish"

-                        logger="lenya.usecases.workflow"

-                        class="org.apache.lenya.cms.workflow.usecases.Publish">

-      <view uri="modules/workflow/usecases/publish.jx"/>

-      <event id="publish"/>

-    </component-instance>

-

-  </xconf>

diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-reject.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-reject.xconf
deleted file mode 100644
index 13e722d..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-reject.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.reject']">
-                        
-    <component-instance name="workflow.reject"
-                        logger="lenya.usecases.workflow"
-                        class="org.apache.lenya.cms.workflow.usecases.Reject">
-      <event id="reject"/>
-      <view uri="modules/workflow/usecases/reject.jx"/>
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-submit.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-submit.xconf
deleted file mode 100644
index c9a32c7..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/usecases-workflow-submit.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'workflow.submit']">
-
-    <component-instance name="workflow.submit"
-                        logger="lenya.usecases.workflow"
-                        class="org.apache.lenya.cms.workflow.usecases.Submit">
-      <event id="submit"/>
-      <view uri="modules/workflow/usecases/submit.jx"/>
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-input-module.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-input-module.xconf
deleted file mode 100644
index 8fe6827..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-input-module.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'workflow']">

-    <component-instance logger="core.modules.input.workflow" name="workflow"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.WorkflowModule"/>

-  </xconf>

diff --git a/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-metadata.xconf b/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-metadata.xconf
deleted file mode 100644
index ea6d576..0000000
--- a/trunk/src/modules-core/workflow/config/cocoon-xconf/workflow-metadata.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-  This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/meta-data"

-    unless="/cocoon/meta-data/component-instance[@name = 'http://apache.org/lenya/metadata/workflow/1.0']">

-    <component-instance name="http://apache.org/lenya/metadata/workflow/1.0"

-      class="org.apache.lenya.cms.metadata.ConfigurableElementSet">

-      <element name="workflowVersion" multiple="true" onCopy="delete"/>

-    </component-instance>

-  </xconf>

-  

diff --git a/trunk/src/modules-core/workflow/config/module.xml b/trunk/src/modules-core/workflow/config/module.xml
deleted file mode 100644
index 1a22edd..0000000
--- a/trunk/src/modules-core/workflow/config/module.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.workflow</id>
-  <export package="org.apache.lenya.cms.workflow.usecases"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.linking"/>
-  <depends module="org.apache.lenya.modules.notification"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Workflow implementation</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Workflow implementation</description>
-</module>
diff --git a/trunk/src/modules-core/workflow/config/sitemap/actions.xmap b/trunk/src/modules-core/workflow/config/sitemap/actions.xmap
deleted file mode 100644
index 27532b0..0000000
--- a/trunk/src/modules-core/workflow/config/sitemap/actions.xmap
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: actions.xmap 280060 2005-09-11 01:56:31Z chestnut $  -->
-
-<xmap xpath="/sitemap/components/actions" unless="/sitemap/components/actions/action[@name = 'workflow']">
-   <map:action name="workflow" logger="sitemap.action.workflow" src="org.apache.lenya.cms.cocoon.acting.WorkflowInvokerAction"/>
-</xmap>
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/config/sitemap/transformers.xmap b/trunk/src/modules-core/workflow/config/sitemap/transformers.xmap
deleted file mode 100644
index c6fb908..0000000
--- a/trunk/src/modules-core/workflow/config/sitemap/transformers.xmap
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'workflowmenu']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-    <map:transformer name="workflowmenu" logger="lenya.sitemap.transformer.workflowmenu" src="org.apache.lenya.cms.cocoon.transformation.WorkflowMenuTransformer"/>

-</xmap>

diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
deleted file mode 100644
index 21cac90..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.acting.ServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-
-/**
- * Action to invoke a workflow transition independently from the request document URL. Parameters:
- * <ul>
- * <li><strong>area: </strong> The area.</li>
- * <li><strong>document-uuid: </strong> The document uuid.</li>
- * <li><strong>language: </strong> The language.</li>
- * <li><strong>event: </strong> The event to invoke.</li>
- * </ul>
- */
-public class WorkflowInvokerAction extends ServiceableAction {
-
-    /**
-     * <code>AREA</code> The area
-     */
-    public static final String AREA = "area";
-    /**
-     * <code>DOCUMENT_UUID</code> The document id
-     */
-    public static final String DOCUMENT_UUID = "document-uuid";
-    /**
-     * <code>LANGUAGE</code> The language
-     */
-    public static final String LANGUAGE = "language";
-    /**
-     * <code>EVENT</code> The event
-     */
-    public static final String EVENT = "event";
-
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
-     *      org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String,
-     *      org.apache.avalon.framework.parameters.Parameters)
-     */
-    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source,
-            Parameters parameters) throws Exception {
-
-        String area = parameters.getParameter(AREA);
-        String documentId = parameters.getParameter(DOCUMENT_UUID);
-        String language = parameters.getParameter(LANGUAGE);
-        String eventName = parameters.getParameter(EVENT);
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(getClass().getName() + " invoked.");
-            getLogger().debug("    Area:        [" + area + "]");
-            getLogger().debug("    Document ID: [" + documentId + "]");
-            getLogger().debug("    Language:    [" + language + "]");
-            getLogger().debug("    Event:       [" + eventName + "]");
-        }
-
-        Publication pub;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        try {
-            pub = PublicationUtil.getPublication(this.manager, request);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        }
-        Session session = RepositoryUtil.getSession(this.manager, request);
-        DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-        Document document = map.get(pub, area, documentId, language);
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("    Invoking workflow event");
-        }
-        WorkflowUtil.invoke(this.manager, session, getLogger(), document, eventName);
-
-        return Collections.EMPTY_MAP;
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java
deleted file mode 100644
index 5c92276..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowManager;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Module for workflow access.
- * 
- * @version $Id$
- */
-public class WorkflowModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * <code>STATE</code> The state
-     */
-    public static final String STATE = "state";
-    /**
-     * <code>VARIABLE_PREFIX</code> The variable prefix
-     */
-    public static final String VARIABLE_PREFIX = "variable.";
-
-    /**
-     * The prefix to get the last user who invoked a certain event.
-     */
-    public static final String LAST_USER_PREFIX = "lastUser.";
-
-    /**
-     * The prefix to get the last date at which a certain event was invoked.
-     * @see #DATE_FORMAT
-     */
-    public static final String LAST_DATE_PREFIX = "lastDate.";
-
-    private final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-    private final Object lock = new Object();
-    static final String[] PARAMETER_NAMES = { STATE };
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        Object value = null;
-        WorkflowManager wfManager = null;
-
-        try {
-            PageEnvelope envelope = getEnvelope(objectModel, name);
-            Document document = envelope.getDocument();
-            if (document != null && document.exists()) {
-                wfManager = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
-                Session session = RepositoryUtil.getSession(this.manager,
-                        ObjectModelHelper.getRequest(objectModel));
-                Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager,
-                        session,
-                        getLogger(),
-                        document);
-                if (wfManager.hasWorkflow(workflowable)) {
-
-                    Version latestVersion = workflowable.getLatestVersion();
-
-                    if (name.equals(STATE)) {
-                        if (latestVersion == null) {
-                            Workflow workflow = wfManager.getWorkflowSchema(workflowable);
-                            value = workflow.getInitialState();
-                        } else {
-                            value = latestVersion.getState();
-                        }
-                    } else if (name.startsWith(VARIABLE_PREFIX)) {
-                        String variableName = name.substring(VARIABLE_PREFIX.length());
-                        Workflow workflow = wfManager.getWorkflowSchema(workflowable);
-                        String[] variableNames = workflow.getVariableNames();
-                        if (Arrays.asList(variableNames).contains(variableName)) {
-                            if (latestVersion == null) {
-                                value = Boolean.valueOf(workflow.getInitialValue(variableName));
-                            } else {
-                                value = Boolean.valueOf(latestVersion.getValue(variableName));
-                            }
-                        }
-                    } else if (name.startsWith(LAST_USER_PREFIX)) {
-                        String event = name.substring(LAST_USER_PREFIX.length());
-                        Version latestEventVersion = getLatestVersion(workflowable, event);
-                        if (latestEventVersion != null) {
-                            value = latestEventVersion.getUserId();
-                        }
-                    } else if (name.startsWith(LAST_DATE_PREFIX)) {
-                        String event = name.substring(LAST_DATE_PREFIX.length());
-                        Version latestEventVersion = getLatestVersion(workflowable, event);
-                        if (latestEventVersion != null) {
-                            synchronized(lock) {
-                                value = this.DATE_FORMAT.format(latestEventVersion.getDate());
-                            }
-                        }
-                    } else {
-                        throw new ConfigurationException("The attribute [" + name
-                                + "] is not supported!");
-                    }
-                }
-            }
-        } catch (ConfigurationException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute failed: ", e);
-        } finally {
-            if (wfManager != null) {
-                this.manager.release(wfManager);
-            }
-        }
-        return value;
-    }
-
-    protected Version getLatestVersion(Workflowable workflowable, String event) {
-        Version latestEventVersion = null;
-        Version versions[] = workflowable.getVersions();
-        int i = versions.length - 1;
-        while (i > -1 && !versions[i].getEvent().equals(event)) {
-            i--;
-        }
-        if (i > -1) {
-            latestEventVersion = versions[i];
-        }
-        return latestEventVersion;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Arrays.asList(PARAMETER_NAMES).iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
deleted file mode 100644
index 9d9debd..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.util.ServletHelper;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowManager;
-import org.apache.lenya.workflow.Workflowable;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This transformer disables menu items (by removing the href attribute) which are not allowed with
- * respect to the current workflow state.
- */
-public class WorkflowMenuTransformer extends AbstractSAXTransformer {
-    /**
-     * <code>MENU_ELEMENT</code> The menu element
-     */
-    public static final String MENU_ELEMENT = "menu";
-    /**
-     * <code>ITEM_ELEMENT</code> The item element
-     */
-    public static final String ITEM_ELEMENT = "item";
-    /**
-     * <code>EVENT_ATTRIBUTE</code> The event attribute
-     */
-    public static final String EVENT_ATTRIBUTE = "event";
-
-    /**
-     * (non-Javadoc)
-     * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
-     *      java.lang.String, org.xml.sax.Attributes)
-     */
-    public void startElement(String uri, String localName, String raw, Attributes attr)
-            throws SAXException {
-        boolean passed = true;
-
-        if (hasWorkflow() && localName.equals(ITEM_ELEMENT)) {
-            String event = attr.getValue(Workflow.NAMESPACE, EVENT_ATTRIBUTE);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Event: [" + event + "]");
-            }
-
-            // filter item if command not allowed
-            if (event != null) {
-                passed = false;
-
-                AttributesImpl attributes = new AttributesImpl(attr);
-
-                int hrefIndex = attributes.getIndex("href");
-                if (hrefIndex > -1) {
-
-                    if (!this.executableEvents.contains(event)) {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Removing href attribute");
-                        }
-                        attributes.removeAttribute(hrefIndex);
-                    } else {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Adding event to href attribute");
-                        }
-                        String href = attributes.getValue("href");
-                        attributes.setValue(hrefIndex, href + "&lenya.event=" + event);
-                    }
-
-                }
-
-                super.startElement(uri, localName, raw, attributes);
-            }
-        }
-
-        if (passed) {
-            super.startElement(uri, localName, raw, attr);
-        }
-
-    }
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String src, Parameters _parameters)
-            throws ProcessingException, SAXException, IOException {
-
-        super.setup(_resolver, _objectModel, src, _parameters);
-
-        WorkflowManager workflowManager = null;
-
-        try {
-            Request request = ObjectModelHelper.getRequest(_objectModel);
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-
-            String webappUrl = ServletHelper.getWebappURI(request);
-            Document document = null;
-            if (map.isDocument(webappUrl)) {
-                document = map.getFromURL(webappUrl);
-                ResourceType doctype = document.getResourceType();
-                if (document.getPublication().getWorkflowSchema(doctype) != null) {
-                    setHasWorkflow(true);
-                    workflowManager = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
-                } else {
-                    setHasWorkflow(false);
-                }
-            } else {
-                setHasWorkflow(false);
-            }
-
-            if (hasWorkflow()) {
-                Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager,
-                        session,
-                        getLogger(),
-                        document);
-                Workflow workflow = workflowManager.getWorkflowSchema(workflowable);
-                String[] events = workflow.getEvents();
-                for (int i = 0; i < events.length; i++) {
-                    if (workflowManager.canInvoke(workflowable, events[i])) {
-                        this.executableEvents.add(events[i]);
-                    }
-                }
-
-            }
-        } catch (final Exception e) {
-            throw new ProcessingException(e);
-        } finally {
-            if (workflowManager != null) {
-                this.manager.release(workflowManager);
-            }
-        }
-
-    }
-
-    private boolean hasWorkflow;
-
-    private Set executableEvents = new HashSet();
-
-    /**
-     * Returns if the current document has a workflow.
-     * @return A boolean value.
-     */
-    protected boolean hasWorkflow() {
-        return this.hasWorkflow;
-    }
-
-    /**
-     * Sets if the current document has a workflow.
-     * @param _hasWorkflow A boolean value.
-     */
-    public void setHasWorkflow(boolean _hasWorkflow) {
-        this.hasWorkflow = _hasWorkflow;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/WorkflowNotifier.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/WorkflowNotifier.java
deleted file mode 100644
index a237240..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/WorkflowNotifier.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow;
-
-import org.apache.lenya.cms.observation.AbstractRepositoryListener;
-import org.apache.lenya.cms.observation.DocumentEvent;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.workflow.Version;
-
-/**
- * Notify users of workflow changes.
- */
-public class WorkflowNotifier extends AbstractRepositoryListener {
-
-    public void eventFired(RepositoryEvent event) {
-        if (!(event instanceof DocumentEvent)) {
-            return;
-        }
-        DocumentEvent docEvent = (DocumentEvent) event;
-        if (!(docEvent.getDescriptor() instanceof WorkflowEventDescriptor)) {
-            return;
-        }
-
-        WorkflowEventDescriptor descriptor = (WorkflowEventDescriptor) docEvent.getDescriptor();
-        Version version = descriptor.getVersion();
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java
deleted file mode 100644
index 76f9e0f..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/CheckWorkflow.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;

-

-import org.apache.avalon.framework.configuration.Configurable;

-import org.apache.avalon.framework.configuration.Configuration;

-import org.apache.avalon.framework.configuration.ConfigurationException;

-import org.apache.lenya.cms.publication.Document;

-import org.apache.lenya.cms.usecase.DocumentUsecase;

-import org.apache.lenya.cms.workflow.WorkflowUtil;

-

-/**

- * Check if a workflow event can be invoked on the current document without actually invoking it.

- * The event is obtained from the configuration in <code>cocoon.xconf</code>:<code>

- * <pre>

- *     &lt;component-instance name=&quot;default/workflow.submit&quot;

- *                            logger=&quot;lenya.usecases.workflow&quot;

- *                            class=&quot;org.apache.lenya.cms.workflow.usecases.CheckWorkflow&quot;&gt;

- *       &lt;event id=&quot;submit&quot;/&gt;

- *     &lt;/component-instance&gt;

- * </pre>

- * </code>

- * 

- * @version $Id: InvokeWorkflow.java 426254 2006-07-27 21:27:04Z andreas $

- */

-public class CheckWorkflow extends DocumentUsecase implements Configurable {

-

-    private String event;

-

-    /**

-     * @return The workflow event to use.

-     */

-    protected String getEvent() {

-        return event;

-    }

-

-    /**

-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()

-     */

-    protected void doCheckPreconditions() throws Exception {

-        super.doCheckPreconditions();

-

-        if (hasErrors()) {

-            return;

-        }

-

-        Document doc = getSourceDocument();

-        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {

-            UsecaseWorkflowHelper.addWorkflowError(this, getEvent(), doc);

-        }

-    }

-

-    protected static final String ELEMENT_EVENT = "event";

-    protected static final String ATTRIBUTE_ID = "id";

-

-    /**

-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)

-     */

-    public void configure(Configuration config) throws ConfigurationException {

-        super.configure(config);

-        this.event = config.getChild(ELEMENT_EVENT).getAttribute(ATTRIBUTE_ID);

-    }

-

-}

diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Deactivate.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Deactivate.java
deleted file mode 100644
index 4a03999..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Deactivate.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.linking.LinkManager;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-
-/**
- * Deactivate usecase handler.
- * 
- * @version $Id$
- */
-public class Deactivate extends InvokeWorkflow {
-
-    protected static final String LINKS_TO_DOCUMENT = "linksToDocument";
-
-    /**
-     * Checks if the workflow event is supported and the parent of the document exists in the live
-     * area.
-     * 
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        if (!hasErrors()) {
-            
-            Document doc = getSourceDocument();
-
-            if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-                addErrorMessage("This usecase can only be invoked from the authoring area.");
-                return;
-            }
-
-            if (!doc.existsAreaVersion(Publication.LIVE_AREA)) {
-                addErrorMessage("This usecase can only be invoked when the live version exists.");
-            } else {
-                Document liveDoc = doc.getAreaVersion(Publication.LIVE_AREA);
-                NodeSet subSite = SiteUtil.getSubSite(this.manager, liveDoc.getLink().getNode());
-                SiteNode node = liveDoc.getLink().getNode();
-                subSite.remove(node);
-
-                if (!subSite.isEmpty()) {
-                    addErrorMessage("You can't deactivate this document because it has children.");
-                }
-                setParameter(LINKS_TO_DOCUMENT, new LinkList(this.manager, doc));
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        try {
-            List nodes = new ArrayList();
-
-            Document doc = getSourceDocument();
-            if (doc != null) {
-                nodes.add(doc.getRepositoryNode());
-                Document liveDoc = doc.getAreaVersion(Publication.LIVE_AREA);
-                nodes.add(liveDoc.getRepositoryNode());
-                nodes.add(liveDoc.area().getSite().getRepositoryNode());
-            }
-            return (org.apache.lenya.cms.repository.Node[]) nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);
-
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        deactivate(getSourceDocument());
-    }
-
-    /**
-     * Deactivates a document.
-     * 
-     * @param authoringDocument The authoring document.
-     */
-    protected void deactivate(Document authoringDocument) {
-
-        boolean success = false;
-
-        DocumentManager documentManager = null;
-        try {
-            Document liveDocument = authoringDocument.getAreaVersion(Publication.LIVE_AREA);
-
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.delete(liveDocument);
-
-            success = true;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Deactivate document [" + authoringDocument + "]. Success: ["
-                        + success + "]");
-            }
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-
-    }
-
-    protected String getEvent() {
-        return "deactivate";
-    }
-    
-    /**
-     * A list of links pointing to a document. Allows lazy loading rom the usecase view.
-     */
-    public static class LinkList {
-        
-        private Document document;
-        private Document[] documents;
-        private ServiceManager manager;
-        
-        /**
-         * @param manager The manager.
-         * @param doc The document to resolve the links from.
-         */
-        public LinkList(ServiceManager manager, Document doc) {
-            this.manager = manager;
-            this.document = doc;
-        }
-        
-        /**
-         * @return The link documents.
-         */
-        public Document[] getDocuments() {
-            if (this.documents == null) {
-                this.documents = getLinksToDocument();
-            }
-            return this.documents;
-        }
-        
-        protected Document[] getLinksToDocument() {
-            Set docs = new HashSet();
-            LinkManager linkMgr = null;
-            try {
-                linkMgr = (LinkManager) this.manager.lookup(LinkManager.ROLE);
-                Document liveVersion = this.document.getAreaVersion(Publication.LIVE_AREA);
-                Document[] referencingDocs = linkMgr.getReferencingDocuments(liveVersion);
-                for (int d = 0; d < referencingDocs.length; d++) {
-                    Document doc = referencingDocs[d];
-                    if (doc.getArea().equals(Publication.LIVE_AREA)) {
-                        docs.add(doc);
-                    }
-                }
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            finally {
-                if (linkMgr != null) {
-                    this.manager.release(linkMgr);
-                }
-            }
-            return (Document[]) docs.toArray(new Document[docs.size()]);
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/History.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/History.java
deleted file mode 100644
index e762e9c..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/History.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Display the workflow history tab in the site area
- * 
- * @version $Id$
- */
-public class History extends DocumentUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters() TODO
-     *      get wf variables, get date and machine ip for versions
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        if (getSourceDocument() != null) {
-            Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
-                    getLogger(), getSourceDocument());
-            Version[] versions = workflowable.getVersions();
-            setParameter("versions", versions);
-        }
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
deleted file mode 100644
index 2771886..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-
-/**
- * Invoke a workflow event on the current document. The event is obtained from the configuration in
- * <code>cocoon.xconf</code>:<code>
- * <pre>
- *   &lt;component-instance name=&quot;default/workflow.submit&quot;
- *                          logger=&quot;lenya.usecases.workflow&quot;
- *                          class=&quot;org.apache.lenya.cms.workflow.usecases.InvokeWorkflow&quot;&gt;
- *     &lt;event id=&quot;submit&quot;/&gt;
- *   &lt;/component-instance&gt;
- * </pre>
- * </code>
- * 
- * @version $Id$
- */
-public class InvokeWorkflow extends CheckWorkflow {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        Node[] objects = new Node[0];
-        if(getSourceDocument() != null) {
-            objects = new Node[] { getSourceDocument().getRepositoryNode() };
-        }
-        return objects;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), getSourceDocument(),
-                getEvent());
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java
deleted file mode 100644
index 974aa44..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Manage the workflow of multiple documents.
- */
-public class MultiWorkflow extends AbstractUsecase {
-
-    protected void initParameters() {
-        super.initParameters();
-
-        try {
-            List preOrder = getNodes();
-            List wrappers = new ArrayList();
-            SortedSet states = new TreeSet();
-            for (Iterator i = preOrder.iterator(); i.hasNext();) {
-                Document doc = (Document) i.next();
-                WorkflowableWrapper wrapper = new WorkflowableWrapper(this, this.manager,
-                        getDocumentFactory().getSession(), doc, getLogger());
-                wrappers.add(wrapper);
-                states.addAll(Arrays.asList(wrapper.getStates()));
-            }
-            setParameter("documents", wrappers);
-            setParameter("states", states);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected List getNodes() throws DocumentBuildException, DocumentException, PublicationException {
-        List preOrder;
-        String sourceUrl = getSourceURL();
-        DocumentFactory factory = getDocumentFactory();
-        if (getDocumentFactory().isDocument(sourceUrl)) {
-            Document doc = factory.getFromURL(sourceUrl);
-            preOrder = getPreOrder(doc.getLink().getNode());
-        } else {
-            preOrder = new ArrayList();
-            URLInformation info = new URLInformation(getSourceURL());
-            Publication pub = factory.getPublication(info.getPublicationId());
-            Area area = pub.getArea(info.getArea());
-            SiteStructure site = area.getSite();
-            SiteNode[] topLevelNodes = site.getTopLevelNodes();
-            for (int i = 0; i < topLevelNodes.length; i++) {
-                preOrder.addAll(getPreOrder(topLevelNodes[i]));
-            }
-        }
-        return preOrder;
-    }
-
-    protected List getPreOrder(SiteNode node) throws SiteException {
-        List preOrder = new ArrayList();
-        String[] langs = node.getLanguages();
-        Arrays.sort(langs);
-        for (int i = 0; i < langs.length; i++) {
-            preOrder.add(node.getLink(langs[i]).getDocument());
-        }
-        SiteNode[] children = node.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            preOrder.addAll(getPreOrder(children[i]));
-        }
-        return preOrder;
-    }
-
-    private Map usecase2event = new HashMap();
-
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-
-        Configuration[] usecaseConfigs = config.getChildren("usecase");
-        for (int i = 0; i < usecaseConfigs.length; i++) {
-            String usecase = usecaseConfigs[i].getAttribute("name");
-            String event = usecaseConfigs[i].getAttribute("event");
-            this.usecase2event.put(usecase, event);
-        }
-    }
-
-    /**
-     * @param event An event.
-     * @return All usecases associated with this event.
-     */
-    public String[] getUsecases(String event) {
-        SortedSet usecases = new TreeSet();
-        for (Iterator i = this.usecase2event.keySet().iterator(); i.hasNext();) {
-            String usecase = (String) i.next();
-            if (this.usecase2event.get(usecase).equals(event)) {
-                usecases.add(usecase);
-            }
-        }
-        return (String[]) usecases.toArray(new String[usecases.size()]);
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflowInvoke.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflowInvoke.java
deleted file mode 100644
index 9c9f366..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflowInvoke.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.usecase.UsecaseInvoker;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.util.Assert;
-
-/**
- * Invocation usecase for the multi-workflow usecase.
- */
-public class MultiWorkflowInvoke extends AbstractUsecase {
-    
-    protected static final String URL = "url";
-    protected static final String USECASE_NAME = "usecaseName";
-    
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String usecase = getParameterAsString(USECASE_NAME);
-        Assert.notNull("usecase", usecase);
-        String url = getParameterAsString(URL);
-        Assert.notNull("url", url);
-
-        UsecaseInvoker invoker = null;
-        try {
-            invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
-            invoker.invoke(url, usecase, new HashMap());
-
-            if (invoker.getResult() != UsecaseInvoker.SUCCESS) {
-                List messages = invoker.getErrorMessages();
-                for (Iterator i = messages.iterator(); i.hasNext();) {
-                    UsecaseMessage message = (UsecaseMessage) i.next();
-                    addErrorMessage(message.getMessage(), message.getParameters());
-                }
-            }
-        } finally {
-            if (invoker == null) {
-                this.manager.release(invoker);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
deleted file mode 100644
index b743308..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.linking.LinkManager;
-import org.apache.lenya.cms.linking.LinkResolver;
-import org.apache.lenya.cms.linking.LinkTarget;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationEventDescriptor;
-import org.apache.lenya.notification.NotificationException;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Publish usecase handler.
- * 
- * @version $Id$
- */
-public class Publish extends InvokeWorkflow {
-
-    protected static final String MESSAGE_SUBJECT = "notification-message";
-    protected static final String MESSAGE_DOCUMENT_PUBLISHED = "document-published";
-    protected static final String SCHEDULE = "schedule";
-    protected static final String SCHEDULE_TIME = "schedule.time";
-    protected static final String SEND_NOTIFICATION = "sendNotification";
-    protected static final String UNPUBLISHED_LINKS = "unpublishedLinks";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        if (hasErrors() || getSourceDocument() == null) {
-            return;
-        }
-
-        Date now = new GregorianCalendar().getTime();
-        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        setParameter(SCHEDULE_TIME, format.format(now));
-
-        setParameter(SEND_NOTIFICATION, Boolean.TRUE);
-        
-        setParameter(UNPUBLISHED_LINKS, new LinkList(this.manager, getSourceDocument()));
-        
-    }
-    
-    protected boolean hasBrokenLinks() {
-        LinkManager linkMgr = null;
-        LinkResolver resolver = null;
-        try {
-            linkMgr = (LinkManager) this.manager.lookup(LinkManager.ROLE);
-            resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-            org.apache.lenya.cms.linking.Link[] links = linkMgr.getLinksFrom(getSourceDocument());
-            for (int i = 0; i < links.length; i++) {
-                LinkTarget target = resolver.resolve(getSourceDocument(), links[i].getUri());
-                if (!target.exists()) {
-                    return true;
-                }
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (linkMgr != null) {
-                this.manager.release(linkMgr);
-            }
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        try {
-            List nodes = new ArrayList();
-
-            Document doc = getSourceDocument();
-            if(doc != null) {
-                nodes.add(doc.getRepositoryNode());
-                
-                // lock the authoring site to avoid having live nodes for which no corresponding
-                // authoring node exists
-                nodes.add(doc.area().getSite().getRepositoryNode());
-                
-                // lock the live site to avoid overriding changes made by others
-                SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA).getSite();
-                nodes.add(liveSite.getRepositoryNode());
-            }
-
-            return (org.apache.lenya.cms.repository.Node[]) nodes
-                    .toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);
-
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * Checks if the workflow event is supported and the parent of the document
-     * exists in the live area.
-     * 
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-
-            Document document = getSourceDocument();
-
-            if (!document.getArea().equals(Publication.AUTHORING_AREA)) {
-                addErrorMessage("This usecase can only be invoked from the authoring area.");
-                return;
-            }
-
-            Publication publication = document.getPublication();
-            DocumentFactory map = document.getFactory();
-            SiteStructure liveSite = publication.getArea(Publication.LIVE_AREA).getSite();
-
-            List missingDocuments = new ArrayList();
-
-            ServiceSelector selector = null;
-            SiteManager siteManager = null;
-            try {
-                selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-                siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-
-                if (!liveSite.contains(document.getPath())) {
-                    DocumentLocator liveLoc = document.getLocator().getAreaVersion(
-                            Publication.LIVE_AREA);
-                    DocumentLocator[] requiredNodes = siteManager
-                            .getRequiredResources(map, liveLoc);
-                    for (int i = 0; i < requiredNodes.length; i++) {
-                        String path = requiredNodes[i].getPath();
-                        if (!liveSite.contains(path)) {
-                            Link link = getExistingLink(path, document);
-                            if (link != null) {
-                                missingDocuments.add(link.getDocument());
-                            }
-                        }
-
-                    }
-                }
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (selector != null) {
-                    if (siteManager != null) {
-                        selector.release(siteManager);
-                    }
-                    this.manager.release(selector);
-                }
-            }
-
-            if (!missingDocuments.isEmpty()) {
-                addErrorMessage("publish-missing-documents");
-                for (Iterator i = missingDocuments.iterator(); i.hasNext();) {
-                    Document doc = (Document) i.next();
-                    /*
-                     * This doesn't work yet, see
-                     * https://issues.apache.org/jira/browse/COCOON-2057
-                     * String[] params = { doc.getCanonicalWebappURL(),
-                     * doc.getPath() + " (" + doc.getLanguage() + ")" };
-                     */
-                    String[] params = { doc.getPath() + ":" + doc.getLanguage(),
-                            DublinCoreHelper.getTitle(doc, true) };
-                    addErrorMessage("missing-document", params);
-                }
-            }
-            
-            if (hasBrokenLinks()) {
-                addInfoMessage("publish-broken-links");
-            }
-        }
-    }
-
-    /**
-     * Returns a link of a certain node, preferably in the document's language,
-     * or <code>null</code> if the node has no links.
-     * @param path The path of the node.
-     * @param document The document.
-     * @return A link or <code>null</code>.
-     * @throws SiteException if an error occurs.
-     */
-    protected Link getExistingLink(String path, Document document) throws SiteException {
-        SiteNode node = document.area().getSite().getNode(path);
-        Link link = null;
-        String uuid = node.getUuid();
-        if (uuid != null && uuid.equals(document.getUUID())) {
-            if (node.hasLink(document.getLanguage())) {
-                link = node.getLink(document.getLanguage());
-            } else if (node.getLanguages().length > 0) {
-                link = node.getLink(node.getLanguages()[0]);
-            }
-        }
-        return link;
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        boolean schedule = Boolean.valueOf(getBooleanCheckboxParameter(SCHEDULE)).booleanValue();
-        if (schedule) {
-            String dateString = getParameterAsString(SCHEDULE_TIME);
-            DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            try {
-                format.parse(dateString);
-            } catch (ParseException e) {
-                addErrorMessage("scheduler-date-format-invalid");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        boolean schedule = Boolean.valueOf(getBooleanCheckboxParameter(SCHEDULE)).booleanValue();
-        if (schedule) {
-            deleteParameter(SCHEDULE);
-            String dateString = getParameterAsString(SCHEDULE_TIME);
-            DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            UsecaseScheduler scheduler = null;
-            try {
-                Date date = format.parse(dateString);
-                scheduler = (UsecaseScheduler) this.manager.lookup(UsecaseScheduler.ROLE);
-                scheduler.schedule(this, date);
-            } catch (ParseException e) {
-                addErrorMessage("scheduler-date-format-invalid");
-            } finally {
-                if (scheduler != null) {
-                    this.manager.release(scheduler);
-                }
-            }
-        } else {
-            super.doExecute();
-            publish(getSourceDocument());
-        }
-    }
-
-    protected void publish(Document authoringDocument) throws DocumentException, SiteException,
-            PublicationException {
-
-        createAncestorNodes(authoringDocument);
-
-        DocumentManager documentManager = null;
-
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.copyToArea(authoringDocument, Publication.LIVE_AREA);
-
-            boolean notify = Boolean.valueOf(getBooleanCheckboxParameter(SEND_NOTIFICATION))
-                    .booleanValue();
-            if (notify) {
-                sendNotification(authoringDocument);
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-    }
-
-    protected void sendNotification(Document authoringDocument) throws NotificationException,
-            DocumentException, AccessControlException {
-        User sender = getSession().getIdentity().getUser();
-
-        Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
-                getLogger(), authoringDocument);
-        Version versions[] = workflowable.getVersions();
-        Version version = versions[versions.length - 2];
-
-        // we assume that the document has been submitted, otherwise we do
-        // nothing
-        if (version.getEvent().equals("submit")) {
-
-            String userId = version.getUserId();
-            User user = PolicyUtil.getUser(this.manager, authoringDocument.getCanonicalWebappURL(),
-                    userId, getLogger());
-
-            Identifiable[] recipients = { user };
-
-            Document liveVersion = authoringDocument.getAreaVersion(Publication.LIVE_AREA);
-            String url;
-
-            Proxy proxy = liveVersion.getPublication().getProxy(liveVersion, false);
-            if (proxy != null) {
-                url = proxy.getURL(liveVersion);
-            } else {
-                Request request = ContextHelper.getRequest(this.context);
-                final String serverUrl = "http://" + request.getServerName() + ":"
-                        + request.getServerPort();
-                final String webappUrl = liveVersion.getCanonicalWebappURL();
-                url = serverUrl + request.getContextPath() + webappUrl;
-            }
-            String[] params = { url };
-            Message message = new Message(MESSAGE_SUBJECT, new String[0],
-                    MESSAGE_DOCUMENT_PUBLISHED, params, sender, recipients);
-
-            NotificationEventDescriptor descriptor = new NotificationEventDescriptor(message);
-            RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, getSession(),
-                    getLogger(), descriptor);
-            getSession().enqueueEvent(event);
-        }
-    }
-
-    protected void createAncestorNodes(Document document) throws PublicationException,
-            DocumentException, SiteException {
-        SiteStructure liveSite = document.getPublication().getArea(Publication.LIVE_AREA).getSite();
-        String[] steps = document.getPath().substring(1).split("/");
-        int s = 0;
-        String path = "";
-        while (s < steps.length) {
-            if (!liveSite.contains(path)) {
-                liveSite.add(path);
-            }
-            path += "/" + steps[s];
-            s++;
-        }
-    }
-    
-    /**
-     * A list of links originating from a document. Allows lazy loading rom the usecase view.
-     */
-    public static class LinkList {
-        
-        private Document document;
-        private Document[] documents;
-        private ServiceManager manager;
-        
-        /**
-         * @param manager The manager.
-         * @param doc The document to resolve the links from.
-         */
-        public LinkList(ServiceManager manager, Document doc) {
-            this.manager = manager;
-            this.document = doc;
-        }
-        
-        /**
-         * @return The link documents.
-         */
-        public Document[] getDocuments() {
-            if (this.documents == null) {
-                this.documents = getUnpublishedLinks();
-            }
-            return this.documents;
-        }
-        
-        protected Document[] getUnpublishedLinks() {
-            Set docs = new HashSet();
-            LinkManager linkMgr = null;
-            LinkResolver resolver = null;
-            try {
-                linkMgr = (LinkManager) this.manager.lookup(LinkManager.ROLE);
-                resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-                org.apache.lenya.cms.linking.Link[] links = linkMgr.getLinksFrom(this.document);
-                for (int i = 0; i < links.length; i++) {
-                    LinkTarget target = resolver.resolve(this.document, links[i].getUri());
-                    if (target.exists()) {
-                        Document doc = target.getDocument();
-                        if (!doc.existsAreaVersion(Publication.LIVE_AREA)) {
-                            docs.add(doc);
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (linkMgr != null) {
-                    this.manager.release(linkMgr);
-                }
-                if (resolver != null) {
-                    this.manager.release(resolver);
-                }
-            }
-            return (Document[]) docs.toArray(new Document[docs.size()]);
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java
deleted file mode 100644
index 57a0379..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Reject.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationException;
-import org.apache.lenya.notification.NotificationEventDescriptor;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Reject usecase handler.
- */
-public class Reject extends InvokeWorkflow {
-
-    protected static final String MESSAGE_SUBJECT = "notification-message";
-    protected static final String MESSAGE_DOCUMENT_REJECTED = "document-rejected";
-    protected static final String REJECT_REASON = "rejectReason";
-    protected static final String SEND_NOTIFICATION = "sendNotification";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        super.doExecute();
-
-        boolean notify = Boolean.valueOf(getBooleanCheckboxParameter(SEND_NOTIFICATION))
-                .booleanValue();
-        if (notify) {
-            sendNotification(getSourceDocument());
-        }
-    }
-
-    protected void sendNotification(Document authoringDocument) throws NotificationException,
-            DocumentException, AccessControlException {
-
-        User sender = getSession().getIdentity().getUser();
-
-        String reason = getParameterAsString(REJECT_REASON);
-        Workflowable workflowable = WorkflowUtil.getWorkflowable(this.manager, getSession(),
-                getLogger(), authoringDocument);
-        Version versions[] = workflowable.getVersions();
-        // current version is reject, want originating submit
-        Version version = versions[versions.length - 2];
-
-        // we assume that the document has been submitted, otherwise we do
-        // nothing
-        if (version.getEvent().equals("submit")) {
-
-            String userId = version.getUserId();
-            User user = PolicyUtil.getUser(this.manager, authoringDocument.getCanonicalWebappURL(),
-                    userId, getLogger());
-
-            Identifiable[] recipients = { user };
-
-            Document authoringVersion = authoringDocument
-                    .getAreaVersion(Publication.AUTHORING_AREA);
-            String url;
-
-            Proxy proxy = authoringVersion.getPublication().getProxy(authoringVersion, false);
-            if (proxy != null) {
-                url = proxy.getURL(authoringVersion);
-            } else {
-                Request request = ContextHelper.getRequest(this.context);
-                final String serverUrl = "http://" + request.getServerName() + ":"
-                        + request.getServerPort();
-                final String webappUrl = authoringVersion.getCanonicalWebappURL();
-                url = serverUrl + request.getContextPath() + webappUrl;
-            }
-            String[] params = { reason, url };
-            Message message = new Message(MESSAGE_SUBJECT, new String[0],
-                    MESSAGE_DOCUMENT_REJECTED, params, sender, recipients);
-
-            NotificationEventDescriptor descriptor = new NotificationEventDescriptor(message);
-            RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, getSession(),
-                    getLogger(), descriptor);
-            getSession().enqueueEvent(event);
-        }
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java
deleted file mode 100644
index b9d0ae4..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Submit.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Proxy;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.notification.NotificationException;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationEventDescriptor;
-
-/**
- * Submit usecase handler.
- */
-public class Submit extends InvokeWorkflow {
-
-    protected static final String MESSAGE_SUBJECT = "notification-message";
-    protected static final String MESSAGE_DOCUMENT_SUBMITTED = "document-submitted";
-    protected static final String SEND_NOTIFICATION = "sendNotification";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-
-        super.doExecute();
-        
-        if (Boolean.valueOf(getBooleanCheckboxParameter(SEND_NOTIFICATION)).booleanValue()) {
-            sendNotification(getSourceDocument());
-        }
-    }
-
-    protected void sendNotification(Document authoringDocument) throws NotificationException,
-            DocumentException, AccessControlException {
-
-        User sender = getSession().getIdentity().getUser();
-
-        User[] recipients = PolicyUtil.getUsersWithRole(this.manager, authoringDocument
-                .getCanonicalWebappURL(), "review", getLogger());
-
-        // check to see if current user can review their own submission
-        for (int i = 0; i < recipients.length; i++) {
-            if (recipients[i].equals(sender))
-                return;
-        }
-
-        String url;
-        Document authoringVersion = authoringDocument.getAreaVersion(Publication.AUTHORING_AREA);
-        Proxy proxy = authoringVersion.getPublication().getProxy(authoringVersion, false);
-
-        if (proxy != null) {
-            url = proxy.getURL(authoringVersion);
-        } else {
-            Request request = ContextHelper.getRequest(this.context);
-            final String serverUrl = "http://" + request.getServerName() + ":"
-                    + request.getServerPort();
-            final String webappUrl = authoringVersion.getCanonicalWebappURL();
-            url = serverUrl + request.getContextPath() + webappUrl;
-        }
-
-        String[] params = { url };
-
-        Message message = new Message(MESSAGE_SUBJECT, new String[0], MESSAGE_DOCUMENT_SUBMITTED,
-                params, sender, recipients);
-        NotificationEventDescriptor descriptor = new NotificationEventDescriptor(message);
-        RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, getSession(),
-                getLogger(), descriptor);
-        getSession().enqueueEvent(event);
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java
deleted file mode 100644
index c0cbc51..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/UsecaseWorkflowHelper.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Helper class for workflow related usecases.
- */
-public class UsecaseWorkflowHelper {
-
-    /**
-     * The error message that an event can not be invoked on a document. It
-     * takes two parameters: the event name and the document title.
-     */
-    protected static final String ERROR_CANNOT_INVOKE_EVENT = "error-workflow-document";
-
-    /**
-     * Adds an error message to a usecase that an event cannot be invoked on a
-     * document.
-     * @param usecase The usecase.
-     * @param event The event.
-     * @param doc The document.
-     */
-    protected static final void addWorkflowError(AbstractUsecase usecase, String event, Document doc) {
-        try {
-            String title = DublinCoreHelper.getTitle(doc, true);
-            if (title == null) {
-                title = "";
-            }
-            usecase.addErrorMessage(ERROR_CANNOT_INVOKE_EVENT, new String[] { event, title });
-        } catch (MetaDataException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Adds an error message if the event can not be invoked.
-     * @param manager The service manager.
-     * @param usecase The usecase.
-     * @param event The event.
-     * @param doc The document.
-     * @param logger The logger.
-     */
-    public static final void checkWorkflow(ServiceManager manager, AbstractUsecase usecase,
-            String event, Document doc, Logger logger) {
-        try {
-            if (!WorkflowUtil.canInvoke(manager, usecase.getSession(), logger, doc, event)) {
-                UsecaseWorkflowHelper.addWorkflowError(usecase, event, doc);
-            }
-        } catch (WorkflowException e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/WorkflowableWrapper.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/WorkflowableWrapper.java
deleted file mode 100644
index ac51027..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/WorkflowableWrapper.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.workflow.usecases;
-
-import java.util.Arrays;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Wrap a workflowable for easy evaluation in JX template.
- */
-public class WorkflowableWrapper extends AbstractLogEnabled {
-
-    private MultiWorkflow usecase;
-    private Workflowable workflowable;
-    private ServiceManager manager;
-    private Document document;
-    private Session session;
-
-    /**
-     * Ctor.
-     * @param usecase The usecase.
-     * @param manager The service manager.
-     * @param session The session.
-     * @param document The document to wrap.
-     * @param logger The logger.
-     */
-    public WorkflowableWrapper(MultiWorkflow usecase, ServiceManager manager, Session session,
-            Document document, Logger logger) {
-        this.usecase = usecase;
-        this.document = document;
-        this.manager = manager;
-        this.session = session;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    protected Workflowable getWorkflowable() {
-        if (this.workflowable == null) {
-            this.workflowable = WorkflowUtil.getWorkflowable(this.manager, this.session,
-                    getLogger(), this.document);
-        }
-        return this.workflowable;
-    }
-
-    /**
-     * @return The state of the latest version.
-     * @throws WorkflowException
-     */
-    public String getState() throws WorkflowException {
-        String state;
-        if (getWorkflowable().getVersions().length > 0) {
-            state = getWorkflowable().getLatestVersion().getState();
-        } else {
-            Workflow workflow = getWorkflowSchema();
-            state = workflow.getInitialState();
-        }
-        return state;
-    }
-
-    /**
-     * @return All states supported by the workflow schema.
-     * @throws WorkflowException
-     */
-    public String[] getStates() throws WorkflowException {
-        return getWorkflowSchema().getStates();
-    }
-
-    protected Workflow getWorkflowSchema() throws WorkflowException {
-        Workflow workflow = WorkflowUtil.getWorkflowSchema(this.manager, this.session, getLogger(),
-                this.document);
-        return workflow;
-    }
-
-    /**
-     * @return The path of the document.
-     * @throws DocumentException If the document is not referenced in the site
-     *         structure.
-     */
-    public String getPath() throws DocumentException {
-        return this.document.getPath();
-    }
-
-    /**
-     * @return The language of the document.
-     */
-    public String getLanguage() {
-        return this.document.getLanguage();
-    }
-
-    /**
-     * @return The web application URL of the document.
-     */
-    public String getUrl() {
-        return this.document.getCanonicalWebappURL();
-    }
-
-    /**
-     * @return All executable events in alphabetical order.
-     * @throws WorkflowException if an error occurs.
-     */
-    public String[] getUsecases() throws WorkflowException {
-        SortedSet usecases = new TreeSet();
-        String[] events = getWorkflowSchema().getEvents();
-        for (int i = 0; i < events.length; i++) {
-            if (WorkflowUtil.canInvoke(this.manager, this.session, getLogger(), this.document,
-                    events[i])) {
-                String[] eventUsecases = this.usecase.getUsecases(events[i]);
-                usecases.addAll(Arrays.asList(eventUsecases));
-            }
-        }
-
-        return (String[]) usecases.toArray(new String[usecases.size()]);
-    }
-    
-    /**
-     * @return The languages of the document in alphabetical order.
-     * @throws DocumentException 
-     */
-    public String[] getLanguages() throws DocumentException {
-        String[] languages = this.document.getLanguages();
-        Arrays.sort(languages);
-        return languages;
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/AbstractCondition.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/AbstractCondition.java
deleted file mode 100644
index 8c26d96..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/AbstractCondition.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Abstract base class for workflow conditions.
- */
-public abstract class AbstractCondition extends AbstractLogEnabled implements Condition {
-
-    private String expression;
-
-    /**
-     * @see org.apache.lenya.workflow.impl.AbstractCondition#setExpression(java.lang.String)
-     */
-    public void setExpression(String ex) throws WorkflowException {
-        this.expression = ex.trim();
-    }
-
-    /**
-     * Returns the expression of this condition.
-     * @return A string.
-     */
-    public String getExpression() {
-        return this.expression;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getExpression();
-    }
-    
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ActionImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ActionImpl.java
deleted file mode 100644
index d9aa3c0..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ActionImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.lenya.workflow.Action;
-
-/**
- * Basic action implementation.
- */
-public abstract class ActionImpl implements Action {
-    
-    /**
-     * Creates a new instance of ActionImpl.
-     * @param actionId The action ID.
-     */
-    protected ActionImpl(String actionId) {
-        this.id = actionId;
-    }
-
-    private String id;
-
-    /**
-     * Returns the action ID.
-     * @return A string.
-     */
-    public String getId() {
-        return this.id;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return getId();
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableAssignmentImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableAssignmentImpl.java
deleted file mode 100644
index e16232f..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableAssignmentImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.lenya.workflow.BooleanVariableAssignment;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Implementation of a boolean variable assignment.
- */
-public class BooleanVariableAssignmentImpl implements BooleanVariableAssignment {
-    
-    /**
-     * Ctor.
-     * @param name The variable name.
-     * @param value The value.
-     */
-    protected BooleanVariableAssignmentImpl(String name, boolean value) {
-        this.variable = name;
-        this.value = value;
-    }
-
-    private String variable;
-    private boolean value;
-
-    /**
-     * @see org.apache.lenya.workflow.Action#execute(org.apache.lenya.workflow.Version)
-     */
-    public void execute(Version resultingVersion) throws WorkflowException {
-        resultingVersion.setValue(getVariable(), getValue());
-    }
-
-    /**
-     * Returns the value of this assignment.
-     * @return A boolean value.
-     */
-    public boolean getValue() {
-        return this.value;
-    }
-
-    /**
-     * Returns the variable of this assignment.
-     * @return A variable.
-     */
-    public String getVariable() {
-        return this.variable;
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableCondition.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableCondition.java
deleted file mode 100644
index a0408ac..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableCondition.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Implementation of a boolean variable condition.
- */
-public class BooleanVariableCondition extends AbstractCondition {
-
-    private String variableName;
-    private boolean value;
-
-    /**
-     * Returns the variable value to check.
-     * @return A boolean value.
-     */
-    protected boolean getValue() {
-        return this.value;
-    }
-
-    /**
-     * Returns the variable name to check.
-     * @return A string.
-     */
-    protected String getVariableName() {
-        return this.variableName;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Condition#setExpression(java.lang.String)
-     */
-    public void setExpression(String expression) throws WorkflowException {
-        super.setExpression(expression);
-        String[] sides = expression.split("=");
-        if (sides.length != 2) {
-            throw new WorkflowException("The expression '" + expression
-                    + "' must be of the form 'name = [true|false]'");
-        }
-
-        this.variableName = sides[0].trim();
-        this.value = Boolean.valueOf(sides[1].trim()).booleanValue();
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Expression:    [" + sides[1].trim() + "]");
-            getLogger().debug("Setting value: [" + this.value + "]");
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Condition#isComplied(org.apache.lenya.workflow.Workflow,
-     *      org.apache.lenya.workflow.Workflowable)
-     */
-    public boolean isComplied(Workflow workflow, Workflowable workflowable)
-            throws WorkflowException {
-        Version latestVersion = workflowable.getLatestVersion();
-        boolean value = false;
-        if (latestVersion == null) {
-            value = workflow.getInitialValue(getVariableName());
-        } else {
-            value = latestVersion.getValue(getVariableName());
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Checking boolean variable condition");
-            getLogger().debug("    Condition value: [" + getValue() + "]");
-            getLogger().debug("    Variable value:  [" + value + "]");
-        }
-        return value == getValue();
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableImpl.java
deleted file mode 100644
index d3c8227..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/BooleanVariableImpl.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.lenya.workflow.BooleanVariable;
-
-
-/**
- * Implementation of a boolean variable.
- */
-public class BooleanVariableImpl implements BooleanVariable {
-    
-    /**
-     * Creates a new instance of BooleanVariableImpl.
-     * @param variableName The variable name.
-     * @param _initialValue The initial value of the corresponding variable instances.
-     */
-    protected BooleanVariableImpl(String variableName, boolean _initialValue) {
-        this.name = variableName;
-        this.initialValue = _initialValue;
-    }
-
-    private String name;
-
-    /**
-     * @see org.apache.lenya.workflow.BooleanVariable#getName()
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    private boolean initialValue;
-
-    /**
-     * @see org.apache.lenya.workflow.BooleanVariable#getInitialValue()
-     */
-    public boolean getInitialValue() {
-        return this.initialValue;
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ConditionFactory.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ConditionFactory.java
deleted file mode 100644
index 28fb764..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/ConditionFactory.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.WorkflowException;
-
-
-/**
- * Factory to build conditions.
- */
-public final class ConditionFactory extends AbstractLogEnabled {
-    
-    /**
-     * Ctor.
-     * @param logger The logger to use.
-     */
-    public ConditionFactory(Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    /**
-     * Creates a condition.
-     * @param className The condition class name.
-     * @param expression The condition expression.
-     * @return A condition.
-     * @throws WorkflowException when creating the condition failed.
-     */
-    protected Condition createCondition(String className, String expression)
-        throws WorkflowException {
-
-        Condition condition;
-
-        try {
-            Class clazz = Class.forName(className);
-            condition = (Condition) clazz.newInstance();
-            ContainerUtil.enableLogging(condition, getLogger());
-            condition.setExpression(expression);
-        } catch (ClassNotFoundException e) {
-            throw new WorkflowException(e);
-        } catch (InstantiationException e) {
-            throw new WorkflowException(e);
-        } catch (IllegalAccessException e) {
-            throw new WorkflowException(e);
-        }
-
-        return condition;
-    }
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/TransitionImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/TransitionImpl.java
deleted file mode 100644
index b04b76f..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/TransitionImpl.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.lenya.workflow.Action;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.Transition;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation of a transition.
- */
-public class TransitionImpl extends AbstractLogEnabled implements Transition {
-
-    /**
-     * Ctor.
-     * @param sourceState The source state.
-     * @param destinationState The destination state.
-     */
-    protected TransitionImpl(String sourceState, String destinationState) {
-        this.source = sourceState;
-        this.destination = destinationState;
-    }
-
-    private List actions = new ArrayList();
-    private boolean isSynchronized = false;
-
-    /**
-     * Returns the actions which are assigned tothis transition.
-     * @return An array of actions.
-     */
-    public Action[] getActions() {
-        return (Action[]) this.actions.toArray(new Action[this.actions.size()]);
-    }
-
-    /**
-     * Assigns an action to this transition.
-     * @param action The action.
-     */
-    public void addAction(Action action) {
-        this.actions.add(action);
-    }
-
-    private List conditions = new ArrayList();
-
-    /**
-     * @see org.apache.lenya.workflow.Transition#getConditions()
-     */
-    public Condition[] getConditions() {
-        return (Condition[]) this.conditions.toArray(new Condition[this.conditions.size()]);
-    }
-
-    /**
-     * Assigns a condition to this transition.
-     * @param condition The condition.
-     */
-    public void addCondition(Condition condition) {
-        this.conditions.add(condition);
-    }
-
-    private String event;
-
-    /**
-     * Returns the event which invokes this transition.
-     * @return An event.
-     */
-    public String getEvent() {
-        return this.event;
-    }
-
-    /**
-     * Sets the event to invoke this transition.
-     * @param anEvent An event.
-     */
-    public void setEvent(String anEvent) {
-        this.event = anEvent;
-    }
-
-    private String source;
-
-    /**
-     * @see org.apache.lenya.workflow.Transition#getSource()
-     */
-    public String getSource() {
-        return this.source;
-    }
-
-    private String destination;
-
-    /**
-     * @see org.apache.lenya.workflow.Transition#getDestination()
-     */
-    public String getDestination() {
-        return this.destination;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getEvent() + " [");
-        Condition[] _conditions = getConditions();
-
-        for (int i = 0; i < _conditions.length; i++) {
-            if (i > 0) {
-                buf.append(", ");
-            }
-
-            buf.append(_conditions[i].toString());
-        }
-
-        buf.append("]");
-
-        Action[] _actions = getActions();
-
-        if (_actions.length > 0) {
-            buf.append(" / ");
-
-            for (int i = 0; i < _actions.length; i++) {
-                if (i > 0) {
-                    buf.append(", ");
-                }
-
-                buf.append(_actions[i].toString());
-            }
-        }
-
-        return buf.toString();
-    }
-
-    /**
-     * Returns if this transition is synchronized.
-     * @return A boolean value.
-     */
-    public boolean isSynchronized() {
-        return this.isSynchronized;
-    }
-
-    /**
-     * Sets if this transition is synchronized.
-     * @param _isSynchronized A boolean value.
-     */
-    protected void setSynchronized(boolean _isSynchronized) {
-        this.isSynchronized = _isSynchronized;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/VersionImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/VersionImpl.java
deleted file mode 100644
index a9f6d80..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/VersionImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.lenya.workflow.Version;
-
-/**
- * A version of the workflow history.
- */
-public class VersionImpl implements Version {
-
-    private Date date;
-    private String ipAddress;
-    private String event;
-    private String state;
-    private String userId;
-    private Map variableValues = new HashMap();
- 
-    /**
-     * @see org.apache.lenya.workflow.Version#getEvent()
-     */
-    public String getEvent() {
-        return this.event;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#getState()
-     */
-    public String getState() {
-        return this.state;
-    }
-    
-    /**
-     * Returns the date.
-     * @return A string.
-     */
-    public Date getDate() {
-        return (Date)this.date.clone();
-    }
-
-    /**
-     * Sets the date.
-     * @param _date A date.
-     */
-    public void setDate(Date _date) {
-        this.date = (Date)_date.clone();
-    }
-
-    /**
-     * Returns the user ID.
-     * @return A string.
-     */
-    public String getUserId() {
-        return this.userId;
-    }
-
-    /**
-     * Sets the user ID.
-     * @param _userId A user ID.
-     */
-    public void setUserId(String _userId) {
-        this.userId = _userId;
-    }
-
-    /**
-     * Returns the ip address.
-     * @return A string.
-     */
-    public String getIPAddress() {
-    	return this.ipAddress;
-    }
-
-    /**
-     * Sets the ip address.
-     * @param _ipaddress A ip address.
-     */
-    public void setIPAddress(String _ipaddress){
-    	this.ipAddress = _ipaddress;
-    }
-    
-    /**
-     * Ctor.
-     * @param _event The event that caused the version change.
-     * @param _state The destination state.
-     */
-    public VersionImpl(String _event, String _state) {
-        this.event = _event;
-        this.state = _state;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#getValue(java.lang.String)
-     */
-    public boolean getValue(String variableName) {
-        Boolean value = (Boolean) this.variableValues.get(variableName);
-        if (value == null) {
-            throw new RuntimeException("No value set for variable [" + variableName + "]");
-        }
-        return value.booleanValue();
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Version#setValue(java.lang.String, boolean)
-     */
-    public void setValue(String variableName, boolean value) {
-        this.variableValues.put(variableName, Boolean.valueOf(value));
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowBuilder.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowBuilder.java
deleted file mode 100644
index 1ed1e9f..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowBuilder.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import java.io.File;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.xml.DocumentHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * Utility class to build a workflow schema from a file.
- */
-public class WorkflowBuilder extends AbstractLogEnabled {
-
-    protected static final String STATE_ELEMENT = "state";
-    protected static final String TRANSITION_ELEMENT = "transition";
-    protected static final String EVENT_ELEMENT = "event";
-    protected static final String CONDITION_ELEMENT = "condition";
-    //protected static final String ACTION_ELEMENT = "action";
-    protected static final String ID_ATTRIBUTE = "id";
-    protected static final String INITIAL_ATTRIBUTE = "initial";
-    protected static final String SOURCE_ATTRIBUTE = "source";
-    protected static final String DESTINATION_ATTRIBUTE = "destination";
-    protected static final String CLASS_ATTRIBUTE = "class";
-    protected static final String VARIABLE_ELEMENT = "variable";
-    protected static final String ASSIGNMENT_ELEMENT = "assign";
-    protected static final String VARIABLE_ATTRIBUTE = "variable";
-    protected static final String VALUE_ATTRIBUTE = "value";
-    protected static final String NAME_ATTRIBUTE = "name";
-    protected static final String SYNCHRONIZED_ATTRIBUTE = "synchronized";
-
-    private ConditionFactory conditionFactory = null;
-
-    /**
-     * Ctor.
-     * @param logger The logger to use.
-     */
-    public WorkflowBuilder(Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    /**
-     * Builds a workflow schema from a file.
-     * @param name The workflow name.
-     * @param file The file.
-     * @return A workflow schema implementation.
-     * @throws WorkflowException if the file does not represent a valid workflow
-     *             schema.
-     */
-    public WorkflowImpl buildWorkflow(String name, File file) throws WorkflowException {
-        WorkflowImpl workflow;
-
-        try {
-            Document document = DocumentHelper.readDocument(file);
-            workflow = buildWorkflow(name, document);
-        } catch (Exception e) {
-            throw new WorkflowException(e);
-        }
-
-        return workflow;
-    }
-
-    /**
-     * Builds a workflow object from an XML document.
-     * @param name The workflow name.
-     * @param document The XML document.
-     * @return A workflow implementation.
-     * @throws WorkflowException when something went wrong.
-     */
-    protected WorkflowImpl buildWorkflow(String name, Document document) throws WorkflowException {
-
-        Element root = document.getDocumentElement();
-        String initialState = null;
-
-        // load states
-        NodeList stateElements = root.getElementsByTagNameNS(Workflow.NAMESPACE, STATE_ELEMENT);
-
-        for (int i = 0; i < stateElements.getLength(); i++) {
-            Element element = (Element) stateElements.item(i);
-            String state = buildState(element);
-
-            if (isInitialStateElement(element)) {
-                initialState = state;
-            }
-        }
-
-        WorkflowImpl workflow = new WorkflowImpl(name, initialState);
-
-        // load variables
-        NodeList variableElements = root.getElementsByTagNameNS(Workflow.NAMESPACE,
-                VARIABLE_ELEMENT);
-
-        for (int i = 0; i < variableElements.getLength(); i++) {
-            Element element = (Element) variableElements.item(i);
-            BooleanVariableImpl variable = buildVariable(element);
-            workflow.addVariable(variable);
-        }
-
-        // load events
-        NodeList eventElements = root.getElementsByTagNameNS(Workflow.NAMESPACE, EVENT_ELEMENT);
-
-        for (int i = 0; i < eventElements.getLength(); i++) {
-            String event = buildEvent((Element) eventElements.item(i));
-            workflow.addEvent(event);
-        }
-
-        // load transitions
-        NodeList transitionElements = root.getElementsByTagNameNS(Workflow.NAMESPACE,
-                TRANSITION_ELEMENT);
-
-        for (int i = 0; i < transitionElements.getLength(); i++) {
-            TransitionImpl transition = buildTransition((Element) transitionElements.item(i));
-            workflow.addTransition(transition);
-        }
-
-        return workflow;
-    }
-
-    /**
-     * Checks if a state element contains the initial state.
-     * @param element An XML element.
-     * @return A boolean value.
-     */
-    protected boolean isInitialStateElement(Element element) {
-        String initialAttribute = element.getAttribute(INITIAL_ATTRIBUTE);
-
-        return (initialAttribute != null)
-                && (initialAttribute.equals("yes") || initialAttribute.equals("true"));
-    }
-
-    /**
-     * Builds a state from an XML element.
-     * @param element An XML element.
-     * @return A state.
-     */
-    protected String buildState(Element element) {
-        return element.getAttribute(ID_ATTRIBUTE);
-    }
-
-    /**
-     * Builds a transition from an XML element.
-     * @param element An XML element.
-     * @return A transition.
-     * @throws WorkflowException when something went wrong.
-     */
-    protected TransitionImpl buildTransition(Element element) throws WorkflowException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Building transition");
-        }
-
-        String source = element.getAttribute(SOURCE_ATTRIBUTE);
-        String destination = element.getAttribute(DESTINATION_ATTRIBUTE);
-
-        TransitionImpl transition = new TransitionImpl(source, destination);
-        ContainerUtil.enableLogging(transition, getLogger());
-
-        // set event
-        Element eventElement = (Element) element.getElementsByTagNameNS(Workflow.NAMESPACE,
-                EVENT_ELEMENT).item(0);
-        String event = eventElement.getAttribute(ID_ATTRIBUTE);
-        transition.setEvent(event);
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("    Event: [" + event + "]");
-        }
-
-        // load conditions
-        NodeList conditionElements = element.getElementsByTagNameNS(Workflow.NAMESPACE,
-                CONDITION_ELEMENT);
-
-        for (int i = 0; i < conditionElements.getLength(); i++) {
-            Condition condition = buildCondition((Element) conditionElements.item(i));
-            transition.addCondition(condition);
-        }
-
-        // load assignments
-        NodeList assignmentElements = element.getElementsByTagNameNS(Workflow.NAMESPACE,
-                ASSIGNMENT_ELEMENT);
-
-        for (int i = 0; i < assignmentElements.getLength(); i++) {
-            BooleanVariableAssignmentImpl action = buildAssignment((Element) assignmentElements
-                    .item(i));
-            transition.addAction(action);
-        }
-
-        // load actions
-        /*
-         * NodeList actionElements = element
-         * .getElementsByTagNameNS(Workflow.NAMESPACE, ACTION_ELEMENT);
-         * 
-         * for (int i = 0; i < actionElements.getLength(); i++) { Action action =
-         * buildAction((Element) actionElements.item(i));
-         * transition.addAction(action); }
-         */
-
-        // set synchronization
-
-        /* FIXME: this is not used in the default publication, and is not currently accepted by the workflow xml validation. what does it do? */
-        if (element.hasAttribute(SYNCHRONIZED_ATTRIBUTE)) {
-            Boolean isSynchronized = Boolean.valueOf(element.getAttribute(SYNCHRONIZED_ATTRIBUTE));
-            transition.setSynchronized(isSynchronized.booleanValue());
-        }
-
-        return transition;
-    }
-
-    /**
-     * Builds an event from an XML element.
-     * @param element An XML element.
-     * @return An event.
-     */
-    protected String buildEvent(Element element) {
-        return element.getAttribute(ID_ATTRIBUTE);
-    }
-
-
-    /**
-     * Builds a condition from an XML element.
-     * @param element An XML element.
-     * @return A condition.
-     * @throws WorkflowException when something went wrong.
-     */
-    protected Condition buildCondition(Element element) throws WorkflowException {
-        String className = element.getAttribute(CLASS_ATTRIBUTE);
-        String expression = DocumentHelper.getSimpleElementText(element);
-        if (this.conditionFactory == null) {
-            this.conditionFactory = new ConditionFactory(getLogger());
-        }
-        Condition condition = this.conditionFactory.createCondition(className, expression);
-
-        return condition;
-    }
-
-    /**
-     * Builds a boolean variable from an XML element.
-     * @param element An XML element.
-     * @return A boolean variable.
-     */
-    protected BooleanVariableImpl buildVariable(Element element) {
-        String name = element.getAttribute(NAME_ATTRIBUTE);
-        String value = element.getAttribute(VALUE_ATTRIBUTE);
-
-        return new BooleanVariableImpl(name, Boolean.getBoolean(value));
-    }
-
-    /**
-     * Builds an assignment object from an XML element.
-     * @param element An XML element.
-     * @return An assignment object.
-     * @throws WorkflowException when something went wrong.
-     */
-    protected BooleanVariableAssignmentImpl buildAssignment(Element element)
-            throws WorkflowException {
-        String variableName = element.getAttribute(VARIABLE_ATTRIBUTE);
-
-        String valueString = element.getAttribute(VALUE_ATTRIBUTE);
-        boolean value = Boolean.valueOf(valueString).booleanValue();
-
-        return new BooleanVariableAssignmentImpl(variableName, value);
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java
deleted file mode 100644
index 5135554..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowEngineImpl.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.workflow.Action;
-import org.apache.lenya.workflow.Condition;
-import org.apache.lenya.workflow.Transition;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowEngine;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.Workflowable;
-
-/**
- * Workflow engine implementation.
- * 
- * @version $Id$
- */
-public class WorkflowEngineImpl implements WorkflowEngine {
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowEngine#canInvoke(org.apache.lenya.workflow.Workflowable,
-     *      org.apache.lenya.workflow.Workflow, java.lang.String)
-     */
-    public boolean canInvoke(Workflowable workflowable, Workflow workflow, String event)
-            throws WorkflowException {
-        List firingTransitions = getFiringTransitions(workflowable, workflow, event);
-        return firingTransitions.size() == 1;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowEngine#invoke(org.apache.lenya.workflow.Workflowable,
-     *      org.apache.lenya.workflow.Workflow, java.lang.String)
-     */
-    public void invoke(Workflowable workflowable, Workflow workflow, String event)
-            throws WorkflowException {
-
-        Transition firingTransition = null;
-        List firingTransitions = getFiringTransitions(workflowable, workflow, event);
-
-        if (firingTransitions.size() == 0) {
-            throw new WorkflowException("No transition can fire!");
-        } else if (firingTransitions.size() > 1) {
-            throw new WorkflowException("More than one transitions can fire!");
-        } else {
-            firingTransition = (Transition) firingTransitions.get(0);
-        }
-
-        String destination = firingTransition.getDestination();
-
-        Version newVersion = createNewVersion(workflowable, workflow, event, destination);
-
-        Action[] actions = firingTransition.getActions();
-        for (int i = 0; i < actions.length; i++) {
-            actions[i].execute(newVersion);
-        }
-
-        workflowable.newVersion(workflow, newVersion);
-    }
-
-    /**
-     * Creates a new version.
-     * @param workflowable The workflowable.
-     * @param workflow The workflow.
-     * @param event The event.
-     * @param destination The destination.
-     * @return A version.
-     * @throws WorkflowException if an error occurs.
-     */
-    protected Version createNewVersion(Workflowable workflowable, Workflow workflow, String event,
-            String destination) throws WorkflowException {
-        Version latestVersion = workflowable.getLatestVersion();
-        Version newVersion = new VersionImpl(event, destination);
-        String[] variableNames = workflow.getVariableNames();
-        for (int i = 0; i < variableNames.length; i++) {
-            String name = variableNames[i];
-            boolean value;
-            if (latestVersion == null) {
-                value = workflow.getInitialValue(name);
-            } else {
-                value = latestVersion.getValue(name);
-            }
-            newVersion.setValue(name, value);
-        }
-        return newVersion;
-    }
-
-    /**
-     * Returns the transitions that would fire in a certain situation.
-     * @param workflowable The workflowable.
-     * @param workflow The workflow.
-     * @param event The event.
-     * @return A list of transitions.
-     * @throws WorkflowException if an error occurs.
-     */
-    protected List getFiringTransitions(Workflowable workflowable, Workflow workflow, String event)
-            throws WorkflowException {
-        Version lastVersion = workflowable.getLatestVersion();
-
-        String currentState;
-        if (lastVersion == null) {
-            currentState = workflow.getInitialState();
-        } else {
-            currentState = lastVersion.getState();
-        }
-
-        Transition[] transitions = workflow.getLeavingTransitions(currentState);
-        List firingTransitions = new ArrayList();
-
-        for (int i = 0; i < transitions.length; i++) {
-            if (transitions[i].getEvent().equals(event)
-                    && canFire(transitions[i], workflow, workflowable)) {
-                firingTransitions.add(transitions[i]);
-            }
-        }
-        return firingTransitions;
-    }
-
-    /**
-     * Checks if a transition can fire.
-     * @param transition The transition.
-     * @param workflow The workflow.
-     * @param workflowable The workflowable.
-     * @return A boolean value.
-     * @throws WorkflowException if an error occurs.
-     */
-    public boolean canFire(Transition transition, Workflow workflow, Workflowable workflowable)
-            throws WorkflowException {
-        Condition[] _conditions = transition.getConditions();
-        boolean canFire = true;
-
-        int i = 0;
-        while (canFire && i < _conditions.length) {
-            canFire = canFire && _conditions[i].isComplied(workflow, workflowable);
-            i++;
-        }
-
-        return canFire;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowImpl.java
deleted file mode 100644
index f730d32..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowImpl.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.workflow.impl;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.lenya.workflow.Transition;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowException;
-
-/**
- * Implementation of a workflow schema.
- */
-public class WorkflowImpl implements Workflow {
-
-    /**
-     * Creates a new instance of WorkflowImpl.
-     * @param _name The name.
-     * @param _initialState the initial state of the workflow.
-     */
-    protected WorkflowImpl(String _name, String _initialState) {
-        this.initialState = _initialState;
-        this.name = _name;
-        addState(_initialState);
-    }
-
-    private String initialState;
-    private String name;
-
-    /**
-     * Returns the initial state of this workflow.
-     * @return The initial state.
-     *  
-     */
-    public String getInitialState() {
-        return this.initialState;
-    }
-
-    private Set transitions = new HashSet();
-    private Set states = new HashSet();
-
-    /**
-     * Adds a state.
-     * @param state A state.
-     */
-    private void addState(String state) {
-        this.states.add(state);
-    }
-
-    /**
-     * Adds a transition.
-     * @param transition The transition.
-     */
-    protected void addTransition(TransitionImpl transition) {
-        this.transitions.add(transition);
-        addState(transition.getSource());
-        addState(transition.getDestination());
-    }
-
-    /**
-     * Returns the transitions.
-     * @return An array of transitions.
-     */
-    protected TransitionImpl[] getTransitions() {
-        return (TransitionImpl[]) this.transitions.toArray(new TransitionImpl[this.transitions.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflow#getLeavingTransitions(java.lang.String)
-     */
-    public Transition[] getLeavingTransitions(String state) throws WorkflowException {
-        Set leavingTransitions = new HashSet();
-        TransitionImpl[] _transitions = getTransitions();
-        for (int i = 0; i < _transitions.length; i++) {
-            if (_transitions[i].getSource().equals(state)) {
-                leavingTransitions.add(_transitions[i]);
-            }
-        }
-
-        return (Transition[]) leavingTransitions.toArray(new Transition[leavingTransitions.size()]);
-    }
-
-    /**
-     * Checks if this workflow contains a state.
-     * @param state The state to check.
-     * @return <code>true</code> if the state is contained, <code>false</code>
-     *         otherwise.
-     */
-    protected boolean containsState(String state) {
-        return this.states.contains(state);
-    }
-
-    public String[] getStates() {
-        return (String[]) this.states.toArray(new String[this.states.size()]);
-    }
-
-    private Set events = new HashSet();
-
-    /**
-     * Adds an event.
-     * @param event An event.
-     */
-    protected void addEvent(String event) {
-        this.events.add(event);
-    }
-
-    private Map variables = new HashMap();
-
-    /**
-     * Adds a variable.
-     * @param variable A variable.
-     */
-    protected void addVariable(BooleanVariableImpl variable) {
-        this.variables.put(variable.getName(), variable);
-    }
-
-    /**
-     * Returns the variable for a certain name.
-     * @param _name The name of the variable.
-     * @return A variable.
-     * @throws WorkflowException if no variable with the given name exists.
-     */
-    public BooleanVariableImpl getVariable(String _name) throws WorkflowException {
-        if (!this.variables.containsKey(_name)) {
-            throw new WorkflowException("Workflow does not contain the variable '" + _name + "'!");
-        }
-
-        return (BooleanVariableImpl) this.variables.get(_name);
-    }
-
-    /**
-     * Returns the variables.
-     * @return An array of variables.
-     */
-    protected BooleanVariableImpl[] getVariables() {
-        return (BooleanVariableImpl[]) this.variables.values().toArray(new BooleanVariableImpl[this.variables
-                .size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflow#getVariableNames()
-     */
-    public String[] getVariableNames() {
-        BooleanVariableImpl[] _variables = getVariables();
-        String[] names = new String[_variables.length];
-        for (int i = 0; i < names.length; i++) {
-            names[i] = _variables[i].getName();
-        }
-        return names;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflow#getName()
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflow#getInitialValue(java.lang.String)
-     */
-    public boolean getInitialValue(String variableName) throws WorkflowException {
-        BooleanVariableImpl[] variables = getVariables();
-        for (int i = 0; i < variables.length; i++) {
-            if (variables[i].getName().equals(variableName)) {
-                return variables[i].getInitialValue();
-            }
-        }
-        throw new WorkflowException("The variable [" + variableName + "] does not exist.");
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.Workflow#getEvents()
-     */
-    public String[] getEvents() {
-        return (String[]) this.events.toArray(new String[this.events.size()]);
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java b/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java
deleted file mode 100644
index 5659714..0000000
--- a/trunk/src/modules-core/workflow/java/src/org/apache/lenya/workflow/impl/WorkflowManagerImpl.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.workflow.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.excalibur.pool.Poolable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.workflow.Workflow;
-import org.apache.lenya.workflow.WorkflowEngine;
-import org.apache.lenya.workflow.WorkflowException;
-import org.apache.lenya.workflow.WorkflowManager;
-import org.apache.lenya.workflow.Workflowable;
-import org.w3c.dom.Document;
-
-/**
- * Workflow manager implementation.
- * 
- * @version $Id: WorkflowManagerImpl.java 179751 2005-06-03 09:13:35Z andreas $
- */
-public class WorkflowManagerImpl extends AbstractLogEnabled implements WorkflowManager,
-        Serviceable, Poolable {
-
-    private Map uri2workflow = new HashMap();
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowManager#invoke(org.apache.lenya.workflow.Workflowable,
-     *      java.lang.String, boolean)
-     */
-    public void invoke(Workflowable workflowable, String event, boolean force)
-            throws WorkflowException {
-        if (hasWorkflow(workflowable)) {
-            WorkflowEngine engine = new WorkflowEngineImpl();
-            Workflow workflow = getWorkflowSchema(workflowable);
-
-            if (force && !engine.canInvoke(workflowable, workflow, event)) {
-                throw new WorkflowException("The event [" + event
-                        + "] cannot be invoked on the document [" + workflowable + "]");
-            }
-            engine.invoke(workflowable, workflow, event);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowManager#invoke(org.apache.lenya.workflow.Workflowable,
-     *      java.lang.String)
-     */
-    public void invoke(Workflowable workflowable, String event) throws WorkflowException {
-        invoke(workflowable, event, true);
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowManager#canInvoke(org.apache.lenya.workflow.Workflowable,
-     *      java.lang.String)
-     */
-    public boolean canInvoke(Workflowable workflowable, String event) {
-        boolean canInvoke = true;
-        try {
-            if (hasWorkflow(workflowable)) {
-                Workflow workflow = getWorkflowSchema(workflowable);
-                WorkflowEngine engine = new WorkflowEngineImpl();
-                canInvoke = engine.canInvoke(workflowable, workflow, event);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return canInvoke;
-    }
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowManager#getWorkflowSchema(org.apache.lenya.workflow.Workflowable)
-     */
-    public Workflow getWorkflowSchema(Workflowable workflowable) throws WorkflowException {
-        WorkflowImpl workflow = null;
-
-        try {
-            String uri = workflowable.getWorkflowSchemaURI();
-            getLogger().debug("Workflow URI: " + uri);
-            if (uri != null) {
-                workflow = (WorkflowImpl) this.uri2workflow.get(uri);
-                if (workflow == null) {
-                    Document document = SourceUtil.readDOM(uri, this.manager);
-                    if (document == null) {
-                        throw new WorkflowException("Could not read workflow schema from URI ["
-                                + uri + "]!");
-                    }
-                    WorkflowBuilder builder = new WorkflowBuilder(getLogger());
-                    workflow = builder.buildWorkflow(uri, document);
-                    this.uri2workflow.put(uri, workflow);
-                }
-            }
-        } catch (final Exception e) {
-            throw new WorkflowException(e);
-        }
-
-        return workflow;
-    }
-
-    /**
-     * @see org.apache.lenya.workflow.WorkflowManager#hasWorkflow(org.apache.lenya.workflow.Workflowable)
-     */
-    public boolean hasWorkflow(Workflowable workflowable) {
-        return workflowable.getWorkflowSchemaURI() != null;
-    }
-
-}
diff --git a/trunk/src/modules-core/workflow/resources/i18n/cmsui.xml b/trunk/src/modules-core/workflow/resources/i18n/cmsui.xml
deleted file mode 100644
index c0f7965..0000000
--- a/trunk/src/modules-core/workflow/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-
-  <message key="http://apache.org/lenya/metadata/workflow/1.0">Workflow</message>
-  <message key="workflowVersion">Workflow versions</message>
-  <message key="workflow.multiWorkflow">Workflow Overview</message>
-  <message key="back-to-document">Back to document</message>

-  <message key="workflow.reject">Reject</message>
-  <message key="workflow.publish">Publish</message>
-  <message key="workflow.deactivate">Deactivate</message>
-  <message key="Path">Path</message>
-  <message key="Actions">Actions</message>
-  <message key="state-as-text">State as text</message>
-  <message key="state-as-columns">State as columns</message>
-  <message key="publish-missing-documents">
-    The document can't be published unless the following documents are published:
-  </message>
-  <message key="missing-document">
-    <!-- This doesn't work yet, see https://issues.apache.org/jira/browse/COCOON-2057
-    <xhtml:a href="{0}">{1}</xhtml:a>
-    -->
-    {0} ("{1}")
-  </message>
-  
-  <!-- submit usecase -->
-  <message key="workflow.submit">Submit</message>
-  <message key="notify-reviewers">Notify reviewers</message>
-  <message key="submit-for-approval?">
-    Do you want to submit the document <xhtml:q>{0}</xhtml:q> for approval?
-  </message>
-  
-  <!-- reject usecae -->
-  <message key="Reject">Reject</message>
-  <message key="reject-doc?">Do you want to reject the document <xhtml:q>{0}</xhtml:q>?</message>
-  <message key="notify-submitter">Notify the submitter</message>
-  

-  <message key="unpublished-links">Links to unpublished documents:</message>
-  <message key="links-to-document">Links from other documents:</message>
-  <message key="publish-broken-links">The document contains broken links.</message>
-  
-  <message key="scheduler-date-format-invalid">The scheduler date must be of the form 'yyyy-MM-dd HH:mm:ss'.</message>
-  <message key="This usecase can only be invoked when the live version exists.">
-    This usecase can only be invoked when the live version exists.
-  </message>
-  
-  <!-- deactivate usecase -->
-  <message key="Deactivate Document">Deactivate Document</message>
-  <message key="deactivate-doc?">Do you want to deactivate the document <xhtml:q>{0}</xhtml:q>?</message>
-  
-  
-</catalogue>

diff --git a/trunk/src/modules-core/workflow/resources/i18n/cmsui_de.xml b/trunk/src/modules-core/workflow/resources/i18n/cmsui_de.xml
deleted file mode 100644
index edea9bd..0000000
--- a/trunk/src/modules-core/workflow/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="http://apache.org/lenya/metadata/workflow/1.0">Workflow</message>
-  <message key="workflowVersion">Workflow-Versionen</message>
-  <message key="workflow.multiWorkflow">Workflow-Übersicht</message>
-  <message key="back-to-document">Zurück zum Dokument</message>
-  <message key="workflow.publish">Publizieren</message>
-  <message key="Path">Pfad</message>
-  <message key="Actions">Aktionen</message>
-  <message key="state-as-text">Zustand als Text</message>
-  <message key="state-as-columns">Zustand als Spalten</message>
-  <message key="publish-missing-documents">
-    Das Dokument kann nicht publiziert werden, solange die folgenden Dokumente nicht publiziert sind:
-  </message>
-  <message key="missing-document">
-    <!-- This doesn't work yet, see https://issues.apache.org/jira/browse/COCOON-2057
-      <xhtml:a href="{0}">{1}</xhtml:a>
-    -->
-    {0} ("{1}")
-  </message>
-  

-  <message key="unpublished-links">Links zu nicht publizierten Dokumenten:</message>
-  <message key="links-to-document">Links von anderen Dokumenten:</message>
-  <message key="publish-broken-links">Das Dokument enthält Links zu nicht existierenden Dokumenten.</message>
-  
-  <message key="notify-reviewers">Prüfer benachrichtigen</message>
-  <message key="scheduler-date-format-invalid">Das Zeitsteuerungs-Datum muss der Form 'yyyy-MM-dd HH:mm:ss' entsprechen.</message>
-  <message key="This usecase can only be invoked when the live version exists.">
-    Dieser Usecase kann nur ausgeführt werden, wenn die Live-Version existiert.
-  </message>
-  
-  <!-- submit usecase -->
-  <message key="workflow.submit">Einreichen</message>
-  <message key="submit-for-approval?">
-    Möchten Sie das Dokument <xhtml:q>{0}</xhtml:q> zur Durchsicht einreichen?
-  </message>  
-  
-  <!-- reject usecase -->
-  <message key="workflow.reject">Zurückweisen</message>
-  <message key="Reject">Ablehnen</message>
-  <message key="reject-doc?">
-    Möchten Sie das Dokument <xhtml:q>{0}</xhtml:q> zurückweisen?
-  </message>
-  
-  <!-- deactivate usecase -->
-  <message key="workflow.deactivate">Deaktivieren</message>
-  <message key="deactivate-doc?">Möchten Sie das Dokument <xhtml:q>{0}</xhtml:q> deaktivieren?</message>
-  
-  
-</catalogue>

-

diff --git a/trunk/src/modules-core/workflow/test/canoo/test.xml b/trunk/src/modules-core/workflow/test/canoo/test.xml
deleted file mode 100644
index 01d151c..0000000
--- a/trunk/src/modules-core/workflow/test/canoo/test.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="workflow" basedir="." default="main">
-  
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-  
-  <target name="main" depends="sequence, published-footer, overview"/>
-    
-  <target name="sequence">
-    <webtest name="workflow-sequence">
-      &doConfig;
-      <steps>
-
-        <!-- login as lenya -->
-        <doLogin username="lenya" password="levi"/>
-        <verifyElementText type="span" name="workflow-state" text="authoring"/>
-
-        <!-- publish not allowed -->
-        <invoke url="index.html?lenya.usecase=workflow.publish"/>
-        <verifyText text="The event publish is not executable on document"/>
-        <clickButton name="cancel"/>
-        <verifyText text="Welcome to the Default Publication from the Lenya community!"/>
-        
-        <!-- submit -->
-        <invoke url="index.html?lenya.usecase=workflow.submit"/>
-        <verifyText text="Submit &quot;Welcome to the Lenya default publication&quot; for approval"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="review"/>
-        
-        <!-- logout -->
-        <doLogout/>
-        
-        <!-- login as alice -->
-        <doLogin username="alice" password="levi"/>
-        <verifyElementText type="span" name="workflow-state" text="review"/>
-        
-        <!-- reject -->
-        <invoke url="index.html?lenya.usecase=workflow.reject"/>
-        <verifyText text="Reject document &quot;Welcome to the Lenya default publication&quot;"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="authoring"/>
-        
-        <!-- logout -->
-        <doLogout/>
-        
-        <!-- login as lenya -->
-        <doLogin username="lenya" password="levi"/>
-       <verifyElementText type="span" name="workflow-state" text="authoring"/>
-        
-        <!-- submit -->
-        <invoke url="index.html?lenya.usecase=workflow.submit"/>
-        <verifyText text="Submit &quot;Welcome to the Lenya default publication&quot; for approval"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="review"/>
-        
-        <!-- logout -->
-        <doLogout/>
-
-        <!-- login as alice -->
-       <doLogin username="alice" password="levi"/>
-       <verifyElementText type="span" name="workflow-state" text="review"/>
-        
-        <!-- publish -->
-        <invoke url="index.html?lenya.usecase=workflow.publish"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="live"/>
-        
-        <!-- deactivate -->
-        <invoke url="index.html?lenya.usecase=workflow.deactivate"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="authoring"/>
-        
-        <!-- logout -->
-        <doLogout/>
-        
-      </steps>
-    </webtest>
-  </target>
-
-
-  <target name="published-footer">
-    <webtest name="Workflow sequence">
-      <config host="${webtest.config.host}" port="${webtest.config.port}"
-             protocol="http" basepath="default">
-        <option name="ThrowExceptionOnFailingStatusCode" value="false"/>
-      </config>
-      <steps>
-
-        <!-- login as alice -->
-       <doLogin username="alice" password="levi" url="authoring/tutorial.html"/>
-        <verifyElementText type="span" name="workflow-state" text="authoring"/>
-        
-        <!-- submit -->
-        <invoke url="authoring/tutorial.html?lenya.usecase=workflow.submit"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="review"/>
-        
-        <!-- live version should not exist -->
-        <invoke url="live/tutorial.html"/>
-        <storeResponseCode property="status" />
-        <verifyProperty name="status" text="404"/>
-        
-        <!-- publish -->
-        <invoke url="authoring/tutorial.html"/>
-        <verifyText text="This page has not been published yet."/>
-        <invoke url="authoring/tutorial.html?lenya.usecase=workflow.publish"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="span" name="workflow-state" text="live"/>
-        <verifyText text="This page was last published at"/>
-        <verifyText text="by Alice."/>
-        
-        <invoke url="live/tutorial.html"/>
-        <verifyText text="This page was last published at"/>
-        
-        <!-- logout -->
-        <doLogout url="authoring/tutorial.html"/>
-        
-      </steps>
-    </webtest>
-  </target>
-
-
-  <target name="overview">
-    <webtest name="workflow.multiWorkflow">
-      &doConfig;
-      <steps>
-
-        <!-- login as lenya -->
-        <doLogin username="lenya" password="levi"/>
-        <verifyElementText type="span" name="workflow-state" text="authoring"/>
-
-       <!-- request workflow overview -->
-        <invoke url="index.html?lenya.usecase=workflow.multiWorkflow"/>
-        <verifyElementText type="h1" text="Workflow Overview"/>
-
-       <!-- logout -->
-        <doLogout/>
-
-      </steps>
-    </webtest>
-  </target>
-  
-</project>
diff --git a/trunk/src/modules-core/workflow/usecases/deactivate.jx b/trunk/src/modules-core/workflow/usecases/deactivate.jx
deleted file mode 100644
index a998de9..0000000
--- a/trunk/src/modules-core/workflow/usecases/deactivate.jx
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>Deactivate</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Deactivate</i18n:text>
-      </div>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        
-        <jx:set var="title" value="${usecase.getParameter('document')
-          .getMetaData('http://purl.org/dc/elements/1.1/')
-          .getFirstValue('title')}"/>
-        
-        <form id="form-deactivate">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2" class="lenya-entry-caption">
-                <i18n:translate>
-                  <i18n:text i18n:key="deactivate-doc?"/>
-                  <i18n:param><jx:out value="${title}"/></i18n:param>
-                </i18n:translate>
-                <br/><br/>
-              </td>
-            </tr>
-            <jx:set var="linksToDocument" value="${usecase.getParameter('linksToDocument').getDocuments()}"/>
-            <jx:if test="${!usecase.hasErrors() &amp;&amp; linksToDocument.size() &gt; 0}">
-              <tr>
-                <td class="lenya-entry-caption" valign="top">
-                  <p>
-                    <i18n:text>links-to-document</i18n:text>
-                  </p>
-                </td>
-                <td>
-                  <ul>
-                    <jx:forEach var="link" items="${linksToDocument}">
-                      <li>
-                        <a href="${link.getCanonicalWebappURL()}">
-                          <jx:out value="${link.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/></a>
-                        <span>
-                          (<jx:out value="${link.getPath()}"/>,
-                          <jx:out value="${link.getLanguage()}"/>)
-                        </span>
-                      </li>
-                    </jx:forEach>
-                  </ul>
-                </td>
-              </tr>
-            </jx:if>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Deactivate"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/workflow/usecases/multiWorkflow.jx b/trunk/src/modules-core/workflow/usecases/multiWorkflow.jx
deleted file mode 100644
index 688f29e..0000000
--- a/trunk/src/modules-core/workflow/usecases/multiWorkflow.jx
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: emptyTrash.jx 164233 2005-04-22 13:01:45Z jwkaltz $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:title><i18n:text><jx:out value="${usecase.getName()}"/></i18n:text></page:title>
-  <page:body>
-    <jx:set var="style" value="${usecase.getParameter('style')}"/>
-    
-    <form style="display: inline;">
-      <input type="submit" value="back-to-document" i18n:attr="value"/>
-    </form>
-    
-    <form style="display: inline;">
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      <jx:choose>
-        <jx:when test="${style.equals('text')}">
-          <input type="hidden" name="style" value="columns"/>
-          <input type="submit" name="submit" value="state-as-columns" i18n:attr="value"/>
-        </jx:when>
-        <jx:otherwise>
-          <input type="hidden" name="style" value="text"/>
-          <input type="submit" name="submit" value="state-as-text" i18n:attr="value"/>
-        </jx:otherwise>
-      </jx:choose>
-    </form>
-    
-    <br/><br/>
-    
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <table class="lenya-table-list">
-      
-      <tr>
-        <th><i18n:text>Path</i18n:text></th>
-        <th><i18n:text>Language</i18n:text></th>
-        <jx:choose>
-          <jx:when test="${style.equals('text')}">
-            <th><i18n:text>State</i18n:text></th>
-          </jx:when>
-          <jx:otherwise>
-            <jx:forEach var="state" items="${usecase.getParameter('states')}">
-              <th><i18n:text><jx:out value="${state}"/></i18n:text></th>
-            </jx:forEach>
-          </jx:otherwise>
-        </jx:choose>
-        <th><i18n:text>Actions</i18n:text></th>
-      </tr>
-      
-      <jx:forEach var="doc" items="${usecase.getParameter('documents')}">
-        <tr>
-          <jx:set var="path" value="${doc.getPath()}"/>
-          <jx:set var="depth" value="${path.split('/').size() - 2}"/>
-          <jx:set var="whitespace" value="&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;"/>
-          <jx:set var="indent" value="${whitespace.substring(0, depth.intValue())}"/>
-          <jx:set var="lastSlashIndex" value="${java.lang.Integer.valueOf(path.lastIndexOf('/'))}"/>
-          <jx:set var="nodeName" value="${path.substring(lastSlashIndex.intValue())}"/>
-          <jx:set var="languages" value="${doc.getLanguages()}"/>
-          <jx:if test="${doc.getLanguage().equals(java.util.Arrays.asList(languages).get(0))}">
-            <td rowspan="${doc.getLanguages().size()}" style="vertical-align: top">
-              <jx:out value="${indent}"/><jx:out value="${indent}"/><jx:out value="${indent}"/><jx:out value="${indent}"/><jx:out value="${nodeName}"/>
-            </td>
-          </jx:if>
-          <td>
-            <a href="${doc.getUrl()}"><jx:out value="${doc.getLanguage()}"/></a>
-          </td>
-          <jx:choose>
-            <jx:when test="${style.equals('text')}">
-              <td>
-                <i18n:text><jx:out value="${doc.getState()}"/></i18n:text>
-              </td>
-            </jx:when>
-            <jx:otherwise>
-              <jx:forEach var="state" items="${usecase.getParameter('states')}">
-                <jx:choose>
-                  <jx:when test="${state.equals(doc.getState())}">
-                    <td style="text-align: center">x</td>
-                  </jx:when>
-                  <jx:otherwise>
-                    <td/>
-                  </jx:otherwise>
-                </jx:choose>
-              </jx:forEach>
-            </jx:otherwise>
-          </jx:choose>
-          <td>
-            <jx:forEach var="usecaseName" items="${doc.getUsecases()}">
-              <form action="${usecase.getSourceURL()}" method="POST" id="form-overview" style="display: inline;">
-                <input type="hidden" name="lenya.usecase" value="workflow.multiWorkflowInvoke"/>
-                <input type="hidden" name="usecaseName" value="${usecaseName}"/>
-                <input type="hidden" name="url" value="${doc.getUrl()}"/>
-                <input type="submit" name="submit" value="${usecaseName}" i18n:attr="value"/>
-              </form>
-            </jx:forEach>
-          </td>
-        </tr>
-      </jx:forEach>
-      
-    </table>
-    
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-core/workflow/usecases/publish.jx b/trunk/src/modules-core/workflow/usecases/publish.jx
deleted file mode 100644
index 7465cc3..0000000
--- a/trunk/src/modules-core/workflow/usecases/publish.jx
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>workflow.publish</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>workflow.publish</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        
-        <jx:set var="title" value="${usecase.getParameter('document')
-          .getMetaData('http://purl.org/dc/elements/1.1/')
-          .getFirstValue('title')}"/>
-        
-        <form id="form-publish">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption" valign="top"><i18n:text>Document</i18n:text>:</td>
-              <td valign="top">
-                "<jx:out value="${title}"/>"
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <i18n:text>Messages</i18n:text>:
-              </td>
-              <td>
-                <ul>
-                  <jx:forEach var="message" items="${usecase.getErrorMessages()}">
-                    <li>
-                      <i18n:translate>
-                        <i18n:text><jx:out value="${message.getMessage()}"/></i18n:text>
-                        <jx:if test="${message.hasParameters()}"> 
-                          <jx:forEach var="param" items="${message.getParameters()}">
-                            <i18n:param><jx:out value="${param}"/></i18n:param>
-                          </jx:forEach>
-                        </jx:if>
-                      </i18n:translate>
-                    </li>
-                  </jx:forEach>
-                  <jx:forEach var="message" items="${usecase.getInfoMessages()}">
-                    <li>
-                      <i18n:translate>
-                        <i18n:text><jx:out value="${message.getMessage()}"/></i18n:text>
-                        <jx:if test="${message.hasParameters()}"> 
-                          <jx:forEach var="param" items="${message.getParameters()}">
-                            <i18n:param><jx:out value="${param}"/></i18n:param>
-                          </jx:forEach>
-                        </jx:if>
-                      </i18n:translate>
-                    </li>
-                  </jx:forEach>
-                </ul>
-              </td>
-            </tr>
-            <jx:set var="unpublishedLinks" value="${usecase.getParameter('unpublishedLinks').getDocuments()}"/>
-            <jx:if test="${unpublishedLinks != null &amp;&amp; unpublishedLinks.size() &gt; 0}">
-              <tr>
-                <td class="lenya-entry-caption" valign="top">
-                  <p>
-                    <i18n:text>unpublished-links</i18n:text>
-                  </p>
-                </td>
-                <td>
-                  <ul>
-                    <jx:forEach var="link" items="${unpublishedLinks}">
-                      <li>
-                        <a href="${link.getCanonicalWebappURL()}">
-                          <jx:out value="${link.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/></a>
-                        <span>
-                          (<jx:out value="${link.getPath()}"/>,
-                          <jx:out value="${link.getLanguage()}"/>)
-                        </span>
-                      </li>
-                    </jx:forEach>
-                  </ul>
-                </td>
-              </tr>
-            </jx:if>
-            <tr>
-              <td class="lenya-entry-caption">
-                <i18n:text>notify-submitter</i18n:text>:
-              </td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getBooleanCheckboxParameter('sendNotification').equals('true')}">
-                    <input name="sendNotification" type="checkbox" checked="checked"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input name="sendNotification" type="checkbox"/>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Schedule</i18n:text>:</td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getBooleanCheckboxParameter('schedule').equals('true')}">
-                    <input type="checkbox" name="schedule" checked="checked"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input type="checkbox" name="schedule"/>
-                  </jx:otherwise>
-                </jx:choose>
-                <input type="text" name="schedule.time" value="${usecase.getParameter('schedule.time')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <jx:if test="${!usecase.hasErrors() || cocoon.request.getParameter('submit') != null}">
-                  <input i18n:attr="value" type="submit" name="submit" value="Publish"/>
-                  &#160;
-                </jx:if>
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/workflow/usecases/reject.jx b/trunk/src/modules-core/workflow/usecases/reject.jx
deleted file mode 100644
index 54c1d98..0000000
--- a/trunk/src/modules-core/workflow/usecases/reject.jx
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>workflow.reject</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      
-      <jx:set var="title" value="${usecase.getParameter('document')
-        .getMetaData('http://purl.org/dc/elements/1.1/')
-        .getFirstValue('title')}"/>
-      
-      
-      <div class="lenya-box-title">
-        <i18n:text>workflow.reject</i18n:text>
-      </div>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form name="formReject">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2" class="lenya-entry-caption">
-                <i18n:translate>
-                  <i18n:text i18n:key="reject-doc?"/>
-                  <i18n:param><jx:out value="${title}"/></i18n:param>
-                </i18n:translate>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <i18n:text>notify-submitter</i18n:text>:
-              </td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getParameter('sendNotification').equals('true')}">
-                    <input name="sendNotification" type="checkbox" checked="checked"
-                      onclick="javascript:document.formReject.rejectReason.disabled = !this.checked"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input name="sendNotification" type="checkbox"
-                      onclick="javascript:document.formReject.rejectReason.disabled = !this.checked"/>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Reason</i18n:text>:</td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getParameter('sendNotification').equals('true')}">
-                    <input class="lenya-form-element" type="text" name="rejectReason" value="${usecase.getParameter('rejectReason')}"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input class="lenya-form-element" type="text" name="rejectReason" value="${usecase.getParameter('rejectReason')}"
-                      disabled="true"/>
-                  </jx:otherwise>  
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Reject"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-core/workflow/usecases/submit.jx b/trunk/src/modules-core/workflow/usecases/submit.jx
deleted file mode 100644
index fabc50d..0000000
--- a/trunk/src/modules-core/workflow/usecases/submit.jx
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>workflow.submit</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      
-      <jx:set var="title" value="${usecase.getParameter('document')
-        .getMetaData('http://purl.org/dc/elements/1.1/')
-        .getFirstValue('title')}"/>
-      
-      <div class="lenya-box-title">
-        <i18n:text>workflow.submit</i18n:text>
-      </div>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-submit">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2" class="lenya-entry-caption">
-                <i18n:translate>
-                  <i18n:text i18n:key="submit-for-approval?"/>
-                  <i18n:param><jx:out value="${title}"/></i18n:param>
-                </i18n:translate>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <i18n:text>notify-reviewers</i18n:text>:
-              </td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getParameter('sendNotification').equals('true')}">
-                    <input name="sendNotification" type="checkbox" checked="checked"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input name="sendNotification" type="checkbox"/>
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Submit"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules-legacy/task/config/module.xml b/trunk/src/modules-legacy/task/config/module.xml
deleted file mode 100644
index a41116e..0000000
--- a/trunk/src/modules-legacy/task/config/module.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.task</id>
-</module>
diff --git a/trunk/src/modules-legacy/task/config/sitemap/actions.xmap b/trunk/src/modules-legacy/task/config/sitemap/actions.xmap
deleted file mode 100644
index dc636f5..0000000
--- a/trunk/src/modules-legacy/task/config/sitemap/actions.xmap
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: actions.xmap 280060 2005-09-11 01:56:31Z chestnut $  -->
-
-<xmap xpath="/sitemap/components/actions" unless="/sitemap/components/actions/action[@name = 'task']">
-   <map:action name="task" logger="sitemap.action.task" src="org.apache.lenya.cms.cocoon.acting.TaskAction"/>
-</xmap>
\ No newline at end of file
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/ant/LenyaProject.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/ant/LenyaProject.java
deleted file mode 100644
index f94c9c3..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/ant/LenyaProject.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.cms.ant;

-

-import org.apache.avalon.framework.service.ServiceManager;

-import org.apache.tools.ant.Project;

-

-/**

- * Ant project that provides access to the service manager.

- * 

- * @version $Id:$

- */

-public class LenyaProject extends Project {

-

-    private ServiceManager manager;

-    

-    /**

-     * Ctor.

-     * @param manager The service manager.

-     */

-    public LenyaProject(ServiceManager manager) {

-        this.manager = manager;

-    }

-    

-    /**

-     * @return The service manager.

-     */

-    public ServiceManager getServiceManager() {

-        return this.manager;

-    }

-    

-}

diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/acting/TaskAction.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/acting/TaskAction.java
deleted file mode 100644
index 4b13151..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/acting/TaskAction.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.acting;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.acting.ServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.cocoon.task.CocoonTaskWrapper;
-import org.apache.lenya.cms.task.TaskWrapper;
-
-/**
- * An action that executes a task.
- */
-public class TaskAction extends ServiceableAction {
-    
-    /**
-     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public java.util.Map act(
-        Redirector redirector,
-        SourceResolver sourceResolver,
-        Map objectModel,
-        String str,
-        Parameters parameters)
-        throws java.lang.Exception {
-
-        TaskWrapper wrapper = new CocoonTaskWrapper(objectModel, parameters, this.manager);
-        wrapper.execute();
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        //------------------------------------------------------------
-        // get session
-        //------------------------------------------------------------
-        Session session = request.getSession(true);
-
-        if (session == null) {
-            getLogger().error("No session object");
-
-            return null;
-        }
-
-        //------------------------------------------------------------
-        // Return referer
-        //------------------------------------------------------------
-        String parent_uri =
-            (String) session.getAttribute(
-                "org.apache.lenya.cms.cocoon.acting.TaskAction.parent_uri");
-        HashMap actionMap = new HashMap();
-        actionMap.put("parent_uri", parent_uri);
-        session.removeAttribute("org.apache.lenya.cms.cocoon.acting.TaskAction.parent_uri");
-
-        return actionMap;
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java
deleted file mode 100644
index 87d026a..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *  
- */
-
-/* $Id$ */
-
-package org.apache.lenya.cms.cocoon.scheduler;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.lenya.cms.cocoon.task.CocoonTaskWrapper;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.scheduler.LoadQuartzServlet;
-import org.apache.lenya.cms.scheduler.ServletJob;
-import org.apache.lenya.cms.task.TaskWrapper;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Scheduler helper
- */
-public class SchedulerHelper {
-
-    /**
-     * Ctor.
-     * @param _objectModel The Cocoon component object model.
-     * @param _parameters The Cocoon component parameters.
-     * @param _logger The logger to use.
-     */
-    public SchedulerHelper(Map _objectModel, Parameters _parameters, Logger _logger) {
-        this.objectModel = _objectModel;
-        this.parameters = _parameters;
-        this.logger = _logger;
-    }
-
-    private Logger logger;
-    private Parameters parameters;
-    private Map objectModel;
-
-    /**
-     * Creates the scheduler parameters.
-     * @return A map.
-     * @throws ProcessingException when something went wrong.
-     */
-    public Map createParameters() throws ProcessingException {
-
-        Map map = new HashMap();
-
-        try {
-            TaskWrapper wrapper = new CocoonTaskWrapper(this.objectModel, this.parameters, null);
-
-            this.logger.debug("Adding task wrapper parameters");
-            Map wrapperParameters = wrapper.getParameters();
-            map.putAll(wrapperParameters);
-
-            NamespaceMap schedulerParameters = new NamespaceMap(LoadQuartzServlet.PREFIX);
-
-            DocumentFactory identityMap = DocumentUtil.createDocumentIdentityMap(null, null);
-            String url = ServletHelper.getWebappURI(ObjectModelHelper.getRequest(this.objectModel));
-            Publication pub = null;
-
-            schedulerParameters.put(ServletJob.PARAMETER_DOCUMENT_URL,identityMap.getFromURL(url)
-                    .getCanonicalWebappURL());
-            schedulerParameters.put(LoadQuartzServlet.PARAMETER_PUBLICATION_ID, pub.getId());
-            map.putAll(schedulerParameters.getPrefixedMap());
-        } catch (final Exception e) {
-            throw new ProcessingException(e);
-        }
-
-        return map;
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java
deleted file mode 100644
index 4a83c81..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.cocoon.task;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.ac.PolicyUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.task.DefaultTaskWrapper;
-import org.apache.lenya.cms.task.ExecutionException;
-import org.apache.lenya.cms.task.Notifier;
-import org.apache.lenya.cms.task.TaskWrapperParameters;
-import org.apache.lenya.cms.task.WorkflowInvoker;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.util.ServletHelper;
-import org.apache.log4j.Logger;
-
-/**
- * Task wrapper to be used from Cocoon components.
- * 
- * @deprecated Use the usecase framework instead.
- */
-public class CocoonTaskWrapper extends DefaultTaskWrapper {
-
-    private static Logger log = Logger.getLogger(CocoonTaskWrapper.class);
-
-    /**
-     * Ctor to be called from a Cocoon component.
-     * @param objectModel A Cocoon object model.
-     * @param parameters A parameters object.
-     * @param manager The service manager to use.
-     * @throws ExecutionException when something went wrong.
-     */
-    public CocoonTaskWrapper(Map objectModel, Parameters parameters, ServiceManager manager)
-            throws ExecutionException {
-        super(manager);
-
-        log.debug("Creating CocoonTaskWrapper");
-
-        Publication publication;
-        try {
-            publication = PublicationUtil.getPublication(manager, objectModel);
-        } catch (Exception e) {
-            throw new ExecutionException(e);
-        }
-        Request request = ObjectModelHelper.getRequest(objectModel);
-
-        initialize(parameters, publication, request);
-    }
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     */
-    protected CocoonTaskWrapper(ServiceManager manager) {
-        super(manager);
-    }
-
-    /**
-     * Initializes this wrapper.
-     * @param parameters The task parameters.
-     * @param publication The publication.
-     * @param request The request.
-     * @throws ExecutionException when something went wrong.
-     */
-    protected void initialize(Parameters parameters, Publication publication, Request request)
-            throws ExecutionException {
-        setNotifying(request);
-
-        Parameters taskParameters = extractTaskParameters(parameters, publication, request);
-        getTaskParameters().parameterize(taskParameters);
-
-        String taskId = request.getParameter(TaskWrapperParameters.TASK_ID);
-        taskId = parameters.getParameter(TaskWrapperParameters.TASK_ID, taskId);
-
-        String webappUrl = ServletHelper.getWebappURI(request);
-        initialize(taskId, publication, webappUrl, taskParameters);
-
-        String eventName = request.getParameter(WorkflowInvoker.EVENT_REQUEST_PARAMETER);
-        if (eventName == null) {
-            eventName = request.getParameter(WorkflowInvoker.LENYA_EVENT_REQUEST_PARAMETER);
-        }
-        if (eventName != null) {
-            Session session = request.getSession(false);
-            if (session == null) {
-                log.debug("No session found - not enabling workflow handling.");
-            } else {
-                Identity identity = Identity.getIdentity(session);
-                if (identity == null) {
-                    log.debug("No identity found - not enabling workflow handling.");
-                } else {
-                    log.debug("Identity found - enabling workflow handling.");
-                    Role[] roles;
-                    try {
-                        roles = PolicyUtil.getRoles(request);
-                    } catch (AccessControlException e) {
-                        throw new ExecutionException(e);
-                    }
-                    setWorkflowAware(eventName, identity, roles);
-                }
-            }
-        }
-
-    }
-
-    /**
-     * Enables notification if the corresponding request parameters exist.
-     * @param request The request.
-     */
-    protected void setNotifying(Request request) {
-
-        log.debug("Trying to initialize notification ...");
-
-        Map requestParameters = ServletHelper.getParameterMap(request);
-        String key;
-        String value;
-        Map.Entry entry;
-
-        log.debug("    Request parameters:");
-        for (Iterator iter = requestParameters.entrySet().iterator(); iter.hasNext();) {
-            entry = (Map.Entry) iter.next();
-            key = (String) entry.getKey();
-            value = (String) entry.getValue();
-            log.debug("        [" + key + "] = [" + value + "]");
-        }
-
-        NamespaceMap notificationMap = new NamespaceMap(requestParameters, Notifier.PREFIX);
-
-        log.debug("    Notification parameters:");
-        for (Iterator iter = notificationMap.getMap().entrySet().iterator(); iter.hasNext();) {
-            entry = (Map.Entry) iter.next();
-            key = (String) entry.getKey();
-            value = (String) entry.getValue();
-            log.debug("        [" + key + "] = [" + value + "]");
-        }
-
-        if (notificationMap.getMap().isEmpty()) {
-            log.debug("    No notification parameters found.");
-        } else {
-            log.debug("    Initializing notification");
-
-            Identity identity = Identity.getIdentity(request.getSession());
-            User user = identity.getUser();
-            String eMail = user.getEmail();
-            notificationMap.put(Notifier.PARAMETER_FROM, eMail);
-            log.debug("    Setting from address [" + Notifier.PARAMETER_FROM + "] = [" + eMail
-                    + "]");
-
-            String toKey = NamespaceMap.getFullName(Notifier.PREFIX, Notifier.PARAMETER_TO);
-            StringBuffer buf = new StringBuffer();
-            String[] toValues = request.getParameterValues(toKey);
-
-            if (toValues == null) {
-                throw new IllegalStateException("You must specify at least one [notification.tolist] request parameter!");
-            }
-
-            for (int i = 0; i < toValues.length; i++) {
-                if (i > 0 && !"".equals(buf.toString())) {
-                    buf.append(",");
-                }
-                log.debug("    Adding notification address [" + toValues[i].trim() + "]");
-                buf.append(toValues[i].trim());
-            }
-
-            notificationMap.put(Notifier.PARAMETER_TO, buf.toString());
-            setNotifying(notificationMap);
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/publishing/PublishingEnvironment.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/publishing/PublishingEnvironment.java
deleted file mode 100644
index 3ce146b..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/publishing/PublishingEnvironment.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.

- *

- */

-

-/* $Id$  */

-

-package org.apache.lenya.cms.publishing;

-

-import java.io.File;

-

-import org.apache.avalon.framework.configuration.Configurable;

-import org.apache.avalon.framework.configuration.Configuration;

-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;

-import org.apache.log4j.Logger;

-

-/**

- * A class that holds various publishing parameters

- * @deprecated Use the usecase framework instead.

- */

-public class PublishingEnvironment implements Configurable {

-    private static Logger log = Logger.getLogger(PublishingEnvironment.class);

-    /**

-     * <code>CONFIGURATION_FILE</code> The path to the publisher configuration file

-     */

-    public static final String CONFIGURATION_FILE = "config" + File.separator + "publishing"

-            + File.separator + "publisher.xconf";

-    /**

-     * <code>PUBLICATION_PREFIX</code> The path to the publications from the webapp root

-     */

-    public static final String PUBLICATION_PREFIX = "lenya" + File.separator + "pubs"

-            + File.separator;

-    /**

-     * <code>PUBLICATION_PATH</code> The publication path

-     */

-    public static final String PUBLICATION_PATH = "publication-path";

-    /**

-     * <code>PARAMETER_AUTHORING_PATH</code> The authoring path

-     */

-    public static final String PARAMETER_AUTHORING_PATH = "authoring-path";

-    /**

-     * <code>PARAMETER_TREE_AUTHORING_PATH</code> The path to the authoring tree

-     */

-    public static final String PARAMETER_TREE_AUTHORING_PATH = "tree-authoring-path";

-    /**

-     * <code>PARAMETER_LIVE_PATH</code> The live path

-     */

-    public static final String PARAMETER_LIVE_PATH = "live-path";

-    /**

-     * <code>PARAMETER_TREE_LIVE_PATH</code> The path to the live tree

-     */

-    public static final String PARAMETER_TREE_LIVE_PATH = "tree-live-path";

-    /**

-     * <code>PARAMETER_REPLICATION_PATH</code> The replication path

-     */

-    public static final String PARAMETER_REPLICATION_PATH = "replication-path";

-    /**

-     * <code>PARAMETER_EXPORT_PATH</code> The export path

-     */

-    public static final String PARAMETER_EXPORT_PATH = "export-path";

-    /**

-     * <code>PARAMETER_SUBSTITUTE_REGEXP</code> The regular expression to use during export

-     */

-    public static final String PARAMETER_SUBSTITUTE_REGEXP = "substitute-regexp";

-    /**

-     * <code>PARAMETER_SUBSTITUTE_REPLACEMENT</code> The replacement value for the regular

-     * expression

-     */

-    public static final String PARAMETER_SUBSTITUTE_REPLACEMENT = "substitute-replacement";

-    private String publicationPath;

-    private String replicationDirectory;

-    private String authoringPath;

-    private String livePath;

-    private String treeAuthoringPath;

-    private String treeLivePath;

-    private String exportDirectory;

-    private String substituteExpression;

-    private String substituteReplacement;

-

-    /**

-     * Creates a new PublishingEnvironment object.

-     * 

-     * @param contextPath The context path

-     * @param publicationId The publication id

-     */

-    public PublishingEnvironment(String contextPath, String publicationId) {

-        this(PublishingEnvironment.getPublicationPath(contextPath, publicationId));

-        log.debug("Context Path and Publication Id: " + contextPath + "::" + publicationId);

-    }

-

-    /**

-     * Creates a new PublishingEnvironment object.

-     * 

-     * @param _publicationPath The publication path

-     */

-    public PublishingEnvironment(String _publicationPath) {

-        setPublicationPath(_publicationPath);

-

-        String configurationFilePath = _publicationPath + CONFIGURATION_FILE;

-

-        File configurationFile = new File(configurationFilePath);

-

-        try {

-            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();

-            Configuration configuration = builder.buildFromFile(configurationFile);

-            configure(configuration);

-        } catch (Exception e) {

-            log.info("Did not load publishing configuration from publisher.xconf (No such file or directory: "

-                    + configurationFile

-                    + "). "

-                    + "That means you can't access all PublishingEnvironment parameters and you should only "

-                    + "use the AntTask. But don't panic, this file has been DEPRECATED.");

-        }

-    }

-

-    /**

-     * Initializes the class from a configuration file

-     * 

-     * @param configuration The configuration file

-     * 

-     * @throws org.apache.avalon.framework.configuration.ConfigurationException if an error occurs

-     */

-    public void configure(org.apache.avalon.framework.configuration.Configuration configuration)

-            throws org.apache.avalon.framework.configuration.ConfigurationException {

-        // authoring

-        setAuthoringPath(configuration.getChild("authoring")

-                .getChild("documents")

-                .getAttribute("href"));

-        setTreeAuthoringPath(configuration.getChild("authoring")

-                .getChild("tree")

-                .getAttribute("href"));

-

-        // replication

-        setReplicationDirectory(configuration.getChild("replication")

-                .getChild("pending-documents")

-                .getAttribute("href"));

-

-        // live

-        setLivePath(configuration.getChild("live").getChild("documents").getAttribute("href"));

-        setTreeLivePath(configuration.getChild("live").getChild("tree").getAttribute("href"));

-

-        // export

-        setExportDirectory(configuration.getChild("export")

-                .getChild("destination")

-                .getAttribute("href"));

-        setSubstituteExpression(configuration.getChild("export")

-                .getChild("substitution")

-                .getAttribute("regexp"));

-        setSubstituteReplacementExpression(configuration.getChild("export")

-                .getChild("substitution")

-                .getAttribute("replacement"));

-

-        log.debug("CONFIGURATION:\nauthoring path=" + getAuthoringPath() + "\nlive path="

-                + getLivePath());

-        log.debug("CONFIGURATION:\ntree authoring path=" + getTreeAuthoringPath()

-                + "\ntree live path=" + getTreeLivePath());

-

-        log.debug("CONFIGURATION:\nDirectory Prefix: href=" + getExportDirectory());

-        log.debug("CONFIGURATION:\nPrefix Substitute: href=" + getSubstituteExpression());

-

-        log.debug("CONFIGURATION:\nReplication Directory: href=" + getReplicationDirectory());

-    }

-

-    /**

-     * Returns the publication path.

-     * 

-     * @return The publication path

-     */

-    public String getPublicationPath() {

-        return this.publicationPath;

-    }

-

-    /**

-     * Returns the publication directory.

-     * @return The publication directory

-     */

-    public File getPublicationDirectory() {

-        return new File(getPublicationPath());

-    }

-

-    protected void setPublicationPath(String path) {

-        this.publicationPath = path;

-    }

-

-    /**

-     * Returns the authoring path

-     * 

-     * @return The authoring path

-     */

-    public String getAuthoringPath() {

-        return this.authoringPath;

-    }

-

-    protected void setAuthoringPath(String path) {

-        this.authoringPath = path;

-    }

-

-    /**

-     * Returns the live path

-     * 

-     * @return The live path

-     */

-    public String getLivePath() {

-        return this.livePath;

-    }

-

-    protected void setLivePath(String path) {

-        this.livePath = path;

-    }

-

-    /**

-     * Returns the path to the authoring tree

-     * 

-     * @return The path to the authoring tree

-     */

-    public String getTreeAuthoringPath() {

-        return this.treeAuthoringPath;

-    }

-

-    protected void setTreeAuthoringPath(String path) {

-        this.treeAuthoringPath = path;

-    }

-

-    /**

-     * Returns the path to the live tree

-     * 

-     * @return The path to the live tree

-     */

-    public String getTreeLivePath() {

-        return this.treeLivePath;

-    }

-

-    protected void setTreeLivePath(String path) {

-        this.treeLivePath = path;

-    }

-

-    /**

-     * Returns the path to the replication directory

-     * 

-     * @return The path to the replication directory

-     */

-    public String getReplicationDirectory() {

-        return this.replicationDirectory;

-    }

-

-    protected void setReplicationDirectory(String directory) {

-        this.replicationDirectory = directory;

-    }

-

-    /**

-     * Returns the path to the export directory

-     * 

-     * @return The path to the export directory

-     */

-    public String getExportDirectory() {

-        return this.exportDirectory;

-    }

-

-    protected void setExportDirectory(String directory) {

-        this.exportDirectory = directory;

-    }

-

-    /**

-     * Returns the substitution regular expression used in the export

-     * 

-     * @return The substitution regular expression

-     */

-    public String getSubstituteExpression() {

-        return this.substituteExpression;

-    }

-

-    protected void setSubstituteExpression(String substitute) {

-        this.substituteExpression = substitute;

-    }

-

-    /**

-     * Set replacement string, which was read from publisher.xconf

-     * @param replacement The replacement string

-     */

-    protected void setSubstituteReplacementExpression(String replacement) {

-        this.substituteReplacement = replacement;

-    }

-

-    /**

-     * Get the replacement string, which was read from publisher.xconf

-     * 

-     * @return The replacement string

-     */

-    public String getSubstituteReplacement() {

-        return this.substituteReplacement;

-    }

-

-    /**

-     * Returns the path to the publication given the servlet context path and the publication id

-     * 

-     * @param servletContextPath The servlet context path

-     * @param publicationId The publication id

-     * 

-     * @return The path to the publication

-     */

-    public static String getPublicationPath(String servletContextPath, String publicationId) {

-        if (!servletContextPath.endsWith(File.separator)) {

-            servletContextPath += File.separator;

-        }

-

-        return servletContextPath + PUBLICATION_PREFIX + publicationId + File.separator;

-    }

-}

diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/AbstractSchedulerListener.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/AbstractSchedulerListener.java
deleted file mode 100644
index 6e19ca5..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/AbstractSchedulerListener.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import org.apache.log4j.Logger;
-import org.quartz.SchedulerException;
-import org.quartz.SchedulerListener;
-import org.quartz.Trigger;
-
-/**
- * The Abstract Scheduler Listener
- */
-public class AbstractSchedulerListener implements SchedulerListener {
-
-	private static final Logger log = Logger.getLogger(AbstractSchedulerListener.class);
-
-	/**
-	 * @see org.quartz.SchedulerListener#jobScheduled(org.quartz.Trigger)
-	 */
-	public void jobScheduled(Trigger trigger) {
-		log.debug("Job scheduled");
-		log.debug("    Trigger: [" + trigger + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#jobUnscheduled(java.lang.String, java.lang.String)
-	 */
-	public void jobUnscheduled(String name, String group) {
-		log.debug("Job unscheduled.");
-		log.debug("    Trigger name:  [" + name + "]");
-		log.debug("    Trigger group: [" + group + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#triggerFinalized(org.quartz.Trigger)
-	 */
-	public void triggerFinalized(Trigger trigger) {
-		log.debug("Trigger finalized.");
-		log.debug("    Trigger:  [" + trigger + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#triggersPaused(java.lang.String, java.lang.String)
-	 */
-	public void triggersPaused(String name, String group) {
-		log.debug("Triggers paused.");
-		log.debug("    Trigger name:  [" + name + "]");
-		log.debug("    Trigger group: [" + group + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#triggersResumed(java.lang.String, java.lang.String)
-	 */
-	public void triggersResumed(String name, String group) {
-		log.debug("Triggers resumed.");
-		log.debug("    Trigger name:  [" + name + "]");
-		log.debug("    Trigger group: [" + group + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#jobsPaused(java.lang.String, java.lang.String)
-	 */
-	public void jobsPaused(String name, String group) {
-		log.debug("Jobs paused.");
-		log.debug("    Job name:  [" + name + "]");
-		log.debug("    Job group: [" + group + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#jobsResumed(java.lang.String, java.lang.String)
-	 */
-	public void jobsResumed(String name, String group) {
-		log.debug("Jobs resumed.");
-		log.debug("    Job name:  [" + name + "]");
-		log.debug("    Job group: [" + group + "]");
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#schedulerError(java.lang.String,
-	 *      org.quartz.SchedulerException)
-	 */
-	public void schedulerError(String message, SchedulerException exception) {
-		log.debug("Scheduler exception occured.");
-		log.debug("    Message:  [" + message + "]");
-		log.debug(exception);
-	}
-
-	/**
-	 * @see org.quartz.SchedulerListener#schedulerShutdown()
-	 */
-	public void schedulerShutdown() {
-		log.debug("Scheduler shut down.");
-	}
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/JobWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/JobWrapper.java
deleted file mode 100644
index e279735..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/JobWrapper.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import org.quartz.JobDetail;
-import org.quartz.Trigger;
-
-/**
- * Wrapper for job information.
- */
-public class JobWrapper {
-    
-    private JobDetail jobDetail;
-    private Trigger trigger;
-    
-    /**
-     * Ctor.
-     * @param detail The job detail.
-     * @param _trigger The trigger.
-     */
-    public JobWrapper(JobDetail detail, Trigger _trigger) {
-        this.jobDetail = detail;
-        this.trigger = _trigger;
-    }
-    
-    /**
-     * Returns the job detail.
-     * @return A job detail object.
-     */
-    public JobDetail getJobDetail() {
-        return this.jobDetail;
-    }
-    
-    /**
-     * Returns the servlet job.
-     * @return A servlet job.
-     */
-    public ServletJob getJob() {
-        ServletJob job = ServletJobFactory.createJob(this.jobDetail.getJobClass());
-        return job;
-    }
-    
-    /**
-     * Returns the trigger.
-     * @return A trigger.
-     */
-    public Trigger getTrigger() {
-        return this.trigger;
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java
deleted file mode 100644
index a49dbfd..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publishing.PublishingEnvironment;
-import org.apache.lenya.cms.scheduler.xml.TriggerHelper;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.log4j.Logger;
-import org.quartz.SchedulerException;
-import org.w3c.dom.Document;
-
-/**
- * A simple servlet that starts an instance of a Quartz scheduler.
- */
-public class LoadQuartzServlet extends HttpServlet {
-    /**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	private static final class IsDirectoryFileFilter implements FileFilter {
-        /**
-         * @see java.io.FileFilter#accept(java.io.File)
-         */
-        public boolean accept(File file) {
-            return file.isDirectory();
-        }
-    }
-
-    private static Logger log = Logger.getLogger(LoadQuartzServlet.class);
-    private static SchedulerWrapper scheduler = null;
-    private ServletContext servletContext;
-    private String schedulerConfigurations;
-
-    /**
-     * <code>PREFIX</code> Scheduler namespace prefix
-     */
-    public static final String PREFIX = "scheduler";
-    /**
-     * <code>PARAMETER_ACTION</code> The action parameter
-     */
-    public static final String PARAMETER_ACTION = "action";
-    /**
-     * <code>PARAMETER_PUBLICATION_ID</code> The publication id parameter
-     */
-    public static final String PARAMETER_PUBLICATION_ID = "publication-id";
-    /**
-     * <code>PARAMETER_DOCUMENT_URL</code> The document URL parameter
-     */
-    public static final String PARAMETER_DOCUMENT_URL = "document-url";
-    /**
-     * <code>CONFIGURATION_ELEMENT</code> The configuration element
-     */
-    public static final String CONFIGURATION_ELEMENT = "scheduler-configurations";
-    /**
-     * <code>SERVLET_URL</code> The scheduler servlet URL
-     */
-    public static final String SERVLET_URL = "/servlet/QuartzSchedulerServlet";
-
-    /**
-     * Returns the scheduler wrapper.
-     * @return A scheduler wrapper.
-     */
-    public static SchedulerWrapper getScheduler() {
-        return scheduler;
-    }
-
-    /**
-     * Maps servlet context names to servlets.
-     */
-    private static Map servlets = new HashMap();
-
-    /**
-     * Initializes the servlet.
-     * @param config The servlet configuration.
-     * @throws ServletException when something went wrong.
-     */
-    public void init(ServletConfig config) throws ServletException {
-        super.init(config);
-
-        this.schedulerConfigurations = config.getInitParameter(CONFIGURATION_ELEMENT);
-        this.servletContext = config.getServletContext();
-
-        log.debug(".init(): Servlet Context Path: "
-                + getServletContextDirectory().getAbsolutePath());
-
-        try {
-            log.debug("Storing servlet");
-            String contextPath = getServletContextDirectory().getCanonicalPath();
-            log.debug("  Context path: [" + contextPath + "]");
-            servlets.put(contextPath, this);
-        } catch (IOException e) {
-            throw new ServletException(e);
-        }
-
-        log.debug(".init(): Scheduler Configurations: " + this.schedulerConfigurations);
-
-        try {
-            log.info("Working?...");
-            process();
-            log.info("OK");
-        } catch (Exception e) {
-            log.error("Init of LoadQuartzServlet failed", e);
-            throw new ServletException(e);
-        }
-    }
-
-    /**
-     * Process.
-     * @throws ServletException when an error occurs.
-     * @throws SchedulerException when an error occurs.
-     */
-    public void process() throws ServletException, SchedulerException {
-        scheduler = new SchedulerWrapper(getServletContextDirectory().getAbsolutePath(),
-                this.schedulerConfigurations);
-
-        try {
-            shutdownHook();
-        } catch (Exception e) {
-            log.error(e.toString(), e);
-            throw new ServletException(e);
-        }
-
-        restoreJobs();
-    }
-
-    /**
-     * Shuts down the scheduler.
-     */
-    public void destroy() {
-        destroyScheduler();
-    }
-
-    /**
-     * Shuts down the scheduler.
-     */
-    public static void destroyScheduler() {
-        log.debug("destroy: ");
-        getScheduler().shutdown();
-    }
-
-    /**
-     * This method sets a ShutdownHook to the system This traps the CTRL+C or kill signal and
-     * shutdows Correctly the system.
-     * 
-     * @throws Exception when something went wrong.
-     */
-    public static void shutdownHook() throws Exception {
-        log.debug("-------------------- ShutdownHook --------------------");
-        Runtime.getRuntime().addShutdownHook(new Thread() {
-            public void run() {
-                LoadQuartzServlet.destroyScheduler();
-            }
-        });
-        log.debug("-------------------- End ShutdownHook --------------------");
-    }
-
-    /**
-     * Handles a GET request.
-     * @param request The request.
-     * @param response The response.
-     * @throws IOException when an error occured.
-     * @throws ServletException when an error occured.
-     */
-    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
-            ServletException {
-        handleRequest(request, response);
-    }
-
-    /**
-     * Handles a POST request.
-     * @param req The requust.
-     * @param resp The response.
-     * @throws ServletException when an error occured.
-     * @throws IOException when an error occured.
-     */
-    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
-            IOException {
-        doGet(req, resp);
-    }
-
-    protected static final String ADD = "add";
-    protected static final String MODIFY = "modify";
-    protected static final String DELETE = "delete";
-    protected static final String DOCUMENT_DELETED = "document-deleted";
-
-    /**
-     * Handles a servlet request.
-     * @param request The request.
-     * @param response The response.
-     * @throws IOException when something went wrong.
-     */
-    protected void handleRequest(HttpServletRequest request, HttpServletResponse response)
-            throws IOException {
-        log.debug("----------------------------------------------------------------");
-        log.debug("- Incoming request at URI: ");
-        log
-                .debug(request.getServerName() + ":" + request.getServerPort()
-                        + request.getRequestURI());
-        log.debug("----------------------------------------------------------------");
-        log.debug("Request parameters:");
-
-        NamespaceMap schedulerParameters = getSchedulerParameters(request);
-
-        try {
-            String publicationId = (String) schedulerParameters.get(PARAMETER_PUBLICATION_ID);
-            log.debug("Scheduler invoked.");
-
-            log.debug("Scheduler Parameters:");
-            log.debug("    scheduler.publication-id: [" + publicationId + "]");
-
-            logSessionAttributes(request);
-
-            // check if the request wants to submit, modify or delete a job.
-            String action = (String) schedulerParameters.get(PARAMETER_ACTION);
-            log.debug("    scheduler.action:         [" + action + "]");
-            if (action == null) {
-                // do nothing
-            } else if (action.equals(ADD)) {
-                Date startTime = TriggerHelper.getDate(schedulerParameters);
-                getScheduler().addJob(publicationId, startTime, request);
-            } else if (action.equals(MODIFY)) {
-                Date startTime = TriggerHelper.getDate(schedulerParameters);
-                String jobId = getJobId(schedulerParameters);
-                getScheduler().modifyJob(jobId, publicationId, startTime);
-            } else if (action.equals(DELETE)) {
-                String jobId = getJobId(schedulerParameters);
-                getScheduler().deleteJob(jobId, publicationId);
-            } else if (action.equals(DOCUMENT_DELETED)) {
-                String documentUrl = (String) schedulerParameters.get(PARAMETER_DOCUMENT_URL);
-                DocumentFactory map = DocumentUtil.createDocumentIdentityMap(null, null);
-                org.apache.lenya.cms.publication.Document document = map.getFromURL(documentUrl);
-                deleteDocumentJobs(document);
-            }
-
-            // handle the remainder of the request by simply returning all
-            // scheduled jobs (for the given publication ID).
-            PrintWriter writer = response.getWriter();
-            response.setContentType("text/xml");
-
-            Document snapshot = getScheduler().getSnapshot();
-
-            DocumentHelper.writeDocument(snapshot, writer);
-        } catch (DocumentBuildException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        } catch (TransformerConfigurationException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        } catch (IOException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        } catch (SchedulerException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        } catch (PublicationException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        } catch (TransformerException e) {
-            log.error("Can't create job snapshot: ", e);
-            throw new IOException(e.getMessage() + " (view log for details)");
-        }
-    }
-
-    /**
-     * Extracts the scheduler parameters from a request.
-     * @param request The request.
-     * @return A namespace map.
-     */
-    public static NamespaceMap getSchedulerParameters(HttpServletRequest request) {
-        Map parameterMap = new HashMap();
-        List keys = new ArrayList();
-        for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            keys.add(key);
-        }
-        Collections.sort(keys);
-        for (Iterator i = keys.iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            String[] values = request.getParameterValues(key);
-            log.debug("    [" + key + "] = [" + values[0] + "]");
-            if (values.length == 1) {
-                parameterMap.put(key, values[0]);
-            } else {
-                parameterMap.put(key, values);
-            }
-        }
-
-        NamespaceMap schedulerParameters = new NamespaceMap(parameterMap, PREFIX);
-        return schedulerParameters;
-    }
-
-    /**
-     * Deletes
-     * @param document
-     * @throws DocumentBuildException
-     * @throws SchedulerException
-     * @throws PublicationException
-     */
-    public void deleteDocumentJobs(org.apache.lenya.cms.publication.Document document)
-            throws DocumentBuildException, SchedulerException, PublicationException {
-        log.debug("Requested to delete jobs for document URL [" + document.getCanonicalWebappURL()
-                + "]");
-        getScheduler().deleteJobs(document);
-    }
-
-    /**
-     * Extracts the job ID from the scheduler parameters.
-     * @param schedulerParameters A namespace map.
-     * @return A string.
-     */
-    protected String getJobId(NamespaceMap schedulerParameters) {
-        String parameterName = NamespaceMap.getFullName(SchedulerWrapper.JOB_PREFIX,
-                SchedulerWrapper.JOB_ID);
-        String jobId = (String) schedulerParameters.get(parameterName);
-        log.debug("    scheduler.job.id:         [" + jobId + "]");
-        return jobId;
-    }
-
-    /**
-     * Logs the session attributes of a request.
-     * @param request The request.
-     */
-    protected void logSessionAttributes(HttpServletRequest request) {
-        log.debug("-------------------- Session Attributes --------------------");
-        for (Enumeration e = request.getSession().getAttributeNames(); e.hasMoreElements();) {
-            String name = (String) e.nextElement();
-            log.debug(name + " = " + request.getSession().getAttribute(name));
-        }
-        log.debug("-------------------- End Session Attributes --------------------");
-    }
-
-    /**
-     * Returns the servlet context path.
-     * 
-     * @return A string.
-     */
-    public File getServletContextDirectory() {
-        return new File(this.servletContext.getRealPath("/"));
-    }
-
-    /**
-     * Restores the jobs.
-     * @throws SchedulerException when something went wrong.
-     */
-    public void restoreJobs() throws SchedulerException {
-
-        File publicationsDirectory = new File(getServletContextDirectory(),
-                PublishingEnvironment.PUBLICATION_PREFIX);
-
-        File[] publicationDirectories = publicationsDirectory
-                .listFiles(new IsDirectoryFileFilter());
-
-        log.debug("=========================================");
-        log.debug("  Restoring jobs.");
-        log.debug("    servlet context: [" + getServletContextDirectory() + "]");
-        log.debug("    publications directory: [" + publicationsDirectory + "]");
-        log.debug("=========================================");
-
-        for (int i = 0; i < publicationDirectories.length; i++) {
-            File directory = publicationDirectories[i];
-            String publicationId = directory.getName();
-            /*
-            PublicationManagerImpl factory = PublicationManagerImpl.getInstance(new ConsoleLogger());
-            Publication publication;
-            try {
-                publication = factory.getPublication(publicationId, getServletContextDirectory());
-            } catch (PublicationException e) {
-                throw new SchedulerException(e);
-            }
-            if (publication.exists()) {
-                getScheduler().restoreJobs(publicationId);
-            }
-            */
-        }
-    }
-
-    /**
-     * Returns the servlet for a certain canonical servlet context path.
-     * @param contextPath The canonical servlet context path.
-     * @return A LoadQuartzServlet.
-     */
-    public static LoadQuartzServlet getServlet(String contextPath) {
-        return (LoadQuartzServlet) servlets.get(contextPath);
-    }
-
-    /**
-     * Generates the request URI needed to delete the jobs for a certain document.
-     * @param port The port of the servlet
-     * @param servletContextPath The context path of the servlet
-     * @param document The document.
-     * @return A string.
-     */
-    public static String getDeleteDocumentRequestURI(String port, String servletContextPath,
-            org.apache.lenya.cms.publication.Document document) {
-
-        NamespaceMap requestParameters = new NamespaceMap(PREFIX);
-        requestParameters.put(PARAMETER_ACTION, DOCUMENT_DELETED);
-        requestParameters.put(PARAMETER_PUBLICATION_ID, document.getPublication().getId());
-        requestParameters.put(PARAMETER_DOCUMENT_URL, document.getCanonicalWebappURL());
-
-        StringBuffer buf = new StringBuffer();
-        buf.append("http://127.0.0.1:" + port + servletContextPath + "?");
-        Map map = requestParameters.getMap();
-
-        String[] keys = (String[]) map.keySet().toArray(new String[map.keySet().size()]);
-        for (int i = 0; i < keys.length; i++) {
-            if (i > 0) {
-                buf.append("&");
-            }
-            String value = (String) map.get(keys[i]);
-            buf.append(keys[i] + "=" + value);
-        }
-
-        return buf.toString();
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerStore.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerStore.java
deleted file mode 100644
index 00388d0..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerStore.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.scheduler.xml.TriggerHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.quartz.JobDetail;
-import org.quartz.SchedulerException;
-import org.quartz.Trigger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Store for scheduler jobs.
- */
-public class SchedulerStore {
-
-    /**
-     * <code>ELEMENT_JOB_GROUP</code> The job group element
-     */
-    public static final String ELEMENT_JOB_GROUP = "job-group";
-    /**
-     * <code>ELEMENT_JOB</code> The job element
-     */
-    public static final String ELEMENT_JOB = "job";
-    /**
-     * <code>TITLE_ELEMENT</code> The title element
-     */
-    public static final String TITLE_ELEMENT = "title";
-    /**
-     * <code>SNAPSHOT_FILE</code> The path to the stored jobs
-     */
-    public static final String SNAPSHOT_FILE =
-        "config/scheduler/jobs.xml".replace('/', File.separatorChar);
-
-    /** The namespace for the <code>jobs.xml</code> file. */
-    public static final String NAMESPACE = "http://apache.org/cocoon/lenya/scheduler/1.0";
-
-    private static final Logger log = Logger.getLogger(SchedulerStore.class);
-
-
-    /**
-     * Ctor.
-     */
-    public SchedulerStore() {
-	    // do nothing
-    }
-
-    /**
-     * Returns the job snapshot file for a publication..
-     * @param publication The publication.
-     * @return A file.
-     * @throws SchedulerException when the publication could not be built.
-     */
-    protected File getJobsFile(Publication publication) throws SchedulerException {
-        File jobsFile;
-        jobsFile = new File(publication.getDirectory(), SNAPSHOT_FILE);
-        log.debug("Resolved job snapshot file: [" + jobsFile.getAbsolutePath() + "]");
-        return jobsFile;
-    }
-
-    /**
-     * Writes a job snapshot.
-     * @param publication The publication.
-     * @param jobs The jobs to persist
-     * @throws SchedulerException when something went wrong.
-     */
-    protected void writeSnapshot(Publication publication, JobWrapper[] jobs)
-        throws SchedulerException {
-
-        log.debug("Writing job snapshot for publication [" + publication.getId() + "]");
-        File jobsFile = getJobsFile(publication);
-
-        try {
-            File directory = jobsFile.getParentFile();
-
-            if (!directory.exists()) {
-                directory.mkdirs();
-                log.debug("Creating job snapshot directory: " + directory.getPath());
-            }
-
-            if (jobsFile.createNewFile()) log.debug("new jobs file created.");
-            DocumentHelper.writeDocument(getSnapshot(publication, jobs), jobsFile);
-        } catch (final TransformerConfigurationException e) {
-            log.error("Writing job snapshot failed: ", e);
-            throw new SchedulerException(e);
-        } catch (final IOException e) {
-            log.error("Writing job snapshot failed: ", e);
-            throw new SchedulerException(e);
-        } catch (final TransformerException e) {
-            log.error("Writing job snapshot failed: ", e);
-            throw new SchedulerException(e);
-        } catch (final SchedulerException e) {
-            log.error("Writing job snapshot failed: ", e);
-            throw new SchedulerException(e);
-        }
-
-    }
-
-    /**
-     * Return an xml description of all scheduled jobs for the given publication.
-     *
-     * @param publication The publication.
-     * @param jobs The jobs to return
-     * @return An XML document.
-     * @exception SchedulerException if an error occurs
-     */
-    public Document getSnapshot(Publication publication, JobWrapper[] jobs)
-        throws SchedulerException {
-        NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
-        Document document = helper.getDocument();
-        Element root = document.getDocumentElement();
-
-        log.debug("Creating job snapshot for publication [" + publication.getId() + "]");
-        root.appendChild(createSnapshot(helper, publication, jobs));
-
-        return document;
-    }
-
-    /**
-     * Returns a scheduler namespace helper for a document.
-     * @param document The XML document.
-     * @return a namespace helper.
-     */
-    public static NamespaceHelper getNamespaceHelper(Document document) {
-        return new NamespaceHelper(NAMESPACE, "sch", document);
-    }
-
-    /**
-     * Returns a new scheduler namespace helper with an document containing
-     * a &lt;sch:scheduler&gt; element.
-     * @return a namespace helper.
-     */
-    public static NamespaceHelper getNamespaceHelper() {
-        try {
-            return new NamespaceHelper(NAMESPACE, "sch", "scheduler");
-        } catch (Exception e) {
-            log.error("Could not create namespace helper: ", e);
-
-            return null;
-        }
-    }
-
-    /**
-     * Creates an XML element containing a snapshot of a job group.
-     * @param helper The namespace helper to use.
-     * @param publication The publication to create the snapshot for
-     * @param jobs The jobs
-     * @return An XML element.
-     * @throws SchedulerException when something went wrong.
-     */
-    protected Element createSnapshot(
-        NamespaceHelper helper,
-        Publication publication,
-        JobWrapper[] jobs)
-        throws SchedulerException {
-        Element jobGroupElement = helper.createElement(ELEMENT_JOB_GROUP);
-        jobGroupElement.setAttribute("name", publication.getId());
-
-        for (int i = 0; i < jobs.length; i++) {
-
-            ServletJob job = jobs[i].getJob();
-            Element jobElement = job.save(helper, jobs[i].getJobDetail());
-            jobGroupElement.appendChild(jobElement);
-
-            Trigger trigger = jobs[i].getTrigger();
-
-            if (trigger != null) {
-                Element triggerElement = TriggerHelper.createElement(helper, trigger);
-                jobElement.appendChild(triggerElement);
-            }
-        }
-
-        return jobGroupElement;
-    }
-
-    /**
-     * Restores the jobs of a certain job group from the snapshot file.
-     * @param publication The publication
-     * @return A job wrapper
-     * @throws SchedulerException when something went wrong.
-     */
-    public JobWrapper[] restoreJobs(Publication publication) throws SchedulerException {
-        
-        log.debug("Restoring jobs for publication [" + publication.getId() + "]");
-
-        List wrappers = new ArrayList();
-        File jobsFile = getJobsFile(publication);
-        
-        if (jobsFile.exists()) {
-            Element[] jobElements = getJobElements(publication);
-            Document document;
-            try {
-                document = DocumentHelper.readDocument(jobsFile);
-            } catch (Exception e) {
-                throw new SchedulerException(e);
-            }
-            NamespaceHelper helper = SchedulerStore.getNamespaceHelper(document);
-
-            for (int i = 0; i < jobElements.length; i++) {
-                wrappers.add(restoreJob(helper, jobElements[i], publication));
-            }
-        }
-        else {
-            log.debug("Could not restore jobs for publication [" + publication.getId() + "] - jobs file does not exist.");
-        }
-
-        return (JobWrapper[]) wrappers.toArray(new JobWrapper[wrappers.size()]);
-    }
-
-    /**
-     * Restores the jobs from a certain XML element.
-     * @param helper The namespace helper
-     * @param jobElement The XML element.
-     * @param publication The publication to restore jobs for
-     * @return A job wrapper
-     * @throws SchedulerException if an error occurs
-     */
-    protected JobWrapper restoreJob(
-        NamespaceHelper helper,
-        Element jobElement,
-        Publication publication)
-        throws SchedulerException {
-        log.debug("Restoring job ");
-        JobWrapper wrapper;
-
-        try {
-            String jobClassName = jobElement.getAttribute(ServletJob.ATTRIBUTE_CLASS);
-            ServletJob job = ServletJobFactory.createJob(jobClassName);
-            JobDetail jobDetail =
-                job.load(
-                    jobElement,
-                    publication.getId(),
-                    publication.getServletContext().getAbsolutePath());
-
-            Trigger trigger = null;
-
-            Element triggerElement = helper.getFirstChild(jobElement, "trigger");
-            if (triggerElement != null) {
-                trigger =
-                    TriggerHelper.createTrigger(
-                        triggerElement,
-                        jobDetail.getName(),
-                        jobDetail.getGroup());
-
-                Date now = new GregorianCalendar().getTime();
-                if (log.isDebugEnabled()) {
-                    DateFormat format = new SimpleDateFormat();
-                    log.debug(
-                        "    Trigger time: [" + format.format(trigger.getFinalFireTime()) + "]");
-                    log.debug("    Current time: [" + format.format(now) + "]");
-                }
-                if (!trigger.getFinalFireTime().after(now)) {
-                    trigger = null;
-                }
-            }
-            wrapper = new JobWrapper(jobDetail, trigger);
-
-        } catch (Exception e) {
-            throw new SchedulerException(e);
-        }
-        return wrapper;
-    }
-
-    /**
-     * Returns the job elements of a publication.
-     * @param publication
-     * @return An array of elements
-     * @throws SchedulerException when something went wrong.
-     */
-    protected Element[] getJobElements(Publication publication) throws SchedulerException {
-        Element[] jobElements;
-        try {
-            File jobsFile = getJobsFile(publication);
-            if (jobsFile.exists()) {
-                Document document = DocumentHelper.readDocument(jobsFile);
-                Element schedulerElement = document.getDocumentElement();
-                NamespaceHelper helper = SchedulerStore.getNamespaceHelper(document);
-
-                Element jobGroupElement =
-                    helper.getFirstChild(schedulerElement, SchedulerStore.ELEMENT_JOB_GROUP);
-                if (jobGroupElement == null) {
-                    throw new SchedulerException("No <job-group> element found!");
-                }
-
-                String jobGroupAttribute = jobGroupElement.getAttribute("name");
-
-                if (!jobGroupAttribute.equals(publication.getId())) {
-                    throw new SchedulerException(
-                        "The jobs.xml file contains a wrong job group: ["
-                            + jobGroupAttribute
-                            + "]");
-                }
-                jobElements = helper.getChildren(jobGroupElement, SchedulerStore.ELEMENT_JOB);
-
-            } else {
-                throw new SchedulerException(
-                    "The jobs file [" + jobsFile.getAbsolutePath() + "] does not exist!");
-            }
-        } catch (SchedulerException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new SchedulerException(e);
-        }
-        return jobElements;
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
deleted file mode 100644
index 99d172a..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
+++ /dev/null
@@ -1,568 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.scheduler.xml.TriggerHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.quartz.JobDataMap;
-import org.quartz.JobDetail;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.SchedulerFactory;
-import org.quartz.Trigger;
-import org.quartz.impl.StdSchedulerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Scheduler wrapper
- */
-public class SchedulerWrapper {
-
-    private static Logger log = Logger.getLogger(SchedulerWrapper.class);
-    /**
-     * <code>JOB_PREFIX</code> Job Namespace prefix
-     */
-    public static final String JOB_PREFIX = "job";
-    /**
-     * <code>JOB_ID</code> Job ID
-     */
-    public static final String JOB_ID = "id";
-    private static int jobId = 0;
-    private Scheduler scheduler = null;
-    private String servletContextPath;
-    private String schedulerConfigurationPath;
-    private SchedulerStore store = new SchedulerStore();
-
-    /**
-     * Creates a new instance of SchedulerWrapper
-     *
-     * @param _servletContextPath The servlet context path.
-     * @param _schedulerConfigurationPath The scheduler configuration path.
-     */
-    public SchedulerWrapper(String _servletContextPath, String _schedulerConfigurationPath) {
-        this.servletContextPath = _servletContextPath;
-        this.schedulerConfigurationPath = _schedulerConfigurationPath;
-
-        SchedulerFactory factory = new StdSchedulerFactory();
-        log.info("------- Starting up -----------------------");
-
-        try {
-            this.scheduler = factory.getScheduler();
-
-            this.scheduler.addSchedulerListener(new AbstractSchedulerListener());
-            this.scheduler.start();
-        } catch (SchedulerException e) {
-            log.error("Can't initialize SchedulerWrapper: ", e);
-            log.error("------- Startup failed -------------------");
-        }
-
-        log.info("------- Startup complete ------------------");
-    }
-
-    /**
-     * Returns the store.
-     * @return A scheduler store.
-     */
-    protected SchedulerStore getStore() {
-        return this.store;
-    }
-
-    /**
-     * Returns the scheduler.
-     * @return A scheduler.
-     */
-    private Scheduler getScheduler() {
-        return this.scheduler;
-    }
-
-    /**
-     * Shuts down the scheduler.
-     */
-    public void shutdown() {
-        log.info("------- Shutting Down ---------------------");
-
-        // try to save state here
-        try {
-            getScheduler().shutdown();
-        } catch (SchedulerException e) {
-            log.error("------- Shutdown Failed -----------------", e);
-        }
-
-        log.info("------- Shutdown Complete -----------------");
-    }
-
-    /**
-     * Returns the servlet context path.
-     * @return The servlet context path.
-     */
-    protected String getServletContextPath() {
-        return this.servletContextPath;
-    }
-
-    /**
-     * Returns the scheduler configuration path.
-     * @return A string.
-     */
-    protected String getSchedulerConfigurationPath() {
-        return this.schedulerConfigurationPath;
-    }
-
-    /**
-     * Returns the next job ID to use (calculated using the current time).
-     * @return A string.
-     */
-    protected synchronized static String getNextJobId() {
-        return "job_" + jobId++ +System.currentTimeMillis();
-    }
-
-    /**
-     * Adds a job.
-     * @param jobGroup The job group.
-     * @param startTime The start time.
-     * @param jobClass The class of the job.
-     * @param map The job parameters.
-     * @throws SchedulerException if an error occurs.
-     * @throws PublicationException if an error occurs.
-     */
-    protected void addJob(String jobGroup, Date startTime, Class jobClass, JobDataMap map)
-        throws SchedulerException, PublicationException {
-        String uniqueJobId = getNextJobId();
-        log.debug("Job ID: [" + uniqueJobId + "]");
-        
-        JobDetail jobDetail = new JobDetail(uniqueJobId, jobGroup, jobClass);
-        jobDetail.setJobDataMap(map);
-        
-        Date now = new GregorianCalendar().getTime();
-        if (log.isDebugEnabled()) {
-            DateFormat format = new SimpleDateFormat();
-            log.debug("Trigger time: [" + format.format(startTime) + "]");
-            log.debug("Current time: [" + format.format(now) + "]");
-        }
-        
-        if (startTime.after(now)) {
-            Trigger trigger =
-                TriggerHelper.createSimpleTrigger(uniqueJobId, jobGroup, startTime);
-            addJob(jobDetail, trigger);
-            log.debug("Scheduling job.");
-        } else {
-            addJob(jobDetail);
-            log.debug("Adding job without scheduling.");
-        }
-        
-        log.debug("----------------------------------------------");
-        
-        this.store.writeSnapshot(getPublication(jobGroup), getJobWrappers(jobGroup));
-    }
-
-    /**
-     * Adds a job.
-     * @param jobGroup The job group.
-     * @param startTime The start time.
-     * @param request The request to obtain the parameters from.
-     * @throws SchedulerException when something went wrong.
-     */
-    public void addJob(String jobGroup, Date startTime, HttpServletRequest request)
-        throws SchedulerException {
-
-        if (jobGroup == null) {
-            throw new SchedulerException("Job group must not be null!");
-        }
-
-        try {
-            log.debug("----------------------------------------------");
-            log.debug("Adding Job for group [" + jobGroup + "]");
-
-            // FIXME: more flexible
-            Class jobClass = TaskJob.class;
-
-            ServletJob job = ServletJobFactory.createJob(jobClass);
-            JobDataMap map = job.createJobData(request);
-
-            addJob(jobGroup, startTime, jobClass, map);
-        } catch (final SchedulerException e) {
-            log.error("Adding job failed: ", e);
-            throw new SchedulerException(e);
-        } catch (final PublicationException e) {
-            log.error("Adding job failed: ", e);
-            throw new SchedulerException(e);
-        }
-    }
-
-    /**
-     * Returns the publication for a job group.
-     * @param jobGroup A job group.
-     * @return A publication.
-     * @throws PublicationException when the publication does not exist.
-     */
-    protected Publication getPublication(String jobGroup) throws PublicationException {
-        return null;
-        /*
-        PublicationManagerImpl factory = PublicationManagerImpl.getInstance(new ConsoleLogger());
-        return factory.getPublication(jobGroup, getServletContextPath());
-        */
-    }
-
-    /**
-     * Adds a job.
-     * @param detail The job information.
-     * @param trigger The trigger to trigger the job.
-     */
-    protected void addJob(JobDetail detail, Trigger trigger) {
-        try {
-            detail.setDurability(true);
-
-            Date ft = getScheduler().scheduleJob(detail, trigger);
-            log.debug("Job " + detail.getFullName() + " will run at: " + ft);
-        } catch (Exception e) {
-            log.error("Adding job failed: ", e);
-        }
-    }
-
-    /**
-     * Adds a job.
-     * @param detail The job information.
-     */
-    protected void addJob(JobDetail detail) {
-        try {
-            detail.setDurability(true);
-            getScheduler().addJob(detail, true);
-        } catch (SchedulerException e) {
-            log.error("Adding job failed: ", e);
-        }
-    }
-
-    /**
-     * Deletes a job.
-     * @param jobName The job name.
-     * @param jobGroup The job group.
-     */
-    protected void deleteJob(String jobName, String jobGroup) {
-        try {
-            log.debug("-----------------------------------");
-            log.debug("\n Deleting job [" + jobGroup + "/" + jobName + "]");
-            log.debug("-----------------------------------");
-            getScheduler().deleteJob(jobName, jobGroup);
-            getStore().writeSnapshot(getPublication(jobGroup), getJobWrappers(jobGroup));
-        } catch (SchedulerException e) {
-            log.error("Deleting job failed: ", e);
-        } catch (PublicationException e) {
-            log.error("Deleting job failed: ", e);
-        }
-
-    }
-
-    /**
-     * Reads the scheduler configuration.
-     * @return A configuration.
-     */
-    protected Configuration getSchedulerConfiguration() {
-        try {
-            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-            String path = getServletContextPath() + getSchedulerConfigurationPath();
-            log.debug("Initializing scheduler configuration: " + path);
-
-            File configurationFile = new File(path);
-            Configuration configuration = builder.buildFromFile(configurationFile);
-
-            return configuration;
-        } catch (Exception e) {
-            log.error("Can't initialize scheduler configuration: ", e);
-
-            return null;
-        }
-    }
-
-    /**
-     * <code>ELEMENT_TRIGGERS</code> Triggers element
-     */
-    public static final String ELEMENT_TRIGGERS = "triggers";
-    /**
-     * <code>ELEMENT_TRIGGER</code> Trigger element
-     */
-    public static final String ELEMENT_TRIGGER = "trigger";
-    /**
-     * <code>TYPE_ATTRIBUTE</code> Type attribute
-     */
-    public static final String TYPE_ATTRIBUTE = "type";
-    /**
-     * <code>CLASS_ATTRIBUTE</code> Class attribute
-     */
-    public static final String CLASS_ATTRIBUTE = "class";
-
-    /**
-     * Returns an XML element containing the trigger types.
-     * @param helper The namespace helper of the document that shall contain the element.
-     * @return An XML element.
-     */
-    protected Element getTriggerTypes(NamespaceHelper helper) {
-        try {
-            Configuration configuration = getSchedulerConfiguration();
-            Configuration[] triggerConfigurations =
-                configuration.getChild(ELEMENT_TRIGGERS).getChildren(ELEMENT_TRIGGER);
-
-            Element triggersElement = helper.createElement("triggers");
-
-            for (int i = 0; i < triggerConfigurations.length; i++) {
-                Configuration conf = triggerConfigurations[i];
-                String type = conf.getAttribute(TYPE_ATTRIBUTE);
-                String className = conf.getAttribute(CLASS_ATTRIBUTE);
-
-                Element triggerElement = helper.createElement("trigger");
-                triggerElement.setAttribute("name", type);
-                triggerElement.setAttribute("src", className);
-                triggersElement.appendChild(triggerElement);
-            }
-
-            return triggersElement;
-        } catch (Exception e) {
-            log.error("Can't configure trigger types: " + e);
-
-            return null;
-        }
-    }
-
-    /**
-     * Returns the trigger of a certain job.
-     * @param jobName The job name.
-     * @param jobGroup The job group.
-     * @return A trigger.
-     * @throws SchedulerException when something went wrong.
-     */
-    protected Trigger getTrigger(String jobName, String jobGroup) throws SchedulerException {
-        log.debug("Resolving trigger for job [" + jobName + " ][ " + jobGroup + "]");
-        String[] triggerGroups = getScheduler().getTriggerGroupNames();
-
-        for (int groupIndex = 0; groupIndex < triggerGroups.length; groupIndex++) {
-            String[] triggerNames = getScheduler().getTriggerNames(triggerGroups[groupIndex]);
-
-            for (int nameIndex = 0; nameIndex < triggerNames.length; nameIndex++) {
-                log.debug("Trigger name:  " + triggerNames[nameIndex]);
-
-                Trigger trigger =
-                    getScheduler().getTrigger(triggerNames[nameIndex], triggerGroups[groupIndex]);
-                log.debug("Job group:     " + trigger.getJobGroup());
-
-                if (trigger.getJobGroup().equals(jobGroup)
-                    && trigger.getJobName().equals(jobName)) {
-                    return trigger;
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Return an XML description certain job groups.
-     * @param jobGroupNames The job group names.
-     * @return An XML document.
-     * @exception SchedulerException if an error occurs
-     */
-    public Document getSnapshot(String[] jobGroupNames) throws SchedulerException {
-        log.debug("Creating job snapshot");
-
-        NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
-        Document document = helper.getDocument();
-        Element root = document.getDocumentElement();
-
-        // print a list of all available trigger types
-        root.appendChild(getTriggerTypes(helper));
-
-        for (int groupIndex = 0; groupIndex < jobGroupNames.length; groupIndex++) {
-            log.debug("Creating job snapshot for group [" + jobGroupNames[groupIndex] + "]");
-            root.appendChild(getSnapshot(helper, jobGroupNames[groupIndex]));
-        }
-
-        return document;
-    }
-
-    /**
-     * Returns the snapshot of a certain job group.
-     * @param helper The namespace helper.
-     * @param group The job group.
-     * @return An XML element.
-     * @throws SchedulerException when something went wrong.
-     */
-    protected Element getSnapshot(NamespaceHelper helper, String group) throws SchedulerException {
-        JobWrapper[] jobs = getJobWrappers(group);
-        Element element;
-        try {
-            element = getStore().createSnapshot(helper, getPublication(group), jobs);
-        } catch (SchedulerException e) {
-            throw e;
-        } catch (PublicationException e) {
-            throw new SchedulerException(e);
-        }
-        return element;
-    }
-
-    /**
-     * Returns the job wrappers for a certain job group.
-     * @param jobGroupName The job group.
-     * @return An array of job wrappers.
-     * @throws SchedulerException when something went wrong.
-     */
-    protected JobWrapper[] getJobWrappers(String jobGroupName) throws SchedulerException {
-
-        List wrappers = new ArrayList();
-        String[] jobNames = getScheduler().getJobNames(jobGroupName);
-
-        for (int nameIndex = 0; nameIndex < jobNames.length; nameIndex++) {
-            JobDetail jobDetail = getScheduler().getJobDetail(jobNames[nameIndex], jobGroupName);
-            Trigger trigger = getTrigger(jobNames[nameIndex], jobGroupName);
-            wrappers.add(new JobWrapper(jobDetail, trigger));
-        }
-
-        return (JobWrapper[]) wrappers.toArray(new JobWrapper[wrappers.size()]);
-    }
-
-    /**
-     * Return an xml description of all scheduled jobs.
-     * @return The description
-     * @exception SchedulerException if an error occurs
-     */
-    public Document getSnapshot() throws SchedulerException {
-        String[] jobGroupNames = getScheduler().getJobGroupNames();
-        return getSnapshot(jobGroupNames);
-    }
-
-    /**
-     * Restores the jobs of a certain job group from the snapshot file.
-     * @param jobGroup The job group.
-     * @throws SchedulerException when something went wrong.
-     */
-    public void restoreJobs(String jobGroup) throws SchedulerException {
-
-        log.debug("--------------------------------------------------");
-        log.debug("Restoring jobs for job group [" + jobGroup + "]");
-        log.debug("--------------------------------------------------");
-
-        try {
-            JobWrapper[] jobs = getStore().restoreJobs(getPublication(jobGroup));
-            for (int i = 0; i < jobs.length; i++) {
-                if (jobs[i].getTrigger() != null) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("    Trigger time in future - scheduling job.");
-                    }
-                    addJob(jobs[i].getJobDetail(), jobs[i].getTrigger());
-                } else {
-                    if (log.isDebugEnabled()) {
-                        log.debug("    Trigger time has expired - adding job without scheduling.");
-                    }
-                    addJob(jobs[i].getJobDetail());
-                }
-            }
-        } catch (final SchedulerException e) {
-            log.error("" +e.toString());
-            throw new SchedulerException(e);
-        } catch (final PublicationException e) {
-            log.error("" +e.toString());
-            throw new SchedulerException(e);
-        }
-
-    }
-
-    /**
-     * Modifies the execution time of a job.
-     * @param _jobId The job ID.
-     * @param jobGroup The job group.
-     * @param startTime The new start time.
-     * @throws SchedulerException when the job was not found.
-     */
-    public void modifyJob(String _jobId, String jobGroup, Date startTime)
-        throws SchedulerException {
-        log.debug("Modifying job [" + _jobId + "][" + jobGroup + "]");
-
-        JobDetail jobDetail = getScheduler().getJobDetail(_jobId, jobGroup);
-        if (jobDetail == null) {
-            throw new SchedulerException("Job not found!");
-        }
-
-        Trigger trigger = getTrigger(jobDetail.getName(), jobGroup);
-        if (trigger == null) {
-            log.debug("    No trigger found.");
-        } else {
-            log.debug("    Trigger found. Setting new start time.");
-            jobDetail.setDurability(true);
-            if (startTime.after(new GregorianCalendar().getTime())) {
-                log.debug("    Start time is in future - re-scheduling job.");
-                getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
-                trigger = TriggerHelper.createSimpleTrigger(_jobId, jobGroup, startTime);
-                getScheduler().scheduleJob(trigger);
-            } else {
-                log.debug("    Start time has already expired - deleting job.");
-                getScheduler().deleteJob(_jobId, jobGroup);
-            }
-            try {
-                getStore().writeSnapshot(getPublication(jobGroup), getJobWrappers(jobGroup));
-            } catch (SchedulerException e) {
-                throw e;
-            } catch (PublicationException e) {
-                throw new SchedulerException(e);
-            }
-        }
-    }
-
-    /**
-     * Deletes the jobs for a certain document. This method is called when
-     * a document has been moved or deleted.
-     * @param document A document.
-     * @throws SchedulerException when something went wrong.
-     * @throws PublicationException when something went wrong.
-     */
-    public void deleteJobs(org.apache.lenya.cms.publication.Document document)
-        throws SchedulerException, PublicationException {
-            
-        log.debug("Deleting jobs for document [" + document + "]");
-            
-        String jobGroup = document.getPublication().getId();
-        JobWrapper[] jobs = getJobWrappers(jobGroup);
-        boolean changed = false;
-        for (int i = 0; i < jobs.length; i++) {
-            ServletJob job = jobs[i].getJob();
-            String documentUrl = job.getDocumentUrl(jobs[i].getJobDetail());
-            if (documentUrl.equals(document.getCanonicalWebappURL())) {
-                deleteJob(jobs[i].getJobDetail().getName(), jobGroup);
-                changed = true;
-            }
-        }
-        if (changed) {
-            getStore().writeSnapshot(getPublication(jobGroup), getJobWrappers(jobGroup));
-        }
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJob.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJob.java
deleted file mode 100644
index 7e28d50..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJob.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.quartz.Job;
-import org.quartz.JobDataMap;
-import org.quartz.JobDetail;
-import org.quartz.SchedulerException;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
-
-/**
- * Scheduling job that uses an HttpServletRequest to obtain its Job data.
- */
-public abstract class ServletJob implements Job {
-
-    private static Logger log = Logger.getLogger(ServletJob.class);
-    
-    /**
-     * <code>ELEMENT_JOB</code> The job element
-     */
-    public static final String ELEMENT_JOB = "job";
-    /**
-     * <code>ATTRIBUTE_ID</code> The id attribute
-     */
-    public static final String ATTRIBUTE_ID = "id";
-    /**
-     * <code>ATTRIBUTE_CLASS</code> The class attribute
-     */
-    public static final String ATTRIBUTE_CLASS = "class";
-    /**
-     * <code>ATTRIBUTE_DOCUMENT_URL</code> The document url attribute
-     */
-    public static final String ATTRIBUTE_DOCUMENT_URL = "url";
-    /**
-     * <code>ATTRIBUTE_SERVLET_CONTEXT</code> The servlet context attribute
-     */
-    public static final String ATTRIBUTE_SERVLET_CONTEXT = "servletcontext";
-    /**
-     * <code>PARAMETER_DOCUMENT_URL</code> The document URL parameter
-     */
-    public static final String PARAMETER_DOCUMENT_URL = "document-url";
-
-    /**
-     * Creates the job data from an HTTP request.
-     * @param request The request.
-     * @return A job data map.
-     * @throws SchedulerException when something went wrong.
-     */
-    public JobDataMap createJobData(HttpServletRequest request)
-        throws SchedulerException {
-        JobDataMap map = new JobDataMap();
-        String key = NamespaceMap.getFullName(LoadQuartzServlet.PREFIX, PARAMETER_DOCUMENT_URL);
-        String documentUrl = request.getParameter(key);
-        if (documentUrl == null) {
-            throw new SchedulerException("Document URL must not be null!");
-        }
-        map.put(key, documentUrl);
-        return map;
-    }
-
-    /**
-     * Loads the job data from an XML element.
-     * @param element An XML element.
-     * @param jobGroup The job group the job belongs to.
-     * @param servletContextPath The servlet context path.
-     * @return A job detail object.
-     * @throws SchedulerException when something went wrong.
-     */
-    public JobDetail load(Element element, String jobGroup, String servletContextPath)
-        throws SchedulerException {
-        String jobId = element.getAttribute(ATTRIBUTE_ID);
-        JobDetail jobDetail = new JobDetail(jobId, jobGroup, getClass());
-        return jobDetail;
-
-    }
-
-    /**
-     * Saves the job data to an XML element.
-     * @param helper The namespace helper of the document the element shall belong to.
-     * @param jobDetail The job detail to save.
-     * @return An XML element.
-     * @throws SchedulerException when something went wrong.
-     */
-    public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
-        log.debug("Saving job");
-
-        try {
-            Element jobElement = helper.createElement(ELEMENT_JOB);
-            jobElement.setAttribute(ATTRIBUTE_ID, jobDetail.getName());
-            jobElement.setAttribute(ATTRIBUTE_CLASS, getClass().getName());
-
-            String documentUrl = getDocumentUrl(jobDetail);
-            jobElement.setAttribute(ATTRIBUTE_DOCUMENT_URL, documentUrl);
-            
-            return jobElement;
-        } catch (final DOMException e) {
-            log.error("" +e.toString());
-            throw new SchedulerException(e);
-        }
-    }
-
-    /**
-     * Returns the document URL of a certain job.
-     * @param jobDetail The job detail.
-     * @return A string.
-     */
-    public String getDocumentUrl(JobDetail jobDetail) {
-        JobDataMap map = jobDetail.getJobDataMap();
-        NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
-        String documentUrl = (String) wrapper.get(PARAMETER_DOCUMENT_URL);
-        return documentUrl;
-    }
-    
-    /**
-     * Sets the document URL of a job.
-     * @param jobDetail The job detail.
-     * @param url The URL.
-     */
-    public void setDocumentUrl(JobDetail jobDetail, String url) {
-        JobDataMap map = jobDetail.getJobDataMap();
-        NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
-        wrapper.put(PARAMETER_DOCUMENT_URL, url);
-        jobDetail.setJobDataMap(map);
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJobFactory.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJobFactory.java
deleted file mode 100644
index d5e8a88..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/ServletJobFactory.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import org.apache.log4j.Logger;
-
-
-/**
- * Factory for building serlvet jobs.
- */
-public final class ServletJobFactory {
-    
-    /**
-     * Ctor.
-     */
-    private ServletJobFactory() {
-	    // do nothing
-    }
-
-    private static Logger log = Logger.getLogger(ServletJobFactory.class);
-
-    /**
-     * Creates a job.
-     * @param jobClassName The name of the Java class used to instanciate the job object.
-     * @return A servlet job.
-     */
-    public static ServletJob createJob(String jobClassName) {
-        try {
-            Class cl = Class.forName(jobClassName);
-
-            return createJob(cl);
-        } catch (Exception e) {
-            log.error("Cannot create Job instance: " + e);
-
-            return null;
-        }
-    }
-
-    /**
-     * Creates a job. 
-     * @param cl The Java class used to instanciate the job object.
-     * @return A servlet job.
-     */
-    public static ServletJob createJob(Class cl) {
-        try {
-            ServletJob job = (ServletJob) cl.newInstance();
-
-            return job;
-        } catch (Exception e) {
-            log.error("Cannot create Job instance: " + e);
-
-            return null;
-        }
-    }
-    
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/TaskJob.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/TaskJob.java
deleted file mode 100644
index cdc4274..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/TaskJob.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler;
-
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.lenya.cms.task.DefaultTaskWrapper;
-import org.apache.lenya.cms.task.ExecutionException;
-import org.apache.lenya.cms.task.TaskParameters;
-import org.apache.lenya.cms.task.TaskWrapper;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.quartz.JobDataMap;
-import org.quartz.JobDetail;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.quartz.SchedulerException;
-import org.w3c.dom.Element;
-
-/**
- * A TaskJob is a Job that executes a Task. The task ID is obtained from the <code>task-id</code>
- * request parameter.
- */
-public class TaskJob extends ServletJob {
-    private static Logger log = Logger.getLogger(TaskJob.class);
-
-    /**
-     * Un-prefix the parameters.
-     * @param wrapperMap the prefixed parameters.
-     * @return the parameters
-     * @throws SchedulerException when something went wrong.
-     */
-    protected Map stripPrefixes(Map wrapperMap)
-        throws SchedulerException {
-        
-        NamespaceMap taskParameters = new NamespaceMap(TaskParameters.PREFIX);
-        taskParameters.putAll(wrapperMap);
-        wrapperMap.putAll(taskParameters.getPrefixedMap());
-        
-        DefaultTaskWrapper wrapper = new DefaultTaskWrapper(wrapperMap, null);
-        return wrapper.getParameters();
-    }
-
-    /**
-     * Creates the job data for a job.
-     * @param request The request.
-     * @return A job data map.
-     * @throws SchedulerException when something went wrong.
-     */
-    public JobDataMap createJobData(HttpServletRequest request)
-        throws SchedulerException {
-        log.debug("Creating job data map:");
-        JobDataMap map = super.createJobData(request);
-
-        Enumeration parameters = request.getParameterNames();
-        Map wrapperMap = new HashMap();
-        while (parameters.hasMoreElements()) {
-            String key = (String) parameters.nextElement();
-            Object value;
-            String[] values = request.getParameterValues(key);
-            if (values.length == 1) {
-                value = values[0];
-            }
-            else {
-                value = values;
-            }
-            wrapperMap.put(key, value);
-        }
-
-        map.putAll(stripPrefixes(wrapperMap));
-        return map;
-    }
-
-    /**
-     * <p>
-     * Called by the <code>{@link org.quartz.Scheduler}</code> when a <code>{@link
-     * org.quartz.Trigger}</code> fires that is associated with the <code>Job</code>.
-     * </p>
-     * @param context The context
-     * @throws JobExecutionException if there is an exception while executing the job.
-     */
-    public void execute(JobExecutionContext context) throws JobExecutionException {
-        log.info("Executing job");
-        JobDetail jobDetail = context.getJobDetail();
-        
-        DefaultTaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap(), null);
-        try {
-            wrapper.execute();
-        } catch (ExecutionException e) {
-        	log.error("Task execution failed: ", e);
-        	throw new JobExecutionException();
-        }
-    }
-
-    /**
-     * Loads a job details object from an XML element. 
-     * @param jobElement The XML element.
-     * @param jobGroup The job group the job belongs to.
-     * @param servletContextPath The servlet context path.
-     * @throws SchedulerException when something went wrong.
-     * @return A job details object.
-     */
-    public JobDetail load(Element jobElement, String jobGroup, String servletContextPath) throws SchedulerException {
-        JobDetail jobDetail = super.load(jobElement, jobGroup, servletContextPath);
-        
-        NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
-        DefaultTaskWrapper wrapper = new DefaultTaskWrapper(helper, jobElement);
-        wrapper.getTaskParameters().setServletContextPath(servletContextPath);
-        
-        JobDataMap map = new JobDataMap(wrapper.getParameters());
-        jobDetail.setJobDataMap(map);
-        
-        return jobDetail;
-    }
-
-    /**
-     * Save a job detail
-     * @param jobDetail The job detail to save
-     * @param helper namespace helper
-     * @throws SchedulerException when something went wrong.
-     * @return The job element
-     */
-    public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
-        
-        Element jobElement = super.save(helper, jobDetail);
-        TaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap(), null);
-        jobElement.appendChild(wrapper.save(helper));
-        
-        return jobElement;
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java
deleted file mode 100644
index 3d26d39..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.scheduler.xml;
-
-import java.io.IOException;
-import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-import org.apache.lenya.cms.scheduler.SchedulerStore;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.quartz.CronTrigger;
-import org.quartz.SimpleTrigger;
-import org.quartz.Trigger;
-import org.w3c.dom.Element;
-
-
-/**
- * Utility class to work with trigger XML.
- */
-public final class TriggerHelper {
-    
-    /**
-     * Ctor.
-     */
-    private TriggerHelper() {
-	    // do nothing
-    }
-
-    private static Logger log = Logger.getLogger(TriggerHelper.class);
-    /**
-     * <code>YEAR</code> The year
-     */
-    public static final String YEAR = "year";
-    /**
-     * <code>MONTH</code> The month
-     */
-    public static final String MONTH = "month";
-    /**
-     * <code>DAY</code> The day
-     */
-    public static final String DAY = "day";
-    /**
-     * <code>HOUR</code> The hour
-     */
-    public static final String HOUR = "hour";
-    /**
-     * <code>MINUTE</code> The minute
-     */
-    public static final String MINUTE = "minute";
-    /**
-     * <code>TRIGGER_TYPE</code> The trigger type
-     */
-    public static final String TRIGGER_TYPE = "type";
-    /**
-     * <code>ONCE</code> Once
-     */
-    public static final String ONCE = "once";
-    /**
-     * <code>REPEATED</code> Repeated
-     */
-    public static final String REPEATED = "repeated";
-    /**
-     * <code>CRON_EXPRESSION</code> The cron expression
-     */
-    public static final String CRON_EXPRESSION = "expression";
-    private static int id = 0;
-    /**
-     * <code>PREFIX</code> The prefix
-     */
-    public static final String PREFIX = "trigger";
-
-    /**
-     * Creates a trigger from an XML element.
-     * @param element The XML element.
-     * @param jobName The job name.
-     * @param jobGroup The job group.
-     * @return A trigger.
-     */
-    public static Trigger createTrigger(Element element, String jobName, String jobGroup) {
-        if (!element.getLocalName().equals("trigger")) {
-            throw new IllegalArgumentException();
-        }
-
-        String triggerType = element.getAttribute(TRIGGER_TYPE);
-        NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
-
-        // SimpleTrigger
-        if (triggerType.equals(ONCE)) {
-            Element[] parameterElements = helper.getChildren(element, "parameter");
-            GregorianCalendar date = new GregorianCalendar();
-
-            for (int i = 0; i < parameterElements.length; i++) {
-                String name = parameterElements[i].getAttribute("name");
-                String value = parameterElements[i].getAttribute("value");
-
-                if (name.equals(YEAR)) {
-                    date.set(Calendar.YEAR, Integer.parseInt(value));
-                }
-
-                if (name.equals(MONTH)) {
-                    date.set(Calendar.MONTH, Integer.parseInt(value) - 1);
-                }
-
-                if (name.equals(DAY)) {
-                    date.set(Calendar.DAY_OF_MONTH, Integer.parseInt(value));
-                }
-
-                if (name.equals(HOUR)) {
-                    date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
-                }
-
-                if (name.equals(MINUTE)) {
-                    date.set(Calendar.MINUTE, Integer.parseInt(value));
-                }
-
-                if (name.equals(HOUR)) {
-                    date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
-                }
-            }
-
-            return createSimpleTrigger(jobName, jobGroup, date.getTime());
-        }
-
-        // CronTrigger
-        if (triggerType.equals(REPEATED)) {
-            Element[] parameterElements = helper.getChildren(element, "parameter");
-            String name = parameterElements[0].getAttribute("name");
-            String value = parameterElements[0].getAttribute("value");
-            String cron_expression;
-
-            if (name.equals(CRON_EXPRESSION)) {
-                cron_expression = value;
-            } else {
-                cron_expression = "45 * * * * ?";
-            }
-
-            return createCronTrigger(jobName, jobGroup, cron_expression);
-        }
-
-        throw new IllegalStateException("Trigger type '" + triggerType + "' not defined!");
-    }
-
-    /**
-     * Creates a unique trigger ID.
-     * @return A string.
-     */
-    protected static String createUniqueTriggerId() {
-        return "trigger_" + id++;
-    }
-
-    /**
-     * Creates a simple trigger.
-     * @param jobName The job name.
-     * @param jobGroup The job group.
-     * @param date The trigger date.
-     * @return The trigger
-     */
-    public static Trigger createSimpleTrigger(String jobName, String jobGroup, Date date) {
-        return new SimpleTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup, date,
-            null, 0, 0);
-    }
-
-    /**
-     * Creates a cron trigger.
-     * @param jobName The job name.
-     * @param jobGroup The job group.
-     * @param cron_expression Seconds, Minutes, Hours, Day of Month, Months, Day of Week (e.g. 34
-     *        ?)
-     * @return A trigger.
-     */
-    public static Trigger createCronTrigger(String jobName, String jobGroup, String cron_expression) {
-        try {
-            return new CronTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup,
-                cron_expression);
-        } catch (ParseException e) {
-            log.error(".createCronTrigger(): " + e);
-        }
-
-        return null;
-    }
-
-    /**
-     * Creates an XML element containing trigger information.
-     * @param helper The namespace helper to use.
-     * @param trigger The trigger.
-     * @return An XML element.
-     */
-    public static Element createElement(NamespaceHelper helper, Trigger trigger) {
-        Element triggerElement = helper.createElement("trigger");
-        triggerElement.setAttribute("type", ONCE);
-
-        if (trigger == null) {
-            return triggerElement;
-        }
-
-        GregorianCalendar startTime = new GregorianCalendar();
-        startTime.setTime(trigger.getStartTime());
-
-        Element yearElement = helper.createElement("parameter");
-        yearElement.setAttribute("name", YEAR);
-        yearElement.setAttribute("value", Integer.toString(startTime.get(Calendar.YEAR)));
-        triggerElement.appendChild(yearElement);
-
-        Element monthElement = helper.createElement("parameter");
-        monthElement.setAttribute("name", MONTH);
-        monthElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MONTH) + 1));
-        triggerElement.appendChild(monthElement);
-
-        Element dayElement = helper.createElement("parameter");
-        dayElement.setAttribute("name", DAY);
-        dayElement.setAttribute("value", Integer.toString(startTime.get(Calendar.DAY_OF_MONTH)));
-        triggerElement.appendChild(dayElement);
-
-        Element hourElement = helper.createElement("parameter");
-        hourElement.setAttribute("name", HOUR);
-        hourElement.setAttribute("value", Integer.toString(startTime.get(Calendar.HOUR_OF_DAY)));
-        triggerElement.appendChild(hourElement);
-
-        Element minuteElement = helper.createElement("parameter");
-        minuteElement.setAttribute("name", MINUTE);
-        minuteElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MINUTE)));
-        triggerElement.appendChild(minuteElement);
-
-        return triggerElement;
-    }
-    
-    /**
-     * Extracts the date from the scheduler parameters.
-     * @param schedulerParameters The scheduler parameters.
-     * @return A date.
-     * @throws IOException when something went wrong.
-     */
-    public static Date getDate(NamespaceMap schedulerParameters) throws IOException {
-        NamespaceMap triggerParameters =
-            new NamespaceMap(schedulerParameters.getMap(), PREFIX);
-        String startDay = (String) triggerParameters.get(DAY);
-        String startMonth = (String) triggerParameters.get(MONTH);
-        String startYear = (String) triggerParameters.get(YEAR);
-        String startHour = (String) triggerParameters.get(HOUR);
-        String startMin = (String) triggerParameters.get(MINUTE);
-
-        Date startTime = null;
-
-        try {
-            // Month value is 0-based
-            startTime =
-                new GregorianCalendar(
-                    Integer.parseInt(startYear),
-                    Integer.parseInt(startMonth) - 1,
-                    Integer.parseInt(startDay),
-                    Integer.parseInt(startHour),
-                    Integer.parseInt(startMin))
-                    .getTime();
-        } catch (NumberFormatException e) {
-            log.error(
-                "NumberFormatException with parameters "
-                    + "startYear, startMonth, startDay, startHour, startMin: "
-                    + startDay
-                    + ", "
-                    + startMonth
-                    + ", "
-                    + startDay
-                    + ", "
-                    + startHour
-                    + ", "
-                    + startMin,
-                e);
-            throw new IOException("Parsing scheduling date/time failed!");
-        }
-        return startTime;
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AbstractTask.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AbstractTask.java
deleted file mode 100644
index 1e9ca5f..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AbstractTask.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceManager;
-
-/**
- * Abstract baseclass for Task
- * @deprecated Use the usecase framework instead.
- */
-public abstract class AbstractTask implements Task {
-    private Parameters parameters = new Parameters();
-
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     */
-    public AbstractTask() {
-    }
-
-    /**
-     * @param manager The service manager to use.
-     */
-    public void service(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    protected ServiceManager getServiceManager() {
-        return this.manager;
-    }
-
-    /**
-     * Get parameters of the task
-     * @return The parameters
-     */
-    public Parameters getParameters() {
-        Parameters params = new Parameters();
-        params = params.merge(this.parameters);
-
-        return params;
-    }
-
-    /**
-     * Set the parameters
-     * @param _parameters The parameters
-     * @throws ParameterException if the parametrizing fails
-     */
-    public void parameterize(Parameters _parameters) throws ParameterException {
-        this.parameters = this.parameters.merge(_parameters);
-    }
-
-    /**
-     * Set the label of the task
-     * @param label The label
-     */
-    public void setLabel(String label) {
-        // do nothing
-    }
-
-    private int result = SUCCESS;
-
-    /**
-     * @see org.apache.lenya.cms.task.Task#getResult()
-     */
-    public int getResult() {
-        return this.result;
-    }
-
-    /**
-     * Sets the result of this task.
-     * @param _result An integer ({@link Task#SUCCESS}, {@link Task#FAILURE}).
-     */
-    protected void setResult(int _result) {
-        this.result = _result;
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AntTask.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AntTask.java
deleted file mode 100644
index 53a9d0d..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/AntTask.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.lenya.cms.ant.LenyaProject;
-import org.apache.lenya.cms.publishing.PublishingEnvironment;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.XmlLogger;
-
-/**
- * An object of this class is used to execute Ant tasks. The task parameters are:
- * 
- * <ul>
- * <li><code><strong>publication-id</strong></code>: the publication ID</li>
- * <li><code><strong>buildfile</strong> (optional)</code>: the location of the build file
- * relative to the publication directory. If this parameter is not provided, the file is loaded from
- * {@link #DEFAULT_BUILDFILE}.</li>
- * <li><code><strong>target</strong> (optional)</code>: the build target. If this parameter is
- * not provided, the default target is executed.</li>
- * <li><code><strong>ant.*</strong></code>: the command-line parameters for Ant <strong>(not
- * implemented yet!) </strong></li>
- * <li><code><strong>properties.*</strong></code>: the project properties</li>
- * </ul>
- * @deprecated Use the usecase framework instead.
- */
-public class AntTask extends AbstractTask {
-    
-    /**
-     * Executes an Ant target.
-     * 
-     * @param buildFile The build XML file.
-     * @param target The name of the target to execute.
-     * @param arguments A map mapping the command-line arguments to their values.
-     * @param properties A map mapping the project properties to their values.
-     * @param servletContextPath The context-path of the servlet
-     * @param contextPrefix The context-prefix of the servlet
-     * @param publicationId The publication-id
-     * @param publicationDirectory The directory of the publication
-     * @param logFile The file where the log should go to
-     * 
-     * @throws ExecutionException if the execution failed
-     */
-    public void executeAntTarget(String servletContextPath, String contextPrefix,
-            String publicationId, File publicationDirectory, File buildFile, String target,
-            Map arguments, Map properties, File logFile) throws ExecutionException {
-        Project project = new LenyaProject(getServiceManager());
-        project.setCoreLoader(getClass().getClassLoader());
-
-        Throwable error = null;
-
-        try {
-            // create task log directory if it doesn't exist
-            File logDirectory = logFile.getParentFile();
-
-            if (!logDirectory.exists()) {
-                logDirectory.mkdirs();
-            }
-
-            project.setUserProperty("XmlLogger.file", logFile.getAbsolutePath());
-
-            XmlLogger logger = new XmlLogger();
-            project.addBuildListener(logger);
-            project.fireBuildStarted();
-
-            project.init();
-            project.setBaseDir(publicationDirectory);
-
-            ProjectHelper helper = ProjectHelper.getProjectHelper();
-            helper.parse(project, buildFile);
-
-            project.setUserProperty(PUBLICATION_DIRECTORY, publicationDirectory.getAbsolutePath());
-            project.setUserProperty(PUBLICATION_ID, publicationId);
-            project.setUserProperty(SERVLET_CONTEXT_PATH, servletContextPath);
-            project.setUserProperty(CONTEXT_PREFIX, contextPrefix);
-
-            String key;
-            String value;
-            Map.Entry entry;
-
-            for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();) {
-                entry = (Map.Entry) iter.next();
-                key = (String) entry.getKey();
-                value = (String) entry.getValue();
-                project.setUserProperty(key, value);
-            }
-
-            if (target == null) {
-                target = project.getDefaultTarget();
-            }
-
-            project.executeTarget(target);
-        } catch (BuildException e) {
-            error = e;
-            throw new ExecutionException(e);
-        } finally {
-            project.fireBuildFinished(error);
-        }
-    }
-
-    /**
-     * Returns the filename of the logfile to write.
-     * @param publicationDirectory for which publication the filename of the logfile is requested
-     * @return the file path for the log file
-     */
-    protected File getDefaultLogFile(File publicationDirectory) {
-        Calendar now = new GregorianCalendar();
-
-        return new File(publicationDirectory, LOG_PATH + dateFormat.format(now.getTime()) + ".xml");
-    }
-
-    /**
-     * <code>dateFormat</code> The date format
-     */
-    public static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");
-    /**
-     * <code>PUBLICATION_DIRECTORY</code> The publication directory
-     */
-    public static final String PUBLICATION_DIRECTORY = "pub.dir";
-    /**
-     * <code>PUBLICATION_ID</code> The publication id
-     */
-    public static final String PUBLICATION_ID = "pub.id";
-    /**
-     * <code>SERVLET_CONTEXT_PATH</code> The servlet context path
-     */
-    public static final String SERVLET_CONTEXT_PATH = "servlet.context";
-    /**
-     * <code>CONTEXT_PREFIX</code> The context prefix
-     */
-    public static final String CONTEXT_PREFIX = "context.prefix";
-    /**
-     * <code>BUILDFILE</code> The build file
-     */
-    public static final String BUILDFILE = "buildfile";
-    /**
-     * <code>TARGET</code> The target
-     */
-    public static final String TARGET = "target";
-    /**
-     * <code>ANT_PREFIX</code> The ant prefix
-     */
-    public static final String ANT_PREFIX = "ant";
-    /**
-     * <code>PROPERTIES_PREFIX</code> The properties prefix
-     */
-    public static final String PROPERTIES_PREFIX = "properties";
-    /**
-     * <code>DEFAULT_BUILDFILE</code> The default build file
-     */
-    public static final String DEFAULT_BUILDFILE = "config/tasks/targets.xml";
-    /**
-     * <code>LOG_PATH</code> The log path
-     */
-    public static final String LOG_PATH = "logs/tasks/".replace('/', File.separatorChar);
-    /**
-     * <code>PARAMETER_LOGFILE</code> The log file parameter
-     */
-    public static final String PARAMETER_LOGFILE = "logfile";
-
-    /**
-     * Execute the task. All parameters must have been set with parameterize().
-     * @param servletContextPath The servlet context path.
-     * @throws ExecutionException when the execution of the task failed.
-     */
-    public void execute(String servletContextPath) throws ExecutionException {
-        String publicationId;
-        File publicationDirectory;
-        String contextPrefix;
-        File buildFile;
-        String target;
-        Map arguments;
-        Map properties;
-        File logFile;
-
-        try {
-            String buildFileName = getParameters().getParameter("buildfile", DEFAULT_BUILDFILE)
-                    .replace('/', File.separatorChar);
-
-            publicationId = getParameters().getParameter(PARAMETER_PUBLICATION_ID);
-            contextPrefix = getParameters().getParameter(PARAMETER_CONTEXT_PREFIX);
-
-            if (publicationId.equals("")) {
-                publicationDirectory = new File(".");
-                buildFile = new File(buildFileName);
-            } else {
-                PublishingEnvironment environment = new PublishingEnvironment(servletContextPath,
-                        publicationId);
-                publicationDirectory = environment.getPublicationDirectory();
-                buildFile = new File(publicationDirectory, buildFileName);
-            }
-
-            target = getParameters().getParameter(TARGET, null);
-
-            Map parametersMap = Parameters.toProperties(getParameters());
-
-            NamespaceMap antMap = new NamespaceMap(parametersMap, ANT_PREFIX);
-            arguments = antMap.getMap();
-
-            NamespaceMap propertiesMap = new NamespaceMap(parametersMap, PROPERTIES_PREFIX);
-            properties = propertiesMap.getMap();
-
-            // set logfile
-            String logFilename = getParameters().getParameter(PARAMETER_LOGFILE,
-                    getDefaultLogFile(publicationDirectory).getAbsolutePath());
-            logFile = new File(logFilename);
-        } catch (ParameterException e) {
-            throw new ExecutionException(e);
-        }
-
-        executeAntTarget(servletContextPath,
-                contextPrefix,
-                publicationId,
-                publicationDirectory,
-                buildFile,
-                target,
-                arguments,
-                properties,
-                logFile);
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/CommandLineTask.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/CommandLineTask.java
deleted file mode 100644
index 0d30962..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/CommandLineTask.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-/**
- * A command line task
- * @deprecated Use the usecase framework instead.
- */
-public class CommandLineTask extends AbstractTask {
-
-    /**
-     * Execute the task. All parameters must have been set with parameterize().
-     * @see org.apache.lenya.cms.task.Task#execute(java.lang.String)
-     */
-    public void execute(String path) throws ExecutionException {
-        String command = getParameters().getParameter("command",
-                "echo \"Exception: No command parameter\"");
-
-        try {
-            Process process = Runtime.getRuntime().exec(command);
-
-            java.io.InputStream in = process.getInputStream();
-            byte[] buffer = new byte[1024];
-            int bytes_read = 0;
-            java.io.ByteArrayOutputStream baout = new java.io.ByteArrayOutputStream();
-
-            while ((bytes_read = in.read(buffer)) != -1) {
-                baout.write(buffer, 0, bytes_read);
-            }
-
-            if (baout.toString().length() > 0) {
-                throw new ExecutionException("%%%InputStream:S" + baout.toString()
-                        + "END:InputStream%%%");
-            }
-
-            java.io.InputStream in_e = process.getErrorStream();
-            java.io.ByteArrayOutputStream baout_e = new java.io.ByteArrayOutputStream();
-
-            while ((bytes_read = in_e.read(buffer)) != -1) {
-                baout_e.write(buffer, 0, bytes_read);
-            }
-
-            if (baout_e.toString().length() > 0) {
-                throw new ExecutionException("###ErrorStream:START" + baout_e.toString()
-                        + "END:ErrorStream###");
-            }
-        } catch (java.io.IOException e) {
-            throw new ExecutionException(e);
-        }
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/DefaultTaskWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/DefaultTaskWrapper.java
deleted file mode 100644
index a841292..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/DefaultTaskWrapper.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Logger;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-/**
- * The default task wrapper
- * @deprecated Use the usecase framework instead.
- */
-public class DefaultTaskWrapper implements TaskWrapper {
-
-    private static Logger log = Logger.getLogger(DefaultTaskWrapper.class);
-
-    private Map parameters = new HashMap();
-    private TaskWrapperParameters wrapperParameters = new TaskWrapperParameters(getParameterObject());
-    private TaskParameters taskParameters;
-
-    private ServiceManager manager;
-
-    /**
-     * Default ctor for subclasses.
-     * @param manager The service manager to use.
-     */
-    protected DefaultTaskWrapper(ServiceManager manager) {
-        this.manager = manager;
-        this.taskParameters = new TaskParameters(getParameterObject(), manager);
-    }
-
-    /**
-     * Ctor to be called when all task wrapper parameters are known. All keys and values must be
-     * strings or string arrays.
-     * @param _parameters The prefixed parameters.
-     * @param manager The service manager to use.
-     */
-    public DefaultTaskWrapper(Map _parameters, ServiceManager manager) {
-        this(manager);
-        log.debug("Creating");
-
-        List keys = new ArrayList();
-        for (Iterator i = _parameters.keySet().iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            keys.add(key);
-        }
-
-        Collections.sort(keys);
-
-        for (Iterator i = keys.iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            StringBuffer buf = new StringBuffer();
-            String value = null;
-            Object valueObject = _parameters.get(key);
-            if (valueObject instanceof String) {
-                buf.append(((String) valueObject).trim());
-            } else if (valueObject instanceof String[]) {
-                String[] values = (String[]) valueObject;
-                for (int j = 0; j < values.length; j++) {
-                    if (j > 0 && !"".equals(buf.toString())) {
-                        buf.append(",");
-                    }
-                    buf.append(values[j].trim());
-                }
-            } else {
-                log.debug("Not a string value: [" + key + "] = [" + valueObject + "]");
-            }
-
-            value = buf.toString();
-            if (value != null) {
-                log.debug("Setting parameter: [" + key + "] = [" + value + "]");
-                this.parameters.put(key, value);
-            }
-        }
-
-    }
-
-    /**
-     * Ctor. Restores the wrapper parameters from an XML element.
-     * @param parent The parent of the task wrapper element.
-     * @param helper The namespace helper of the document.
-     */
-    public DefaultTaskWrapper(NamespaceHelper helper, Element parent) {
-        log.debug("Creating");
-        restore(helper, parent);
-    }
-
-    /**
-     * Initializes the task wrapper.
-     * @param taskId The task ID.
-     * @param publication The publication.
-     * @param webappUrl The webapp URL.
-     * @param _parameters The task parameters.
-     * @throws ExecutionException when the task ID is null.
-     */
-    protected void initialize(String taskId, Publication publication, String webappUrl,
-            Parameters _parameters) throws ExecutionException {
-        log.debug("Initializing");
-
-        if (taskId.equals(""))
-            throw new ExecutionException();
-
-        getTaskParameters().setPublication(publication);
-        getWrapperParameters().setWebappUrl(webappUrl);
-
-        getWrapperParameters().setTaskId(taskId);
-        getTaskParameters().parameterize(_parameters);
-    }
-
-    /**
-     * Extracts the task parameters from the given objects.
-     * @param _parameters A parameters object.
-     * @param publication A publication.
-     * @param request A request.
-     * @return A parameters object.
-     */
-    protected Parameters extractTaskParameters(Parameters _parameters, Publication publication,
-            Request request) {
-        Parameters _taskParameters = new Parameters();
-        _taskParameters.setParameter(Task.PARAMETER_SERVLET_CONTEXT,
-                publication.getServletContext().getAbsolutePath());
-        _taskParameters.setParameter(Task.PARAMETER_CONTEXT_PREFIX, request.getContextPath());
-        _taskParameters.setParameter(Task.PARAMETER_SERVER_PORT,
-                Integer.toString(request.getServerPort()));
-        _taskParameters.setParameter(Task.PARAMETER_SERVER_URI, "http://" + request.getServerName());
-        _taskParameters.setParameter(Task.PARAMETER_PUBLICATION_ID, publication.getId());
-
-        for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
-            String key = (String) e.nextElement();
-            String value = request.getParameter(key);
-            if (value != null) {
-                _taskParameters.setParameter(key, value);
-            }
-        }
-
-        String[] names = _parameters.getNames();
-        for (int i = 0; i < names.length; i++) {
-            String name = names[i];
-            String value = _parameters.getParameter(name, "");
-            if (value != null) {
-                _taskParameters.setParameter(name, value);
-            }
-        }
-        return _taskParameters;
-    }
-
-    /**
-     * Enables workflow transition invocation.
-     * @param eventName The event name.
-     * @param identity The identity that executes the task.
-     * @param roles The roles of the identity.
-     */
-    public void setWorkflowAware(String eventName, Identity identity, Role[] roles) {
-        NamespaceMap workflowParameters = WorkflowInvoker.extractParameters(eventName,
-                identity,
-                roles);
-        getParameterObject().putAll(workflowParameters.getPrefixedMap());
-    }
-
-    /**
-     * Executes the task.
-     * @throws ExecutionException when something went wrong.
-     */
-    public void execute() throws ExecutionException {
-
-        String taskId = getWrapperParameters().getTaskId();
-
-        if (taskId == null) {
-            throw new ExecutionException("No task id provided!");
-        }
-
-        log.info("===================================");
-        log.info(" Executing task [" + taskId + "]");
-        log.info("-----------------------------------");
-
-        if (!this.wrapperParameters.isComplete()) {
-
-            String[] missingKeys = getWrapperParameters().getMissingKeys();
-            String keyString = "";
-            for (int i = 0; i < missingKeys.length; i++) {
-                if (i > 0) {
-                    keyString += ", ";
-                }
-                keyString += missingKeys[i];
-            }
-            throw new ExecutionException("Parameters missing: [" + keyString + "]");
-        }
-
-        TaskManager manager;
-
-        Publication publication = getTaskParameters().getPublication();
-
-        WorkflowInvoker workflowInvoker = new WorkflowInvoker(getParameters(), this.manager);
-        workflowInvoker.setup(publication, getWrapperParameters().getWebappUrl());
-
-        Task task;
-        try {
-            manager = new TaskManager(publication.getDirectory().getAbsolutePath(), this.manager);
-            task = manager.getTask(taskId);
-
-            Properties properties = new Properties();
-            properties.putAll(getTaskParameters().getMap());
-            Parameters _parameters = Parameters.fromProperties(properties);
-
-            task.parameterize(_parameters);
-        } catch (final ConfigurationException e) {
-            throw new ExecutionException(e);
-        } catch (final ParameterException e) {
-            throw new ExecutionException(e);
-        } catch (final SAXException e) {
-            throw new ExecutionException(e);
-        } catch (final IOException e) {
-            throw new ExecutionException(e);
-        } catch (ExecutionException e) {
-            throw e;
-        }
-
-        log.debug("-----------------------------------");
-        log.debug(" Triggering workflow");
-        log.debug("-----------------------------------");
-
-        // FIXME The new workflow is set before the end of the transition because the document id
-        // and so the document are sometimes changing during the transition (ex archiving , ...)
-        workflowInvoker.invokeTransition();
-
-        log.debug("-----------------------------------");
-        log.debug(" Triggering task");
-        log.debug("-----------------------------------");
-
-        task.execute(publication.getServletContext().getAbsolutePath());
-
-        log.debug("-----------------------------------");
-        log.debug(" Triggering notification");
-        log.debug("-----------------------------------");
-        Notifier notifier = new Notifier(manager, getParameters());
-        notifier.sendNotification(getTaskParameters());
-
-        log.debug("-----------------------------------");
-        log.debug(" Executing task finished.");
-        log.debug("===================================\n\n");
-    }
-
-    /**
-     * Returns the task wrapper parameters.
-     * @return A task wrapper parameters object.
-     */
-    public TaskWrapperParameters getWrapperParameters() {
-        return this.wrapperParameters;
-    }
-
-    /**
-     * Returns the task parameters.
-     * @return A task parameters object.
-     */
-    public TaskParameters getTaskParameters() {
-        return this.taskParameters;
-    }
-
-    protected static final String ELEMENT_TASK = "task";
-    protected static final String ELEMENT_PARAMETER = "parameter";
-    protected static final String ATTRIBUTE_NAME = "name";
-    protected static final String ATTRIBUTE_VALUE = "value";
-
-    /**
-     * Saves the wrapper parameters to an XML element.
-     * @param helper The namespace helper of the document.
-     * @return An XML element.
-     */
-    public Element save(NamespaceHelper helper) {
-        org.w3c.dom.Document document = helper.getDocument();
-        NamespaceHelper taskHelper = new NamespaceHelper(Task.NAMESPACE,
-                Task.DEFAULT_PREFIX,
-                document);
-        Element element = taskHelper.createElement(ELEMENT_TASK);
-
-        List keys = new ArrayList(getParameters().keySet());
-        Collections.sort(keys);
-
-        for (Iterator i = keys.iterator(); i.hasNext();) {
-            String key = (String) i.next();
-            Element parameterElement = taskHelper.createElement(ELEMENT_PARAMETER);
-            parameterElement.setAttribute(ATTRIBUTE_NAME, key);
-            parameterElement.setAttribute(ATTRIBUTE_VALUE, (String) getParameters().get(key));
-            element.appendChild(parameterElement);
-        }
-
-        return element;
-    }
-
-    /**
-     * Restores the wrapper parameters from an XML element.
-     * @param parent The parent of the task wrapper element.
-     * @param helper The namespace helper of the document.
-     */
-    public void restore(NamespaceHelper helper, Element parent) {
-        org.w3c.dom.Document document = helper.getDocument();
-        NamespaceHelper taskHelper = new NamespaceHelper(Task.NAMESPACE,
-                Task.DEFAULT_PREFIX,
-                document);
-        Element taskElement = taskHelper.getFirstChild(parent, ELEMENT_TASK);
-        Element[] parameterElements = taskHelper.getChildren(taskElement, ELEMENT_PARAMETER);
-        for (int i = 0; i < parameterElements.length; i++) {
-            String key = parameterElements[i].getAttribute(ATTRIBUTE_NAME);
-            String value = parameterElements[i].getAttribute(ATTRIBUTE_VALUE);
-            getParameterObject().put(key, value);
-        }
-    }
-
-    /**
-     * Returns all prefixed parameters.
-     * @return A map.
-     */
-    public Map getParameters() {
-        return Collections.unmodifiableMap(this.parameters);
-    }
-
-    /**
-     * Returns all prefixed parameters.
-     * @return A map.
-     */
-    protected Map getParameterObject() {
-        return this.parameters;
-    }
-
-    /**
-     * Sets the notification parameters.
-     * @param notificationParameters The notification parameters.
-     */
-    protected void setNotifying(NamespaceMap notificationParameters) {
-        log.info("Enabling notification");
-        getParameterObject().putAll(notificationParameters.getPrefixedMap());
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/EmptyTask.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/EmptyTask.java
deleted file mode 100644
index a5fc5ee..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/EmptyTask.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-/**
- * The empty task
- * @deprecated Use the usecase framework instead.
- */
-public class EmptyTask extends AbstractTask {
-
-    /**
-     * @see org.apache.lenya.cms.task.Task#execute(java.lang.String)
-     */
-    public void execute(String servletContextPath) throws ExecutionException {
-        // do nothing
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ExecutionException.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ExecutionException.java
deleted file mode 100644
index 900e163..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ExecutionException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-/**
- * An Exception that is thrown when an error occurs during a task execution.
- * @deprecated Use the usecase framework instead.
- */
-public class ExecutionException extends Exception {
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-
-    /** Creates a new instance of ExecutionException */
-    public ExecutionException() {
-        // do nothing
-    }
-
-    /**
-     * Creates a new instance of ExecutionException
-     * @param message the exception message
-     */
-    public ExecutionException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new instance of ExecutionException
-     * @param message the exception message
-     * @param cause the exception cause
-     */
-    public ExecutionException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new instance of ExecutionException
-     * @param cause the exception cause
-     */
-    public ExecutionException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/HelloWorldTask.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/HelloWorldTask.java
deleted file mode 100644
index b149073..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/HelloWorldTask.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-/**
- * A simple task to demonstrate the task behaviour. It outputs a string to the log4j log file. The
- * following parameter can be provided:<br/ ><code><strong>text</strong></code>: the string to
- * be printed<br/ > If the parameter is omitted, "Hello World" is printed.
- * @deprecated Use the usecase framework instead.
- */
-public class HelloWorldTask extends AbstractTask {
-    /**
-     * Creates a new instance of HelloWorldTask
-     */
-    public HelloWorldTask() {
-        // do nothing
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.Task#execute(java.lang.String)
-     */
-    public void execute(String path) throws ExecutionException {
-        // do nothing
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Notifier.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Notifier.java
deleted file mode 100644
index 52a617a..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Notifier.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.log4j.Logger;
-
-/**
- * Task Notification
- * @deprecated Use the usecase framework instead.
- */
-public class Notifier extends ParameterWrapper {
-
-    private static Logger log = Logger.getLogger(Notifier.class);
-
-    /**
-     * <code>PREFIX</code> Notification namespace prefix
-     */
-    public static final String PREFIX = "notification";
-    /**
-     * <code>TARGET</code> Notification target
-     */
-    public static final String TARGET = "notification";
-    /**
-     * <code>PARAMETER_TO</code> To Parameter
-     */
-    public static final String PARAMETER_TO = "tolist";
-    /**
-     * <code>PARAMETER_FROM</code> From Parameter
-     */
-    public static final String PARAMETER_FROM = "from";
-
-    private TaskManager taskManager;
-
-    /**
-     * Ctor.
-     * @param _taskManager The task manager.
-     * @param parameters The task wrapper parameters.
-     */
-    public Notifier(TaskManager _taskManager, Map parameters) {
-        super(parameters);
-        this.taskManager = _taskManager;
-    }
-
-    /**
-     * Sends the notification message.
-     * @param taskParameters The task parameters.
-     * @throws ExecutionException when something went wrong.
-     */
-    public void sendNotification(TaskParameters taskParameters) throws ExecutionException {
-
-        if (getMap().isEmpty()) {
-            log.info("Not sending notification: no parameters provided.");
-        } else if ("".equals(get(PARAMETER_TO).trim())) {
-            log.info("Not sending notification: empty notification.tolist parameter.");
-        } else {
-            log.info("Sending notification");
-
-            Task task = this.taskManager.getTask(TaskManager.ANT_TASK);
-
-            Parameters params = new Parameters();
-
-            params.setParameter(AntTask.TARGET, TARGET);
-
-            String[] keys = { Task.PARAMETER_PUBLICATION_ID, Task.PARAMETER_CONTEXT_PREFIX,
-                    Task.PARAMETER_SERVER_PORT, Task.PARAMETER_SERVER_URI,
-                    Task.PARAMETER_SERVLET_CONTEXT };
-
-            for (int i = 0; i < keys.length; i++) {
-                params.setParameter(keys[i], taskParameters.get(keys[i]));
-            }
-
-            NamespaceMap mailMap = new NamespaceMap(PREFIX);
-            mailMap.putAll(getMap());
-            NamespaceMap propertiesMap = new NamespaceMap(AntTask.PROPERTIES_PREFIX);
-            propertiesMap.putAll(mailMap.getPrefixedMap());
-
-            Map prefixMap = propertiesMap.getPrefixedMap();
-            String key;
-            String value;
-            Map.Entry entry;
-
-            for (Iterator iter = prefixMap.entrySet().iterator(); iter.hasNext();) {
-                entry = (Map.Entry) iter.next();
-                key = (String) entry.getKey();
-                value = (String) entry.getValue();
-                String trimmedValue = value.replace((char) 160, ' ');
-                trimmedValue = trimmedValue.trim();
-                if (log.isDebugEnabled()) {
-                    log.debug("Trimming value [" + value + "] to [" + trimmedValue + "]");
-                    log.debug("First character: [" + value.charAt(0) + "] = ["
-                            + (int) value.charAt(0) + "]");
-                }
-                params.setParameter(key, trimmedValue);
-            }
-
-            try {
-                task.parameterize(params);
-            } catch (ParameterException e) {
-                throw new ExecutionException(e);
-            }
-            log.info("    Executing notification target ...");
-            try {
-                task.execute(taskParameters.get(Task.PARAMETER_SERVLET_CONTEXT));
-            } catch (Exception e) {
-                log.error("Error during notification: ", e);
-            }
-            log.info("    Notification target executed.");
-        }
-    }
-
-    /**
-     * Returns the task manager.
-     * @return A task manager.
-     */
-    protected TaskManager getTaskManager() {
-        return this.taskManager;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
-     */
-    public String getPrefix() {
-        return PREFIX;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
-     */
-    protected String[] getRequiredKeys() {
-        String[] requiredKeys = {};
-        return requiredKeys;
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ParameterWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ParameterWrapper.java
deleted file mode 100644
index 588ab22..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/ParameterWrapper.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.log4j.Logger;
-
-/**
- * Parameter wrapper class
- * @deprecated Use the usecase framework instead.
- */
-public abstract class ParameterWrapper {
-
-    private static Logger log = Logger.getLogger(ParameterWrapper.class);
-    private NamespaceMap parameters;
-
-    /**
-     * Returns the un-prefixed parameters.
-     * @return A map.
-     */
-    public Map getMap() {
-        return this.parameters.getMap();
-    }
-
-    /**
-     * Ctor.
-     * @param prefixedParameters The prefixed parameters to wrap.
-     */
-    public ParameterWrapper(Map prefixedParameters) {
-        this.parameters = new NamespaceMap(prefixedParameters, getPrefix());
-    }
-
-    /**
-     * Returns the namespace prefix.
-     * @return A string.
-     */
-    public abstract String getPrefix();
-
-    /**
-     * Adds a key-value pair. If the value is null, no pair is added.
-     * @param key The key.
-     * @param value The value.
-     */
-    public void put(String key, String value) {
-        if (value != null) {
-            log.debug("Setting parameter: [" + key + "] = [" + value + "]");
-            this.parameters.put(key, value);
-        } else {
-            log.debug("Not setting parameter: [" + key + "] = [" + value + "]");
-        }
-    }
-
-    /**
-     * Returns the value for a key.
-     * @param key The key.
-     * @return The value.
-     */
-    public String get(String key) {
-        return (String) this.parameters.get(key);
-    }
-
-    /**
-     * Returns the required keys.
-     * @return A string array.
-     */
-    protected abstract String[] getRequiredKeys();
-
-    /**
-     * Checks if this parameters object contains all necessary parameters.
-     * @return A boolean value.
-     */
-    public boolean isComplete() {
-        boolean complete = true;
-        Map parameterMap = getMap();
-        String[] requiredKeys = getRequiredKeys();
-        int i = 0;
-        while (complete && i < requiredKeys.length) {
-            log.debug("Checking parameter: [" + requiredKeys[i] + "]");
-            complete = complete && parameterMap.containsKey(requiredKeys[i]);
-            log.debug("OK: [" + complete + "]");
-            i++;
-        }
-        return complete;
-    }
-
-    /**
-     * Returns the missing parameters parameters.
-     * @return A string array.
-     */
-    public String[] getMissingKeys() {
-        String[] requiredKeys = getRequiredKeys();
-        Map parameterMap = getMap();
-        List keyList = new ArrayList();
-        for (int i = 0; i < requiredKeys.length; i++) {
-            if (!parameterMap.containsKey(requiredKeys[i])) {
-                keyList.add(requiredKeys[i]);
-            }
-        }
-        return (String[]) keyList.toArray(new String[keyList.size()]);
-    }
-
-    /**
-     * Parameterizes this wrapper with un-prefixed parameters.
-     * @param _parameters A parameters object.
-     */
-    public void parameterize(Parameters _parameters) {
-        String[] keys = _parameters.getNames();
-        for (int i = 0; i < keys.length; i++) {
-            put(keys[i], _parameters.getParameter(keys[i], null));
-        }
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Task.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Task.java
deleted file mode 100644
index 626de8e..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/Task.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.service.ServiceManager;
-
-/**
- * A Task is a command that can be executed. <br/>
- * When a Task is executed from a TaskAction or initialized from a TaskJob, the default
- * parameters are provided. <strong>This is not a contract!</strong>
- * 
- * @deprecated Use the usecase framework instead.
- */
-public interface Task extends Parameterizable {
-    
-    /**
-     * <code>NAMESPACE</code> The task namespace
-     */
-    public final static String NAMESPACE = "http://apache.org/cocoon/lenya/task/1.0";
-    /**
-     * <code>DEFAULT_PREFIX</code> The task namespace prefix
-     */
-    public final static String DEFAULT_PREFIX = "task";
-    /**
-     * <code>SUCCESS</code> Success
-     */
-    public final static int SUCCESS = 0;
-    /**
-     * <code>FAILURE</code> Failure
-     */
-    public final static int FAILURE = 1;
-
-    /**
-     * The path of the servlet
-     * context:<br/><code>/home/user_id/build/jakarta-tomcat/webapps/lenyacms</code>
-     */
-    String PARAMETER_SERVLET_CONTEXT = "servlet-context";
-
-    /**
-     * The server
-     * URI:<br/><code><strong>http://www.yourhost.com</strong>:8080/lenya/publication/index.html</code>
-     */
-    String PARAMETER_SERVER_URI = "server-uri";
-
-    /**
-     * The server
-     * port:<br/><code>http://www.yourhost.com:<strong>8080</strong>/lenya/publication/index.html</code>
-     */
-    String PARAMETER_SERVER_PORT = "server-port";
-
-    /**
-     * The part of the URI that precedes the publication
-     * ID:<br/><code>http://www.yourhost.com:8080<strong>/lenya</strong>/publication/index.html</code>
-     */
-    String PARAMETER_CONTEXT_PREFIX = "context-prefix";
-
-    /**
-     * The publication
-     * ID:<br/><code>http://www.yourhost.com:8080/lenya/<strong>publication</strong>/index.html</code>
-     */
-    String PARAMETER_PUBLICATION_ID = "publication-id";
-
-    /**
-     * Execute the task. All parameters must have been set with parameterize().
-     * @param servletContextPath the servlet-context
-     * @throws ExecutionException if the execution fails
-     */
-    void execute(String servletContextPath) throws ExecutionException;
-
-    /**
-     * Set the label that is used to identify the task.
-     * @param label the label
-     */
-    void setLabel(String label);
-    
-    /**
-     * Returns the result of the task ({@link #SUCCESS}, {@link #FAILURE}).
-     * @return #SUCCESS for success, #FAILURE for failure
-     */
-    int getResult();
-    
-    /**
-     * Passes the service manager to the task.
-     * @param manager The service manager.
-     */
-    void service(ServiceManager manager);
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskFactory.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskFactory.java
deleted file mode 100644
index da50be1..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskFactory.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log4j.Logger;
-
-/**
- * A Task factory
- * @deprecated Use the usecase framework instead.
- */
-public class TaskFactory {
-
-    /**
-     * Create a new instance of <code>TaskFactory</code>
-     */
-    protected TaskFactory() {
-        // do nothing
-    }
-
-    private static TaskFactory factory;
-    private static Logger log = Logger.getLogger(TaskFactory.class);
-
-    /**
-     * Get an instance of the task factory
-     * @return A task factory
-     */
-    public static TaskFactory getInstance() {
-        if (factory == null) {
-            factory = new TaskFactory();
-        }
-
-        return factory;
-    }
-
-    /**
-     * Create a task
-     * @param configuration The configuration for the task
-     * @return The task
-     */
-    public Task createTask(Configuration configuration) {
-
-        try {
-            String className = configuration.getAttribute("class",
-                    "org.apache.lenya.cms.task.TaskSequence");
-            Class cl = Class.forName(className);
-            Task task = (Task) cl.newInstance();
-
-            task.setLabel(configuration.getChild("label").getValue("default task"));
-
-            task.parameterize(Parameters.fromConfiguration(configuration));
-
-            if (task instanceof TaskSequence) {
-                ((TaskSequence) task).init(configuration);
-            }
-
-            return task;
-        } catch (final ParameterException e) {
-            log.error("Cannot create Task: ", e);
-            return null;
-        } catch (final ConfigurationException e) {
-            log.error("Cannot create Task: ", e);
-            return null;
-        } catch (final ClassNotFoundException e) {
-            log.error("Cannot create Task: ", e);
-            return null;
-        } catch (final InstantiationException e) {
-            log.error("Cannot create Task: ", e);
-            return null;
-        } catch (final IllegalAccessException e) {
-            log.error("Cannot create Task: ", e);
-            return null;
-        }
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskManager.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskManager.java
deleted file mode 100644
index fab91e7..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskManager.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-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.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.log4j.Logger;
-import org.xml.sax.SAXException;
-
-/**
- * The task manager
- * @deprecated Use the usecase framework instead.
- */
-public class TaskManager implements Configurable {
-    private static Logger log = Logger.getLogger(TaskManager.class);
-    /**
-     * <code>TASK_ELEMENT</code> The task element
-     */
-    public static final String TASK_ELEMENT = "task";
-    /**
-     * <code>TASK_ID_ATTRIBUTE</code> The task id attribute
-     */
-    public static final String TASK_ID_ATTRIBUTE = "id";
-    /**
-     * <code>CONFIGURATION_FILE</code> The path to the configuration file
-     */
-    public static final String CONFIGURATION_FILE = File.separator + "config" + File.separator
-            + "tasks" + File.separator + "tasks.xconf";
-
-    /**
-     * <code>EMTPY_TASK</code> Constant for an empty task
-     */
-    public static final String EMTPY_TASK = "empty";
-    /**
-     * <code>ANT_TASK</code> Constant for an ant task
-     */
-    public static final String ANT_TASK = "ant";
-
-    // maps task-ids to tasks
-    private Map tasks = new HashMap();
-
-    private ServiceManager manager;
-
-    /**
-     * Creates a new TaskManager object.
-     * @param manager The service manager to use.
-     */
-    public TaskManager(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    /**
-     * Creates a new instance of TaskManager
-     * @param publicationPath path to publication
-     * @param manager The service manager to use.
-     * @throws ConfigurationException if the configuration failed.
-     * @throws SAXException when parsing the config file failed.
-     * @throws IOException when an I/O error occured.
-     */
-    public TaskManager(String publicationPath, ServiceManager manager)
-            throws ConfigurationException, SAXException, IOException {
-        this(manager);
-
-        String configurationFilePath = publicationPath + CONFIGURATION_FILE;
-        log.debug("Loading tasks: " + configurationFilePath);
-
-        File configurationFile = new File(configurationFilePath);
-
-        if (configurationFile.isFile()) {
-            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-            Configuration configuration = builder.buildFromFile(configurationFile);
-            configure(configuration);
-
-        } else {
-            log.info("Task configuration not loaded - file [" + configurationFile.getAbsolutePath()
-                    + "] does not exist.");
-        }
-
-        Task empty = new EmptyTask();
-        empty.service(this.manager);
-        this.tasks.put(EMTPY_TASK, empty);
-
-        Task ant = new AntTask();
-        ant.service(this.manager);
-        this.tasks.put(ANT_TASK, ant);
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-        log.debug("Creating tasks:");
-
-        // create task list
-        Configuration[] taskConfigurations = configuration.getChildren(TASK_ELEMENT);
-
-        // set task IDs
-        for (int i = 0; i < taskConfigurations.length; i++) {
-            String taskId = taskConfigurations[i].getAttribute(TASK_ID_ATTRIBUTE);
-            log.debug("Creating task '" + taskId + "'");
-
-            Task task = TaskFactory.getInstance().createTask(taskConfigurations[i]);
-            task.service(this.manager);
-            this.tasks.put(taskId, task);
-        }
-    }
-
-    /**
-     * Return all task ids
-     * @return The task ids
-     */
-    public String[] getTaskIds() {
-        return (String[]) this.tasks.keySet().toArray(new String[this.tasks.size()]);
-    }
-
-    /**
-     * Get the task with a given task-id
-     * @param taskId the task-id of the requested task
-     * @return the task
-     * @throws ExecutionException if there is no task with the given task-id.
-     */
-    public Task getTask(String taskId) throws ExecutionException {
-        if (!this.tasks.containsKey(taskId)) {
-            throw new ExecutionException("Task with ID '" + taskId + "' not found!");
-        }
-
-        return (Task) this.tasks.get(taskId);
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskParameters.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskParameters.java
deleted file mode 100644
index 8c61124..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskParameters.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *  
- */
-
-/* $Id$ */
-
-package org.apache.lenya.cms.task;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-
-/**
- * Task Parameters
- * @deprecated Use the usecase framework instead.
- */
-public class TaskParameters extends ParameterWrapper {
-    /**
-     * <code>REQUIRED_KEYS</code> Required task parameters
-     */
-    public static final String[] REQUIRED_KEYS = { Task.PARAMETER_SERVLET_CONTEXT,
-            Task.PARAMETER_SERVER_URI, Task.PARAMETER_SERVER_PORT, Task.PARAMETER_CONTEXT_PREFIX,
-            Task.PARAMETER_PUBLICATION_ID };
-    /**
-     * <code>PREFIX</code> The task prefix
-     */
-    public static final String PREFIX = "task";
-
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param prefixedParameters The prefixed parameters .
-     * @param manager The service manager.
-     */
-    public TaskParameters(Map prefixedParameters, ServiceManager manager) {
-        super(prefixedParameters);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
-     */
-    public String getPrefix() {
-        return PREFIX;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
-     */
-    protected String[] getRequiredKeys() {
-        return REQUIRED_KEYS;
-    }
-
-    /**
-     * Returns the publication.
-     * @return A publication.
-     * @throws ExecutionException when something went wrong.
-     */
-    public Publication getPublication() throws ExecutionException {
-        Publication publication;
-        try {
-            publication = PublicationUtil.getPublication(this.manager,
-                    get(Task.PARAMETER_PUBLICATION_ID));
-        } catch (PublicationException e) {
-            throw new ExecutionException(e);
-        }
-        return publication;
-    }
-
-    /**
-     * Sets the publication.
-     * @param publication A publication.
-     */
-    public void setPublication(Publication publication) {
-        put(Task.PARAMETER_PUBLICATION_ID, publication.getId());
-        put(Task.PARAMETER_SERVLET_CONTEXT, publication.getServletContext().getAbsolutePath());
-    }
-
-    /**
-     * Sets the servlet context path.
-     * @param servletContextPath A string.
-     */
-    public void setServletContextPath(String servletContextPath) {
-        put(Task.PARAMETER_SERVLET_CONTEXT, servletContextPath);
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskSequence.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskSequence.java
deleted file mode 100644
index 2ca17b7..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskSequence.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log4j.Logger;
-
-/**
- * A TaskSequence contains of multiple tasks that are executed successively.
- * @deprecated Use the usecase framework instead.
- */
-public class TaskSequence extends AbstractTask {
-    private static Logger log = Logger.getLogger(TaskSequence.class);
-
-    // keeps the task order
-    private Task[] tasks;
-    private TaskManager taskManager;
-
-    /**
-     * Initialize the task
-     * @param configuration The configuration
-     * @throws ConfigurationException if an error occurs
-     */
-    public void init(Configuration configuration) throws ConfigurationException {
-        this.taskManager = new TaskManager(getServiceManager());
-        this.taskManager.configure(configuration);
-
-        // create task list
-        Configuration[] taskConfigurations = configuration.getChildren(TaskManager.TASK_ELEMENT);
-        this.tasks = new Task[taskConfigurations.length];
-
-        // set task IDs
-        for (int i = 0; i < this.tasks.length; i++) {
-            String taskId = taskConfigurations[i].getAttribute(TaskManager.TASK_ID_ATTRIBUTE);
-
-            try {
-                this.tasks[i] = this.taskManager.getTask(taskId);
-            } catch (ExecutionException e) {
-                throw new ConfigurationException("Sequence initialization failed: ", e);
-            }
-
-            log.debug("Adding task '" + taskId + "' to sequence.");
-        }
-    }
-
-    /**
-     * Returns the tasks in this sequence.
-     * @return The tasks
-     */
-    public Task[] getTasks() {
-        return (Task[]) this.tasks.clone();
-    }
-
-    /**
-     * Returns the TaskManager that is used to manage the tasks of this TaskSequence.
-     * @return The task manager
-     */
-    protected TaskManager getTaskManager() {
-        return this.taskManager;
-    }
-
-    /**
-     * Returns the ID of a specific Task.
-     * @param task the specific task for which the task id is requested.
-     * @return the task id of the given task
-     * @throws ExecutionException if the task could not be found.
-     */
-    public String getTaskId(Task task) throws ExecutionException {
-        String[] taskIds = getTaskManager().getTaskIds();
-
-        for (int j = 0; j < taskIds.length; j++) {
-            if (getTaskManager().getTask(taskIds[j]) == task) {
-                return taskIds[j];
-            }
-        }
-
-        throw new IllegalStateException("Task-ID for " + task + " not found!");
-    }
-
-    /**
-     * Executes the tasks.
-     * @param path The path to the tasks
-     * @throws ExecutionException if the execution fails
-     */
-    public void execute(String path) throws ExecutionException {
-
-        try {
-            Task[] _tasks = getTasks();
-
-            for (int i = 0; i < _tasks.length; i++) {
-                Task task = _tasks[i];
-                String taskId = getTaskId(task);
-                log.debug("Executing task '" + taskId + "'");
-
-                // create task parameters
-                Parameters taskParameters = new Parameters();
-                String[] names = getParameters().getNames();
-
-                for (int parIndex = 0; parIndex < names.length; parIndex++) {
-                    String name = names[parIndex];
-                    boolean useParameter = true;
-
-                    if (useParameter) {
-                        taskParameters.setParameter(name, getParameters().getParameter(name));
-                    }
-                }
-
-                // execute task
-                task.parameterize(taskParameters);
-                task.execute(path);
-            }
-        } catch (final IllegalStateException e) {
-            log.error("Cannot execute TaskSequence: ", e);
-            throw new ExecutionException(e);
-        } catch (final ParameterException e) {
-            log.error("Cannot execute TaskSequence: ", e);
-            throw new ExecutionException(e);
-        } catch (final ExecutionException e) {
-            log.error("Cannot execute TaskSequence: ", e);
-            throw new ExecutionException(e);
-        }
-    }
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapper.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapper.java
deleted file mode 100644
index d957253..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.util.Map;
-
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * A TaskWrapper encapsulates all information that is needed to execute a certain task, including
- * e.g. workflow and notification parameters.
- * @deprecated Use the usecase framework instead.
- */
-public interface TaskWrapper {
-
-    /**
-     * Executes the task.
-     * @throws ExecutionException when something went wrong.
-     */
-    void execute() throws ExecutionException;
-
-    /**
-     * Saves the wrapper parameters to an XML element.
-     * @param helper The namespace helper of the document.
-     * @return An XML element.
-     */
-    Element save(NamespaceHelper helper);
-
-    /**
-     * @param helper The namespace helper of the document. Restores the wrapper parameters from an
-     *            XML element.
-     * @param element An XML element.
-     */
-    void restore(NamespaceHelper helper, Element element);
-
-    /**
-     * Returns the task wrapper parameters.
-     * @return A map.
-     */
-    Map getParameters();
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapperParameters.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapperParameters.java
deleted file mode 100644
index a26c4cc..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/TaskWrapperParameters.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.task;
-
-import java.util.Map;
-
-/**
- * The task wrapper parameters
- * @deprecated Use the usecase framework instead.
- */
-public class TaskWrapperParameters extends ParameterWrapper {
-
-    /**
-     * <code>TASK_ID</code> The task id
-     */
-    public static final String TASK_ID = "task-id";
-    /**
-     * <code>WEBAPP_URL</code> The webapp URL
-     */
-    public static final String WEBAPP_URL = "webapp-url";
-    /**
-     * <code>PREFIX</code> The prefix
-     */
-    public static final String PREFIX = "wrapper";
-
-    protected static final String[] REQUIRED_KEYS = { TASK_ID, WEBAPP_URL };
-
-    /**
-     * Ctor.
-     * @param parameters The parameter map to use.
-     */
-    public TaskWrapperParameters(Map parameters) {
-        super(parameters);
-    }
-
-    /**
-     * Returns the required keys.
-     * @return A string array.
-     */
-    public String[] getRequiredKeys() {
-        return REQUIRED_KEYS;
-    }
-
-    /**
-     * Returns the task ID.
-     * @return A string.
-     */
-    public String getTaskId() {
-        return get(TASK_ID);
-    }
-
-    /**
-     * Returns the webapp URL.
-     * @return A string.
-     */
-    public String getWebappUrl() {
-        return get(WEBAPP_URL);
-    }
-
-    /**
-     * Sets the webapp URL.
-     * @param url A url.
-     */
-    public void setWebappUrl(String url) {
-        put(WEBAPP_URL, url);
-    }
-
-    /**
-     * Sets the task ID.
-     * @param taskId A string.
-     */
-    public void setTaskId(String taskId) {
-        put(TASK_ID, taskId);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
-     */
-    public String getPrefix() {
-        return PREFIX;
-    }
-
-}
diff --git a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/WorkflowInvoker.java b/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/WorkflowInvoker.java
deleted file mode 100644
index 12fad5c..0000000
--- a/trunk/src/modules-legacy/task/java/src/org/apache/lenya/cms/task/WorkflowInvoker.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *  
- */
-
-/* $Id$ */
-
-package org.apache.lenya.cms.task;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.util.NamespaceMap;
-import org.apache.log4j.Logger;
-
-/**
- * The workflow invoker
- * @deprecated Use the usecase framework instead.
- */
-public class WorkflowInvoker extends ParameterWrapper {
-
-    private static Logger log = Logger.getLogger(WorkflowInvoker.class);
-    private ServiceManager manager;
-
-    /**
-     * <code>ROLES</code> The roles
-     */
-    public static final String ROLES = "roles";
-    /**
-     * <code>USER_ID</code> The user id
-     */
-    public static final String USER_ID = "user-id";
-    /**
-     * <code>MACHINE</code> The machine
-     */
-    public static final String MACHINE = "machine";
-    /**
-     * <code>EVENT</code> The event
-     */
-    public static final String EVENT = "event";
-    /**
-     * <code>PREFIX</code> The workflow namespace prefix
-     */
-    public static final String PREFIX = "workflow";
-    /**
-     * <code>EVENT_REQUEST_PARAMETER</code> The workflow event request parameter
-     */
-    public static final String EVENT_REQUEST_PARAMETER = "workflow.event";
-    /**
-     * <code>LENYA_EVENT_REQUEST_PARAMETER</code> The Lenya event request parameter
-     */
-    public static final String LENYA_EVENT_REQUEST_PARAMETER = "lenya.event";
-
-    /**
-     * Ctor.
-     * 
-     * @param eventName The event name.
-     * @param identity The identity.
-     * @param roles The roles.
-     * @return A namespace map containing the parameters.
-     */
-    public static NamespaceMap extractParameters(String eventName, Identity identity, Role[] roles) {
-        NamespaceMap parameters = new NamespaceMap(PREFIX);
-        log.debug("Extractign workflow invoker parameters.");
-        log.debug("    Event: [" + eventName + "]");
-        parameters.put(EVENT, eventName);
-        setRoles(parameters, roles);
-        setIdentity(parameters, identity);
-        return parameters;
-    }
-
-    /**
-     * Ctor.
-     * 
-     * @param parameters A map containing the prefixed parameters.
-     * @param manager The service manager.
-     */
-    public WorkflowInvoker(Map parameters, ServiceManager manager) {
-        super(parameters);
-        this.manager = manager;
-    }
-
-    /**
-     * Returns the role names.
-     * 
-     * @return A string array.
-     */
-    protected String[] getRoleIDs() {
-        String rolesString = get(ROLES);
-        String[] roleIDs = rolesString.split(",");
-        return roleIDs;
-    }
-
-    /**
-     * Sets the roles.
-     * 
-     * @param parameters A workflow invoker namespace map.
-     * @param roles A role array.
-     */
-    public static void setRoles(NamespaceMap parameters, Role[] roles) {
-
-        StringBuffer buf = new StringBuffer();
-        for (int i = 0; i < roles.length; i++) {
-            if (i > 0) {
-                buf.append(",");
-            }
-            buf.append(roles[i].getId());
-        }
-        String roleString = buf.toString();
-        parameters.put(ROLES, roleString);
-    }
-
-    /**
-     * Sets the identity.
-     * 
-     * @param parameters A workflow invoker namespace map.
-     * @param identity An identity.
-     */
-    public static void setIdentity(NamespaceMap parameters, Identity identity) {
-
-        String userId = "";
-        User user = identity.getUser();
-        if (user != null) {
-            userId = user.getId();
-        }
-        parameters.put(USER_ID, userId);
-
-        String machineIp = "";
-        Machine machine = identity.getMachine();
-        if (machine != null) {
-            machineIp = machine.getIp();
-        }
-        parameters.put(MACHINE, machineIp);
-    }
-
-    /**
-     * Returns the workflow event name.
-     * @return A string.
-     */
-    public String getEventName() {
-        return get(EVENT);
-    }
-
-    /**
-     * Returns the user ID.
-     * @return A string.
-     */
-    public String getUserId() {
-        return get(USER_ID);
-    }
-
-    /**
-     * Returns the machine IP address.
-     * @return A string.
-     */
-    public String getMachineIp() {
-        return get(MACHINE);
-    }
-
-    private Document document;
-
-    /**
-     * Initializes the workflow invoker.
-     * 
-     * @param publication The publication.
-     * @param webappUrl The webapp URL.
-     * @throws ExecutionException when something went wrong.
-     */
-    public void setup(Publication publication, String webappUrl) throws ExecutionException {
-        String eventName = getEventName();
-        if (eventName == null) {
-            log.debug("No workflow event.");
-        } else {
-            log.debug("Workflow event: [" + eventName + "]");
-            // check for workflow instance first (task can initialize the workflow history)
-            try {
-                Session session = RepositoryUtil.createSession(this.manager, null);
-                DocumentFactory map = DocumentUtil.createDocumentIdentityMap(this.manager, session);
-                this.document = map.getFromURL(webappUrl);
-            } catch (Exception e) {
-                throw new ExecutionException(e);
-            }
-        }
-    }
-
-    /**
-     * Invokes the transition.
-     * @throws ExecutionException when something went wrong.
-     */
-    public void invokeTransition() throws ExecutionException {
-
-        try {
-            Session session = RepositoryUtil.createSession(this.manager, null);
-            WorkflowUtil.invoke(this.manager,
-                    session,
-                    new ConsoleLogger(),
-                    this.document,
-                    getEventName());
-        } catch (Exception e) {
-            throw new ExecutionException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
-     */
-    public String getPrefix() {
-        return PREFIX;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
-     */
-    protected String[] getRequiredKeys() {
-        String[] keys = {};
-        return keys;
-    }
-
-}
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/repository.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/repository.xconf
deleted file mode 100644
index 64f41fa..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/repository.xconf
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-  
-  <!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-  
-  <xconf xpath="/cocoon"
-    remove="/cocoon/component[@role = 'javax.jcr.Repository']"
-    unless="/cocoon/component[@role = 'javax.jcr.Repository'][@class = 'org.apache.lenya.cms.jcr.LenyaRepository']"
-    if-prop="patch.webapp">
-    
-    <component class="org.apache.lenya.cms.jcr.LenyaRepository" logger="jcr" role="javax.jcr.Repository">
-      <credentials login="anonymous" password=""/>
-      <jaas src="context://jcr-repository/jaas.config"/>
-      <home src="context://jcr-repository/repository"/>
-      <configuration src="context://jcr-repository/repository.xml"/>
-      
-      <namespace prefix="dc" uri="http://purl.org/dc/elements/1.1/"/>
-      <namespace prefix="dcterms" uri="http://purl.org/dc/terms/"/>
-      <namespace prefix="lenya" uri="http://apache.org/cocoon/lenya/page-envelope/1.0"/>
-    </component>
-    
-  </xconf>
-  
\ No newline at end of file
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/sourcefactory.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/sourcefactory.xconf
deleted file mode 100644
index 92bdb54..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/sourcefactory.xconf
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-  
-  <!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-  
-  <xconf xpath="/cocoon/source-factories"
-    remove="/cocoon/source-factories/component-instance[@name = 'jcr']"
-    unless="/cocoon/source-factories/component-instance[@name = 'jcr'][@class = 'org.apache.lenya.cms.jcr.LenyaJCRSourceFactory']">
-    
-    <component-instance class="org.apache.lenya.cms.jcr.LenyaJCRSourceFactory" name="jcr">
-      <folder-node new-file="nt:file" new-folder="nt:folder" type="rep:root"/>
-      <folder-node new-file="nt:file" new-folder="nt:unstructured" type="nt:unstructured"/>
-      <folder-node type="nt:folder" new-file="nt:file"/>
-      <file-node content-path="jcr:content" content-type="nt:resource" type="nt:file"/>
-      <file-node content-ref="jcr:content" type="nt:linkedFile"/>
-      <content-node type="nt:resource"
-        content-prop="jcr:data"
-        mimetype-prop="jcr:mimeType"
-        lastmodified-prop="jcr:lastModified"
-        validity-prop="jcr:lastModified"/>
-    </component-instance>
-    
-  </xconf>
-  
\ No newline at end of file
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-export.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-export.xconf
deleted file mode 100644
index 7aebd51..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-export.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'jcr.export']">
-
-  <component-instance name="jcr.export" logger="lenya.jcr"
-    class="org.apache.lenya.cms.usecase.DummyUsecase">
-    <view uri="/modules/jcrsource/lenya-repository-content.xml" menu="false"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-import.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-import.xconf
deleted file mode 100644
index dcb054e..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-import.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'jcr.import']">
-  
-  <component-instance name="jcr.import" logger="lenya.jcr"
-    class="org.apache.lenya.cms.jcr.usecases.Import">
-    <view uri="modules/jcrsource/usecases/import.jx" menu="false"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport-tab.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport-tab.xconf
deleted file mode 100644
index 51c85e3..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport-tab.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/gui-manager/tab-group[@name = 'admin']"
-       unless="/cocoon/gui-manager/tab-group[@name = 'admin']/tab[@name = 'jcr']">
-
-  <tab name="jcr" label="JCR" usecase="jcr.importExport"/>
-  
-</xconf>
diff --git a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport.xconf b/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport.xconf
deleted file mode 100644
index 72149a6..0000000
--- a/trunk/src/modules-optional/jcrsource/config/cocoon-xconf/usecase-importExport.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'jcr.importExport']">
-
-  <component-instance name="jcr.importExport" logger="lenya.jcr"
-    class="org.apache.lenya.cms.jcr.usecases.JCRImport">
-    <view uri="modules/jcrsource/usecases/importExport/importExport.jx" menu="true">
-      <tab group="admin" name="jcr"/>
-    </view>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules-optional/jcrsource/config/module.xml b/trunk/src/modules-optional/jcrsource/config/module.xml
deleted file mode 100644
index 2618dde..0000000
--- a/trunk/src/modules-optional/jcrsource/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.jcrsource</lenya:id>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>1.0-dev</lenya:version>
-  <lenya:name>JCR Source Implementation</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>JCR Source Implementation of Lenya NodeFactory (see Lenya core org.apache.lenya.cms.repository)</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRNodeFactory.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRNodeFactory.java
deleted file mode 100644
index 0d3fb91..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRNodeFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * JCR node factory.
- */
-public class JCRNodeFactory extends AbstractLogEnabled implements NodeFactory, Serviceable {
-
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        return new JCRSourceNode(this.session, key, this.manager, getLogger());
-    }
-
-    public String getItemType() {
-        return Node.IDENTIFIABLE_TYPE;
-    }
-
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-    
-    private Session session;
-
-    public void setSession(Session session) {
-        this.session = session;
-    }
-
-    public boolean isSharable() {
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRSourceNode.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRSourceNode.java
deleted file mode 100644
index 1afa387..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/JCRSourceNode.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.repository.SourceNode;
-
-/**
- * JCR based source node.
- */
-public class JCRSourceNode extends SourceNode {
-    
-    private String sourceUri;
-
-    /**
-     * Ctor.
-     * @param session The session.
-     * @param sourceURI The source URI.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public JCRSourceNode(Session session, String sourceURI, ServiceManager manager, Logger logger) {
-        super(session, sourceURI, manager, logger);
-        this.sourceUri = sourceURI;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.repository.SourceNode#getRealSourceUri()
-     */
-    protected String getRealSourceURI() {
-        String path = this.sourceUri.substring(LENYA_PROTOCOL.length());
-        return "jcr://" + path;
-    }
-    
-    /**
-     * No separate meta data node, so no locking is required.
-     * @see org.apache.lenya.cms.repository.SourceNode#lockMetaData()
-     */
-    protected void lockMetaData() throws RepositoryException {
-    }
-
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaJCRSourceFactory.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaJCRSourceFactory.java
deleted file mode 100644
index 24060b1..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaJCRSourceFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.apache.cocoon.jcr.source.JCRSourceFactory;
-import org.apache.lenya.cms.publication.PageEnvelope;
-
-public class LenyaJCRSourceFactory extends JCRSourceFactory {
-
-    public Node createFileNode(Node folderNode, String name) throws RepositoryException {
-        Node node = super.createFileNode(folderNode, name);
-        String prefix = node.getSession().getNamespacePrefix(PageEnvelope.NAMESPACE);
-        if (!prefix.equals("")) {
-            prefix = prefix + ":";
-        }
-        
-        node.addMixin(prefix + LenyaRepository.CONTENT_NODE);
-        return node;
-    }
-/*
-    public Node createContentNode(Node fileNode) throws RepositoryException {
-        Node node = super.createContentNode(fileNode);
-        
-        String prefix = node.getSession().getNamespacePrefix(LenyaMetaData.NAMESPACE);
-        if (!prefix.equals("")) {
-            prefix = prefix + ":";
-        }
-        
-        node.addMixin(prefix + LenyaRepository.CONTENT_NODE);
-        return node;
-    }
-*/
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java
deleted file mode 100644
index 198eb64..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.AccessDeniedException;
-import javax.jcr.LoginException;
-import javax.jcr.NamespaceException;
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.UnsupportedRepositoryOperationException;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
-import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
-import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
-import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.nodetype.PropDef;
-import org.apache.jackrabbit.core.nodetype.PropDefImpl;
-import org.apache.jackrabbit.name.QName;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-
-/**
- * Lenya-specific repository implementation.
- */
-public class LenyaRepository extends org.apache.cocoon.jcr.JackrabbitRepository {
-
-    protected static final String CONTENT_NODE = "contentNode";
-
-    protected static final String SESSION_ATTRIBUTE = javax.jcr.Session.class.getName();
-
-    private Map namespaces = new HashMap();
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-
-        Configuration[] namespaceConfigs = config.getChildren("namespace");
-        for (int i = 0; i < namespaceConfigs.length; i++) {
-            String prefix = namespaceConfigs[i].getAttribute("prefix");
-            String uri = namespaceConfigs[i].getAttribute("uri");
-            this.namespaces.put(prefix, uri);
-        }
-    }
-
-    /**
-     * @see javax.jcr.Repository#login()
-     */
-    public javax.jcr.Session login() throws LoginException, NoSuchWorkspaceException,
-            RepositoryException {
-
-        javax.jcr.Session jcrSession = null;
-
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-        if (session != null) {
-            jcrSession = (javax.jcr.Session) session.getAttribute(SESSION_ATTRIBUTE);
-            if (jcrSession == null) {
-                jcrSession = super.login();
-                session.setAttribute(SESSION_ATTRIBUTE, jcrSession);
-
-                registerNamespaces(jcrSession);
-                try {
-                    registerNodeTypes(jcrSession);
-                } catch (InvalidNodeTypeDefException e) {
-                    throw new RepositoryException(e);
-                }
-            }
-        }
-
-        return jcrSession;
-    }
-
-    /**
-     * Registers the Lenya-specific namespaces at the JCR workspace.
-     * @param jcrSession The JCR session.
-     * @throws RepositoryException if an error occurs.
-     * @throws NamespaceException if an error occurs.
-     * @throws UnsupportedRepositoryOperationException if an error occurs.
-     * @throws AccessDeniedException if an error occurs.
-     */
-    protected void registerNamespaces(javax.jcr.Session jcrSession) throws RepositoryException,
-            NamespaceException, UnsupportedRepositoryOperationException, AccessDeniedException {
-        for (Iterator i = this.namespaces.keySet().iterator(); i.hasNext();) {
-            String prefix = (String) i.next();
-            String uri = (String) this.namespaces.get(prefix);
-            NamespaceRegistry registry = jcrSession.getWorkspace().getNamespaceRegistry();
-            if (!Arrays.asList(registry.getPrefixes()).contains(prefix)) {
-                registry.registerNamespace(prefix, uri);
-            }
-        }
-    }
-
-    protected void registerNodeTypes(javax.jcr.Session jcrSession) throws RepositoryException,
-            InvalidNodeTypeDefException {
-
-        NodeTypeManagerImpl nodeTypeManager = (NodeTypeManagerImpl) jcrSession.getWorkspace()
-                .getNodeTypeManager();
-        NodeTypeRegistry registry = nodeTypeManager.getNodeTypeRegistry();
-        /*
-        if (!registry.isRegistered(new QName(LenyaMetaData.NAMESPACE, CONTENT_NODE))) {
-            
-            List propDefs = new ArrayList();
-            Map key2namespace = new HashMap();
-
-            String[] lenyaKeys = LenyaMetaData.ELEMENTS;
-            for (int i = 0; i < lenyaKeys.length; i++) {
-                key2namespace.put(lenyaKeys[i], LenyaMetaData.NAMESPACE);
-            }
-
-            List dcKeyList = DublinCoreImpl.getAttributeNames();
-            String[] dcKeys = (String[]) dcKeyList.toArray(new String[dcKeyList.size()]);
-            for (int i = 0; i < dcKeys.length; i++) {
-                key2namespace.put(dcKeys[i], DublinCore.DC_NAMESPACE);
-            }
-
-            NodeTypeDef def = new NodeTypeDef();
-            def.setMixin(true);
-            def.setName(new QName(LenyaMetaData.NAMESPACE, CONTENT_NODE));
-
-            for (Iterator i = key2namespace.keySet().iterator(); i.hasNext();) {
-                String key = (String) i.next();
-                String namespace = (String) key2namespace.get(key);
-                PropDefImpl propDef = new PropDefImpl();
-                propDef.setDeclaringNodeType(def.getName());
-                propDef.setName(new QName(namespace, key));
-                propDef.setMandatory(false);
-                propDef.setRequiredType(PropertyType.STRING);
-                propDef.setMultiple(true);
-                propDefs.add(propDef);
-            }
-
-            def.setPropertyDefs((PropDef[]) propDefs.toArray(new PropDef[propDefs.size()]));
-
-            registry.registerNodeType(def);
-        }
-        */
-    }
-
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java
deleted file mode 100644
index 9a0fffa..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr.metadata;
-
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.Value;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.jcr.source.JCRNodeSource;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.metadata.ElementSet;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.repository.RepositoryException;
-
-/**
- * JCR based meta data.
- */
-public class JCRMetaData extends AbstractLogEnabled implements MetaData {
-
-    private String namespace;
-    private String sourceUri;
-    protected ServiceManager manager;
-
-    private Map key2values = null;
-
-    /**
-     * Ctor.
-     * @param namespace
-     * @param sourceUri
-     * @param manager
-     * @param logger
-     */
-    public JCRMetaData(String namespace, String sourceUri, ServiceManager manager, Logger logger) {
-        this.namespace = namespace;
-        this.sourceUri = sourceUri;
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    protected Map getKey2Values() {
-        if (this.key2values == null) {
-            load();
-        }
-        return this.key2values;
-    }
-
-    protected void load() {
-
-        this.key2values = new HashMap();
-        SourceResolver resolver = null;
-        JCRNodeSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (JCRNodeSource) resolver.resolveURI(this.sourceUri);
-
-            Node node = source.getNode();
-            String prefix = node.getSession()
-                    .getWorkspace()
-                    .getNamespaceRegistry()
-                    .getPrefix(this.namespace);
-            if (!prefix.equals("")) {
-                prefix = prefix + ":";
-            }
-
-            String possibleKeys[] = getPossibleKeys();
-            for (int i = 0; i < possibleKeys.length; i++) {
-                String key = prefix + possibleKeys[i];
-                if (node.hasProperty(key)) {
-                    Property property = node.getProperty(key);
-                    Value[] values = property.getValues();
-                    String[] stringValues = new String[values.length];
-                    for (int v = 0; v < values.length; v++) {
-                        stringValues[v] = values[v].getString();
-                    }
-                    this.key2values.put(possibleKeys[i], stringValues);
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    public void save() throws MetaDataException {
-        SourceResolver resolver = null;
-        JCRNodeSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (JCRNodeSource) resolver.resolveURI(this.sourceUri);
-
-            if (!source.exists()) {
-                OutputStream stream = source.getOutputStream();
-                stream.flush();
-                stream.close();
-            }
-
-            Node node = source.getNode();
-            String prefix = node.getSession()
-                    .getWorkspace()
-                    .getNamespaceRegistry()
-                    .getPrefix(this.namespace);
-            if (!prefix.equals("")) {
-                prefix = prefix + ":";
-            }
-
-            String possibleKeys[] = getPossibleKeys();
-            for (int i = 0; i < possibleKeys.length; i++) {
-                String[] stringValues = (String[]) getKey2Values().get(possibleKeys[i]);
-                String key = prefix + possibleKeys[i];
-                node.setProperty(key, stringValues);
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    public String[] getValues(String key) throws MetaDataException {
-        return (String[]) getKey2Values().get(key);
-    }
-
-    public String getFirstValue(String key) throws MetaDataException {
-        String value = null;
-        String[] values = (String[]) getKey2Values().get(key);
-        if (values.length > 0) {
-            value = values[0];
-        }
-        return value;
-    }
-
-    public void setValue(String key, String value) throws MetaDataException {
-        String[] values = { value };
-        getKey2Values().put(key, values);
-    }
-
-    public void addValue(String key, String value) throws MetaDataException {
-        String[] values = (String[]) getKey2Values().get(key);
-        List valueList = new ArrayList(Arrays.asList(values));
-        valueList.add(value);
-        values = (String[]) valueList.toArray(new String[valueList.size()]);
-        getKey2Values().put(key, values);
-    }
-
-    public void replaceBy(MetaData other) throws MetaDataException {
-        this.key2values = new HashMap();
-        String[] keys = getPossibleKeys();
-        for (int i = 0; i < keys.length; i++) {
-            String[] values = other.getValues(keys[i]);
-            this.key2values.put(keys[i], values);
-        }
-        save();
-    }
-
-    public void forcedReplaceBy(MetaData other) throws MetaDataException {
-        replaceBy(other);
-    }
-    
-    private String[] possibleKeys = new String[0];
-
-    /**
-     * @param keys The possible keys.
-     */
-    public void setPossibleKeys(String[] keys) {
-        this.possibleKeys = keys;
-    }
-
-    public String[] getPossibleKeys() {
-        return this.possibleKeys;
-    }
-
-    public boolean isValidAttribute(String key) {
-        String[] keys = getPossibleKeys();
-        return Arrays.asList(keys).contains(key);
-    }
-
-    public HashMap getAvailableKey2Value() {
-        // TODO We need to implement this Method!
-        return null;
-    }
-
-    public long getLastModified() throws MetaDataException {
-        long lastModified = 0;
-        try {
-            SourceResolver resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            JCRNodeSource source = (JCRNodeSource) resolver.resolveURI(this.sourceUri);
-            lastModified = source.getLastModified();
-        } catch (Exception e) {
-            throw new MetaDataException("Error resolving meta data source", e);
-        }
-        return lastModified;
-    }
-
-    public String[] getAvailableKeys() {
-        throw new RuntimeException("not implemented");
-    }
-
-    public ElementSet getElementSet() {
-        throw new RuntimeException("not implemented");
-    }
-
-    public void removeAllValues(String key) throws MetaDataException {
-        throw new RuntimeException("not implemented");
-    }
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/Import.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/Import.java
deleted file mode 100644
index 1a688c6..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/Import.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.jcr.usecases;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Import a publication into the JCR repository.
- */
-public class Import extends AbstractUsecase {
-
-    protected static final String PUBLICATIONS = "publications";
-    protected static final String PUBLICATION = "publication";
-
-    protected void initParameters() {
-        super.initParameters();
-        Publication[] pubs = getDocumentFactory().getPublications();
-        List pubList = Arrays.asList(pubs);
-        setParameter(PUBLICATIONS, pubList);
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        String pubId = getParameterAsString(PUBLICATION);
-        DocumentFactory factory = getDocumentFactory();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            Publication pub = factory.getPublication(pubId);
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-
-            List nodes = new ArrayList();
-            Map uri2meta = new HashMap();
-
-            String[] areas = { Publication.AUTHORING_AREA, Publication.LIVE_AREA,
-                    Publication.TRASH_AREA, Publication.ARCHIVE_AREA };
-            for (int i = 0; i < areas.length; i++) {
-                Document[] docs = siteManager.getDocuments(factory, pub, areas[i]);
-                for (int j = 0; j < docs.length; j++) {
-                    nodes.add(docs[j].getRepositoryNode());
-                    /*
-                    final String lenyaUri = docs[j].getSourceURI();
-                    final String sourcePath = lenyaUri.substring("lenya://".length());
-                    final String contextUri = "context://" + sourcePath + ".meta";
-                     * MetaDataManager meta = new MetaDataManager(contextUri, this.manager,
-                     * getLogger()); uri2meta.put(docs[j].getSourceURI(), meta);
-                     */
-                }
-                nodes.add(siteManager.getSiteStructure(factory, pub, areas[i]).getRepositoryNode());
-            }
-
-            for (Iterator i = nodes.iterator(); i.hasNext();) {
-                Node node = (Node) i.next();
-                final String lenyaUri = node.getSourceURI();
-                final String sourcePath = lenyaUri.substring("lenya://".length());
-                final String contextUri = "context://" + sourcePath;
-                final String jcrUri = "jcr://" + sourcePath;
-                if (SourceUtil.exists(contextUri, this.manager)) {
-                    SourceUtil.copy(resolver, contextUri, jcrUri);
-                    /*
-                     * MetaDataManager sourceMgr = (MetaDataManager) uri2meta.get(lenyaUri); if
-                     * (sourceMgr != null) { MetaDataManager jcrMgr = new JCRMetaDataManager(jcrUri,
-                     * this.manager, getLogger()); jcrMgr.replaceMetaData(sourceMgr); }
-                     */
-                } else {
-                    addInfoMessage("The source [" + contextUri + "] does not exist.");
-                }
-            }
-
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImport.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImport.java
deleted file mode 100644
index 085b443..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImport.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-/* $Id:$ */
-package org.apache.lenya.cms.jcr.usecases;
-
-import java.io.IOException;
-
-import javax.jcr.ImportUUIDBehavior;
-import javax.jcr.Item;
-import javax.jcr.LoginException;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.Workspace;
-
-import org.apache.avalon.framework.CascadingRuntimeException;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/**
- * Import JCR content.
- */
-public class JCRImport extends AbstractUsecase {
-    
-    private static final String IMPORT_TARGET_PARAM = "lenya.usecase.importExport.import";
-    private static final String IMPORT_TARGET_PUBLICATION = "publication";
-    private static final String IMPORT_TARGET_REPOSITORY = "repository";
-    
-    private static final String JCR_LENYA_ROOT = "/";
-    private static final String JCR_LENYA_BASE_NAME = "lenya";
-    private static final String JCR_LENYA_PUBLICATON_ROOT = "/lenya/pubs";
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        Request request = ContextHelper.getRequest(this.context);
-        
-        Part jcrImport = (Part)request.get("jcrcontent");
-        
-        // Get name of first JCR node ('lenya' or publication name).
-        String firstNodeName;
-        try {
-            firstNodeName = getFirstNodeName(new InputSource(jcrImport.getInputStream()));
-        } catch (Exception e) {
-            throw new JCRImportException("Error getting first node name of import data");
-        }
-        if (firstNodeName == null) {
-            throw new JCRImportException("Reading repository import data failed");
-        }
-
-        Repository repo = null;
-        try {
-            repo = (Repository)manager.lookup(Repository.class.getName());
-        } catch (Exception e) {
-            throw new CascadingRuntimeException("Cannot lookup repository", e);
-        }
-        
-        try {
-            Session session;
-            try {
-                session = repo.login();
-            } catch (LoginException e1) {
-                throw new JCRImportException("Login to repository failed", e1);
-            } catch (RepositoryException e1) {
-                throw new JCRImportException("Cannot access repository", e1);
-            }
-            
-            Workspace ws = session.getWorkspace();
-    
-            String importTarget = request.getParameter(IMPORT_TARGET_PARAM);
-            if (IMPORT_TARGET_REPOSITORY.equals(importTarget)) {
-                // Import Lenya repository
-                getLogger().debug("Importing Lenya repository into JCR");
-                if (!JCR_LENYA_BASE_NAME.equals(firstNodeName)) {
-                    throw new JCRImportException("Corrupt Lenya repository data file");
-                }
-                if (!session.itemExists(JCR_LENYA_ROOT)) {
-                    throw new JCRImportException("Lenya JCR root not found [" + JCR_LENYA_ROOT + "]");
-                }
-                // Remove existing Lenya repository.
-                String lenyaBasePath = JCR_LENYA_ROOT +
-                    (JCR_LENYA_ROOT.endsWith("/") ? JCR_LENYA_BASE_NAME : "/" + JCR_LENYA_BASE_NAME);
-                if (session.itemExists(lenyaBasePath)) {
-                    Item jcrLenyaBase = session.getItem(lenyaBasePath);
-                    jcrLenyaBase.remove();
-                    session.save();
-                }
-    
-                // Import Lenya repository. Use workspace instead of session because of performance.
-                try {
-                    ws.importXML(JCR_LENYA_ROOT, jcrImport.getInputStream(),
-                            ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
-                } catch (Exception e) {
-                    throw new JCRImportException("Error importing data into workspace");
-                }
-            } else if (IMPORT_TARGET_PUBLICATION.equals(importTarget)) {
-                // Import Lenya publication 
-                getLogger().debug("Importing Lenya publication into JCR");
-                if (!session.itemExists(JCR_LENYA_PUBLICATON_ROOT)) {
-                    throw new JCRImportException("Lenya JCR root not found [" + JCR_LENYA_ROOT + "]");
-                    // TODO: Create JCR_LENYA_PUBLICATON_ROOT
-                }
-                
-                // Remove existing Lenya repository.
-                String lenyaPublicationPath = JCR_LENYA_PUBLICATON_ROOT +
-                    (JCR_LENYA_PUBLICATON_ROOT.endsWith("/") ? firstNodeName : "/" + firstNodeName);
-                if (session.itemExists(lenyaPublicationPath)) {
-                    Item jcrPublicationBase = session.getItem(lenyaPublicationPath);
-                    jcrPublicationBase.remove();
-                    session.save();
-                }
-    
-                // Import Lenya publication. Use workspace instead of session because of performance.
-                try {
-                    ws.importXML(JCR_LENYA_PUBLICATON_ROOT, jcrImport.getInputStream(),
-                            ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
-                } catch (Exception e) {
-                    throw new JCRImportException("Error importing data into workspace");
-                }
-            }
-        } catch (RepositoryException e) {
-            throw new JCRImportException("Error accessing JCR repository while importing data", e);
-        }
-
-        super.doExecute();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-    }
-    
-    private String getFirstNodeName(InputSource xmlInput)
-        throws SAXException, IOException
-    {
-        XMLReader xmlReader = XMLReaderFactory.createXMLReader();
-        
-        FirstNodeNameHandler contentHandler = new FirstNodeNameHandler(); 
-        xmlReader.setContentHandler(contentHandler);
-        xmlReader.parse(xmlInput);
-        return contentHandler.getFirstNodeName();
-    }
-    
-    class FirstNodeNameHandler extends DefaultHandler
-    {
-        private static final String NODE_NAME_Q_ATTR = "sv:name";
-        
-        private boolean isFirstElement = true;
-        private String firstNodeName = null;
-        
-        /**
-         * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
-         */
-        public void startElement(String uri, String localName, String qName, Attributes attributes)
-            throws SAXException
-        {
-            if (isFirstElement) {
-                firstNodeName = attributes.getValue(NODE_NAME_Q_ATTR);
-                isFirstElement = false;
-            } else {
-                super.startElement(uri, localName, qName, attributes);
-            }
-        }
-        
-        protected String getFirstNodeName() {
-            return firstNodeName;
-        }
-    }
-}
diff --git a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImportException.java b/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImportException.java
deleted file mode 100644
index 29a9e52..0000000
--- a/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/usecases/JCRImportException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-/* $Id:$ */
-package org.apache.lenya.cms.jcr.usecases;
-
-public class JCRImportException extends Exception {
-    
-    public JCRImportException() {
-        super();
-    }
-    
-    public JCRImportException(String message) {
-        super(message);
-    }
-    
-    public JCRImportException(String message, Throwable cause) {
-        super(message, cause);
-    }
-    
-    public JCRImportException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/trunk/src/modules-optional/jcrsource/sitemap.xmap b/trunk/src/modules-optional/jcrsource/sitemap.xmap
deleted file mode 100644
index 21202e1..0000000
--- a/trunk/src/modules-optional/jcrsource/sitemap.xmap
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:components>
-    <map:generators default="file">
-      <map:generator name="jcr-sys-view" label="content,data" logger="sitemap.generator.jcr-sys-view" pool-grow="2" pool-max="5" pool-min="2" src="org.apache.lenya.cms.cocoon.generation.JCRSysViewGenerator"/>
-    </map:generators>
-  </map:components>
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-
-      <map:match pattern="lenya-repository-content.xml">
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test" value="{request-param:scope}"/>
-          <map:when test="repository">
-            <map:generate type="jcr-sys-view">
-              <map:parameter name="root" value="/lenya"/>
-            </map:generate>
-          </map:when>
-          <map:otherwise>
-            <map:generate type="jcr-sys-view">
-              <map:parameter name="root" value="/lenya/pubs/{page-envelope:publication-id}"/>
-            </map:generate>
-          </map:otherwise>
-        </map:select>
-        <map:serialize type="xml"/>
-      </map:match>
-        
-    </map:pipeline>
-    
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules-optional/jcrsource/usecases/import.jx b/trunk/src/modules-optional/jcrsource/usecases/import.jx
deleted file mode 100644
index 9b16a0e..0000000
--- a/trunk/src/modules-optional/jcrsource/usecases/import.jx
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: renameLabel.jx 123364 2004-12-26 16:11:27Z gregor $ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-           xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-           >
-           
-  <page:title>
-    <i18n:text>Import Publication into JCR</i18n:text>
-  </page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Import Publication into JCR</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form method="get" action="" id="form-import_pub_into_jcr">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="templates/messages.jx"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="publication"><i18n:text>Publication</i18n:text>:</label></td>
-              <td>
-                <select name="publication" class="lenya-form-element">
-                  <jx:forEach var="publication" items="${usecase.getParameter('publications')}">
-                    <jx:choose>
-                      <jx:when test="${publication.equals(usecase.getParameter('publication'))}">
-                        <option value="${publication.getId()}" selected="selected"><jx:out value="${publication.getId()}"/></option>
-                      </jx:when>
-                      <jx:otherwise>
-                        <option value="${publication.getId()}"><jx:out value="${publication.getId()}"/></option>
-                      </jx:otherwise>
-                    </jx:choose>
-                  </jx:forEach>
-                </select>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <br/>
-                <input i18n:attr="value" type="submit" name="submit" value="Import"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules-optional/jcrsource/usecases/importExport/importExport.jx b/trunk/src/modules-optional/jcrsource/usecases/importExport/importExport.jx
deleted file mode 100644
index 7b6c32e..0000000
--- a/trunk/src/modules-optional/jcrsource/usecases/importExport/importExport.jx
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: serverStatus.jx 164233 2005-04-22 13:01:45Z jwkaltz $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:body>
-    <jx:import uri="templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>JCR Import/Export</i18n:text></h1>
-      <jx:import uri="templates/messages.jx"/>
-      
-      <p><i18n:text>Import and export repository content in XML data format.</i18n:text></p>
-      <p><b><i18n:text>Note:</i18n:text></b> <i18n:text>Works with JCR repository only!</i18n:text></p>
-      
-      <table class="lenya-table">
-        <tr>
-          <th class="lenya-caption"><i18n:text>Import Publication</i18n:text></th>
-          <th class="lenya-caption"><i18n:text>Export Publication</i18n:text></th>
-        </tr>
-        <tr>
-          <td>
-            <div class="lenya-box-body">
-              <form method="POST" enctype="multipart/form-data" id="form-pub_import_export">
-                <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-                <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-                <input type="hidden" name="lenya.usecase.importExport.import" value="publication"/>
-                <input type="hidden" name="submit" value=""/>
-                
-                <input type="file" name="jcrcontent" maxlength="0" accept="text/xml"/>
-                <input i18n:attr="value" type="submit" value="Import" name="input-import_pub" />
-                <br/><br/>
-                <strong><i18n:text>Note:</i18n:text></strong> <i18n:text>Existing publication will be overwritten!</i18n:text> 
-              </form>
-            </div>
-          </td>
-          <td>
-            <div class="lenya-box-body">
-              <a href="${usecase.getSourceURL()}?lenya.usecase=jcr.export&amp;scope=publication" target="_blank">Download Publication Content</a>
-            </div>
-          </td>
-        </tr>
-      </table>
-
-      <br/>
-      <br/>
-
-      <table class="lenya-table">
-        <tr>
-          <th class="lenya-caption"><i18n:text>Import Repository</i18n:text></th>
-          <th class="lenya-caption"><i18n:text>Export Repository</i18n:text></th>
-        </tr>
-        <tr>
-          <td>
-            <form method="POST" enctype="multipart/form-data" id="form-repository_import_export">
-              <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-              <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-              <input type="hidden" name="lenya.usecase.importExport.import" value="repository"/>
-              <input type="hidden" name="submit" value=""/>
-              
-              <div class="lenya-box-body">
-                <input type="file" name="jcrcontent" maxlength="0" accept="text/xml"/>
-                <input i18n:attr="value" type="submit" value="Import" name="input-import_repository"/>
-                <br/><br/>
-                <strong><i18n:text>Note:</i18n:text></strong> <i18n:text>All existing Lenya data will be overwritten!</i18n:text> 
-              </div>
-            </form>
-          </td>
-          <td>
-            <div class="lenya-box-body">
-              <a href="${request.requestURI}?lenya.usecase=jcr.export&amp;scope=repository" target="_blank">Download Repository Content</a>
-            </div>
-          </td>
-        </tr>
-      </table>
-    
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules/blog/config/cocoon-xconf/resourcetypes.xconf b/trunk/src/modules/blog/config/cocoon-xconf/resourcetypes.xconf
deleted file mode 100644
index a7df292..0000000
--- a/trunk/src/modules/blog/config/cocoon-xconf/resourcetypes.xconf
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" 
-	unless="/cocoon/resource-types/component-instance[@name = 'entry' or @name = 'sidebar' or @name = 'feed']"
-	>
-
-  <component-instance name="entry"
-                      logger="lenya.resourcetypes.entry"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-       namespace="http://relaxng.org/ns/structure/0.9"
-       uri="fallback://lenya/modules/blog/resources/schemas/entry.rng"
-    />
-    <sample 
-       mime-type="application/xml" 
-       uri="fallback://lenya/modules/blog/resources/samples/entry.xml"
-    />
-  </component-instance>
-  
-  <component-instance name="sidebar"
-                      logger="lenya.resourcetypes.sidebar"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-       namespace="http://relaxng.org/ns/structure/0.9"
-       uri="fallback://lenya/modules/blog/resources/schemas/sidebar.rng"
-    />
-    <sample 
-       mime-type="application/xml" 
-       uri="fallback://lenya/modules/blog/samples/sidebar.xml"
-    />
-  </component-instance>
-
-  <component-instance name="feed"
-                      logger="lenya.resourcetypes.feed"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-       namespace="http://relaxng.org/ns/structure/0.9"
-       uri="fallback://lenya/modules/blog/resources/schemas/feed.rng"
-    />
-    <sample 
-       mime-type="application/xml" 
-       uri="fallback://lenya/modules/blog/resources/samples/feed.xml"
-    />
-  </component-instance>
-  
-</xconf>
-
-
diff --git a/trunk/src/modules/blog/config/cocoon-xconf/usecase-workflow-delete.xconf b/trunk/src/modules/blog/config/cocoon-xconf/usecase-workflow-delete.xconf
deleted file mode 100644
index e8a22cf..0000000
--- a/trunk/src/modules/blog/config/cocoon-xconf/usecase-workflow-delete.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecases-workflow-deactivate.xconf 233165 2005-08-17 12:54:06Z andreas $ -->
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'blog/workflow.delete']">
-    <component-instance name="blog/workflow.delete"
-                        logger="lenya.usecases.workflow"
-                        class="org.apache.lenya.blog.cms.usecases.Delete">
-      <view uri="modules/blog/usecases/workflow/delete.jx"/>
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules/blog/config/cocoon-xconf/usecases-site-create.xconf b/trunk/src/modules/blog/config/cocoon-xconf/usecases-site-create.xconf
deleted file mode 100644
index 639372b..0000000
--- a/trunk/src/modules/blog/config/cocoon-xconf/usecases-site-create.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'blog.createEntry']">
-  <component-instance name="blog.createEntry"
-                      logger="lenya.site"
-                      class="org.apache.lenya.cms.site.usecases.CreateBlogEntry">
-    <view uri="modules/blog/usecases/site/create.jx"/>
-  </component-instance>
-</xconf>
diff --git a/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-deactivate.xconf b/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-deactivate.xconf
deleted file mode 100644
index f6a05d5..0000000
--- a/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-deactivate.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 233165 2005-08-17 12:54:06Z andreas $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'blog/workflow.deactivate']">

-    <component-instance name="blog/workflow.deactivate"

-                        logger="lenya.usecases.workflow"

-                        class="org.apache.lenya.blog.cms.usecases.Deactivate">

-      <view uri="modules/blog/usecases/workflow/deactivate.jx"/>

-    </component-instance>

-

-  </xconf>

diff --git a/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-publish.xconf b/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-publish.xconf
deleted file mode 100644
index d36a648..0000000
--- a/trunk/src/modules/blog/config/cocoon-xconf/usecases-workflow-publish.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'blog/workflow.publish']">
-  <component-instance name="blog/workflow.publish"
-                      logger="lenya.workflow"
-                      class="org.apache.lenya.blog.cms.usecases.Publish">
-    <view uri="modules/blog/usecases/workflow/publish.jx"/>
-  </component-instance>
-</xconf>
diff --git a/trunk/src/modules/blog/config/module.xml b/trunk/src/modules/blog/config/module.xml
deleted file mode 100644
index ea87b69..0000000
--- a/trunk/src/modules/blog/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.blog</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.workflow"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Blog</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Blog module</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogGenerator.java b/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogGenerator.java
deleted file mode 100644
index 230975c..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogGenerator.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.generation;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteManager;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Blog entry generator
- */
-public class BlogGenerator extends ServiceableGenerator {
-
-    /** The URI of the namespace of this generator. */
-    protected static final String URI = "http://apache.org/cocoon/blog/1.0";
-
-    /** The namespace prefix for this namespace. */
-    protected static final String PREFIX = "blog";
-
-    /** Node and attribute names */
-    protected static final String BLOG_NODE_NAME = "blog";
-
-    protected static final String ENTRY_NODE_NAME = "entry";
-
-    protected static final String PATH_ATTR_NAME = "path";
-
-    protected static final String LASTMOD_ATTR_NAME = "lastModified";
-
-    /**
-     * Convenience object, so we don't need to create an AttributesImpl for every element.
-     */
-    protected AttributesImpl attributes;
-
-    /**
-     * The Lenya-Area where the generator should work on
-     */
-    protected String area;
-
-    protected boolean recent;
-
-    /**
-     * Only generate the #numrecent entries
-     */
-    protected int numrecent;
-
-    /**
-     * Set the request parameters. Must be called before the generate method.
-     * 
-     * @param resolver the SourceResolver object
-     * @param objectModel a <code>Map</code> containing model object
-     * @param src the source URI (ignored)
-     * @param par configuration parameters
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
-            throws ProcessingException, SAXException, IOException {
-        super.setup(resolver, objectModel, src, par);
-
-        area = par.getParameter("area", null);
-        if (area == null)
-            throw new ProcessingException("no area specified");
-        if (area.equals(Publication.LIVE_AREA))
-            numrecent = 16;
-        else
-            numrecent = 0;
-
-        this.attributes = new AttributesImpl();
-    }
-
-    /**
-     * Generate XML data.
-     * 
-     * @throws SAXException if an error occurs while outputting the document
-     */
-    public void generate() throws SAXException, ProcessingException {
-
-        this.contentHandler.startDocument();
-        this.contentHandler.startPrefixMapping(PREFIX, URI);
-        attributes.clear();
-
-        this.contentHandler.startElement(URI,
-                BLOG_NODE_NAME,
-                PREFIX + ':' + BLOG_NODE_NAME,
-                attributes);
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            Request request = ObjectModelHelper.getRequest(this.objectModel);
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication publication = PublicationUtil.getPublication(this.manager, request);
-
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-
-            Document[] docs = siteManager.getDocuments(map, publication, area);
-            Arrays.sort((Object[]) docs, new Comparator() {
-                public int compare(Object o1, Object o2) {
-                    try {
-                        Date d1 = new Date(((Document) o2).getLastModified());
-                        Date d2 = new Date(((Document) o1).getLastModified());
-                        return d2.compareTo(d1);
-                    }
-                    catch (DocumentException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            });
-
-            for (int i = 0; i < docs.length; i++) {
-                if (numrecent > 0 && numrecent <= i)
-                    break;
-                String path = docs[i].getPath();
-                if (path.startsWith("/entries/")) {
-                    attributes.clear();
-                    attributes.addAttribute("", PATH_ATTR_NAME, PATH_ATTR_NAME, "CDATA", path);
-                    attributes.addAttribute("",
-                            LASTMOD_ATTR_NAME,
-                            LASTMOD_ATTR_NAME,
-                            "CDATA",
-                            String.valueOf(docs[i].getLastModified()));
-
-                    this.contentHandler.startElement(URI, ENTRY_NODE_NAME, PREFIX + ':'
-                            + ENTRY_NODE_NAME, attributes);
-                    this.contentHandler.endElement(URI, ENTRY_NODE_NAME, PREFIX + ':'
-                            + ENTRY_NODE_NAME);
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        this.contentHandler.endElement(URI, BLOG_NODE_NAME, PREFIX + ':' + BLOG_NODE_NAME);
-
-        this.contentHandler.endPrefixMapping(PREFIX);
-        this.contentHandler.endDocument();
-    }
-}
diff --git a/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogOverviewGenerator.java b/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogOverviewGenerator.java
deleted file mode 100644
index 84af8c5..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/cocoon/generation/BlogOverviewGenerator.java
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.generation;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * BlogOverviewGenerator
- * 
- * Builds an ordered tree from the blog entries in the
- * repository, allows simple queries.
- * 
- */
-public class BlogOverviewGenerator extends ServiceableGenerator {
-
-    /** The URI of the namespace of this generator. */
-    protected static final String URI = "http://apache.org/cocoon/blog/1.0";
-
-    /** The namespace prefix for this namespace. */
-    protected static final String PREFIX = "blog";
-
-    /** Node and attribute names */
-    protected static final String BLOG_NODE_NAME = "overview";
-    
-    protected static final String ENTRY_NODE_NAME = "entry";
-
-    protected static final String PATH_ATTR_NAME = "path";
-
-    protected static final String URL_ATTR_NAME = "url";
-    
-    protected static final String TITLE_ATTR_NAME = "title";
-    
-    protected static final String LASTMOD_ATTR_NAME = "lastModified";
-
-    protected static final String STRUCT_ATTR_NAME = "structure";
-    
-    protected static final String YEAR_NODE_NAME = "year";
-
-    protected static final String MONTH_NODE_NAME = "month";
-
-    protected static final String DAY_NODE_NAME = "day";
-
-    protected static final String ID_ATTR_NAME = "id";
-
-    
-    /**
-     * Convenience object, so we don't need to create an AttributesImpl for
-     * every element.
-     */
-    protected AttributesImpl attributes;
-
-    /**
-     * The Lenya-Area where the generator should work on
-     */
-    protected String area;
-
-    /**
-     * Request parameters
-     */
-    protected int  year;
-    protected int  month;
-    protected int  day;        
-    
-    protected String structure;
-    
-    /**
-     * The request
-     */
-    protected Request request;
-    
-    /**
-     * Set the request parameters. Must be called before the generate method.
-     * 
-     * @param resolver
-     *            the SourceResolver object
-     * @param objectModel
-     *            a <code>Map</code> containing model object
-     * @param src
-     *            the source URI (ignored)
-     * @param par
-     *            configuration parameters
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src,
-            Parameters par) throws ProcessingException, SAXException,
-            IOException {
-        
-        super.setup(resolver, objectModel, src, par);
-
-        request = ObjectModelHelper.getRequest(this.objectModel);
-                
-        String param = request.getParameter("year");
-        if (param != null) 
-            year = Integer.parseInt(param);
-        else
-            year = 0;
-        param = request.getParameter("month");
-        if (param != null) 
-            month = Integer.parseInt(param);
-        else
-            month = 0;
-        param = request.getParameter("day");
-        if (param != null) 
-            day = Integer.parseInt(param);
-        else
-            day = 0;
-    
-        structure = request.getParameter("struct");
-        if (structure != null) {
-            year = month = day = 0;
-        }
-                
-        area = par.getParameter("area", null);
-        if (area == null)
-            throw new ProcessingException("no area specified");               
-        
-        this.attributes = new AttributesImpl();
-    }
-
-    /**
-     * Generate XML data.
-     * 
-     * @throws SAXException
-     *             if an error occurs while outputting the document
-     */
-    public void generate() throws SAXException, ProcessingException {
-
-        this.contentHandler.startDocument();
-        this.contentHandler.startPrefixMapping(PREFIX, URI);
-        attributes.clear();
-
-        if (structure != null) {
-            attributes.addAttribute("", STRUCT_ATTR_NAME,
-                    STRUCT_ATTR_NAME, "CDATA", String.valueOf(structure));
-        }
-        this.contentHandler.startElement(URI, BLOG_NODE_NAME, PREFIX + ':'
-                + BLOG_NODE_NAME, attributes);
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {            
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication publication = PublicationUtil.getPublication(
-                    this.manager, request);
-            
-            
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE
-                    + "Selector");
-            siteManager = (SiteManager) selector.select(publication
-                    .getSiteManagerHint());
-
-            Document[] docs = siteManager.getDocuments(map, publication, area);
-            ArrayList filteredDocs = new ArrayList(1);          
-            for (int i=0; i<docs.length; i++) {
-                String path = docs[i].getPath();
-                if (path.startsWith("/entries/")) {
-                    int eYear = 0;
-                    int eMonth = 0;
-                    int eDay = 0;
-                    boolean add = false;
-                    String[] patterns = path.split("/");
-                    eYear = Integer.parseInt(patterns[2]);
-                    eMonth = Integer.parseInt(patterns[3]);
-                    eDay = Integer.parseInt(patterns[4]);
-                    /* determine matching documents */
-                    if (year > 0) {
-                        if (year == eYear) {
-                            if (month > 0) {
-                                if (month == eMonth) {
-                                    if (day > 0) {
-                                        if (day == eDay) {
-                                            /* add */
-                                            add = true;
-                                        }
-                                    } else {
-                                        /* add */
-                                        add = true;
-                                    }
-                                }
-                            } else {
-                                if (day > 0) {
-                                    if (day == eDay) {
-                                        /* add */
-                                        add = true;
-                                    }
-                                } else {
-                                    /* add */
-                                    add = true;
-                                }
-                            }
-                        }
-                    } else if (month > 0l) {
-                        if (month == eMonth) {
-                            if (day > 0) {
-                                if (day == eDay) {
-                                    /* add */
-                                    add = true;
-                                }
-                            } else {
-                                /* add */
-                                add = true;
-                            }
-                        }
-                    } else {
-                        if (day > 0) {
-                            if (day == eDay) {
-                                /* add */
-                                add = true;
-                            }
-                        } else {
-                            /* add */
-                            add = true;
-                        }
-                    }
-                    if (add) {                       
-                        filteredDocs.add((Object)docs[i]);                        
-                    }
-                }                                
-            }
-
-            /* sort entries by year -> month -> day -> lastModified */
-            Object[] sortedList = filteredDocs.toArray();            
-            Arrays.sort(sortedList, new Comparator() {
-                public int compare(Object o1, Object o2) {
-                    Document d1,d2;
-                    int year1,month1,day1;
-                    int year2,month2,day2;
-                    
-                    d1 = (Document)o1;
-                    d2 = (Document)o2;
-                    
-                    String[] patterns;
-                    try {
-                        patterns = d1.getPath().split("/");
-                    } catch (DocumentException e) {
-                        throw new RuntimeException(e);
-                    }                    
-                    year1 = Integer.parseInt(patterns[2]);
-                    month1 = Integer.parseInt(patterns[3]);
-                    day1 = Integer.parseInt(patterns[4]);
-                    
-                    try {
-                        patterns = d2.getPath().split("/");
-                    } catch (DocumentException e) {
-                        throw new RuntimeException(e);
-                    }                    
-                    year2 = Integer.parseInt(patterns[2]);
-                    month2 = Integer.parseInt(patterns[3]);
-                    day2 = Integer.parseInt(patterns[4]);                    
-                                        
-                    if (year1 > year2) {
-                        return 1;
-                    } else if (year1 == year2) {
-                        if (month1 > month2) {
-                            return 1;
-                        } else if (month1 == month2) {
-                            if (day1 > day2) {
-                                return 1;
-                            } else if (day1 == day2) {
-                                /* newest first */
-                                try {
-                                    Date date1 = new Date(d1.getLastModified());
-                                    Date date2 = new Date(d2.getLastModified());
-                                    return date2.compareTo(date1);
-                                } catch (DocumentException e) {
-                                    throw new RuntimeException(e);
-                                }
-                            } else {
-                                return -1;
-                            }
-                        } else {
-                            return -1;
-                        }
-                    } else {
-                        return -1;
-                    }
-                }
-            });            
-            
-            /* group entries by year -> month -> day */
-            /* works because the list is sorted =) */
-            int currentYear = 0;
-            int currentMonth = 0;
-            int currentDay = 0;
-            boolean yearOpen = false;
-            boolean monthOpen = false;
-            boolean dayOpen = false;            
-            for (int i=0; i<sortedList.length; i++) {
-                Document doc = ((Document)sortedList[i]);
-                String[] patterns = doc.getPath().split("/");                   
-                int year =  Integer.parseInt(patterns[2]);
-                int month = Integer.parseInt(patterns[3]);
-                int day = Integer.parseInt(patterns[4]);
-                if (year != currentYear) {
-                    if (dayOpen) {
-                        dayOpen = false;
-                        this.contentHandler.endElement(URI, DAY_NODE_NAME, PREFIX + ':'
-                                + DAY_NODE_NAME);
-                    }
-                    if (monthOpen) {
-                        monthOpen = false;
-                        this.contentHandler.endElement(URI, MONTH_NODE_NAME, PREFIX + ':'
-                                + MONTH_NODE_NAME);
-                    }
-                    if (yearOpen) {
-                        this.contentHandler.endElement(URI, YEAR_NODE_NAME, PREFIX + ':'
-                                + YEAR_NODE_NAME);
-                    }
-                    this.attributes.clear();
-                    attributes.addAttribute("", ID_ATTR_NAME,
-                            ID_ATTR_NAME, "CDATA", String.valueOf(year));
-                    this.contentHandler.startElement(URI, YEAR_NODE_NAME, PREFIX + ':'
-                            + YEAR_NODE_NAME, attributes);
-                    yearOpen = true;
-                    currentYear = year;
-                    currentMonth = 0;
-                    currentDay = 0;                    
-                } 
-                if (month != currentMonth) {
-                    if (dayOpen) {
-                        dayOpen = false;
-                        this.contentHandler.endElement(URI, DAY_NODE_NAME, PREFIX + ':'
-                                + DAY_NODE_NAME);
-                    }
-                    if (monthOpen) {
-                        this.contentHandler.endElement(URI, MONTH_NODE_NAME, PREFIX + ':'
-                                + MONTH_NODE_NAME);
-                    }
-                    this.attributes.clear();
-                    attributes.addAttribute("", ID_ATTR_NAME,
-                            ID_ATTR_NAME, "CDATA", String.valueOf(month));
-                    this.contentHandler.startElement(URI, MONTH_NODE_NAME, PREFIX + ':'
-                            + MONTH_NODE_NAME, attributes);
-                    monthOpen = true;
-                    currentMonth = month;
-                    currentDay = 0;
-                } 
-                if (day != currentDay) {
-                    if (dayOpen) {
-                        this.contentHandler.endElement(URI, DAY_NODE_NAME, PREFIX + ':'
-                                + DAY_NODE_NAME);
-                    }
-                    this.attributes.clear();
-                    attributes.addAttribute("", ID_ATTR_NAME,
-                            ID_ATTR_NAME, "CDATA", String.valueOf(day));
-                    this.contentHandler.startElement(URI, DAY_NODE_NAME, PREFIX + ':'
-                            + DAY_NODE_NAME, attributes);
-                    dayOpen = true;
-                    currentDay = day;
-                }                
-                if (structure == null) {
-                    attributes.clear();
-                    attributes.addAttribute("", PATH_ATTR_NAME,
-                            PATH_ATTR_NAME, "CDATA", doc.getPath());
-                    attributes.addAttribute("", URL_ATTR_NAME,
-                            URL_ATTR_NAME, "CDATA", doc.getCanonicalWebappURL());
-                    org.w3c.dom.Document docDOM = DocumentHelper.readDocument(doc.getInputStream());
-                    Element parent = docDOM.getDocumentElement();
-                    Element element = (Element) XPathAPI.selectSingleNode(parent,
-                        "/*[local-name() = 'entry']/*[local-name() = 'title']");
-                    attributes.addAttribute("", TITLE_ATTR_NAME,
-                            TITLE_ATTR_NAME, "CDATA",DocumentHelper.getSimpleElementText(element));
-                    attributes.addAttribute("", LASTMOD_ATTR_NAME,
-                            LASTMOD_ATTR_NAME, "CDATA", String.valueOf(doc.getLastModified())); 
-                    DocumentHelper.getSimpleElementText(element);
-                    this.contentHandler.startElement(URI, ENTRY_NODE_NAME,
-                            PREFIX + ':' + ENTRY_NODE_NAME, attributes);
-                    this.contentHandler.endElement(URI, ENTRY_NODE_NAME, PREFIX
-                            + ':' + ENTRY_NODE_NAME);
-                }
-            }
-            
-            if (dayOpen) {
-                this.contentHandler.endElement(URI, DAY_NODE_NAME, PREFIX + ':'
-                        + DAY_NODE_NAME);
-            }
-            if (monthOpen) {
-                this.contentHandler.endElement(URI, MONTH_NODE_NAME, PREFIX + ':'
-                        + MONTH_NODE_NAME);
-            }
-            if (yearOpen) {
-                this.contentHandler.endElement(URI, YEAR_NODE_NAME, PREFIX + ':'
-                        + YEAR_NODE_NAME);
-            }
-            
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        this.contentHandler.endElement(URI, BLOG_NODE_NAME, PREFIX + ':'
-                + BLOG_NODE_NAME);
-
-        this.contentHandler.endPrefixMapping(PREFIX);
-        this.contentHandler.endDocument();
-    }
-}
diff --git a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Deactivate.java b/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Deactivate.java
deleted file mode 100644
index a5c8813..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Deactivate.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.blog.cms.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-
-/**
- * Deactivate usecase handler.
- * 
- * @version $Id: Deactivate.java 264805 2005-08-30 16:20:15Z andreas $
- */
-public class Deactivate extends DocumentUsecase {
-
-    /**
-     * Checks if the workflow event is supported and the parent of the document exists in the live
-     * area.
-     * 
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-            if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-                addErrorMessage("This usecase can only be invoked from the authoring area.");
-                return;
-            }
-            String event = getEvent();
-            if (!WorkflowUtil.canInvoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    getSourceDocument(),
-                    event)) {
-                addInfoMessage("The document cannot be deactivated because the workflow event cannot be invoked.");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        try {
-            List nodes = new ArrayList();
-            Document doc = getSourceDocument();
-            Document liveDoc = doc.getAreaVersion(Publication.LIVE_AREA);            
-            nodes.add(doc.getRepositoryNode());
-            nodes.add(liveDoc.getRepositoryNode());            
-            nodes.add(liveDoc.area().getSite().getRepositoryNode());
-            nodes.add(doc.area().getSite().getRepositoryNode());            
-            return (org.apache.lenya.cms.repository.Node[]) nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);            
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        deactivate(getSourceDocument());
-    }
-
-    /**
-     * Deactivates a document.
-     * 
-     * @param authoringDocument The authoring document.
-     */
-    protected void deactivate(Document authoringDocument) {
-
-        boolean success = false;
-
-        DocumentManager documentManager = null;
-        try {
-            Document liveDocument = authoringDocument.getAreaVersion(Publication.LIVE_AREA);
-
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.delete(liveDocument);
-         
-            WorkflowUtil.invoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    authoringDocument,
-                    getEvent());                  
-            success = true;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Deactivate document [" + authoringDocument + "]. Success: ["
-                        + success + "]");
-            }
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-
-    }
-
-    /**
-     * @return The event to invoke.
-     */
-    private String getEvent() {
-        return "deactivate";
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Delete.java b/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Delete.java
deleted file mode 100644
index 6c6ca2c..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Delete.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.blog.cms.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-
-/**
- * Deactivate usecase handler.
- * 
- * @version $Id: Deactivate.java 264805 2005-08-30 16:20:15Z andreas $
- */
-public class Delete extends DocumentUsecase {
-    
-    /**
-     * Checks if the workflow event is supported and the parent of the document exists in the live
-     * area.
-     * 
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-            if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
-                addErrorMessage("This usecase can only be invoked from the authoring area.");
-                return;
-            }
-            Document liveDocument = getSourceDocument().getAreaVersion(Publication.LIVE_AREA);
-            if (liveDocument.exists()) {
-                addErrorMessage("The document cannot be deleted because it's Live, deactivate it first");
-                return;
-            }
-            String event = getEvent();
-            if (!WorkflowUtil.canInvoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    getSourceDocument(),
-                    event)) {
-                addInfoMessage("The document cannot be deactivated because the workflow event cannot be invoked.");
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        try {
-            List nodes = new ArrayList();
-            Document doc = getSourceDocument();           
-            nodes.add(doc.getRepositoryNode());            
-            nodes.add(doc.area().getSite().getRepositoryNode());            
-            return (org.apache.lenya.cms.repository.Node[]) nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);            
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        delete(getSourceDocument());        
-        setTargetDocument(getDocumentFactory().get(getSourceDocument().getPublication(), Publication.AUTHORING_AREA,"/feeds/all/index"));
-    }
-
-    /**
-     * Deletes a document.
-     * @param document The document to delete.
-     */
-    protected void delete(Document document) {
-        DocumentManager documentManager = null;
-        boolean success = false;
-        try {
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.delete(document);       
-            WorkflowUtil.invoke(this.manager,
-                    getSession(),
-                    getLogger(),
-                    document,
-                    getEvent());
-            success = true;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Delete document [" + getSourceDocument() + "]. Success: ["
-                        + success + "]");
-            }
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-    }
-
-    /**
-     * @return The event to invoke.
-     */
-    private String getEvent() {
-        return "delete";
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Publish.java b/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Publish.java
deleted file mode 100644
index be92353..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/lenya/blog/cms/usecases/Publish.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.blog.cms.usecases;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.workflow.Version;
-import org.apache.lenya.workflow.Workflowable;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Element;
-
-/**
- * Publish usecase handler.
- * 
- * @version $Id: Publish.java 209612 2005-07-07 16:52:44Z chestnut $
- */
-public class Publish extends DocumentUsecase {
-
-    protected static final String MISSING_DOCUMENTS = "missingDocuments";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        try {
-            List nodes = new ArrayList();
-            DocumentSet set = new DocumentSet();
-
-            Document doc = getSourceDocument();
-            NodeSet subsite = SiteUtil.getSubSite(this.manager, doc.getLink().getNode());
-            set.addAll(new DocumentSet(subsite.getDocuments()));
-
-            Document[] documents = set.getDocuments();
-            for (int i = 0; i < documents.length; i++) {
-                nodes.add(documents[i].getRepositoryNode());
-            }
-
-            Area live = doc.getPublication().getArea(Publication.LIVE_AREA);
-            nodes.add(live.getSite().getRepositoryNode());
-            return (Node[]) nodes.toArray(new Node[nodes.size()]);
-
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * Checks if the workflow event is supported and the parent of the document
-     * exists in the live area.
-     * 
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-
-            String event = getEvent();
-            Document document = getSourceDocument();
-
-            if (!document.getArea().equals(Publication.AUTHORING_AREA)) {
-                addErrorMessage("This usecase can only be invoked from the authoring area.");
-                return;
-            }
-
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, event, document, getLogger());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        DocumentManager documentManager = null;
-        try {
-            Document authoringDocument = getSourceDocument();
-            if (authoringDocument.getResourceType().getName().equals("entry")) {
-                updateBlogEntry(authoringDocument);
-            }
-            updateFeed();
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            documentManager.copyToArea(authoringDocument, Publication.LIVE_AREA);
-            WorkflowUtil.invoke(this.manager, getSession(), getLogger(), authoringDocument,
-                    getEvent());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-        }
-    }
-
-    protected void updateFeed() throws Exception {
-
-        Document[] docs = new Document[2];
-        org.w3c.dom.Document[] doms = new org.w3c.dom.Document[2];
-
-        Publication pub = getSourceDocument().getPublication();
-        Area authoring = pub.getArea(Publication.AUTHORING_AREA);
-        Area live = pub.getArea(Publication.LIVE_AREA);
-        String path = "/feeds/all/index";
-        String language = pub.getDefaultLanguage();
-
-        docs[0] = live.getSite().getNode(path).getLink(language).getDocument();
-        docs[1] = authoring.getSite().getNode(path).getLink(language).getDocument();
-
-        DateFormat datefmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-        DateFormat ofsfmt = new SimpleDateFormat("Z");
-        Date date = new Date();
-
-        String dateofs = ofsfmt.format(date);
-        String datestr = datefmt.format(date) + dateofs.substring(0, 3) + ":"
-                + dateofs.substring(3, 5);
-
-        for (int i = 0; i < 2; i++) {
-            doms[i] = DocumentHelper.readDocument(docs[i].getInputStream());
-            Element parent = doms[i].getDocumentElement();
-            // set modified date on publish
-            Element element = (Element) XPathAPI.selectSingleNode(parent,
-                    "/*[local-name() = 'feed']/*[local-name() = 'modified']");
-            DocumentHelper.setSimpleElementText(element, datestr);
-            DocumentHelper.writeDocument(doms[i], docs[i].getOutputStream());
-        }
-    }
-
-    protected void updateBlogEntry(Document doc) throws Exception {
-        org.w3c.dom.Document dom = DocumentHelper.readDocument(doc.getInputStream());
-        Element parent = dom.getDocumentElement();
-
-        DateFormat datefmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-        DateFormat ofsfmt = new SimpleDateFormat("Z");
-        Date date = new Date();
-
-        String dateofs = ofsfmt.format(date);
-        String datestr = datefmt.format(date) + dateofs.substring(0, 3) + ":"
-                + dateofs.substring(3, 5);
-
-        // set modified date on re-publish
-        Element element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'modified']");
-        DocumentHelper.setSimpleElementText(element, datestr);
-
-        // set issued date on first time publish
-        Workflowable dw = WorkflowUtil.getWorkflowable(this.manager, this.getSession(), this
-                .getLogger(), doc);
-        Version versions[] = dw.getVersions();
-        boolean wasLive = false;
-        for (int i = 0; i < versions.length; i++) {
-            if (versions[i].getValue("is_live")) {
-                wasLive = true;
-                break;
-            }
-        }
-        if (!wasLive) {
-            element = (Element) XPathAPI.selectSingleNode(parent,
-                    "/*[local-name() = 'entry']/*[local-name() = 'issued']");
-            DocumentHelper.setSimpleElementText(element, datestr);
-        }
-
-        DocumentHelper.writeDocument(dom, doc.getOutputStream());
-    }
-
-    /**
-     * @return The event to invoke.
-     */
-    private String getEvent() {
-        return "publish";
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java b/trunk/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java
deleted file mode 100644
index 3486b78..0000000
--- a/trunk/src/modules/blog/java/src/org/apache/lenya/cms/site/usecases/CreateBlogEntry.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Element;
-
-/**
- * Usecase to create a Blog entry.
- * 
- * @version $Id$
- */
-public class CreateBlogEntry extends DocumentUsecase {
-
-    protected static final String PARENT_ID = "parentId";
-    protected static final String DOCUMENT_TYPE = "doctype";
-    protected static final String DOCUMENT_ID = "documentId";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        SiteStructure structure = getSourceDocument().area().getSite();
-        Node[] nodes = { structure.getRepositoryNode() };
-        return nodes;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Document parent = getSourceDocument();
-        try {
-            setParameter(PARENT_ID, parent.getPath());
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-
-        String documentId = getParameterAsString(DOCUMENT_ID);
-
-        if (documentId.equals("")) {
-            addErrorMessage("The document ID is required.");
-        }
-
-        if (documentId.matches("[^a-zA-Z0-9\\-]+")) {
-            addErrorMessage("The document ID is not valid.");
-        }
-
-        super.doCheckExecutionConditions();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        // prepare values necessary for blog entry creation
-        Document parent = getSourceDocument();
-        String language = parent.getPublication().getDefaultLanguage();
-
-        // create new document
-        // implementation note: since blog does not have a hierarchy,
-        // document id (full path) and document id-name (this leaf's id)
-        // are the same
-        DocumentManager documentManager = null;
-        ServiceSelector selector = null;
-        ResourceType resourceType = null;
-
-        try {
-            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = (ResourceType) selector.select(getDocumentTypeName());
-
-            documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-            DocumentFactory map = getDocumentFactory();
-
-            String documentId = getDocumentID();
-            
-            String sampleName = resourceType.getSampleNames()[0];
-            String sampleUri = resourceType.getSample(sampleName).getUri();
-
-            Document document = documentManager.add(map,
-                    resourceType,
-                    sampleUri,
-                    getSourceDocument().getPublication(),
-                    getSourceDocument().getArea(),
-                    documentId,
-                    language,
-                    "xml",
-                    getParameterAsString(DublinCore.ELEMENT_TITLE),
-                    true);
-
-            transformXML(document);
-        } finally {
-            if (documentManager != null) {
-                this.manager.release(documentManager);
-            }
-            if (selector != null) {
-                if (resourceType != null) {
-                    selector.release(resourceType);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    /**
-     * The blog publication has a specific site structuring: it groups nodes by date.
-     * 
-     * <p>
-     * Example structuring of blog entries:
-     * </p>
-     * <ul>
-     * <li>2004</li>
-     * <li>2005</li>
-     * <ul>
-     * <li>01</li>
-     * <li>02</li>
-     * <ul>
-     * <li>23</li>
-     * <li>24</li>
-     * <ul>
-     * <li>article-one</li>
-     * <li>article-two</li>
-     * </ul>
-     * </ul>
-     * </ul>
-     * </ul>
-     * 
-     * @return The document ID.
-     */
-    protected String getDocumentID() {
-        DateFormat fmtyyyy = new SimpleDateFormat("yyyy");
-        DateFormat fmtMM = new SimpleDateFormat("MM");
-        DateFormat fmtdd = new SimpleDateFormat("dd");
-        Date date = new Date();
-
-        String year = fmtyyyy.format(date);
-        String month = fmtMM.format(date);
-        String day = fmtdd.format(date);
-
-        String documentId = "/entries/" + year + "/" + month + "/" + day + "/"
-                + getNewDocumentName() + "/index";
-        return documentId;
-    }
-
-    /**
-     * @return The document name.
-     * @see org.apache.lenya.cms.site.usecases.Create#getNewDocumentName()
-     */
-    protected String getNewDocumentName() {
-        return getParameterAsString(DOCUMENT_ID);
-    }
-
-    /**
-     * @return The name of the document type.
-     * @see org.apache.lenya.cms.site.usecases.Create#getDocumentTypeName()
-     */
-    protected String getDocumentTypeName() {
-        return getParameterAsString(DOCUMENT_TYPE);
-    }
-
-    protected void transformXML(Document document) throws Exception {
-
-        Map objectModel = ContextHelper.getObjectModel(getContext());
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        String title = getParameterAsString(DublinCore.ELEMENT_TITLE);
-
-        org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(document.getInputStream());
-
-        Element parent = xmlDoc.getDocumentElement();
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("NewBlogEntryCreator.transformXML(): " + document);
-
-        String[] steps = document.getPath().split("/");
-        String nodeId = steps[5];
-
-        // Replace id
-        Element element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'id']");
-
-        String year = steps[2];
-        String month = steps[3];
-        String day = steps[4];
-
-        DocumentHelper.setSimpleElementText(element, year + "/" + month + "/" + day + "/" + nodeId);
-
-        // Replace title
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'title']");
-        DocumentHelper.setSimpleElementText(element, title);
-
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'link']");
-        element.setAttribute("rel", "alternate");
-        element.setAttribute("href", "");
-        element.setAttribute("type", "text/xml");
-
-        // Replace Summary
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'summary']");
-        DocumentHelper.setSimpleElementText(element, "Summary");
-
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'author']/*[local-name() = 'name']");
-
-        if (element == null) {
-            throw new RuntimeException("Element entry/author/name not found.");
-        }
-
-        DocumentHelper.setSimpleElementText(element, identity.getUser().getId());
-
-        // Replace date created, issued and modified
-        DateFormat datefmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-        DateFormat ofsfmt = new SimpleDateFormat("Z");
-        Date date = new Date();
-
-        String dateofs = ofsfmt.format(date);
-        String datestr = datefmt.format(date) + dateofs.substring(0, 3) + ":"
-                + dateofs.substring(3, 5);
-
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'created']");
-        DocumentHelper.setSimpleElementText(element, datestr);
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'issued']");
-        DocumentHelper.setSimpleElementText(element, datestr);
-        element = (Element) XPathAPI.selectSingleNode(parent,
-                "/*[local-name() = 'entry']/*[local-name() = 'modified']");
-        DocumentHelper.setSimpleElementText(element, datestr);
-
-        DocumentHelper.writeDocument(xmlDoc, document.getOutputStream());
-    }
-}
diff --git a/trunk/src/modules/blog/resources/samples/entry.xml b/trunk/src/modules/blog/resources/samples/entry.xml
deleted file mode 100644
index 62ae2b6..0000000
--- a/trunk/src/modules/blog/resources/samples/entry.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<echo:entry xmlns:echo="http://purl.org/atom/ns#" xmlns:ent="http://www.purl.org/NET/ENT/1.0/">
-  <echo:title>My Sample Entry</echo:title>
-  <echo:summary>Summary</echo:summary>
-  <echo:author>
-    <echo:name>Bob B. Bobbington</echo:name>
-  </echo:author>
-  <echo:link rel="alternate" href="" type="text/xml"/>
-  <echo:id>tag:bob.blog.net,2004:04:15:taxes</echo:id>
-  <echo:created>2003-02-05T12:29:29-04:00</echo:created>
-  <echo:issued>2003-02-05T08:29:29-04:00</echo:issued>
-  <echo:modified>2003-02-05T12:29:29-04:00</echo:modified>
-  <echo:content type="application/xhtml+xml">
-    <p><em>Hello</em>, <strong>weblog</strong> <a href="http://www.apache.org">world</a>!</p>
-  </echo:content>
-</echo:entry>
diff --git a/trunk/src/modules/blog/resources/samples/sidebar.xml b/trunk/src/modules/blog/resources/samples/sidebar.xml
deleted file mode 100644
index b5be292..0000000
--- a/trunk/src/modules/blog/resources/samples/sidebar.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<sidebar>
-  <block>
-    <title>Feeds</title>
-    <content>
-      <a href="recentlink-atom">Echo/Atom Feed</a>
-      <br/>
-      <a href="recentlink-rss">RSS Feed</a>
-    </content>
-  </block>
-  <block>
-    <title>Links</title>
-    <content>
-      <a href="http://lenya.apache.org/">Lenya</a>
-      <br/>
-      <a href="http://cocoon.apache.org">Cocoon</a>
-      <br/>
-      <a href="http://www.apache.org">Apache</a>
-    </content>
-  </block>
-</sidebar>
diff --git a/trunk/src/modules/blog/resources/schemas/entry.rng b/trunk/src/modules/blog/resources/schemas/entry.rng
deleted file mode 100644
index c20283b..0000000
--- a/trunk/src/modules/blog/resources/schemas/entry.rng
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: entry.rng 124404 2005-01-06 16:17:36Z andreas $ -->
-
-<grammar xmlns:echo="http://purl.org/atom/ns#" ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-  <start>
-    <element name="echo:entry">
-      <element name="echo:title">
-        <text/>
-      </element>
-      <element name="echo:summary">
-        <text/>
-      </element>
-      <element name="echo:author">
-        <element name="echo:name">
-          <data type="string"/>
-        </element>
-      </element>
-      <element name="echo:link">
-        <attribute name="href">
-          <data type="anyURI"/>
-        </attribute>
-        <attribute name="rel">
-          <data type="NCName"/>
-        </attribute>
-        <attribute name="type"/>
-      </element>
-      <element name="echo:id">
-        <data type="anyURI"/>
-      </element>
-      <element name="echo:created">
-        <data type="dateTime"/>
-      </element>
-      <element name="echo:issued">
-        <data type="dateTime"/>
-      </element>
-      <element name="echo:modified">
-        <data type="dateTime"/>
-      </element>
-      <element name="echo:content">
-        <attribute name="type"/>
-        <oneOrMore>
-          <element name="p">
-            <oneOrMore>
-              <choice>
-                <text/>
-                <element name="a">
-                  <attribute name="href">
-                    <data type="anyURI"/>
-                  </attribute>
-                  <text/>
-                </element>
-                <element name="strong">
-                  <text/>
-                </element>
-                <element name="em">
-                  <text/>
-                </element>
-              </choice>
-            </oneOrMore>
-          </element>
-        </oneOrMore>
-      </element>
-    </element>
-  </start>
-</grammar>
diff --git a/trunk/src/modules/blog/resources/schemas/feed.rng b/trunk/src/modules/blog/resources/schemas/feed.rng
deleted file mode 100644
index 9cf8ae6..0000000
--- a/trunk/src/modules/blog/resources/schemas/feed.rng
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<grammar ns="http://purl.org/atom/ns#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-  <start>
-    <element name="feed">
-      <attribute name="version">
-        <data type="decimal"/>
-      </attribute>
-      <element name="title">
-        <text/>
-      </element>
-      <element name="link">
-        <attribute name="href">
-          <data type="anyURI"/>
-        </attribute>
-        <attribute name="rel">
-          <data type="NCName"/>
-        </attribute>
-        <attribute name="type"/>
-      </element>
-      <element name="modified">
-        <text/>
-      </element>
-    </element>
-  </start>
-</grammar>
diff --git a/trunk/src/modules/blog/resources/schemas/sidebar.rng b/trunk/src/modules/blog/resources/schemas/sidebar.rng
deleted file mode 100644
index 73c1a74..0000000
--- a/trunk/src/modules/blog/resources/schemas/sidebar.rng
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: sidebar.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-  <start>
-    <element name="sidebar">
-      <oneOrMore>
-        <element name="block">
-          <element name="title">
-            <text/>
-          </element>
-          <element name="content">
-            <oneOrMore>
-              <choice>
-                <text/>
-                <element name="a">
-                  <attribute name="href">
-                    <data type="anyURI"/>
-                  </attribute>
-                  <text/>
-                </element>
-                <element name="br">
-                  <empty/>
-                </element>
-              </choice>
-            </oneOrMore>
-          </element>
-        </element>
-      </oneOrMore>
-    </element>
-  </start>
-</grammar>
diff --git a/trunk/src/modules/blog/resources/schemas/test.rng b/trunk/src/modules/blog/resources/schemas/test.rng
deleted file mode 100644
index 4e4bb39..0000000
--- a/trunk/src/modules/blog/resources/schemas/test.rng
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<grammar ns="http://purl.org/atom/ns#" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-  <start>
-    <element name="feed">
-      <attribute name="version">
-        <data type="decimal"/>
-      </attribute>
-      <element name="title">
-        <text/>
-      </element>
-      <element name="link">
-        <attribute name="href">
-          <data type="anyURI"/>
-        </attribute>
-        <attribute name="rel">
-          <data type="NCName"/>
-        </attribute>
-        <attribute name="type"/>
-      </element>
-      <element name="modified">
-        <data type="NMTOKEN"/>
-      </element>
-    </element>
-  </start>
-</grammar>
diff --git a/trunk/src/modules/blog/usecases/site/create.jx b/trunk/src/modules/blog/usecases/site/create.jx
deleted file mode 100644
index e001e54..0000000
--- a/trunk/src/modules/blog/usecases/site/create.jx
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: create.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>New Entry</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>New Entry</i18n:text>
-      </div>
-
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-create">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-      	  <input type="hidden" name="doctype" value="entry"/>
-          <table class="lenya-table-noborder">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="documentId"><i18n:text>Entry ID</i18n:text>*:</label></td>
-                <td>
-                  <input class="lenya-form-element" type="text" name="documentId" value="${usecase.getParameter('documentId')}"/>
-                  <br/> (<i18n:text>No whitespace, no special characters</i18n:text>)</td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="title"><i18n:text>Title</i18n:text>*: </label></td>
-                <td>
-                  <input class="lenya-form-element" type="text" name="title" value="${usecase.getParameter('title')}"/>
-                </td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption">* <i18n:text>required fields</i18n:text>
-                </td>
-              </tr>
-              <tr>
-                <td/>
-                <td>
-                  <input i18n:attr="value" type="submit" name="submit" value="Create"/>
-                  &#160;
-                  <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-                </td>
-              </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/blog/usecases/workflow/deactivate.jx b/trunk/src/modules/blog/usecases/workflow/deactivate.jx
deleted file mode 100644
index b161057..0000000
--- a/trunk/src/modules/blog/usecases/workflow/deactivate.jx
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: deactivate.jx 164785 2005-04-26 13:19:24Z jwkaltz $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>Deactivate</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Deactivate</i18n:text>
-      </div>
-
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-deactivate">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption" valign="top"><i18n:text>Document</i18n:text>:</td>
-              <td valign="top">
-                <jx:out value="${usecase.getParameter('document').getId()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Deactivate"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/blog/usecases/workflow/delete.jx b/trunk/src/modules/blog/usecases/workflow/delete.jx
deleted file mode 100644
index e815371..0000000
--- a/trunk/src/modules/blog/usecases/workflow/delete.jx
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: deactivate.jx 164785 2005-04-26 13:19:24Z jwkaltz $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>Delete</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Delete</i18n:text>
-      </div>
-
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-delete">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption" valign="top"><i18n:text>Document</i18n:text>:</td>
-              <td valign="top">
-                <jx:out value="${usecase.getParameter('document').getId()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Delete"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/blog/usecases/workflow/publish.jx b/trunk/src/modules/blog/usecases/workflow/publish.jx
deleted file mode 100644
index aa03f42..0000000
--- a/trunk/src/modules/blog/usecases/workflow/publish.jx
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publish.jx 164785 2005-04-26 13:19:24Z jwkaltz $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <page:title><i18n:text>Publish</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>Publish</i18n:text>
-      </div>
-      <div class="lenya-box-body">
-        <form id="form-publish">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption" valign="top"><i18n:text>Document</i18n:text>:</td>
-              <td valign="top">
-                <jx:out value="${usecase.getParameter('document').getId()}"/>
-              </td>
-            </tr>
-            <tr>
-              <td colspan="2">
-                <ul>
-                  <jx:forEach var="message" items="${usecase.getErrorMessages()}">
-                    <li>
-                      <i18n:text>
-                        <jx:out value="${message}"/>
-                      </i18n:text>
-                    </li>
-                  </jx:forEach>
-                  <jx:forEach var="message" items="${usecase.getInfoMessages()}">
-                    <li>
-                      <i18n:text>
-                        <jx:out value="${message}"/>
-                      </i18n:text>
-                    </li>
-                  </jx:forEach>
-                </ul>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Publish"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe-close.xconf b/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe-close.xconf
deleted file mode 100644
index 9e94a1d..0000000
--- a/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe-close.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-    This file defines the publication specific use-cases
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'bxe.close']">
-    
-    <component-instance name="bxe.close" logger="lenya.publication" 
-    class="org.apache.lenya.cms.usecase.DummyUsecase">
-      <view uri="/modules/bxe/bxe.close" menu="false" createContinuation="false"/>
-    </component-instance>
-    
-  </xconf>
diff --git a/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe.xconf b/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe.xconf
deleted file mode 100644
index 81ce8e9..0000000
--- a/trunk/src/modules/bxe/config/cocoon-xconf/usecase-bxe.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 1999-2005 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.

--->

-

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'bxe.edit']">

-    

-    <component-instance name="bxe.edit" logger="lenya.publication" 

-      class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">

-      <view uri="modules/bxe/usecases/bxe.jx" menu="false" createContinuation="false"/>
-      <transaction policy="pessimistic"/>
-      <event id="edit"/>
-      <parameter name="checkoutRestrictedToSession" value="false"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules/bxe/config/module.xml b/trunk/src/modules/bxe/config/module.xml
deleted file mode 100644
index a374e0d..0000000
--- a/trunk/src/modules/bxe/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.bxe</id>
-  <depends module="org.apache.lenya.modules.usecase"/>

-  <depends module="org.apache.lenya.modules.webdav"/>
-  <depends module="org.apache.lenya.modules.resource"/>
-  <package>org.apache.lenya.modules</package>
-  <version>1.0-alpha1</version>
-  <name>BXE Editor</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>http://bxe.oscom.org, now using generic editor usecases</description>
-</module>
diff --git a/trunk/src/modules/bxe/resources/javascript/bxe_lenya_glue.js b/trunk/src/modules/bxe/resources/javascript/bxe_lenya_glue.js
deleted file mode 100644
index 7311af7..0000000
--- a/trunk/src/modules/bxe/resources/javascript/bxe_lenya_glue.js
+++ /dev/null
@@ -1,99 +0,0 @@
-org.apache.lenya.editors.setObjectData = function(objectData, windowName) {
-  var usecase = usecaseMap[windowName];
-  var namespace;
-
-  switch (usecase) {
-    case org.apache.lenya.editors.USECASE_INSERTLINK:
-    case org.apache.lenya.editors.USECASE_INSERTIMAGE:
-      namespace = "http://www.w3.org/1999/xhtml";
-      break;
-    // FIXME: that is a shotgun approach to getting the broken <asset> thing to run.
-    // We get an asset, but it throws validation errors.
-    // it needs to be thrown out and replaced by <a href="" class="lenya.asset"/> anyways.
-    case org.apache.lenya.editors.USECASE_INSERTASSET:
-      namespace = "http://apache.org/cocoon/lenya/page-envelope/1.0";
-      break;
-  }
-
-  var snippet = org.apache.lenya.editors.generateContentSnippet(usecase, objectData, namespace);
-  var selection = window.getSelection(); // this works cross-browser, because bxe's editable area is not a form field
-  var content = snippet.beforeSelection 
-    + (snippet.replaceSelection ? snippet.replaceSelection : selection)
-    + snippet.afterSelection;
-  
-  // FIXME: someone with better bxe insights might want to check the options below...
-  switch (usecase) {
-    case org.apache.lenya.editors.USECASE_INSERTLINK:
-    case org.apache.lenya.editors.USECASE_INSERTIMAGE:
-      // If something was selected, it ends up in the alt attribute only, and is lost from view.
-      // better to keep it in the text as well (cf. replace behaviour...)
-      window.bxe_insertContent(content, window.BXE_SELECTION,window.BXE_SPLIT_IF_INLINE);
-      break;
-    case org.apache.lenya.editors.USECASE_INSERTASSET:
-      window.bxe_insertContent(content, window.BXE_SELECTION);
-      break;
-  }
-  usecaseMap[windowName] = undefined; // we're done!
-  objectData[windowName] = undefined; // we're done!
-}
-
-
-org.apache.lenya.editors.getObjectData = function(windowName) {
-  return objectData[windowName];
-}
-
-// 3 functions are needed because bxe's config file accepts only function names,
-// no parameters.
-
-
-function triggerInsertLink() {
-  var objectData = new org.apache.lenya.editors.ObjectData({
-    url   : "",
-    text  : "",
-    title : ""
-  });
-  triggerUsecase(org.apache.lenya.editors.USECASE_INSERTLINK, objectData);
-}
-
-
-function triggerInsertImage() {
-  var objectData = new org.apache.lenya.editors.ObjectData({
-    url   : "",
-    text  : "",
-    title : "",
-    width : "",
-    height: ""
-  });
-  triggerUsecase(org.apache.lenya.editors.USECASE_INSERTIMAGE, objectData);
-}
-
-
-function triggerInsertAsset() {
- var objectData = new org.apache.lenya.editors.ObjectData({
-    url   : "",
-    text  : "",
-    title : ""
-  });
-  triggerUsecase(org.apache.lenya.editors.USECASE_INSERTASSET, objectData);
-
-}
-
-
-function triggerUsecase(usecase, data) {
-  var windowName = org.apache.lenya.editors.generateUniqueWindowName();
-  data.text = window.getSelection();// this works cross-browser, because bxe's editable area is not a form field 
-  org.apache.lenya.editors.openUsecaseWindow(usecase, windowName);
-  //store some information about the new window for later:
-  usecaseMap[windowName] = usecase;
-  objectData[windowName] = data;
-  /* alert("Stored values for new window " + windowName + ":\n"
-      + "objectData[windowName] = '" + objectData[windowName] + "'\n"
-      + "usecaseMap[windowName] = '" + usecaseMap[windowName] + "'"
-  ); */ 
-}
-
-
-var objectData = new Array();
-var usecaseMap = new Array();
-
-
diff --git a/trunk/src/modules/bxe/resources/misc/content-namespaces.xml b/trunk/src/modules/bxe/resources/misc/content-namespaces.xml
deleted file mode 100644
index 9fb765b..0000000
--- a/trunk/src/modules/bxe/resources/misc/content-namespaces.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: content-namespaces.xml 56193 2004-11-01 03:51:25Z gregor $ -->
-
-<namespaces>
-  <xmlns>xhtml=http://www.w3.org/1999/xhtml</xmlns>
-  <xmlns>lenya=http://apache.org/cocoon/lenya/page-envelope/1.0</xmlns>
-  <xmlns>dc=http://purl.org/dc/elements/1.1/</xmlns>
-  <xmlns>dcterms=http://purl.org/dc/terms/</xmlns>
-</namespaces>
diff --git a/trunk/src/modules/bxe/resources/misc/contextmenu.xml b/trunk/src/modules/bxe/resources/misc/contextmenu.xml
deleted file mode 100644
index 70b0b4a0..0000000
--- a/trunk/src/modules/bxe/resources/misc/contextmenu.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: contextmenu.xml 56193 2004-11-01 03:51:25Z gregor $ -->
-
-    <context type="dontShow">
-         <!-- inline elements -->       
-         <element name="abbr" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="acronym" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="big" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="button" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="caption" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="dfn" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="input" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="kbd" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="label" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="q" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="samp" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="select" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="small" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="span" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="textarea" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="tt" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="var" ns="http://www.w3.org/1999/xhtml"/>
-         <!-- block elements --> 
-         <element name="address" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="blockquote" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="div" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="dl" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="fieldset" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="form" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="h1" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="h5" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="h6" ns="http://www.w3.org/1999/xhtml"/>         
-         <element name="asset" ns="http://apache.org/cocoon/lenya/page-envelope/1.0"/> 
-         <element name="pre" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="table" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="ol" ns="http://www.w3.org/1999/xhtml"/>
-         <element name="ul" ns="http://www.w3.org/1999/xhtml"/>
-         <!-- attributes --> 
-         <attribute name="id"/>      
-         <attribute name="style"/>      
-         <attribute name="xml:lang"/>      
-         <attribute name="accesskey"/>      
-         <attribute name="rel"/>      
-         <attribute name="rev"/>      
-         <attribute name="tabindex"/>      
-         <attribute name="name"/>      
-         <attribute name="axis"/>      
-         <attribute name="abbr"/>      
-         <attribute name="headers"/>      
-         <attribute name="scope"/>      
-         <attribute name="hreflang"/>      
-    </context>
\ No newline at end of file
diff --git a/trunk/src/modules/bxe/resources/misc/inc/config.xml b/trunk/src/modules/bxe/resources/misc/inc/config.xml
deleted file mode 100644
index fc24ffe..0000000
--- a/trunk/src/modules/bxe/resources/misc/inc/config.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: config.xml 161854 2005-04-19 08:16:31Z andreas $ -->
-
-<config>
-    <files>
-        <input>
-            <!-- The XML-document with the actual data -->
-            <file name="BX_xmlfile">index-bxe.xml</file>
-           <!-- The xhtml with the appropriate div tag (e.g. <div bxe_xpath="/xhtml:html/lenya:meta/dc:title" />)
-                 An xhtml file can be used instead of an xsl to provide the page layout of the non-editable part -->
-            <file name="BX_xhtmlfile">testxhtml.xml</file>
-
-            <!-- The XSL-document which transforms the xml to the output format -->
-            <file name="BX_xslfile">entry-bxe.xsl</file>
-            <!-- The RelaxNG (XML Schema) -->
-            <file name="BX_validationfile">relaxng.xml</file>
-        </input>
-        <output>
-            <file name="BX_exitdestination">index.html</file>
-
-         </output>
-        
-        <!-- You can't provide a different "method" than http.get for the following files -->
-        <css>
-            <!-- Document specific css, which you should adjust.  -->
-             <file>entry-bxe.css</file>
-          
-        </css>
-        
-        <scripts>
-        <!-- These are the to be included js files 
-        the important .js files are included by bxeLoader.js, but you should
-        not have to worry about them. 
-        You can also add your own js-files here.
-        -->
-
-            <file>js/bxehtmltb.js</file>
-            <file>js/table.js</file>
-            <file>mozile/jsdav.js</file>
-            <file>mozile/td/webdav.js</file>
-            <file>mozile/mozilekb.js</file>
-            
-            
-            <file>relaxng/AttributeVDOM.js</file>
-
-            <file>relaxng/NodeVDOM.js</file>
-            <file>relaxng/DocumentVDOM.js</file>
-            <file>relaxng/ElementVDOM.js</file>
-            <file>relaxng/DocumentVAL.js</file>
-            <file>relaxng/NodeVAL.js</file>
-            <file>relaxng/ElementVAL.js</file>
-
-            <file>relaxng/RelaxNG.js</file>
-        
-        </scripts>
-        
-        
-    </files>
-    <options> 
-    <option name="autoParaElementName">p</option>
-    <option name="autoParaElementNamespace">http://www.w3.org/1999/xhtml</option>
-    <option name="showSplashScreen">true</option>
-    <option name="mergeDifferentBlocksOnDelete">true</option>
-    </options>
-<!-- here we define the buttons for the top button bar -->
-    <buttons>
-    
-    <!-- The location of the image for the buttons
-           if none is provided, the images/buttons.png is taken 
-    <location src="../../images/bxe.png"/>
-    -->
-     <!-- the dimension tag is for defining the dimensions of your button image and how
-            large each button is. -->
-    <dimension  width="120" height="140" buttonwidth="20" buttonheight="20"/>
-    <!-- For each button, we need a definition
-    attributes:  
-        col: in which column the button is in the button image
-        row: in which row the button is in the button image
-        name: the name of the button, this has to be unique and is used as tool tip at the moment
-        ns: a namespace associated to the button (usually the namespace of the element to be inserted)
-        type: The type of the "event" which should happen
-            "function": This function will be called, when the button is clicked
-            "insertElement": This element will be inserted
-            "event": This event will be triggered
-            
-            If there's no "type" attribute, but a "action" attribute, the event in the action attribute
-            will be triggered. 
-            
-            If type "event" or the action attribute is defined, the event gets the value of @name as parameter.
-        examples: 
-        - inserts the element xhtml:strong at cursor position 
-          <button name="strong" col="1" row="1" type="insertElement" ns="http://www.w3.org/1999/xhtml">b</button>
-        - calls the function DoSomething(), when clicked
-          <button name="strong" col="1" row="1" type="function">DoSomething</button>
-        - triggers the event ToggleTextClass (and makes the selection bold in this example)
-          the 2 examples are the same, the later is here for backwards compatibility.
-          <button name="strong" col="1" row="1" type="event" ns="http://www.w3.org/1999/xhtml">ToggleTextClass</button>
-          <button name="strong" col="1" row="1" action="ToggleTextClass" ns="http://www.w3.org/1999/xhtml"/>
-          
-    -->
-
-        <button name="strong" col="1" row="1" action="ToggleTextClass" ns="http://www.w3.org/1999/xhtml"/>
-        <button name="em" col="0" row="1" action="ToggleTextClass" ns="http://www.w3.org/1999/xhtml"/>
-
-        <button name="sub" col="4" row="1" action="ToggleTextClass" ns="http://www.w3.org/1999/xhtml"/>
-        <button name="sup" col="5" row="1" action="ToggleTextClass" ns="http://www.w3.org/1999/xhtml"/>
-        <button name="clean_inline" col="0" row="6" action="CleanInline"/>
-        <!--button name="link" col="0" row="5" type="insertElement" ns="http://www.w3.org/1999/xhtml">a</button-->
-        <button name="link" col="0" row="5" type="function">triggerInsertLink</button>
-        <button name="unlink" col="1" row="5" action="DeleteLink"/>
-        <button name="create_table" col="2" row="5" action="InsertTable"/>
-        <button name="Unordered_List" col="3" row="2" action="UnorderedList"/>
-        <button name="Ordered_List" col="2" row="2" action="OrderedList"/>
-
-        <button name="Copy" col="0" row="4" action="ClipboardCopy"/>
-        <button name="Cut" col="1" row="4" action="ClipboardCut"/>
-        <!-- see https://ssl.bitflux.ch/horde/chora/diff.php/trunk/examples/uni/config.xml?rt=svneditor&ws=0&r1=1027&r2=1444&ty=u -->
-        <button name="PasteDialog" col="4" row="4" action="ClipboardPasteDialog"/>
-
-        <button name="Paste" col="2" row="4" action="ClipboardPaste"/>
-        <!--button name="Image" col="3" row="5" action="InsertImage"/-->
-        <button name="Image" col="3" row="5" type="function">triggerInsertImage</button>
-        <button name="Save" col="1" row="6" action="DocumentSave"/>
-        <button name="Undo" col="3" row="6" action="Undo"/>
-        <button name="Redo" col="4" row="6" action="Redo"/>
-        <!-- button name="Asset" col="2" row="6" action="InsertAsset"/-->
-        <button name="Asset" col="2" row="6" type="function">triggerInsertAsset</button>
-    </buttons>
-    <callbacks>
-        <element name="table" ns="http://www.w3.org/1999/xhtml" type="function">bxe_InsertTableCallback</element>
-<!--
-        <element name="object" ns="http://www.w3.org/1999/xhtml" type="popup">?lenya.usecase=bxe.insertImage</element>
-        <element name="img" ns="http://www.w3.org/1999/xhtml" type="popup">?lenya.usecase=bxe.insertImage</element>
-        <element name="asset" ns="http://apache.org/cocoon/lenya/page-envelope/1.0" type="popup">?lenya.usecase=bxe.insertAsset</element>
-        <element name="a" ns="http://www.w3.org/1999/xhtml" precheck="bxe_checkIfNotALink" type="popup">?lenya.module=bxe&amp;lenya.step=link-show</element>
--->
-    </callbacks>
-    <options>
-     <option name="autoParaElementName">p</option>
-     <option name="autoParaElementNamespace">http://www.w3.org/1999/xhtml</option>
-    </options>
-    <plugins>
-      <plugin name="ClipboardPasteDialog"/>
-    </plugins>
-</config>
diff --git a/trunk/src/modules/bxe/resources/misc/index.xhtml b/trunk/src/modules/bxe/resources/misc/index.xhtml
deleted file mode 100755
index 2c129d5..0000000
--- a/trunk/src/modules/bxe/resources/misc/index.xhtml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: index.xhtml 55477 2004-10-25 03:38:18Z gregor $ -->
-    
-<html xmlns="http://www.w3.org/1999/xhtml"  >
-<head>
-
-<!-- Namespaces are doctype specific and will be added during aggregation -->
-
-<link rel="stylesheet" href="@EDITOR_CSS@" type="text/css" />
-<!-- href="/bxe/css/editor.css" -->
-
-<script src="@BXELOADER_JS@" type="text/javascript"></script>
-<!-- src="/bxe/bxeLoader.js" -->
-
-
-<title>Bitflux Editor</title>
-
-</head>
-
-<body onload="bxe_start('CONFIG_FILE')">
-<!-- everything in the following div element will be replaced -->
-<div id="bxe_area">
-<noscript>
-<span style='font-family: Arial; padding: 5px; background-color: #ffffff'>
-You need JavaScript enabled. Otherwise nothing at all works here
-:)</span></noscript>
-</div>
-
-<!-- another way to do it without having to use xslt
-  <div id="foobar" bxe_xpath="/xhtml:body"></div>
--->
-</body>
-</html>
diff --git a/trunk/src/modules/bxe/sitemap.xmap b/trunk/src/modules/bxe/sitemap.xmap
deleted file mode 100644
index 002a38c..0000000
--- a/trunk/src/modules/bxe/sitemap.xmap
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase-bxe.xmap 345495 2005-11-18 15:11:30Z chestnut $ -->
-<!-- 
-  This sitemap handles the interaction between the Bitflux Editor and Lenya
--->
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <!-- =========================== Resources ================================ -->
-  <map:resources>
-    
-    <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-    </map:resource>
-    
-    <map:resource name="cms-screen-xml">
-      <map:generate src="fallback://lenya/content/{serverpage}" type="serverpages"/>
-      <map:transform src="fallback://lenya/xslt/{stylesheet}">
-        <map:parameter name="use-request-parameters" value="true"/>
-      </map:transform>      
-    </map:resource>
-    
-    <map:resource name="cms-screen">
-      <map:call resource="cms-screen-xml">
-        <map:parameter name="serverpage" value="{serverpage}"/>
-        <map:parameter name="stylesheet" value="{stylesheet}"/>
-      </map:call>
-      <map:call resource="style-cms-page"/>
-      <map:serialize />
-    </map:resource>
-    
-    
-  </map:resources>
-  <!-- =========================== Flow ===================================== -->
-  <map:flow language="javascript">
-    <map:script src="fallback://lenya/usecases/edit-document.js"/>
-    <map:script src="fallback://lenya/modules/bxe/usecases/bxe.js"/>
-  </map:flow>
-  <!-- =========================== Pipelines ================================ -->
-  
-  <map:pipelines>
-    
-    <map:pipeline type="noncaching">
-    
-      <map:match pattern="bxe.close">
-        <map:act type="reserved-checkin">
-            <map:generate type="serverpages" src="fallback://lenya/content/rc/{exception}.xsp">
-              <map:parameter name="user" value="{user}"/>
-              <map:parameter name="filename" value="{filename}"/>
-              <map:parameter name="date" value="{date}"/>
-              <map:parameter name="message" value="{message}"/>
-            </map:generate>
-            <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-            <map:call resource="style-cms-page"/>
-            <map:serialize />
-        </map:act>  
-        <map:redirect-to uri="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}.html}"/>
-      </map:match>
-      
-      <map:match pattern="*/*/**.html">
-        <!--+
-          | Build the BXE configuration
-          +-->
-        
-        <map:match type="step" pattern="config">
-          <map:select type="resource-exists">
-            <map:when test="fallback://lenya/modules/{page-envelope:document-type}/config/bxe.xml">
-              <map:generate src="fallback://lenya/modules/{page-envelope:document-type}/config/bxe.xml"/>
-            </map:when>
-            <map:otherwise>
-              <map:generate src="fallback://lenya/modules/bxe/resources/misc/inc/config.xml"/>
-            </map:otherwise>
-          </map:select>
-          
-          <map:transform src="fallback://lenya/modules/bxe/xslt/config-xml.xsl">
-            <!-- Parameter BX_xmlfile:
-              defines the Lenya URL with which BXE interacts, to
-              1. get the document contents (by issuing a GET to this URL),
-              2. save the changed contents (by issuing a PUT to this URL)
-            -->
-            <map:parameter name="BX_xmlfile" value="{proxy:/{../1}/{../2}/{../3}.xml}?lenya.module=webdav&amp;lenya.event=edit"/>
-            <map:parameter name="defaultlanguage" value="{page-envelope:default-language}"/>
-            
-            <!-- Instead of an xsl we use the xhtml file to provide the basic layout
-              <map:parameter name="BX_xslfile" value="{2}.xsl"/>
-            -->
-            <map:parameter name="BX_xhtmlfile" value="{proxy:/{../1}/{../2}/{../3}.bxe.html}?rendertype=edit"/>
-            <map:parameter name="BX_validationfile" value="{proxy:{resource-type:httpSchemaUri}}"/>
-            <map:parameter name="css" value="{proxy:/lenya/css/default.css}"/>
-            <!-- The document is checked in when we exit from bx (in case of save&exit and in case of exit), so we use the usecase
-              for the checkin while we redirect to the document
-            -->
-            <map:parameter name="BX_exitdestination" value="{proxy:/{../1}/{../2}/{../3}.html}?lenya.usecase=bxe.close"/>
-            <map:parameter name="contextmenufile" value="fallback://lenya/modules/bxe/resources/misc/contextmenu.xml"/>
-          </map:transform>
-          <map:transform type="cinclude"/>
-          <map:serialize type="xml"/>
-        </map:match>
-        
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-  
-</map:sitemap>
diff --git a/trunk/src/modules/bxe/usecases/addSourceTags.xsl b/trunk/src/modules/bxe/usecases/addSourceTags.xsl
deleted file mode 100644
index 08e57bb..0000000
--- a/trunk/src/modules/bxe/usecases/addSourceTags.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: addSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:param name="source"/>
-
-<xsl:template match="/">
-  <open>
-  <source:write xmlns:source="http://apache.org/cocoon/source/1.0">
-    <source:source><xsl:value-of select="$source"/></source:source>
-    <source:fragment>
-      <xsl:copy-of select="."/>
-    </source:fragment>
-  </source:write>
-    <content>
-      <xsl:copy-of select="."/>
-    </content>
-  </open>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/bxe/usecases/bxe.jx b/trunk/src/modules/bxe/usecases/bxe.jx
deleted file mode 100644
index db936df..0000000
--- a/trunk/src/modules/bxe/usecases/bxe.jx
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:ci="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:head>
-    <jx:set var="pathInfo" value="${usecase.getSourceURL()}"/>
-    <jx:set var="steps" value="${pathInfo.split('/')}"/>
-    <jx:set var="pubId" value="${java.util.Arrays.asList(steps).get(1)}"/>
-    <link rel="stylesheet" href="/${pubId}/modules/bxe/bxe/css/editor.css" type="text/css"/>
-    <script src="/${pubId}/modules/bxe/bxe/bxeLoader.js" type="text/javascript"/>
-    <script src="/modules/editors/javascript/org.apache.lenya.editors.js"/>
-    <script src="/modules/bxe/javascript/bxe_lenya_glue.js"/>
-  </page:head>
-  
-  <page:title><i18n:text>Bitflux Editor</i18n:text></page:title>
-  
-  <jx:set var="sourceUrl" value="${usecase.getSourceURL()}"/>
-  <jx:set var="steps" value="${sourceUrl.split('/')}"/>
-  <jx:set var="lastStep" value="${steps[steps.size() - 1]}"/>
-  
-  <jx:choose>
-    <jx:when test="${usecase.hasErrors()}">
-      <page:body>
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      </page:body>
-    </jx:when>
-    <jx:otherwise>
-      <page:body onload="bxe_start('${lastStep}?lenya.module=bxe&amp;lenya.step=config')">
-    
-        <!-- everything in the following div element will be replaced -->
-        <div id="bxe_area">
-        <noscript>
-        <span style='font-family: Arial; padding: 5px; background-color: #ffffff'>
-        You need JavaScript enabled. Otherwise nothing at all works here
-        :)</span></noscript>
-        </div>
-        
-        <!-- another way to do it without having to use xslt
-          <div id="foobar" bxe_xpath="/xhtml:body"></div>
-        -->
-            
-      </page:body>
-    </jx:otherwise>
-  </jx:choose>
-  
-</page:page>
diff --git a/trunk/src/modules/bxe/usecases/removeSourceTags.xsl b/trunk/src/modules/bxe/usecases/removeSourceTags.xsl
deleted file mode 100644
index ab21c5d..0000000
--- a/trunk/src/modules/bxe/usecases/removeSourceTags.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: removeSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="/">
-  <xsl:copy-of select="/open/content/*"/>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/bxe/xslt/aggregate.xsl b/trunk/src/modules/bxe/xslt/aggregate.xsl
deleted file mode 100644
index c5d6537..0000000
--- a/trunk/src/modules/bxe/xslt/aggregate.xsl
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
->
-
-<xsl:template match="/">
-<xsl:apply-templates select="bxe"/>
-</xsl:template>
-
-<xsl:template match="bxe">
-<html>
-<xsl:apply-templates select="xhtml:html/xhtml:head"/>
-<xsl:copy-of select="xhtml:html/xhtml:body"/>
-</html>
-</xsl:template>
-
-<xsl:template match="xhtml:head">
-<xhtml:head>
-<xsl:for-each select="/bxe/namespaces/xmlns">
-  <meta name="bxeNS" content="{.}"/>
-</xsl:for-each>
-<xsl:copy-of select="@*|node()"/>
-</xhtml:head>
-</xsl:template>
- 
-</xsl:stylesheet>  
diff --git a/trunk/src/modules/bxe/xslt/change-object-path-back.xsl b/trunk/src/modules/bxe/xslt/change-object-path-back.xsl
deleted file mode 100644
index 1e15b4e..0000000
--- a/trunk/src/modules/bxe/xslt/change-object-path-back.xsl
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    >
-
-  <xsl:template match="xhtml:object/@data[not(starts-with(., '/'))]">
-    <xsl:variable name="url">
-      <xsl:value-of select="." />
-    </xsl:variable>
-    <xsl:attribute name="data">
-      <xsl:value-of select="substring-after($url, '/')" />
-    </xsl:attribute>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()" />
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/bxe/xslt/change-object-path.xsl b/trunk/src/modules/bxe/xslt/change-object-path.xsl
deleted file mode 100644
index 899a5aa..0000000
--- a/trunk/src/modules/bxe/xslt/change-object-path.xsl
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-    
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    >
-  <xsl:param name="documentid" />
-  
-  
-  <xsl:variable name="nodeid">
-    <xsl:call-template name="getnodeid">
-      <xsl:with-param name="url" select="$documentid"/>
-    </xsl:call-template>
-  </xsl:variable>
-  
-  
-  <xsl:template match="xhtml:object/@data[not(starts-with(., '/'))]">
-    <xsl:attribute name="data">
-      <xsl:value-of select="concat($nodeid, '/', .)" />
-    </xsl:attribute>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()" />
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template name="getnodeid">
-    <xsl:param name="url" />
-    <xsl:variable name="slash">/</xsl:variable>
-    <xsl:choose>
-      <xsl:when test="contains($url, $slash)">
-        <xsl:call-template name="getnodeid">
-          <xsl:with-param name="url" select="substring-after($url, $slash)" />
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$url" />
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/bxe/xslt/config-xml.xsl b/trunk/src/modules/bxe/xslt/config-xml.xsl
deleted file mode 100644
index 26465fc..0000000
--- a/trunk/src/modules/bxe/xslt/config-xml.xsl
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0" 
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:param name="BX_xmlfile"/>
-<xsl:param name="BX_xhtmlfile"/>
-<xsl:param name="BX_xslfile"/>
-<xsl:param name="BX_validationfile"/>
-<xsl:param name="css"/>
-<xsl:param name="script"/>
-<xsl:param name="callbackscript"/>
-<xsl:param name="BX_exitdestination"/>
-<xsl:param name="contextmenufile"/>
-<xsl:param name="defaultlanguage"/>
-
-<xsl:template match="/config">
-  <xsl:copy>
-    <xsl:apply-templates select="@* | node()"/>
-
-  <cinclude:include src="{$contextmenufile}"/>
-  </xsl:copy>
-</xsl:template>
-
-<xsl:template match="files/input/file[@name = 'BX_xmlfile']">
-  <file name="BX_xmlfile"><xsl:value-of select="$BX_xmlfile"/></file>
-</xsl:template>
-
-<xsl:template match="files/input/file[@name = 'BX_xhtmlfile']">
-  <xsl:if test="$BX_xhtmlfile">
-    <file name="BX_xhtmlfile"><xsl:value-of select="$BX_xhtmlfile"/></file>
-  </xsl:if>
-
-</xsl:template>
-
-<xsl:template match="files/input/file[@name = 'BX_xslfile']">
-  <xsl:if test="$BX_xslfile">
-    <file name="BX_xslfile"><xsl:value-of select="$BX_xslfile"/></file>
-  </xsl:if>
-</xsl:template>
-
-<xsl:template match="files/input/file[@name = 'BX_validationfile']">
-  <xsl:if test="$BX_validationfile">
-    <file name="BX_validationfile"><xsl:value-of select="$BX_validationfile"/></file>
-  </xsl:if>
-
-</xsl:template>
-
-<xsl:template match="files/output/file[@name = 'BX_exitdestination']">
-  <file name="BX_exitdestination"><xsl:value-of select="$BX_exitdestination"/></file>
-</xsl:template>
-
-<xsl:template match="files/css/file">
-  <file><xsl:value-of select="$css"/></file>
-</xsl:template>
-
-  <xsl:template match="files/scripts/file[position()=last()]">
-    <file><xsl:value-of select="."/></file>
-    <xsl:if test="$script">
-      <file><xsl:value-of select="$script"/></file>
-    </xsl:if>
-    <xsl:if test="$callbackscript">
-      <file><xsl:value-of select="$callbackscript"/></file>
-    </xsl:if>
-  </xsl:template>
-
-<!-- pass default language to link screen for sitetree display -->  
-<xsl:template match="callbacks/element[@name = 'a']/text()">
-  <xsl:value-of select="."/>&amp;language=<xsl:value-of select="$defaultlanguage"/>
-</xsl:template>
-  
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-
-  </xsl:copy>
-</xsl:template>
-   
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/bxe/xslt/index-xhtml.xsl b/trunk/src/modules/bxe/xslt/index-xhtml.xsl
deleted file mode 100644
index d50e17d..0000000
--- a/trunk/src/modules/bxe/xslt/index-xhtml.xsl
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
->
-
-<xsl:param name="configfile"/>
-<xsl:param name="context"/>
-
-<xsl:template match="xhtml:head/xhtml:title">
-  <title><xsl:value-of select="$configfile"/></title>
-</xsl:template>
-
-<xsl:template match="xhtml:body/@onload">
-  <xsl:attribute name="onload">bxe_start('<xsl:value-of select="$configfile"/>')</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="xhtml:head/xhtml:link/@href">
-  <xsl:attribute name="href"><xsl:value-of select="$context"/>/bxe/css/editor.css</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="xhtml:head/xhtml:script/@src">
-  <xsl:attribute name="src"><xsl:value-of select="$context"/>/bxe/bxeLoader.js</xsl:attribute>
-</xsl:template>
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-   
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/bxe/xslt/sitetree2tree.xsl b/trunk/src/modules/bxe/xslt/sitetree2tree.xsl
deleted file mode 100644
index 518ba60..0000000
--- a/trunk/src/modules/bxe/xslt/sitetree2tree.xsl
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!--
-        Converts a sitetree into a javascript array suitable for the tree widget.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:s="http://apache.org/cocoon/lenya/navigation/1.0">
-
-<xsl:import href="../util/string-functions.xsl"/>
-
-<xsl:output omit-xml-declaration="yes"/>    
-
-<xsl:param name="contextprefix"/>
-<xsl:param name="publicationid"/>
-<xsl:param name="chosenlanguage"/>
-<xsl:param name="defaultlanguage"/>
-<xsl:param name="cutdocumentid"/>
-<xsl:param name="incremental"/>
-<xsl:param name="areas"/>
-   
-<xsl:template match="/">
-    <xsl:param name="parentPath"/>
-// You can find instructions for this file at http://www.treeview.net
-
-//Environment variables are usually set at the top of this file.
-USETEXTLINKS = 1
-STARTALLOPEN = 0
-USEFRAMES = 0
-USEICONS = 0
-WRAPTEXT = 1
-PRESERVESTATE = 1
-HIGHLIGHT = 1
-HIGHLIGHT_BG = "#DDDCCF"
-HIGHLIGHT_COLOR = "#666666"
-CONTEXT_PREFIX = "<xsl:value-of select="$contextprefix"/>";
-PUBLICATION_ID = "<xsl:value-of select="$publicationid"/>";
-CHOSEN_LANGUAGE = "<xsl:value-of select="$chosenlanguage"/>";
-DEFAULT_LANGUAGE = "<xsl:value-of select="$defaultlanguage"/>";
-CUT_DOCUMENT_ID = "<xsl:value-of select="$cutdocumentid"/>";
-ALL_AREAS = "<xsl:value-of select="$areas"/>"
-PIPELINE_PATH = '/authoring/info-sitetree/sitetree-fragment.xml'
-<xsl:choose>
-  <xsl:when test="$incremental='true'">
-INCREMENTAL_LOADING = true;
-  </xsl:when>
-  <xsl:otherwise>
-INCREMENTAL_LOADING = false;
-  </xsl:otherwise>
-</xsl:choose>
-
-<!-- incremental loading does not work with the preserve state mechanism (cookies) -->
-if (INCREMENTAL_LOADING) PRESERVESTATE=0;
-
-foldersTree = gFld("&lt;strong&gt;<xsl:value-of select="$publicationid"/>&lt;/strong&gt;")
-
-  <xsl:if test="$incremental!='true'">
-    <xsl:apply-templates select="lenya/s:site"/>
-  </xsl:if>
-
-//Set this string if Treeview and other configuration files may also be loaded in the same session
-foldersTree.treeID = "t2"
-</xsl:template>
-
-<xsl:template match="s:site">
-  <xsl:param name="parentPath"/>
-  <xsl:variable name="suffix">
-  	<xsl:if test="not($chosenlanguage = $defaultlanguage)">_<xsl:value-of select="$chosenlanguage"/></xsl:if>
-  </xsl:variable>
-  
-  <xsl:variable name="link">
-      <xsl:text>, 'javascript:setLink(\'</xsl:text>
-      <xsl:value-of select="concat('/', $suffix)"/>
-      <xsl:text>\')'</xsl:text>
-  </xsl:variable>
-  
-  <xsl:variable name="protected-pre"><xsl:if test="@protected = 'true'">&lt;span class=\"lenya-info-protected\"&gt;</xsl:if></xsl:variable>
-  <xsl:variable name="protected-post"><xsl:if test="@protected = 'true'">&lt;/span&gt;</xsl:if></xsl:variable>
-  
-  <xsl:variable name="pre" select="$protected-pre"/>
-  <xsl:variable name="post" select="$protected-post"/>
-  
-  <xsl:choose>
-  	<xsl:when test="descendant::s:node"><xsl:value-of select="generate-id(.)"/> = insFld(foldersTree, gFld("&#160;<xsl:value-of select="$pre"/><xsl:value-of select="@label"/><xsl:value-of select="$post"/>&#160;" <xsl:value-of select="$link"/>))</xsl:when>
-    <xsl:otherwise>insDoc(foldersTree, gLnk("S", "&#160;<xsl:value-of select="$pre"/><xsl:value-of select="@label"/><xsl:value-of select="$post"/>&#160;" <xsl:value-of select="$link"/>))</xsl:otherwise>
-  </xsl:choose>
-  <xsl:apply-templates>
-    <xsl:with-param name="parentPath"><xsl:value-of select="@id"/></xsl:with-param>
-  </xsl:apply-templates>   
-</xsl:template>
-
-<xsl:template match="s:node">
-  <xsl:param name="parentPath"/>
-  <xsl:variable name="tree-area" select="ancestor::s:site/@area"/>
-  <xsl:variable name="link">
-    <xsl:if test="not(@protected = 'true')">
-      <xsl:text>, 'javascript:setLink(\'</xsl:text>
-      <xsl:value-of select="concat('/', @basic-url, @language-suffix, @suffix)"/>
-      <xsl:text>\')'</xsl:text>
-    </xsl:if>
-  </xsl:variable>
-  <xsl:variable name="exists-language" select="s:label[lang($chosenlanguage)]"/>
-  
-  <xsl:variable name="protected-pre"><xsl:if test="@protected = 'true'">&lt;span class=\"lenya-info-protected\"&gt;</xsl:if></xsl:variable>
-  <xsl:variable name="protected-post"><xsl:if test="@protected = 'true'">&lt;/span&gt;</xsl:if></xsl:variable>
-  
-  <xsl:variable name="no-language-pre"><xsl:if test="not($exists-language)">&lt;span class=\"lenya-info-nolanguage\"&gt;</xsl:if></xsl:variable>
-  <xsl:variable name="no-language-post"><xsl:if test="not($exists-language)">&lt;/span&gt;</xsl:if></xsl:variable>
-  
-  <xsl:variable name="cut-pre"><xsl:if test="$cutdocumentid = concat('/', @basic-url)">&lt;span class='lenya-info-cut'&gt;[</xsl:if></xsl:variable>
-  <xsl:variable name="cut-post"><xsl:if test="$cutdocumentid = concat('/', @basic-url)">]&lt;/span&gt;</xsl:if></xsl:variable>
-  
-  <xsl:variable name="pre" select="concat($no-language-pre, $protected-pre, $cut-pre)"/>
-  <xsl:variable name="post" select="concat($cut-post, $protected-post, $no-language-post)"/>
-
-  <xsl:choose>
-  	<xsl:when test="descendant::s:node">
-  		<xsl:value-of select="generate-id(.)"/>
-  		= insFld(
-  			   <xsl:value-of select="generate-id(..)"/>,
-           gFld("&lt;span style=\"padding: 0px 5px;\"&gt;<xsl:value-of select="$pre"/><xsl:call-template name="getLabel"/><xsl:value-of select="$post"/>&lt;/span&gt;"
-           <xsl:value-of select="$link"/>)
-      );
-    </xsl:when>
-    <xsl:otherwise>
-    	insDoc(<xsl:value-of select="generate-id(..)"/>,
-    	       gLnk(
-    	           "S",
-    	           "&lt;span style=\"padding: 0px 5px;\"&gt;<xsl:value-of select="$pre"/><xsl:call-template name="getLabel"/>&lt;/span&gt;"
-    	           <xsl:value-of select="$link"/>)
-      );
-      </xsl:otherwise>
-  </xsl:choose>
-  <xsl:apply-templates>
-    <xsl:with-param name="parentPath"><xsl:value-of select="$parentPath"/>/<xsl:value-of select="@id"/></xsl:with-param>
-  </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template name="getLabel">
-  <xsl:choose>
-    <xsl:when test="s:label[lang($chosenlanguage)]">
-      <xsl:call-template name="escape-characters">
-        <xsl:with-param name="input" select="s:label[lang($chosenlanguage)]"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="s:label[lang($defaultlanguage)]">
-      <xsl:call-template name="escape-characters">
-        <xsl:with-param name="input" select="s:label[lang($defaultlanguage)]"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:call-template name="escape-characters">
-        <xsl:with-param name="input" select="s:label"/>
-      </xsl:call-template>
-    </xsl:otherwise>
-  </xsl:choose>	
-</xsl:template>
-
-<xsl:template match="s:label"/>
-
-
-<xsl:template name="escape-characters">
-  <xsl:param name="input"/>
-  <xsl:variable name="escape-lt">
-    <xsl:call-template name="search-and-replace">
-      <xsl:with-param name="input" select="$input"/>
-      <xsl:with-param name="search-string">&lt;</xsl:with-param>
-      <xsl:with-param name="replace-string">&amp;lt;</xsl:with-param>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:variable name="escape-gt">
-    <xsl:call-template name="search-and-replace">
-      <xsl:with-param name="input" select="$escape-lt"/>
-      <xsl:with-param name="search-string">&gt;</xsl:with-param>
-      <xsl:with-param name="replace-string">&amp;gt;</xsl:with-param>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:variable name="escape-quot">
-    <xsl:call-template name="search-and-replace">
-      <xsl:with-param name="input" select="$escape-gt"/>
-      <xsl:with-param name="search-string">"</xsl:with-param>
-      <xsl:with-param name="replace-string">\"</xsl:with-param>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:value-of select="$escape-quot"/>
-</xsl:template>
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/cforms/config/cocoon-xconf/module.xconf b/trunk/src/modules/cforms/config/cocoon-xconf/module.xconf
deleted file mode 100644
index 8c29c0a..0000000
--- a/trunk/src/modules/cforms/config/cocoon-xconf/module.xconf
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'cforms']">
-
-  <component-instance name="cforms"
-                      logger="lenya.resourcetypes.cforms"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-      uri="fallback://lenya/modules/cforms/schemas/cforms.rng" 
-      namespace="http://relaxng.org/ns/structure/0.9"
-    />
-    <sample 
-      mime-type="application/xml"
-      uri="fallback://lenya/modules/cforms/samples/cforms.xml"
-    />
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@href"/>
-    <format name="xhtml" uri="cocoon://modules/cforms/xhtml.xml"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/cforms/config/cocoon-xconf/usecase-edit.xconf b/trunk/src/modules/cforms/config/cocoon-xconf/usecase-edit.xconf
deleted file mode 100644
index 804b5ef..0000000
--- a/trunk/src/modules/cforms/config/cocoon-xconf/usecase-edit.xconf
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'cforms.edit']">
-  <component-instance name="cforms.edit"
-                      logger="lenya.site"
-                      class="org.apache.lenya.cms.editors.cforms.CForms">
-    <view 
-       uri="modules/cforms/usecases/dynamicrepeater_template.xml" 
-       customFlow="fallback://lenya/modules/cforms/flow/customFlow.js"
-    />
-    <event id="edit"/>
-  </component-instance>
-</xconf>
-
diff --git a/trunk/src/modules/cforms/config/menu.xsp b/trunk/src/modules/cforms/config/menu.xsp
deleted file mode 100644
index ed03fac..0000000
--- a/trunk/src/modules/cforms/config/menu.xsp
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="sitemanagement.create" href="?doctype=cforms">
-            <i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-cforms</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            try {
-                Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-                if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                    String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                    if ("cforms".equals(doctype)) {
-                        <block areas="authoring">
-                          <item wf:event="edit" uc:usecase="cforms.edit" href="?"><i18n:text>With CForms</i18n:text></item>
-                          <!-- TODO: add RelaxNG schemas for cforms doctype.
-                          <item wf:event="edit" uc:usecase="editors.forms"><xsp:attribute name="href"><xsp:expr>"?form=" + doctype</xsp:expr></xsp:attribute><i18n:text>With Forms</i18n:text></item>
-                          <item wf:event="edit" uc:usecase="editors.oneform" href="?"><i18n:text>With one Form</i18n:text></item>
-                          -->
-                        </block>
-                    }
-                }
-            }
-            catch (Exception e) {
-                throw new ProcessingException("Error during menu generation: ", e);
-            }
-          </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/cforms/config/module.xml b/trunk/src/modules/cforms/config/module.xml
deleted file mode 100644
index 6a84bd2..0000000
--- a/trunk/src/modules/cforms/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.cforms</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>CForms Editor</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>CForms Editor</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/cforms/flow/customFlow.js b/trunk/src/modules/cforms/flow/customFlow.js
deleted file mode 100644
index a5e86f4..0000000
--- a/trunk/src/modules/cforms/flow/customFlow.js
+++ /dev/null
@@ -1,39 +0,0 @@
-function customLoopFlow(view,proxy,generic) {
-   // load some helper functions
-   // cocoon.load("fallback://lenya/modules/cforms/flow/lenyadoc-utils.js");
-    try {
-        var formDef = "fallback://lenya/modules/cforms/usecases/dynamicrepeater.xml";
-        var formBind = "fallback://lenya/modules/cforms/usecases/dynamicrepeater_binding.xml";
-        var formView = "usecases-view/menu/modules/cforms/usecases/dynamicrepeater_template.xml";
-        generic.form = new Form(formDef);
-        generic.form.setAttribute("counter", new java.lang.Integer(0));
-        generic.form.createBinding(formBind);
-        
-        try {
-                var parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
-                var resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
-                var source = resolver.resolveURI(proxy.getParameter('sourceUri'));
-                var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
-                is.setSystemId(source.getURI());
-                generic.doc = parser.parseDocument(is);
-        } finally {
-                if (source != null)
-                resolver.release(source);
-                cocoon.releaseComponent(parser);
-                cocoon.releaseComponent(resolver);
-        }
-        
-        generic.form.load(generic.doc);
-        generic.form.showForm(formView, {"usecase" : proxy});
-    } catch (exception) {
-        // if an exception was thrown by the view, allow the usecase to rollback the transition
-        log("error", "Exception during customLoopFlow: " + exception);
-        throw exception;
-    }
-}
-
-function customSubmitFlow(usecase, generic) {
-    generic.form.save(generic.doc);
-    usecase.setParameter("xml", generic.doc);
-    defaultSubmitFlow(usecase);
-}
diff --git a/trunk/src/modules/cforms/flow/lenyadoc-utils.js b/trunk/src/modules/cforms/flow/lenyadoc-utils.js
deleted file mode 100644
index a30e5ed..0000000
--- a/trunk/src/modules/cforms/flow/lenyadoc-utils.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: usecases.js 265544 2005-08-31 18:40:31Z thorsten $ */
-
-var loadDocument;
-
-function loadDocument(uri) {
-    var parser = null;
-    var source = null;
-    var resolver = null;
-    try {
-        parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
-        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
-        source = resolver.resolveURI(uri);
-        var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
-        is.setSystemId(source.getURI());
-        return parser.parseDocument(is);
-    } finally {
-        if (source != null)
-            resolver.release(source);
-        cocoon.releaseComponent(parser);
-        cocoon.releaseComponent(resolver);
-    }
-}
-
-var saveDocument;
-
-function saveDocument(document, uri) {
-    var source = null;
-    var resolver = null;
-    var outputStream = null;
-    try {
-        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
-        source = resolver.resolveURI(uri);
-
-        var tf = Packages.javax.xml.transform.TransformerFactory.newInstance();
-
-        if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource
-            && tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE)) {
-
-            outputStream = source.getOutputStream();
-            var transformerHandler = tf.newTransformerHandler();
-            var transformer = transformerHandler.getTransformer();
-            transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT, "true");
-            transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD, "xml");
-            transformerHandler.setResult(new Packages.javax.xml.transform.stream.StreamResult(outputStream));
-
-            var streamer = new Packages.org.apache.cocoon.xml.dom.DOMStreamer(transformerHandler);
-            streamer.stream(document);
-        } else {
-            throw new Packages.org.apache.cocoon.ProcessingException("Cannot write to source " + uri);
-        }
-    } finally {
-        if (source != null)
-            resolver.release(source);
-        cocoon.releaseComponent(resolver);
-        if (outputStream != null) {
-            try {
-                outputStream.flush();
-                outputStream.close();
-            } catch (error) {
-                cocoon.log.error("Could not flush/close outputstream: " + error);
-            }
-        }
-    }
-}
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: usecases.js 265544 2005-08-31 18:40:31Z thorsten $ */
-
-var loadDocument;
-
-function loadDocument(uri) {
-    var parser = null;
-    var source = null;
-    var resolver = null;
-    try {
-        parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
-        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
-        source = resolver.resolveURI(uri);
-        var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
-        is.setSystemId(source.getURI());
-        return parser.parseDocument(is);
-    } finally {
-        if (source != null)
-            resolver.release(source);
-        cocoon.releaseComponent(parser);
-        cocoon.releaseComponent(resolver);
-    }
-}
-
-var saveDocument;
-
-function saveDocument(document, uri) {
-    var source = null;
-    var resolver = null;
-    var outputStream = null;
-    try {
-        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
-        source = resolver.resolveURI(uri);
-
-        var tf = Packages.javax.xml.transform.TransformerFactory.newInstance();
-
-        if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource
-            && tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE)) {
-
-            outputStream = source.getOutputStream();
-            var transformerHandler = tf.newTransformerHandler();
-            var transformer = transformerHandler.getTransformer();
-            transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT, "true");
-            transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD, "xml");
-            transformerHandler.setResult(new Packages.javax.xml.transform.stream.StreamResult(outputStream));
-
-            var streamer = new Packages.org.apache.cocoon.xml.dom.DOMStreamer(transformerHandler);
-            streamer.stream(document);
-        } else {
-            throw new Packages.org.apache.cocoon.ProcessingException("Cannot write to source " + uri);
-        }
-    } finally {
-        if (source != null)
-            resolver.release(source);
-        cocoon.releaseComponent(resolver);
-        if (outputStream != null) {
-            try {
-                outputStream.flush();
-                outputStream.close();
-            } catch (error) {
-                cocoon.log.error("Could not flush/close outputstream: " + error);
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules/cforms/java/src/org/apache/lenya/cms/editors/cforms/CForms.java b/trunk/src/modules/cforms/java/src/org/apache/lenya/cms/editors/cforms/CForms.java
deleted file mode 100644
index c8b1829..0000000
--- a/trunk/src/modules/cforms/java/src/org/apache/lenya/cms/editors/cforms/CForms.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *
- *  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.lenya.cms.editors.cforms;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.xml.DocumentHelper;
-
-/**
- * Dummy CForms usecase.
- */
-public class CForms extends InvokeWorkflow {
-    
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        try {
-            doPreparation(this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        org.w3c.dom.Document xml = (org.w3c.dom.Document) getParameter("xml");
-        DocumentHelper.writeDocument(xml, getSourceDocument().getOutputStream());
-    }
-    
-    protected Node[] getNodesToLock() {
-        Node[] nodes = { getSourceDocument().getRepositoryNode() };
-        return nodes;
-    }
-    
-    private void doPreparation(ServiceManager manager) {
-        Request request = ContextHelper.getRequest(this.context);
-        Document doc = getSourceDocument();
-        String sourceUri = doc.getSourceURI();
-        setParameter("sourceUri", sourceUri);
-        String pubId = doc.getPublication().getId();
-        setParameter("pubId", pubId);
-        String host="http://"+request.getServerName()+":"+request.getServerPort()  ;
-        setParameter("host", host);
-    }
-
-}
diff --git a/trunk/src/modules/cforms/menus.xmap b/trunk/src/modules/cforms/menus.xmap
deleted file mode 100644
index a55db31..0000000
--- a/trunk/src/modules/cforms/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/cforms/resources/i18n/cmsui.xml b/trunk/src/modules/cforms/resources/i18n/cmsui.xml
deleted file mode 100644
index 027a8ae..0000000
--- a/trunk/src/modules/cforms/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-cforms">CForms</message>
-  <message key="With CForms">With CForms</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/cforms/resources/i18n/cmsui_de.xml b/trunk/src/modules/cforms/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 32341ad..0000000
--- a/trunk/src/modules/cforms/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-cforms">CForms</message>
-  <message key="With CForms">Mit CForms</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/cforms/samples/cforms.xml b/trunk/src/modules/cforms/samples/cforms.xml
deleted file mode 100644
index 4eadc59..0000000
--- a/trunk/src/modules/cforms/samples/cforms.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<data>
-  <contacts>
-  </contacts>
-</data>
diff --git a/trunk/src/modules/cforms/sitemap.xmap b/trunk/src/modules/cforms/sitemap.xmap
deleted file mode 100644
index 2c1c07d..0000000
--- a/trunk/src/modules/cforms/sitemap.xmap
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{rendertype}" -->
-      <map:match pattern="*.xml">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/cforms/xslt/cforms2xhtml.xsl">
-          <map:parameter name="rendertype" value="{request-param:rendertype}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/cforms/usecases/dynamicrepeater.xml b/trunk/src/modules/cforms/usecases/dynamicrepeater.xml
deleted file mode 100644
index 1ebb973..0000000
--- a/trunk/src/modules/cforms/usecases/dynamicrepeater.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  @version $Id: dynamicrepeater.xml 190962 2005-06-16 17:17:00Z sylvain $
--->
-
-<fd:form xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"
-         xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-
-  <fd:widgets>
-  
-    <fd:repeater id="contacts">
-      <fd:widgets>
-        
-        <!-- The ID is here to keep track of row creation order, which can
-            have no relation with row index when the users used move up/down -->
-        <fd:output id="ID">
-          <fd:label>ID</fd:label>
-          <fd:datatype base="integer"/>
-        </fd:output>
-        
-        <fd:field id="firstname">
-          <fd:label>Firstname</fd:label>
-          <fd:datatype base="string"/>
-        </fd:field>
-        
-        <fd:field id="lastname">
-          <fd:label>Lastname</fd:label>
-          <fd:datatype base="string"/>
-        </fd:field>
-        
-        <fd:row-action id="up" command="move-up"/>
-        
-        <fd:row-action id="down" command="move-down"/>
-        
-        <fd:booleanfield id="select">
-          <fd:label>Select</fd:label>
-        </fd:booleanfield>
-        
-      </fd:widgets>
-    </fd:repeater>
-  
-    <fd:repeater-action id="addcontact" command="add-row" repeater="contacts">
-      <fd:label>Add contact</fd:label>
-      <fd:on-action>
-        <fd:javascript>
-          // Increment the row creation ID counter (it has been initialized in
-          // the flowscript when the form was created).
-          // This shows how attributes can be used as a communication means between
-          // application logic and widget event handlers.
-          var form = event.source.form;
-          var count = new java.lang.Integer(form.getAttribute("counter").intValue() + 1);
-          form.setAttribute("counter", count);
-          var repeater = form.getChild("contacts");
-          repeater.getRow(repeater.getSize() - 1).getChild("ID").setValue(count);
-        </fd:javascript>
-      </fd:on-action>
-    </fd:repeater-action>
-  
-    <fd:repeater-action id="removecontacts" command="delete-rows" repeater="contacts" select="select">
-      <fd:label>Remove selected contacts</fd:label>
-    </fd:repeater-action>
-
-    <fd:submit id="ok">
-      <fd:label><i18n:text>Submit</i18n:text></fd:label>
-    </fd:submit>
-  </fd:widgets>
-
-</fd:form>
diff --git a/trunk/src/modules/cforms/usecases/dynamicrepeater_binding.xml b/trunk/src/modules/cforms/usecases/dynamicrepeater_binding.xml
deleted file mode 100644
index 4d492d3..0000000
--- a/trunk/src/modules/cforms/usecases/dynamicrepeater_binding.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  @version $Id: dynamicrepeater_binding.xml 151045 2005-02-02 20:36:01Z tim $
--->
-
-<fb:context xmlns:fb="http://apache.org/cocoon/forms/1.0#binding"
-    xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"
-    path="/data">
-    
-  <fb:simple-repeater id="contacts" parent-path="contacts" row-path="contact">
-    <fb:value id="ID" path="@id">
-      <fd:convertor datatype="integer"/>
-    </fb:value>
-    <fb:value id="firstname" path="firstname"/>
-    <fb:value id="lastname" path="lastname"/>
-  </fb:simple-repeater>
-
-</fb:context>
diff --git a/trunk/src/modules/cforms/usecases/dynamicrepeater_template.xml b/trunk/src/modules/cforms/usecases/dynamicrepeater_template.xml
deleted file mode 100644
index ab458f9..0000000
--- a/trunk/src/modules/cforms/usecases/dynamicrepeater_template.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<page:page xmlns:ft="http://apache.org/cocoon/forms/1.0#template"
-      xmlns:fi="http://apache.org/cocoon/forms/1.0#instance"
-      xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-      xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-      xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0">
-      
-  <!-- Import the macros that define CForms template elements -->
-  <jx:import uri="resource://org/apache/cocoon/forms/generation/jx-macros.xml"/>
-
-  <page:head>
-  </page:head>
-
-  <page:title>
-    <i18n:text>CForm Example</i18n:text>
-  </page:title>
-
-  <page:body>
-    <ft:form-template method="POST" ajax="false">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase"
-        value="${request.getParameter('lenya.usecase')}"/>
-      <input type="hidden" id="lenya.submit" name="lenya.submit" value="ok"/>
-      <p>
-        This is an example of how dynamic templates (using the JX macros) allow to change the
-        page structure depending on the form contents. By adding or removing rows in the repeater
-        below you will see:
-      </p>
-      <ul>
-        <li>when there are no contacts, only the "Add contact" button is displayed and the table isn't shown,</li>
-        <li>when there are some contacts, the "move up" and "move down" buttons are not shown on the first and last lines, respectively.</li>
-      </ul>
-    <ft:repeater id="contacts">
-      <div>
-        <jx:choose>
-          <jx:when test="${repeater.getSize() == 0}">
-            <p><strong><em>There are no contacts to display</em></strong></p>
-          </jx:when>
-          <jx:otherwise>
-
-            <table border="1">
-              <tr>
-                <th><ft:repeater-widget-label widget-id="firstname"/></th>
-                <th><ft:repeater-widget-label widget-id="lastname"/></th>
-                <th><ft:repeater-widget-label widget-id="ID"/></th>
-                <th><ft:repeater-widget-label widget-id="select"/></th>
-              </tr>
-              <!-- The contents of the repeater-widget element is a template that will
-                   be applied to each row in the repeater. -->
-              <ft:repeater-rows>
-                <tr class="forms-row-${repeaterLoop.index % 2}">
-                  <td><ft:widget id="firstname"/></td>
-                  <td><ft:widget id="lastname"/></td>
-                  <td><ft:widget id="ID"/></td>
-                  <td>
-                    <!-- Don't display the "move up" button on the first row -->
-                    <jx:choose>
-                      <jx:when test="${repeaterLoop.first}">
-                        <img src="/cforms/forms/img/blank_btn.gif"/>
-                      </jx:when>
-                      <jx:otherwise>
-                        <ft:widget id="up">
-                          <fi:styling type="image" src="/cforms/forms/img/move_up.gif"/>
-                        </ft:widget>
-                      </jx:otherwise>
-                    </jx:choose>
-                    <!-- Don't display the "move down" button on the first row -->
-                    <jx:choose>
-                      <jx:when test="${repeaterLoop.last}">
-                        <img src="/cforms/forms/img/blank_btn.gif"/>
-                      </jx:when>
-                      <jx:otherwise>
-                        <ft:widget id="down">
-                          <fi:styling type="image" src="/cforms/forms/img/move_down.gif"/>
-                        </ft:widget>
-                      </jx:otherwise>
-                    </jx:choose>
-                  <ft:widget id="select"/>
-                  </td>
-                </tr>
-              </ft:repeater-rows>
-            </table>
-          </jx:otherwise>
-        </jx:choose>
-        <p>
-          <ft:widget id="../addcontact"/>
-          <jx:if test="${widget.getChild('contacts').getSize() > 0}">
-            <ft:widget id="../removecontacts"/>
-          </jx:if>
-        </p>
-      </div>
-      </ft:repeater>
-      <ft:widget id="ok"/>
-      <!-- If you want a cancel button you beware to change the lenya.submit value!!! like: -->
-      <br/>
-      <input i18n:attr="value" type="submit" name="cancel" value="Cancel" onClick="document.getElementById('lenya.submit').value='cancel'"/>
-    </ft:form-template>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/cforms/xslt/cforms2xhtml.xsl b/trunk/src/modules/cforms/xslt/cforms2xhtml.xsl
deleted file mode 100644
index c26bec7..0000000
--- a/trunk/src/modules/cforms/xslt/cforms2xhtml.xsl
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    exclude-result-prefixes="xhtml lenya"
-    >
-
-  <xsl:template match="/">
-    <div id="body">
-      <body>
-        <h1>CForms/Ajax Example</h1>
-        <p>
-          Please edit with CForms editor to add more contacts. The CForms editor uses Ajax to reduce network traffic
-          and to increase response times.
-        </p>
-        <xsl:apply-templates select="data"/>
-      </body>
-    </div>
-
- </xsl:template>
-
-  <xsl:template match="data">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="contacts">
-    <p>
-      <strong>Contacts:</strong>
-      <p>
-        <xsl:choose>
-          <xsl:when test="contact">
-            <ul>
-              <xsl:apply-templates/>
-            </ul>
-           </xsl:when>
-          <xsl:otherwise>
-            <i>No contacts to display.</i>
-          </xsl:otherwise>
-        </xsl:choose>
-      </p>
-    </p>
-  </xsl:template>
-
-  <xsl:template match="contact">
-    <li>
-      <xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="lastname"/>
-    </li>
-  </xsl:template>
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/collection/config/cocoon-xconf/resourcetype-collection.xconf b/trunk/src/modules/collection/config/cocoon-xconf/resourcetype-collection.xconf
deleted file mode 100644
index 6f30631..0000000
--- a/trunk/src/modules/collection/config/cocoon-xconf/resourcetype-collection.xconf
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'collection']">
-
-  <component-instance name="collection"
-                      logger="lenya.resourcetypes.collection"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <!-- FIXME: shouldn't this resource type provide validation? 
-    <schema
-      namespace="http://relaxng.org/ns/structure/0.9"
-      uri=""
-    />
-    -->
-    <sample name="Manual" mime-type="application/xml" uri="fallback://lenya/modules/collection/samples/collection.xml"/>
-    <sample name="Children" mime-type="application/xml" uri="fallback://lenya/modules/collection/samples/children.xml"/>
-    <format name="collection" uri="cocoon://modules/collection/collection.xml"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/collection/config/module.xml b/trunk/src/modules/collection/config/module.xml
deleted file mode 100644
index d492016..0000000
--- a/trunk/src/modules/collection/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.collection</id>
-  <export package="org.apache.lenya.modules.collection"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Collection</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Collection resource type</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/Collection.java b/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/Collection.java
deleted file mode 100644
index 766ba0e..0000000
--- a/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/Collection.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.modules.collection;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-
-/**
- * A document representing a collection of documents.
- * This class is in prototyping stage.
- */
-public interface Collection {
-
-    /** collection namespace */
-    String NAMESPACE = "http://apache.org/cocoon/lenya/collection/1.0";
-    
-    /** default namespace prefix */
-    String DEFAULT_PREFIX = "col";
-    
-    /** document element */
-    String ELEMENT_COLLECTION = "collection";
-    
-    /** element for single document references */
-    String ELEMENT_DOCUMENT = "document";
-    
-    /** attribute for document IDs */
-    String ATTRIBUTE_UUID = "uuid";
-
-    /**
-     * Name of the type attribute.
-     */
-    String ATTRIBUTE_TYPE = "type";
-
-    /**
-     * Name of the href attribute.
-     */
-    String ATTRIBUTE_HREF = "href";
-
-
-    /**
-     * Returns the documents in this collection.
-     * @return An array of documents.
-     * @throws DocumentException when something went wrong.
-     */
-    Document[] getDocuments() throws DocumentException;
-
-    /**
-     * Adds a document to the collection.
-     * @param document A document.
-     * @throws DocumentException when an error occurs.
-     */
-    void add(Document document) throws DocumentException;
-
-    /**
-     * Inserts a document into the collection at a specific position.
-     * @param document A document.
-     * @param position The position of the document after insertion,
-     * starting with 0.
-     * @throws DocumentException when something went wrong.
-     */
-    void add(int position, Document document) throws DocumentException;
-
-    /**
-     * Removes a document from the collection.
-     * @param document A document.
-     * @throws DocumentException when the document is not contained
-     * or another error occurs.
-     */
-    void remove(Document document) throws DocumentException;
-    
-    /**
-     * Removes all documents from this collection.
-     * @throws DocumentException when something went wrong.
-     */
-    void clear() throws DocumentException;
-    
-    /**
-     * Checks if this collection contains a specific document.
-     * @param document The document to check.
-     * @return A boolean value.
-     * @throws DocumentException when something went wrong.
-     */
-    boolean contains(Document document) throws DocumentException;
-    
-    /**
-     * Returns the first position of this document in the collection.
-     * @param document The document.
-     * @return An integer.
-     * @throws DocumentException when the document is not contained.
-     */
-    int getFirstPosition(Document document) throws DocumentException;
-    
-    /**
-     * Returns the number of documents in this collection.
-     * @return An integer value.
-     * @throws DocumentException when something went wrong.
-     */
-    int size() throws DocumentException;
-    
-    /**
-     * @return The document which the collection is stored in.
-     */
-    Document getDelegate();
-    
-    /**
-     * Type for automatic inclusion of child documents.
-     */
-    String TYPE_CHILDREN = "children";
-    
-    /**
-     * Type for manual addition of documents.
-     */
-    String TYPE_MANUAL = "manual";
-
-    /**
-     * Type for manual addition of documents.
-     */
-    String TYPE_LINK = "link";
-
-    /**
-     * @param type One of {@link #TYPE_CHILDREN}, {@link #TYPE_MANUAL}, {@link #TYPE_LINK}.
-     */
-    void setType(String type);
-
-    /**
-     * @return One of {@link #TYPE_CHILDREN}, {@link #TYPE_MANUAL}, {@link #TYPE_LINK}.
-     */
-    String getType();
-    
-    /**
-     * @return The link target.
-     */
-    String getHref();
-    
-    /**
-     * @param href The link target. If the type is not {@link #TYPE_LINK}, calling
-     * this method has no effect.
-     */
-    void setHref(String href);
-}
diff --git a/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/CollectionWrapper.java b/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/CollectionWrapper.java
deleted file mode 100644
index 0a715ea..0000000
--- a/trunk/src/modules/collection/java/src/org/apache/lenya/modules/collection/CollectionWrapper.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.modules.collection;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-/**
- * Document wrapper for collection functionality.
- */
-public class CollectionWrapper extends AbstractLogEnabled implements Collection {
-
-    private Document delegate;
-
-    protected static final String[] TYPES = { TYPE_CHILDREN, TYPE_MANUAL, TYPE_LINK };
-
-    /**
-     * Ctor.
-     * @param doc The document.
-     * @param logger The logger.
-     */
-    public CollectionWrapper(Document doc, Logger logger) {
-        enableLogging(logger);
-        this.delegate = doc;
-    }
-
-    public Document getDelegate() {
-        return this.delegate;
-    }
-
-    private List documentsList;
-
-    /**
-     * Returns the list that holds the documents. Use this method to invoke lazy
-     * loading.
-     * @return A list.
-     * @throws DocumentException when something went wrong.
-     */
-    protected List documents() throws DocumentException {
-        load();
-        return this.documentsList;
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#getDocuments()
-     */
-    public Document[] getDocuments() throws DocumentException {
-        return (Document[]) documents().toArray(new Document[documents().size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#add(org.apache.lenya.cms.publication.Document)
-     */
-    public void add(Document document) throws DocumentException {
-        documents().add(document);
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#add(int,
-     *      org.apache.lenya.cms.publication.Document)
-     */
-    public void add(int position, Document document) throws DocumentException {
-        documents().add(position, document);
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#remove(org.apache.lenya.cms.publication.Document)
-     */
-    public void remove(Document document) throws DocumentException {
-        if (!documents().contains(document)) {
-            throw new DocumentException("Collection [" + this + "] does not contain document ["
-                    + document + "]");
-        }
-        documents().remove(document);
-    }
-
-    private boolean isLoaded = false;
-
-    /**
-     * Loads the collection from its XML source.
-     */
-    protected final void load() {
-        if (!this.isLoaded) {
-            getLogger().debug("Loading: ");
-            NamespaceHelper helper;
-            try {
-                helper = getNamespaceHelper();
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            loadXml(helper);
-            this.isLoaded = true;
-        }
-    }
-
-    protected void loadXml(NamespaceHelper helper) {
-        try {
-            this.documentsList = new ArrayList();
-
-            Element collectionElement = helper.getDocument().getDocumentElement();
-            Element[] documentElements = helper
-                    .getChildren(collectionElement, ELEMENT_DOCUMENT);
-
-            for (int i = 0; i < documentElements.length; i++) {
-                Element documentElement = documentElements[i];
-                Document document = loadDocument(documentElement);
-                this.documentsList.add(document);
-            }
-            
-            if (collectionElement.hasAttribute(ATTRIBUTE_TYPE)) {
-                this.type = collectionElement.getAttribute(ATTRIBUTE_TYPE);
-            }
-            
-            if (collectionElement.hasAttribute(ATTRIBUTE_HREF)) {
-                this.href = collectionElement.getAttribute(ATTRIBUTE_HREF);
-            }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Loads a document from an XML element.
-     * @param documentElement The XML element.
-     * @return A document.
-     * @throws DocumentBuildException when something went wrong.
-     */
-    protected Document loadDocument(Element documentElement) throws DocumentBuildException {
-        String documentId = documentElement.getAttribute(ATTRIBUTE_UUID);
-        Document document = getDelegate().getFactory().get(getDelegate().getPublication(),
-                getDelegate().getArea(), documentId, getDelegate().getLanguage());
-        return document;
-    }
-
-    /**
-     * Saves the collection.
-     */
-    public final void save() {
-        try {
-            NamespaceHelper helper = getNamespaceHelper();
-            saveXml(helper);
-            DocumentHelper.writeDocument(helper.getDocument(), getDelegate().getOutputStream());
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @param helper Save the XML to the provided namespace helper.
-     * @throws TransformerException if an error occurs.
-     * @throws DocumentException if an error occurs.
-     */
-    protected void saveXml(NamespaceHelper helper) throws TransformerException, DocumentException {
-        Element collectionElement = helper.getDocument().getDocumentElement();
-        if (collectionElement.getAttributeNS(null, ATTRIBUTE_UUID).equals("")
-                || collectionElement.getAttribute(ATTRIBUTE_UUID).equals("")) {
-            collectionElement.setAttributeNS(null, ATTRIBUTE_UUID, getDelegate().getUUID());
-        }
-        Element[] existingDocumentElements = helper.getChildren(collectionElement,
-                ELEMENT_DOCUMENT);
-        for (int i = 0; i < existingDocumentElements.length; i++) {
-            collectionElement.removeChild(existingDocumentElements[i]);
-        }
-
-        collectionElement.setAttribute(ATTRIBUTE_TYPE, getType());
-        
-        collectionElement.setAttribute(ATTRIBUTE_HREF, getHref());
-
-        collectionElement.normalize();
-
-        NodeList emptyTextNodes = XPathAPI.selectNodeList(collectionElement, "text()");
-        for (int i = 0; i < emptyTextNodes.getLength(); i++) {
-            Node node = emptyTextNodes.item(i);
-            node = collectionElement.removeChild(node);
-        }
-
-        Document[] documents = getDocuments();
-        for (int i = 0; i < documents.length; i++) {
-            Element documentElement = createDocumentElement(documents[i], helper);
-            collectionElement.appendChild(documentElement);
-        }
-    }
-
-    public String getType() {
-        load();
-        return this.type;
-    }
-
-    /**
-     * Creates an element to store a document.
-     * @param helper The namespace helper of the document.
-     * @param document The document.
-     * @return An XML element.
-     * @throws DocumentException when something went wrong.
-     */
-    protected Element createDocumentElement(Document document, NamespaceHelper helper)
-            throws DocumentException {
-        try {
-            Element documentElement = helper.createElement(ELEMENT_DOCUMENT);
-            documentElement.setAttributeNS(null, ATTRIBUTE_UUID, document.getUUID());
-            return documentElement;
-        } catch (final DOMException e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    /**
-     * Returns the namespace helper for the XML source.
-     * @return A namespace helper.
-     * @throws DocumentException when something went wrong.
-     * @throws ParserConfigurationException when something went wrong.
-     * @throws SAXException when something went wrong.
-     * @throws IOException when something went wrong.
-     * @throws ServiceException
-     */
-    protected NamespaceHelper getNamespaceHelper() throws DocumentException,
-            ParserConfigurationException, SAXException, IOException, ServiceException {
-
-        NamespaceHelper helper;
-
-        if (getDelegate().exists()) {
-            org.w3c.dom.Document document = DocumentHelper.readDocument(getDelegate()
-                    .getInputStream());
-            helper = new NamespaceHelper(Collection.NAMESPACE, Collection.DEFAULT_PREFIX, document);
-        } else {
-            helper = initializeNamespaceHelper();
-        }
-        return helper;
-    }
-
-    /**
-     * @return A new, empty namespace helper.
-     */
-    protected NamespaceHelper initializeNamespaceHelper() {
-        NamespaceHelper helper;
-        try {
-            helper = new NamespaceHelper(Collection.NAMESPACE, Collection.DEFAULT_PREFIX,
-                    ELEMENT_COLLECTION);
-        } catch (ParserConfigurationException e) {
-            throw new RuntimeException(e);
-        }
-        return helper;
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#contains(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean contains(Document document) throws DocumentException {
-        return documents().contains(document);
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#clear()
-     */
-    public void clear() throws DocumentException {
-        documents().clear();
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#getFirstPosition(org.apache.lenya.cms.publication.Document)
-     */
-    public int getFirstPosition(Document document) throws DocumentException {
-        load();
-        if (!contains(document)) {
-            throw new DocumentException("The collection [" + this
-                    + "] does not contain the document [" + document + "]");
-        }
-        return documents().indexOf(document);
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.Collection#size()
-     */
-    public int size() throws DocumentException {
-        return documents().size();
-    }
-
-    private String type = TYPE_MANUAL;
-
-    public void setType(String type) {
-        load();
-        if (!Arrays.asList(TYPES).contains(type)) {
-            throw new IllegalArgumentException("The type [" + type + "] is not supported!");
-        }
-        this.type = type;
-    }
-    
-    private String href = "";
-
-    public String getHref() {
-        load();
-        return this.href;
-    }
-
-    public void setHref(String href) {
-        load();
-        this.href = href;
-    }
-
-}
diff --git a/trunk/src/modules/collection/java/test/org/apache/lenya/modules/collection/CollectionWrapperTest.java b/trunk/src/modules/collection/java/test/org/apache/lenya/modules/collection/CollectionWrapperTest.java
deleted file mode 100644
index 2570c3d..0000000
--- a/trunk/src/modules/collection/java/test/org/apache/lenya/modules/collection/CollectionWrapperTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.modules.collection;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.transaction.TransactionException;
-
-/**
- * Collection wrapper test.
- */
-public class CollectionWrapperTest extends AbstractAccessControlTest {
-
-    /**
-     * @throws PublicationException
-     * @throws AccessControlException
-     * @throws TransactionException
-     * @throws ServiceException
-     */
-    public void testXLinkCollection() throws PublicationException, AccessControlException,
-            TransactionException, ServiceException {
-
-        Session session = login("lenya");
-        DocumentFactory map = DocumentUtil.createDocumentFactory(getManager(), session);
-
-        Publication pub = getPublication("test");
-
-        Document collectionDoc = createCollectionDocument(pub);
-
-        CollectionWrapper collection = new CollectionWrapper(collectionDoc, getLogger());
-
-        SiteStructure structure = pub.getArea("authoring").getSite();
-        structure.getRepositoryNode().lock();
-
-        SiteManager siteManager = null;
-        ServiceSelector selector = null;
-        try {
-            selector = (ServiceSelector) getManager().lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-
-            siteManager.add("/collection", collection.getDelegate());
-        } finally {
-            selector.release(siteManager);
-            getManager().release(selector);
-        }
-
-        Document doc = map.get(pub, Publication.AUTHORING_AREA, "/index", "en");
-        collection.add(doc);
-        collection.save();
-
-        collection.getDelegate().getRepositoryNode().unlock();
-        structure.getRepositoryNode().unlock();
-
-        CollectionWrapper coll2 = new CollectionWrapper(collectionDoc, getLogger());
-
-        assertSame(collection.getDelegate().getRepositoryNode(), coll2.getDelegate()
-                .getRepositoryNode());
-
-        assertEquals(coll2.size(), 1);
-        assertTrue(coll2.contains(doc));
-
-    }
-
-    protected Document createCollectionDocument(Publication pub) throws ServiceException,
-            DocumentBuildException, PublicationException {
-        ServiceSelector typeSelector = null;
-        ResourceType type = null;
-        DocumentManager docMgr = null;
-        Document doc;
-        try {
-            typeSelector = (ServiceSelector) getManager().lookup(ResourceType.ROLE + "Selector");
-            type = (ResourceType) typeSelector.select("collection");
-            docMgr = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            ResourceType.Sample sample = type.getSample(type.getSampleNames()[0]);
-            doc = docMgr.add(getFactory(), type, sample.getUri(), pub, "authoring", "en", "xml");
-            doc.setMimeType(sample.getMimeType());
-            
-        } finally {
-            if (docMgr != null) {
-                getManager().release(docMgr);
-            }
-            if (typeSelector != null) {
-                getManager().release(typeSelector);
-            }
-        }
-        return doc;
-    }
-
-}
diff --git a/trunk/src/modules/collection/resources/i18n/cmsui.xml b/trunk/src/modules/collection/resources/i18n/cmsui.xml
deleted file mode 100644
index 8bd6d12..0000000
--- a/trunk/src/modules/collection/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-collection">Collection</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/collection/resources/i18n/cmsui_de.xml b/trunk/src/modules/collection/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 4740f0d..0000000
--- a/trunk/src/modules/collection/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-collection">Sammlung</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/collection/samples/children.xml b/trunk/src/modules/collection/samples/children.xml
deleted file mode 100644
index e14d0ff..0000000
--- a/trunk/src/modules/collection/samples/children.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://apache.org/cocoon/lenya/collection/1.0" type="children"/>
diff --git a/trunk/src/modules/collection/samples/collection.xml b/trunk/src/modules/collection/samples/collection.xml
deleted file mode 100644
index 96a5cbf..0000000
--- a/trunk/src/modules/collection/samples/collection.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://apache.org/cocoon/lenya/collection/1.0"/>
diff --git a/trunk/src/modules/collection/sitemap.xmap b/trunk/src/modules/collection/sitemap.xmap
deleted file mode 100644
index 48d9192..0000000
--- a/trunk/src/modules/collection/sitemap.xmap
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-
-      <!-- collectionWithChildren/{uuid}/{language}.xml -->
-      <map:match pattern="collectionWithChildren/*/*.xml">
-        <map:generate type="sitetree-fragment">
-          <map:parameter name="areas" value="{page-envelope:area}"/>
-          <map:parameter name="area" value="{page-envelope:area}"/>
-          <map:parameter name="path" value="{doc-info:{page-envelope:publication-id}:{page-envelope:area}:{1}:{2}:path}"/>
-          <map:parameter name="initial" value="false"/>
-          <map:parameter name="mimetype" value=""/>
-        </map:generate>
-        <map:transform src="fallback://lenya/modules/collection/xslt/sitetree2children.xsl">
-          <map:parameter name="language" value="{2}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- metadata/{uuid}/{language}.xml -->
-      <map:match pattern="metadata/*/*.xml">
-        <map:generate type="lenyaMetaData" src="lenya-document:{1},lang={2}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- collection format -->
-      <map:match pattern="collection.xml/*/*/*/*">
-        <map:generate src="lenya-document:{3},pub={1},area={2},lang={4}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/collection/xslt/prepareCinclude.xsl">
-          <map:parameter name="uuid" value="{3}"/>
-          <map:parameter name="language" value="{4}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>        
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/collection/xslt/collection2cinclude.xsl b/trunk/src/modules/collection/xslt/collection2cinclude.xsl
deleted file mode 100644
index 7ede138..0000000
--- a/trunk/src/modules/collection/xslt/collection2cinclude.xsl
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-  xmlns:ci="http://apache.org/cocoon/include/1.0">
-  
-  
-  <xsl:param name="uuid"/>
-  <xsl:param name="language"/>
-  
-  
-  <xsl:template match="col:collection">
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <ci:include src="cocoon://modules/collection/metadata/{$uuid}/{$language}.xml"/>
-      <xsl:apply-templates select="col:document"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="col:document">
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <xsl:if test="not(*)">
-        <ci:include src="cocoon://modules/collection/metadata/{@uuid}/{$language}.xml"/>
-        <ci:include src="lenya-document:{@uuid},lang={$language}?format=xhtml"/>
-      </xsl:if>
-      <xsl:copy-of select="*"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/collection/xslt/prepareCinclude.xsl b/trunk/src/modules/collection/xslt/prepareCinclude.xsl
deleted file mode 100644
index 858f6d8..0000000
--- a/trunk/src/modules/collection/xslt/prepareCinclude.xsl
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-  xmlns:ci="http://apache.org/cocoon/include/1.0">
-  
-  <xsl:param name="uuid"/>
-  <xsl:param name="language"/>
-  
-  <xsl:template match="col:collection">
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <xsl:choose>
-        <xsl:when test="@type = 'children'">
-          <ci:include src="cocoon://modules/collection/collectionWithChildren/{$uuid}/{$language}.xml"
-            select="*/*"/>
-        </xsl:when>
-        <xsl:when test="@type = 'link'">
-          <ci:include src="{@href}" select="*/*"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:copy-of select="col:document"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/collection/xslt/sitetree2children.xsl b/trunk/src/modules/collection/xslt/sitetree2children.xsl
deleted file mode 100644
index 76f77e1..0000000
--- a/trunk/src/modules/collection/xslt/sitetree2children.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:site="http://apache.org/cocoon/lenya/sitetree/1.0"
-  xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-  exclude-result-prefixes="site">
-  
-  
-  <xsl:param name="language"/>
-  
-  
-  <xsl:template match="site:fragment">
-    <col:collection>
-      <xsl:apply-templates select="site:node"/>
-    </col:collection>
-  </xsl:template>
-  
-  
-  <xsl:template match="site:node">
-    <xsl:apply-templates select="site:label[lang($language)]"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="site:label">
-    <col:document uuid="{../@uuid}"/>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/contactform/config/cocoon-xconf/usecase-contactForm.xconf b/trunk/src/modules/contactform/config/cocoon-xconf/usecase-contactForm.xconf
deleted file mode 100644
index 70acde4..0000000
--- a/trunk/src/modules/contactform/config/cocoon-xconf/usecase-contactForm.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'contactform.sendMessage']">

-

-    <component-instance name="contactform.sendMessage" logger="lenya.usecase"

-      class="org.apache.lenya.cms.contactform.ContactForm">

-      <view uri="modules/contactform/usecases/contactForm.jx"/>

-      <parameter name="sender" value="lenya"/>

-      <parameter name="recipient" value="alice"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules/contactform/config/menu.xsp b/trunk/src/modules/contactform/config/menu.xsp
deleted file mode 100644
index 389d5e8..0000000
--- a/trunk/src/modules/contactform/config/menu.xsp
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block admin="false">
-          <item uc:usecase="usecasedocument.create" href="?usecase=contactform.sendMessage"><i18n:text>New Contact Form</i18n:text></item>
-        </block>
-      </menu>
-    </menus>
-  </menu>
-  
-</xsp:page>
diff --git a/trunk/src/modules/contactform/config/module.xml b/trunk/src/modules/contactform/config/module.xml
deleted file mode 100644
index 8c616e0..0000000
--- a/trunk/src/modules/contactform/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.contactform</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.notification"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Contact Form</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Contact Form</description>
-</module>
diff --git a/trunk/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java b/trunk/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java
deleted file mode 100644
index 1524967..0000000
--- a/trunk/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.contactform;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationUtil;
-
-/**
- * Contact form. The recipient user ID is set using the "recipient" parameter. The sender user ID is
- * set using the "sender" parameter;
- */
-public class ContactForm extends AbstractUsecase {
-
-    protected static final String RECIPIENT = "recipient";
-    protected static final String SENDER = "sender";
-    protected static final String MESSAGE = "message";
-    protected static final String NAME = "name";
-    protected static final String FROM = "email";
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (getParameterAsString(SENDER).equals("")) {
-            addErrorMessage("The sender is not configured!");
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        if (getParameterAsString(NAME).trim().equals("")) {
-            addErrorMessage("Please enter your name!");
-        }
-        if (getParameterAsString(FROM).trim().equals("")) {
-            addErrorMessage("Please enter your e-mail address!");
-        }
-        if (getParameterAsString(MESSAGE).trim().equals("")) {
-            addErrorMessage("Please enter a message!");
-        }
-        if (getParameterAsString(RECIPIENT).trim().equals("")) {
-            addErrorMessage("Please choose a recipient!");
-        }
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String senderUserId = getParameterAsString(SENDER);
-        String recipientUserId = getParameterAsString(RECIPIENT);
-
-        User sender = getUser(senderUserId);
-        User recipient = getUser(recipientUserId);
-        User[] recipients = { recipient };
-
-        String name = getParameterAsString(NAME);
-        String body = getParameterAsString(MESSAGE);
-        String from = getParameterAsString(FROM);
-
-        Message message = new Message("Contact form submitted by " + name + " (" + from + ")",
-                new String[0],
-                body,
-                new String[0],
-                sender,
-                recipients);
-        
-        NotificationUtil.notify(this.manager, message);
-
-        setDefaultTargetURL(getSourceURL() + "?sent=true");
-    }
-
-    protected User getUser(String userId) throws Exception {
-        User user;
-        ServiceSelector selector = null;
-        AccessControllerResolver acResolver = null;
-        AccessController accessController = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-            acResolver = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-            accessController = acResolver.resolveAccessController(getSourceURL());
-
-            UserManager userManager = accessController.getAccreditableManager().getUserManager();
-            user = userManager.getUser(userId);
-
-        } finally {
-            if (selector != null) {
-                if (acResolver != null) {
-                    if (accessController != null) {
-                        acResolver.release(accessController);
-                    }
-                    selector.release(acResolver);
-                }
-                this.manager.release(selector);
-            }
-        }
-        return user;
-    }
-
-}
diff --git a/trunk/src/modules/contactform/menus.xmap b/trunk/src/modules/contactform/menus.xmap
deleted file mode 100644
index bce8ae1..0000000
--- a/trunk/src/modules/contactform/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/contactform/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/contactform/resources/i18n/cmsui.xml b/trunk/src/modules/contactform/resources/i18n/cmsui.xml
deleted file mode 100644
index 120977e..0000000
--- a/trunk/src/modules/contactform/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="New Contact Form">New Contact Form</message>
-  
-</catalogue>

diff --git a/trunk/src/modules/contactform/resources/i18n/cmsui_de.xml b/trunk/src/modules/contactform/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 7d7fa91..0000000
--- a/trunk/src/modules/contactform/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="New Contact Form">Neues Kontaktformular</message>
-  
-  <message key="Contact">Kontakt</message>
-  <message key="Your Name">Ihr Name</message>
-  <message key="Your E-Mail Address">Ihre E-Mail-Adresse</message>
-  <message key="Your Message">Ihre Nachricht</message>
-  
-</catalogue>

diff --git a/trunk/src/modules/contactform/usecases/contactForm.jx b/trunk/src/modules/contactform/usecases/contactForm.jx
deleted file mode 100644
index 5891388..0000000
--- a/trunk/src/modules/contactform/usecases/contactForm.jx
+++ /dev/null
@@ -1,72 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: changePassword.jx 412987 2006-06-09 09:01:58Z andreas $ -->
-
-<html xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  
-  <body>
-    
-    <h2><i18n:text>Contact</i18n:text></h2>
-    
-    <jx:choose>
-      <jx:when test="${usecase.getParameter('sent').equals('true')}">
-        <p>
-          Your message was sent.<br/>
-          Thanks a lot!
-        </p>
-      </jx:when>
-      <jx:otherwise>
-
-        <form id="form-contact">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          
-          <table style="font-size: small">
-            <tr>
-              <td colspan="2">
-                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-              </td>
-            </tr>
-            
-            <tr>
-              <td><label for="name"><i18n:text>Your Name</i18n:text> *</label></td>
-              <td><input type="text" name="name" value="${usecase.getParameter('name')}"/></td>
-            </tr>
-            <tr>
-              <td><label for="email"><i18n:text>Your E-Mail Address</i18n:text> *</label></td>
-              <td><input type="text" name="email" value="${usecase.getParameter('email')}"/></td>
-            </tr>
-            <tr>
-              <td><label for="message"><i18n:text>Your Message</i18n:text> *</label></td>
-              <td><textarea name="message"><jx:out value="${usecase.getParameter('message')}"/></textarea></td>
-            </tr>
-            
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" name="submit" type="submit" value="Submit"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-        
-      </jx:otherwise>
-    </jx:choose>
-    
-  </body>
-</html>
\ No newline at end of file
diff --git a/trunk/src/modules/development/config/menu.xsp b/trunk/src/modules/development/config/menu.xsp
deleted file mode 100644
index 1200092..0000000
--- a/trunk/src/modules/development/config/menu.xsp
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <menu>
-  
-    <xsp:logic>
-      String baseUrl = (String) <input:get-attribute module="request" name="contextPath"/>;
-    </xsp:logic>
-
-    <menus>
-      <menu i18n:attr="name" name="Development">
-        <block areas="site authoring">
-          <item href="?lenya.module=development&amp;lenya.action=showLog">
-            <xsp:attribute name="href"><xsp:expr>baseUrl</xsp:expr>/modules/development/log4j.log</xsp:attribute>
-            <i18n:text>Show Log</i18n:text>
-          </item>
-        </block>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/development/config/module.xml b/trunk/src/modules/development/config/module.xml
deleted file mode 100644
index b3c2e2c..0000000
--- a/trunk/src/modules/development/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.development</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Development tools</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Development tools</description>
-</module>
diff --git a/trunk/src/modules/development/config/sitemap/transformers.xmap b/trunk/src/modules/development/config/sitemap/transformers.xmap
deleted file mode 100644
index a5a0b7d..0000000
--- a/trunk/src/modules/development/config/sitemap/transformers.xmap
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'tee']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-  <map:transformer name="tee" src="org.apache.cocoon.transformation.TeeTransformer"/>
-</xmap>

diff --git a/trunk/src/modules/development/menus.xmap b/trunk/src/modules/development/menus.xmap
deleted file mode 100644
index 70e841d..0000000
--- a/trunk/src/modules/development/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/development/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/development/resources/i18n/cmsui.xml b/trunk/src/modules/development/resources/i18n/cmsui.xml
deleted file mode 100644
index 646d258..0000000
--- a/trunk/src/modules/development/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Show Log">Show Log</message>
-  <message key="Development">Development</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/development/resources/i18n/cmsui_de.xml b/trunk/src/modules/development/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 7f736b3..0000000
--- a/trunk/src/modules/development/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Show Log">Logfile anzeigen</message>
-  <message key="Development">Entwicklung</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/development/sitemap.xmap b/trunk/src/modules/development/sitemap.xmap
deleted file mode 100644
index 5199e46..0000000
--- a/trunk/src/modules/development/sitemap.xmap
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      <map:match pattern="log4j.log">
-        <map:read mime-type="text/plain" src="context://WEB-INF/logs/log4j.log"/>
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/development/test/canoo/doconfig.xml b/trunk/src/modules/development/test/canoo/doconfig.xml
deleted file mode 100644
index 6486e8b..0000000
--- a/trunk/src/modules/development/test/canoo/doconfig.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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 host="${webtest.config.host}"
-        port="${webtest.config.port}"
-        protocol="http"
-        basepath="${webtest.config.basepath}">
-  <header name="Accept-Language" value="en"/>
-  <option name="JavaScriptEnabled" value="false"/>
-</config>
\ No newline at end of file
diff --git a/trunk/src/modules/development/test/canoo/lenya_webtest.dtd b/trunk/src/modules/development/test/canoo/lenya_webtest.dtd
deleted file mode 100644
index f3efe0c..0000000
--- a/trunk/src/modules/development/test/canoo/lenya_webtest.dtd
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!ENTITY doConfig SYSTEM "doconfig.xml">
diff --git a/trunk/src/modules/development/test/canoo/macros.xml b/trunk/src/modules/development/test/canoo/macros.xml
deleted file mode 100644
index b6b9a74..0000000
--- a/trunk/src/modules/development/test/canoo/macros.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project name="lenya_webtest_macros">
-
-  <import file="${webtest.home}/lib/taskdef.xml"/>
-
-  <macrodef name="doLogin" description="perform a login to Lenya">
-    <attribute name="username"/>
-    <attribute name="password"/>
-    <attribute name="url" default="index.html"/>
-    <sequential>
-
-      <!-- login -->
-      <invoke url="@{url}"/>
-      <ifStep description="login if we are asked for">
-        <condition>
-          <verifyTitle text="Login to the Default Publication" />
-        </condition>
-        <setInputField name="username" value="@{username}"/>
-        <setInputField name="password" value="@{password}"/>
-        <clickButton name="submit"/>
-      </ifStep>
-
-      <!-- import example content -->
-      <ifStep description="import example content">
-        <condition>
-          <verifyText text="export.importExampleContent" />
-        </condition>
-        <selectForm name="import"/>
-        <clickButton name="submit"/>
-      </ifStep>
-
-      <verifyText text="Welcome"/>
-    </sequential>
-  </macrodef>
-
-  <macrodef name="doLogout" description="logout from Lenya">
-    <attribute name="url" default=""/>
-    <sequential>
-
-      <!-- logout -->
-      <invoke url="@{url}?lenya.usecase=ac.logout"/>
-      <clickButton name="submit"/>
-
-    </sequential>
-  </macrodef>
-
-</project>
\ No newline at end of file
diff --git a/trunk/src/modules/development/test/canoo/test.xml b/trunk/src/modules/development/test/canoo/test.xml
deleted file mode 100644
index 875c527..0000000
--- a/trunk/src/modules/development/test/canoo/test.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="stresstest" basedir="." default="main">
-
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-
-  <target name="main">
-    <property name="number" value="1"/>
-    <webtest name="stresstest">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi"/>
-
-        <!-- create -->
-        <repeat count="${number}">
-          <echo>Creating document #{count} of ${number}</echo>
-          <invoke url="index.html?lenya.usecase=sitemanagement.create&amp;doctype=xhtml"/>
-          <verifyElementText type="h1" text="New xhtml Document"/>
-          <setInputField name="nodeName" value="stresstest#{count}"/>
-          <setInputField name="dublincore.title" value="Stress Test #{count}"/>
-          <setSelectField name="language" value="en"/>
-          <clickButton name="submit"/>
-          <verifyText text="Welcome"/>
-        </repeat>
-
-        <!-- delete -->
-        <repeat count="${number}">
-          <echo>Deleting document #{count} of ${number}</echo>
-          <invoke url="index/stresstest#{count}.html?lenya.usecase=sitemanagement.delete"/>
-          <verifyElementText type="h1" text="Delete Document"/>
-          <clickButton name="submit"/>
-          <verifyElementText type="h1" text="Overview"/>
-        </repeat>
-
-        <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-</project>
diff --git a/trunk/src/modules/development/test/jmeter/lenya.csv b/trunk/src/modules/development/test/jmeter/lenya.csv
deleted file mode 100644
index 8c5a9af..0000000
--- a/trunk/src/modules/development/test/jmeter/lenya.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-lenya;levi

-

diff --git a/trunk/src/modules/development/test/jmeter/lenyaJMeterTest.jmx b/trunk/src/modules/development/test/jmeter/lenyaJMeterTest.jmx
deleted file mode 100644
index 2ad2ab4..0000000
--- a/trunk/src/modules/development/test/jmeter/lenyaJMeterTest.jmx
+++ /dev/null
@@ -1,903 +0,0 @@
-<jmeterTestPlan version="1.2" properties="1.8">
-  <hashTree>
-    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="CMS" enabled="true">
-      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="Benutzer definierte Variablen" enabled="true">
-        <collectionProp name="Arguments.arguments">
-          <elementProp name="server" elementType="Argument">
-            <stringProp name="Argument.metadata">=</stringProp>
-            <stringProp name="Argument.value">localhost</stringProp>
-            <stringProp name="Argument.name">server</stringProp>
-          </elementProp>
-          <elementProp name="content" elementType="Argument">
-            <stringProp name="Argument.metadata">=</stringProp>
-            <stringProp name="Argument.value">&lt;p&gt; Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean eu lorem dictum urna commodo consectetuer. Donec euismod. Sed tortor metus, sollicitudin vel, ultricies ac, tincidunt suscipit, dolor. Quisque gravida leo a magna. Pellentesque lobortis scelerisque est. Donec turpis orci, eleifend eu, tincidunt ut, tincidunt et, turpis. Pellentesque felis. Duis nulla metus, blandit quis, nonummy a, tristique eget, mi. Praesent venenatis nisl et purus fermentum eleifend. Vivamus dolor nunc, pharetra vitae, convallis eu, vestibulum at, sapien. Sed eget justo. Integer interdum convallis nibh. Suspendisse vitae neque. Sed sit amet nulla at ligula dapibus blandit. Vestibulum tristique turpis vitae nulla. Fusce dui neque, posuere in, pretium id, venenatis eget, magna. Nunc quam velit, aliquet nec, sodales ut, mattis ac, ipsum. &lt;/p&gt; &lt;p&gt; Morbi sit amet nunc. Cras ullamcorper leo vel odio. Curabitur tincidunt est in justo. Ut commodo. Integer congue tellus id diam. In elementum porta magna. Cras in libero eget dui gravida lacinia. Nam et erat. Mauris ornare. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Ut bibendum. Maecenas quam. Nullam non ligula consequat metus rhoncus mollis. Morbi eget ligula ac ipsum tempor adipiscing. Fusce id lectus. &lt;/p&gt; &lt;p&gt; Donec in ligula. Nulla diam enim, commodo sed, aliquam venenatis, tincidunt vitae, massa. Curabitur vulputate tellus a augue. Pellentesque tristique, ligula in mollis iaculis, sem elit fermentum diam, eu dignissim quam eros ut odio. Vestibulum sem orci, iaculis a, viverra et, tristique at, urna. Quisque et enim nec lacus lobortis imperdiet. Phasellus quis lectus. Mauris lobortis. Ut commodo gravida lorem. Quisque pellentesque. Vestibulum lacinia. Ut in justo. Maecenas nulla leo, mattis a, viverra sit amet, mattis volutpat, lectus. Duis tristique porta pede. In nec magna. &lt;/p&gt; &lt;p&gt; Maecenas mollis tempus magna. Ut ornare felis at arcu. Praesent ut mauris vitae nibh adipiscing feugiat. Quisque quis magna. Integer congue nibh a magna. Donec condimentum, neque in suscipit luctus, mi mauris vestibulum tortor, aliquet tempor ipsum nisi id quam. Quisque facilisis massa non turpis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi molestie lectus at odio. Maecenas imperdiet egestas odio. Nulla nisl lectus, volutpat vel, consectetuer eget, luctus vel, mi. Nam nisl. Vivamus turpis velit, condimentum eu, ornare venenatis, condimentum non, mauris. Sed volutpat. In hac habitasse platea dictumst. Vivamus nibh. Cras pretium, nisi vitae pellentesque placerat, erat mi ornare velit, in sollicitudin est turpis ac ante. Integer a nisl. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. &lt;/p&gt; &lt;p&gt; In nonummy dolor ut leo. Maecenas molestie lorem non libero. Pellentesque imperdiet, urna eget vulputate pulvinar, libero sem euismod turpis, quis vestibulum tellus metus et magna. In tempor libero nec massa. Aliquam vitae eros et ipsum interdum scelerisque. Suspendisse purus turpis, sollicitudin pulvinar, placerat a, tincidunt a, ante. Nam quam. Suspendisse lacus tellus, ultricies vel, molestie ac, malesuada eget, augue. Mauris vestibulum lorem a dolor. Etiam vitae massa vitae sem fringilla tincidunt. Suspendisse potenti. &lt;/p&gt;</stringProp>
-            <stringProp name="Argument.name">content</stringProp>
-          </elementProp>
-        </collectionProp>
-      </elementProp>
-      <stringProp name="TestPlan.user_define_classpath"></stringProp>
-      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
-      <boolProp name="TestPlan.functional_mode">false</boolProp>
-      <stringProp name="TestPlan.comments">Stressing test for lenya</stringProp>
-    </TestPlan>
-    <hashTree>
-      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Lenya creation usecase" enabled="true">
-        <longProp name="ThreadGroup.start_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.delay"></stringProp>
-        <stringProp name="ThreadGroup.duration"></stringProp>
-        <stringProp name="ThreadGroup.num_threads">5</stringProp>
-        <boolProp name="ThreadGroup.scheduler">false</boolProp>
-        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Controlador Loop" enabled="true">
-          <stringProp name="LoopController.loops">1</stringProp>
-          <boolProp name="LoopController.continue_forever">false</boolProp>
-        </elementProp>
-        <longProp name="ThreadGroup.end_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-        <stringProp name="ThreadGroup.ramp_time">10</stringProp>
-      </ThreadGroup>
-      <hashTree>
-        <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="Cookies HTTP" enabled="true">
-          <boolProp name="CookieManager.clearEachIteration">false</boolProp>
-          <collectionProp name="CookieManager.cookies"/>
-          <stringProp name="CookieManager.policy">default</stringProp>
-        </CookieManager>
-        <hashTree/>
-        <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default values for HTTP request" enabled="true">
-          <stringProp name="HTTPSampler.path"></stringProp>
-          <stringProp name="HTTPSampler.domain">${server}</stringProp>
-          <stringProp name="HTTPSampler.protocol">HTTP</stringProp>
-          <stringProp name="HTTPSampler.port">8888</stringProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-        </ConfigTestElement>
-        <hashTree/>
-        <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="Variables" enabled="true">
-          <collectionProp name="Arguments.arguments">
-            <elementProp name="password" elementType="Argument">
-              <stringProp name="Argument.metadata">=</stringProp>
-              <stringProp name="Argument.value">foo123</stringProp>
-              <stringProp name="Argument.name">password</stringProp>
-            </elementProp>
-          </collectionProp>
-        </Arguments>
-        <hashTree/>
-        <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
-          <stringProp name="ConstantTimer.delay">1500</stringProp>
-          <stringProp name="RandomTimer.range">500</stringProp>
-        </GaussianRandomTimer>
-        <hashTree/>
-        <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Login &quot;lenya&quot;" enabled="false"/>
-        <hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments"/>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-              <stringProp name="RegexExtractor.default">error</stringProp>
-              <stringProp name="RegexExtractor.regex">lenya.continuation=(.*?)&amp;amp;lenya.usecase=ac.login&quot;&gt;</stringProp>
-              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-              <stringProp name="RegexExtractor.match_number">0</stringProp>
-              <stringProp name="RegexExtractor.template">$1$</stringProp>
-              <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-            </RegexExtractor>
-            <hashTree/>
-          </hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html?lenya.usecase=ac.login&amp;lenya.continuation=${lenya.continuation}</stringProp>
-            <stringProp name="HTTPSampler.method">POST</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">lenya</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">username</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">levi</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">password</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">Login</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">submit</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header" enabled="true">
-              <collectionProp name="HeaderManager.headers">
-                <elementProp name="" elementType="Header">
-                  <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
-                  <stringProp name="Header.name">Content-Type</stringProp>
-                </elementProp>
-              </collectionProp>
-            </HeaderManager>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-        <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Add admin user" enabled="false"/>
-        <hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Add user" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html?lenya.usecase=admin.addUser</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments"/>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-              <stringProp name="RegexExtractor.default">error</stringProp>
-              <stringProp name="RegexExtractor.regex">name=\&quot;lenya.continuation\&quot;[\s]value=\&quot;(.*)\&quot;</stringProp>
-              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-              <stringProp name="RegexExtractor.match_number">1</stringProp>
-              <stringProp name="RegexExtractor.template">$1$</stringProp>
-              <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-            </RegexExtractor>
-            <hashTree/>
-          </hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Add user" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html?lenya.usecase=admin.addUser&amp;lenya.continuation=${lenya.continuation}</stringProp>
-            <stringProp name="HTTPSampler.method">POST</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">admin${__threadNum}</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">userId</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">${password}</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">newPassword</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">Submit</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">submit</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">${password}</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">confirmPassword</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">foo@bar.com</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">email</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">org.apache.lenya.ac.file.FileUser</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">className</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header" enabled="true">
-              <collectionProp name="HeaderManager.headers">
-                <elementProp name="" elementType="Header">
-                  <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
-                  <stringProp name="Header.name">Content-Type</stringProp>
-                </elementProp>
-              </collectionProp>
-            </HeaderManager>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-        <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Logout" enabled="false"/>
-        <hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Logout page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">ac.logout</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">lenya.usecase</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-              <stringProp name="RegexExtractor.default">error</stringProp>
-              <stringProp name="RegexExtractor.regex">name=\&quot;lenya.continuation\&quot;[\s]value=\&quot;(.*)\&quot;</stringProp>
-              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-              <stringProp name="RegexExtractor.match_number">1</stringProp>
-              <stringProp name="RegexExtractor.template">$1$</stringProp>
-              <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-            </RegexExtractor>
-            <hashTree/>
-          </hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Logout page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html?lenya.usecase=ac.logout&amp;lenya.continuation=${lenya.continuation}</stringProp>
-            <stringProp name="HTTPSampler.method">POST</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">Login</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">submit</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header" enabled="true">
-              <collectionProp name="HeaderManager.headers">
-                <elementProp name="" elementType="Header">
-                  <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
-                  <stringProp name="Header.name">Content-Type</stringProp>
-                </elementProp>
-              </collectionProp>
-            </HeaderManager>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-        <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Login admin user" enabled="true"/>
-        <hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-            <stringProp name="HTTPSampler.method">GET</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments"/>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
-              <stringProp name="RegexExtractor.default">error</stringProp>
-              <stringProp name="RegexExtractor.regex">lenya.continuation=(.*?)&amp;amp;lenya.usecase=ac.login&quot;&gt;</stringProp>
-              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-              <stringProp name="RegexExtractor.match_number">0</stringProp>
-              <stringProp name="RegexExtractor.template">$1$</stringProp>
-              <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-            </RegexExtractor>
-            <hashTree/>
-          </hashTree>
-          <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-            <stringProp name="HTTPSampler.path">/default/authoring/index.html?lenya.usecase=ac.login&amp;lenya.continuation=${lenya.continuation}</stringProp>
-            <stringProp name="HTTPSampler.method">POST</stringProp>
-            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-            <stringProp name="HTTPSampler.protocol"></stringProp>
-            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-            <stringProp name="HTTPSampler.port"></stringProp>
-            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">lenya</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">username</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">levi</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">password</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-                <elementProp name="" elementType="HTTPArgument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">Login</stringProp>
-                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                  <stringProp name="Argument.name">submit</stringProp>
-                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                </elementProp>
-              </collectionProp>
-            </elementProp>
-            <stringProp name="HTTPSampler.mimetype"></stringProp>
-            <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-            <stringProp name="HTTPSampler.monitor">false</stringProp>
-            <stringProp name="HTTPSampler.domain"></stringProp>
-            <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-          </HTTPSampler>
-          <hashTree>
-            <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header" enabled="true">
-              <collectionProp name="HeaderManager.headers">
-                <elementProp name="" elementType="Header">
-                  <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
-                  <stringProp name="Header.name">Content-Type</stringProp>
-                </elementProp>
-              </collectionProp>
-            </HeaderManager>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-        <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop" enabled="true">
-          <stringProp name="LoopController.loops">10</stringProp>
-          <boolProp name="LoopController.continue_forever">true</boolProp>
-        </LoopController>
-        <hashTree>
-          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="News" enabled="true"/>
-          <hashTree>
-            <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Create News" enabled="true">
-              <stringProp name="HTTPSampler.path">/default/authoring/index.html?doctype=xhtml&amp;lenya.usecase=sitemanagement.create</stringProp>
-              <stringProp name="HTTPSampler.method">GET</stringProp>
-              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-              <stringProp name="HTTPSampler.protocol"></stringProp>
-              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-              <stringProp name="HTTPSampler.port"></stringProp>
-              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-                <collectionProp name="Arguments.arguments">
-                  <elementProp name="" elementType="HTTPArgument">
-                    <stringProp name="Argument.metadata">=</stringProp>
-                    <stringProp name="Argument.value">true</stringProp>
-                    <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                    <stringProp name="Argument.name">optimisticLocking</stringProp>
-                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                  </elementProp>
-                </collectionProp>
-              </elementProp>
-              <stringProp name="HTTPSampler.mimetype"></stringProp>
-              <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-              <stringProp name="HTTPSampler.monitor">false</stringProp>
-              <stringProp name="HTTPSampler.domain"></stringProp>
-              <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            </HTTPSampler>
-            <hashTree>
-              <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="regex" enabled="true">
-                <stringProp name="RegexExtractor.default">error</stringProp>
-                <stringProp name="RegexExtractor.regex">name=&quot;lenya.continuation&quot; value=&quot;(.*?)&quot;</stringProp>
-                <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                <stringProp name="RegexExtractor.match_number">0</stringProp>
-                <stringProp name="RegexExtractor.template">$1$</stringProp>
-                <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-              </RegexExtractor>
-              <hashTree/>
-              <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="regex submit" enabled="true">
-                <stringProp name="RegexExtractor.default">error</stringProp>
-                <stringProp name="RegexExtractor.regex">value=&quot;Create&quot;</stringProp>
-                <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-                <stringProp name="RegexExtractor.match_number">0</stringProp>
-                <stringProp name="RegexExtractor.template">$1$</stringProp>
-                <stringProp name="RegexExtractor.refname">submit</stringProp>
-              </RegexExtractor>
-              <hashTree/>
-            </hashTree>
-            <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
-              <stringProp name="IfController.condition">&quot;${submit}&quot; != &quot;&quot;</stringProp>
-            </IfController>
-            <hashTree>
-              <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Validation" enabled="true">
-                <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-                <stringProp name="HTTPSampler.method">GET</stringProp>
-                <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-                <stringProp name="HTTPSampler.protocol"></stringProp>
-                <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-                <stringProp name="HTTPSampler.port"></stringProp>
-                <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-                  <collectionProp name="Arguments.arguments">
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">${lenya.continuation}</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">lenya.continuation</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">sitemanagement.create</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">lenya.usecase</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">Noticia${__Random(1,10000,DOCUMENT)}</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">nodeName</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">Noticia+${__Random(1,10000,DOCUMENT)}</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">dublincore.title</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">true</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">visibleInNav</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">child</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">relation</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">en</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">language</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">lenya</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">dublincore.creator</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value"></stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">dublincore.subject</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value"></stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">dublincore.publisher</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value"></stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">dublincore.rights</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">Default+Sample</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">sample</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                    <elementProp name="" elementType="HTTPArgument">
-                      <stringProp name="Argument.metadata">=</stringProp>
-                      <stringProp name="Argument.value">Create</stringProp>
-                      <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                      <stringProp name="Argument.name">submit</stringProp>
-                      <boolProp name="HTTPArgument.always_encode">false</boolProp>
-                    </elementProp>
-                  </collectionProp>
-                </elementProp>
-                <stringProp name="HTTPSampler.mimetype"></stringProp>
-                <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-                <stringProp name="HTTPSampler.monitor">false</stringProp>
-                <stringProp name="HTTPSampler.domain"></stringProp>
-                <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-                <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-              </HTTPSampler>
-              <hashTree>
-                <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="counter" enabled="true">
-                  <stringProp name="CounterConfig.start">1</stringProp>
-                  <stringProp name="CounterConfig.incr">1</stringProp>
-                  <stringProp name="CounterConfig.name">contador_noticia</stringProp>
-                  <stringProp name="CounterConfig.format"></stringProp>
-                  <boolProp name="CounterConfig.per_user">false</boolProp>
-                  <stringProp name="CounterConfig.end">10000</stringProp>
-                </CounterConfig>
-                <hashTree/>
-              </hashTree>
-            </hashTree>
-            <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="Variables" enabled="true">
-              <collectionProp name="Arguments.arguments">
-                <elementProp name="DOCUMENT" elementType="Argument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value">${__Random(0,10000,FOO)}</stringProp>
-                  <stringProp name="Argument.name">DOCUMENT</stringProp>
-                </elementProp>
-                <elementProp name="lenya.continuation" elementType="Argument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value"></stringProp>
-                  <stringProp name="Argument.name">lenya.continuation</stringProp>
-                </elementProp>
-                <elementProp name="submit" elementType="Argument">
-                  <stringProp name="Argument.metadata">=</stringProp>
-                  <stringProp name="Argument.value"></stringProp>
-                  <stringProp name="Argument.name">submit</stringProp>
-                </elementProp>
-              </collectionProp>
-            </Arguments>
-            <hashTree/>
-          </hashTree>
-        </hashTree>
-        <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Report" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-        <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="Result tree" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-      </hashTree>
-      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Lenya visit" enabled="false">
-        <longProp name="ThreadGroup.start_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.delay"></stringProp>
-        <stringProp name="ThreadGroup.duration"></stringProp>
-        <stringProp name="ThreadGroup.num_threads">5</stringProp>
-        <boolProp name="ThreadGroup.scheduler">false</boolProp>
-        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Controlador Loop" enabled="true">
-          <stringProp name="LoopController.loops">1000</stringProp>
-          <boolProp name="LoopController.continue_forever">false</boolProp>
-        </elementProp>
-        <longProp name="ThreadGroup.end_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-        <stringProp name="ThreadGroup.ramp_time">60</stringProp>
-      </ThreadGroup>
-      <hashTree>
-        <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="Cookies HTTP" enabled="true">
-          <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-          <collectionProp name="CookieManager.cookies"/>
-          <stringProp name="CookieManager.policy">default</stringProp>
-        </CookieManager>
-        <hashTree/>
-        <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default values for HTTP request" enabled="true">
-          <stringProp name="HTTPSampler.path"></stringProp>
-          <stringProp name="HTTPSampler.domain">${server}</stringProp>
-          <stringProp name="HTTPSampler.protocol">HTTP</stringProp>
-          <stringProp name="HTTPSampler.port">8888</stringProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-        </ConfigTestElement>
-        <hashTree/>
-        <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set" enabled="true">
-          <stringProp name="delimiter">;</stringProp>
-          <stringProp name="variableNames">user,pass</stringProp>
-          <boolProp name="recycle">true</boolProp>
-          <stringProp name="filename">lenya.csv</stringProp>
-        </CSVDataSet>
-        <hashTree/>
-        <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random timer" enabled="true">
-          <stringProp name="ConstantTimer.delay">1500</stringProp>
-          <stringProp name="RandomTimer.range">500</stringProp>
-        </GaussianRandomTimer>
-        <hashTree/>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-          <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <stringProp name="HTTPSampler.protocol"></stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <stringProp name="HTTPSampler.port"></stringProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.domain"></stringProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        </HTTPSampler>
-        <hashTree>
-          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="regex" enabled="true">
-            <stringProp name="RegexExtractor.default">error</stringProp>
-            <stringProp name="RegexExtractor.regex">lenya.continuation=(.*?)&amp;amp;lenya.usecase=ac.login&quot;&gt;</stringProp>
-            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
-            <stringProp name="RegexExtractor.match_number">0</stringProp>
-            <stringProp name="RegexExtractor.template">$1$</stringProp>
-            <stringProp name="RegexExtractor.refname">lenya.continuation</stringProp>
-          </RegexExtractor>
-          <hashTree/>
-        </hashTree>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Login page" enabled="true">
-          <stringProp name="HTTPSampler.path">/default/authoring/jmeter.html?lenya.usecase=ac.login&amp;lenya.continuation=${lenya.continuation}</stringProp>
-          <stringProp name="HTTPSampler.method">POST</stringProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <stringProp name="HTTPSampler.protocol"></stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <stringProp name="HTTPSampler.port"></stringProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-            <collectionProp name="Arguments.arguments">
-              <elementProp name="" elementType="HTTPArgument">
-                <stringProp name="Argument.metadata">=</stringProp>
-                <stringProp name="Argument.value">${user}</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">username</stringProp>
-                <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              </elementProp>
-              <elementProp name="" elementType="HTTPArgument">
-                <stringProp name="Argument.metadata">=</stringProp>
-                <stringProp name="Argument.value">${pass}</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">password</stringProp>
-                <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              </elementProp>
-              <elementProp name="" elementType="HTTPArgument">
-                <stringProp name="Argument.metadata">=</stringProp>
-                <stringProp name="Argument.value">Login</stringProp>
-                <boolProp name="HTTPArgument.use_equals">true</boolProp>
-                <stringProp name="Argument.name">submit</stringProp>
-                <boolProp name="HTTPArgument.always_encode">false</boolProp>
-              </elementProp>
-            </collectionProp>
-          </elementProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.domain"></stringProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        </HTTPSampler>
-        <hashTree>
-          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP header" enabled="true">
-            <collectionProp name="HeaderManager.headers">
-              <elementProp name="" elementType="Header">
-                <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
-                <stringProp name="Header.name">Content-Type</stringProp>
-              </elementProp>
-            </collectionProp>
-          </HeaderManager>
-          <hashTree/>
-        </hashTree>
-        <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave" enabled="true">
-          <intProp name="InterleaveControl.style">1</intProp>
-        </InterleaveControl>
-        <hashTree>
-          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="News" enabled="true"/>
-          <hashTree>
-            <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="static page" enabled="true">
-              <stringProp name="HTTPSampler.path">/default/authoring/jmeter/Noticia1.html</stringProp>
-              <stringProp name="HTTPSampler.method">GET</stringProp>
-              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-              <stringProp name="HTTPSampler.protocol"></stringProp>
-              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-              <stringProp name="HTTPSampler.port"></stringProp>
-              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
-              </elementProp>
-              <stringProp name="HTTPSampler.mimetype"></stringProp>
-              <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-              <stringProp name="HTTPSampler.monitor">false</stringProp>
-              <stringProp name="HTTPSampler.domain"></stringProp>
-              <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            </HTTPSampler>
-            <hashTree/>
-            <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Dynamic page" enabled="true">
-              <stringProp name="HTTPSampler.path">/default/authoring/jmeter/Noticia${__Random(1,50,)}.html</stringProp>
-              <stringProp name="HTTPSampler.method">GET</stringProp>
-              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-              <stringProp name="HTTPSampler.protocol"></stringProp>
-              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-              <stringProp name="HTTPSampler.port"></stringProp>
-              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-                <collectionProp name="Arguments.arguments"/>
-              </elementProp>
-              <stringProp name="HTTPSampler.mimetype"></stringProp>
-              <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-              <stringProp name="HTTPSampler.monitor">false</stringProp>
-              <stringProp name="HTTPSampler.domain"></stringProp>
-              <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-            </HTTPSampler>
-            <hashTree/>
-          </hashTree>
-          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Files" enabled="true"/>
-          <hashTree/>
-        </hashTree>
-        <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Report" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-        <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="Result tree" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-</jmeterTestPlan>
diff --git a/trunk/src/modules/development/test/jmeter/simpleLoad.jmx b/trunk/src/modules/development/test/jmeter/simpleLoad.jmx
deleted file mode 100644
index 3fddf66..0000000
--- a/trunk/src/modules/development/test/jmeter/simpleLoad.jmx
+++ /dev/null
@@ -1,142 +0,0 @@
-<jmeterTestPlan version="1.2" properties="1.8">
-  <hashTree>
-    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
-      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="Benutzer definierte Variablen" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="TestPlan.user_define_classpath"></stringProp>
-      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
-      <boolProp name="TestPlan.functional_mode">false</boolProp>
-      <stringProp name="TestPlan.comments"></stringProp>
-    </TestPlan>
-    <hashTree>
-      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Gruppe" enabled="true">
-        <longProp name="ThreadGroup.start_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.delay"></stringProp>
-        <stringProp name="ThreadGroup.duration"></stringProp>
-        <stringProp name="ThreadGroup.num_threads">1</stringProp>
-        <boolProp name="ThreadGroup.scheduler">false</boolProp>
-        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Controlador Loop" enabled="true">
-          <stringProp name="LoopController.loops">20</stringProp>
-          <boolProp name="LoopController.continue_forever">false</boolProp>
-        </elementProp>
-        <longProp name="ThreadGroup.end_time">1178792744000</longProp>
-        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
-      </ThreadGroup>
-      <hashTree>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="HTTP Request" enabled="true">
-          <stringProp name="HTTPSampler.path">/default/authoring/index.html</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <stringProp name="HTTPSampler.protocol"></stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
-          <stringProp name="HTTPSampler.port">8888</stringProp>
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables definidas por el Usuario" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.domain">localhost</stringProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
-        </HTTPSampler>
-        <hashTree/>
-        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-        <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-        <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
-          <objProp>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>false</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-            </value>
-            <name>saveConfig</name>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-        </ResultCollector>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-</jmeterTestPlan>
diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-createResource.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-createResource.xconf
deleted file mode 100644
index cc19858..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-createResource.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.createResource']">
-  <component-instance 
-      name="editors.createResource" 
-      logger="lenya.site" 
-      class="org.apache.lenya.cms.site.usecases.CreateResource"
-  >
-    <view uri="modules/resource/usecases/create-resource.jx" menu="false"/>
-  </component-instance>
-</xconf>
diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-forms.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-forms.xconf
deleted file mode 100644
index 591fd03..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-forms.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.forms']">

-    <component-instance name="editors.forms" logger="lenya.publication"

-      class="org.apache.lenya.cms.editors.forms.FormsEditor">

-      <transaction policy="pessimistic"/>

-      <view uri="modules/editors/usecases/forms/forms.jx" menu="false"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-oneform.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-oneform.xconf
deleted file mode 100644
index 0f98896..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-edit-oneform.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.oneform']">

-    <component-instance name="editors.oneform" logger="lenya.publication"

-      class="org.apache.lenya.cms.editors.forms.OneFormEditor">

-      <transaction policy="pessimistic"/>

-      <view uri="modules/editors/usecases/forms/oneform.jx" menu="false"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertAsset.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertAsset.xconf
deleted file mode 100644
index 3cbe714..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertAsset.xconf
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.insertAsset']">
-
-  <component-instance 
-      name="editors.insertAsset"
-      logger="lenya.publication"
-      class="org.apache.lenya.cms.editors.InsertAsset"
-  >
-    <view 
-      template="modules/editors/usecases/insertAsset.jx" 
-      menu="false"
-      createContinuation="false"
-    />
-    <parameter name="mode" value="Asset"/>
-    <parameter name="asset-usecase" value="tab.asset"/>
-  </component-instance>
-
-</xconf>
-
diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertImage.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertImage.xconf
deleted file mode 100644
index d8165c5..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertImage.xconf
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.insertImage']">
-
-  <component-instance 
-      name="editors.insertImage"
-      logger="lenya.publication"
-      class="org.apache.lenya.cms.editors.InsertAsset"
-  >
-    <view 
-      template="modules/editors/usecases/insertAsset.jx" 
-      menu="false"
-      createContinuation="false"
-    />
-    <parameter name="mode" value="Image"/>
-    <parameter name="asset-usecase" value="tab.asset"/>
-  </component-instance>
-
-</xconf>
-
diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertLink.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertLink.xconf
deleted file mode 100644
index b0f9bd7..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-insertLink.xconf
+++ /dev/null
@@ -1,15 +0,0 @@
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.insertLink']">
-
-  <component-instance 
-      name="editors.insertLink" 
-      logger="lenya.publication"
-      class="org.apache.lenya.cms.usecase.DummyUsecase"
-  >
-    <view 
-      uri="cocoon://modules/editors/editors.insertLink" 
-      menu="false"
-      createContinuation="false"
-    />
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/editors/config/cocoon-xconf/usecase-publicationEdit.xconf b/trunk/src/modules/editors/config/cocoon-xconf/usecase-publicationEdit.xconf
deleted file mode 100644
index 0617427..0000000
--- a/trunk/src/modules/editors/config/cocoon-xconf/usecase-publicationEdit.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'editors.publicationEdit']">

-    <component-instance name="editors.publicationEdit" logger="lenya.publication"

-      class="org.apache.lenya.cms.editors.EditDocument">

-      <parameter name="sourceUri" value="cocoon://modules/editors/stream.xml"/>
-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/editors/config/module.xml b/trunk/src/modules/editors/config/module.xml
deleted file mode 100644
index 309e0ff..0000000
--- a/trunk/src/modules/editors/config/module.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.editors</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.resource"/>
-  <depends module="org.apache.lenya.modules.sitemanagement"/>
-  <depends module="org.apache.lenya.modules.linking"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.3-dev</version>
-  <name>Editors</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>
-    Editor base and support classes,  
-    generic insertLink, insertAsset and insertImage usecase implementations,
-    Forms and Oneform editor implementations
-  </description>
-</module>
diff --git a/trunk/src/modules/editors/java/lib/xindice-1.1.jar b/trunk/src/modules/editors/java/lib/xindice-1.1.jar
deleted file mode 100644
index b28133f..0000000
--- a/trunk/src/modules/editors/java/lib/xindice-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/editors/java/lib/xmldb-common-20030701.jar b/trunk/src/modules/editors/java/lib/xmldb-common-20030701.jar
deleted file mode 100644
index 3fb0302..0000000
--- a/trunk/src/modules/editors/java/lib/xmldb-common-20030701.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/editors/java/lib/xmldb-xupdate-20040205.jar b/trunk/src/modules/editors/java/lib/xmldb-xupdate-20040205.jar
deleted file mode 100644
index 3b7f931..0000000
--- a/trunk/src/modules/editors/java/lib/xmldb-xupdate-20040205.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/EditDocument.java b/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/EditDocument.java
deleted file mode 100644
index af0fd7e..0000000
--- a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/EditDocument.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors;
-
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.xml.Schema;
-import org.apache.lenya.xml.ValidationUtil;
-
-/**
- * <p>
- * You can use this usecase to save a document. It reads XML data from a source
- * and saves as the content of the current document.
- * </p>
- * <ul>
- * <li>If the document's resource type supports validation, the XML document is
- * validated and not saved if validation errors occur.</li>
- * <li>All URL-based internal links in the XML source are converted to
- * UUID-based links before saving.</li>
- * <li>A workflow event is invoked. The event defaults to "edit", you can
- * override it using the <em>event</em> parameter.</li>
- * </ul>
- * <p>
- * Parameters:
- * </p>
- * <ul>
- * <li><em>sourceUri</em> - the URI to read the XML data from</li>
- * <li><em>event</em> - the workflow event to invoke</li>
- * </ul>
- * <p>
- * A typical usage scenario is to save XML data entered in a form. In this case,
- * the <em>sourceUri</em> parameter refers to a Cocoon pipeline featuring the
- * stream generator.
- * </p>
- * 
- * @version $Id$
- */
-public class EditDocument extends DocumentUsecase {
-
-    protected static final String EVENT = "event";
-    protected static final String DEFAULT_EVENT = "edit";
-
-    /**
-     * The URI to copy the document source from.
-     */
-    public static final String SOURCE_URI = "sourceUri";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Document sourceDoc = getSourceDocument();
-
-        String sourceUri = getParameterAsString(SOURCE_URI);
-        org.w3c.dom.Document xmlDoc = SourceUtil.readDOM(sourceUri, this.manager);
-
-        ResourceType resourceType = sourceDoc.getResourceType();
-        Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
-
-        if (!hasErrors()) {
-            SourceUtil.writeDOM(xmlDoc, sourceDoc.getOutputStream());
-            String event = getParameterAsString(EVENT, DEFAULT_EVENT);
-            WorkflowUtil
-                    .invoke(this.manager, getSession(), getLogger(), getSourceDocument(), event);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        Node[] objects = { getSourceDocument().getRepositoryNode() };
-        return objects;
-    }
-
-}
diff --git a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java b/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java
deleted file mode 100644
index 7045c33..0000000
--- a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/InsertAsset.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.UsecaseInvoker;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.util.ServletHelper;
-import org.apache.lenya.cms.site.usecases.CreateResource;
-
-/**
- * Usecase to insert an image into a document.
- * 
- * @version $Id$
- */
-public class InsertAsset extends CreateResource {
-
-    protected static final String DOCUMENT = "document";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        deleteParameter(RELATIONS);
-        loadResources();
-
-        setParameter(DOCUMENT, getSourceDocument());
-        try {
-            User user = getSession().getIdentity().getUser();
-            if (user != null) {
-                setParameter("creator", user.getId());
-            }
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected void doCheckPreconditions() throws Exception {
-        if (!ServletHelper.isUploadEnabled(manager)) {
-            addErrorMessage("Upload is not enabled please check local.build.properties!");
-        }
-    }
-
-    protected Document[] getResourceDocuments() throws DocumentException {
-        String mimeTypePrefix = getParameterAsString("mimeTypePrefix", "");
-        List list = new ArrayList();
-        Document[] docs = getSourceDocument().area().getDocuments();
-        for (int i = 0; i < docs.length; i++) {
-            if (docs[i].getResourceType().getName().equals("resource")) {
-                String resMimeType = docs[i].getMimeType();
-                if (resMimeType == null) {
-                    resMimeType = "unknown";
-                }
-                if (resMimeType.startsWith(mimeTypePrefix)) {
-                    list.add(docs[i]);
-                }
-            }
-        }
-        return (Document[]) list.toArray(new Document[list.size()]);
-    }
-
-    protected void loadResources() {
-        ContextUtility context = null;
-        try {
-            context = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            Request request = context.getRequest();
-            boolean ssl = request.isSecure();
-
-            LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, getSession(),
-                    getSourceURL(), ssl, false, false);
-            Map asset2proxyUrl = new HashMap();
-            setParameter("asset2proxyUrl", asset2proxyUrl);
-
-            Document[] resources = getResourceDocuments();
-
-            for (int i = 0; i < resources.length; i++) {
-
-                String originalUrl = resources[i].getCanonicalWebappURL();
-                int lastDotIndex = originalUrl.lastIndexOf('.');
-                String extension = resources[i].getSourceExtension();
-                String url = originalUrl.substring(0, lastDotIndex) + "." + extension;
-
-                String proxyUrl = rewriter.rewrite(url);
-                asset2proxyUrl.put(resources[i], proxyUrl);
-
-            }
-
-            setParameter("assets", resources);
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (context != null) {
-                this.manager.release(context);
-            }
-        }
-    }
-
-    /**
-     * Delegates to the main assets usecase; the name of the usecase being
-     * delegated to is set in the configuration parameter "asset-usecase".
-     * 
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-        if (getParameterAsBoolean("upload", false)) {
-            UsecaseInvoker invoker = null;
-            try {
-                invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
-                String usecaseName = getParameterAsString("asset-usecase");
-
-                if (getLogger().isDebugEnabled())
-                    getLogger().debug(
-                            "InsertAsset::advance() calling invoker with usecaseName ["
-                                    + usecaseName + "]");
-                invoker.invoke(getSourceURL(), usecaseName, getParameters());
-                if (invoker.getResult() == UsecaseInvoker.SUCCESS) {
-                    loadResources();
-                    deleteParameter("title");
-                    deleteParameter("creator");
-                    deleteParameter("rights");
-                } else {
-                    List messages = invoker.getErrorMessages();
-                    for (Iterator i = messages.iterator(); i.hasNext();) {
-                        UsecaseMessage message = (UsecaseMessage) i.next();
-                        addErrorMessage(message.getMessage());
-                    }
-                }
-                /*
-                 * The <input type="file"/> value cannot be passed to the next
-                 * screen because the browser doesn't allow this for security
-                 * reasons.
-                 */
-                deleteParameter("file");
-            } catch (Exception e) {
-                throw new UsecaseException(e);
-            } finally {
-                if (invoker != null) {
-                    this.manager.release(invoker);
-                }
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/SaveDocument.java b/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/SaveDocument.java
deleted file mode 100644
index 1f670a8..0000000
--- a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/SaveDocument.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseInvoker;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.util.Assert;
-
-/**
- * <p>
- * This usecase saves the document from the request stream <em>before</em> the
- * view is displayed using the {@link EditDocument} usecase. That's kind of a
- * hack, since it violates the standard usecase principle, but it is very
- * convenient because you can save and re-load the document without a redirect.
- * </p>
- * 
- * @version $Id: EditDocument.java 495324 2007-01-11 18:44:04Z andreas $
- */
-public class SaveDocument extends DocumentUsecase {
-
-    protected static final String USECASE_NAME = "usecaseName";
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        String usecase = getParameterAsString(USECASE_NAME);
-        Assert.notNull("usecase", usecase);
-
-        UsecaseInvoker invoker = null;
-        try {
-            invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
-            Map params = new HashMap();
-            params.put(EditDocument.SOURCE_URI, getParameter(EditDocument.SOURCE_URI));
-            params.put(EditDocument.EVENT, getParameter(EditDocument.EVENT));
-            invoker.invoke(getSourceURL(), usecase, params);
-
-            if (invoker.getResult() != UsecaseInvoker.SUCCESS) {
-                List messages = invoker.getErrorMessages();
-                for (Iterator i = messages.iterator(); i.hasNext();) {
-                    UsecaseMessage message = (UsecaseMessage) i.next();
-                    addErrorMessage(message.getMessage(), message.getParameters());
-                }
-            }
-        } finally {
-            if (invoker != null) {
-                this.manager.release(invoker);
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java b/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java
deleted file mode 100644
index 5312e16..0000000
--- a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/FormsEditor.java
+++ /dev/null
@@ -1,752 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors.forms;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.net.MalformedURLException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.commons.lang.StringUtils;
-import org.apache.excalibur.source.ModifiableSource;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.UsecaseMessage;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.ValidationUtil;
-import org.apache.lenya.xml.XPath;
-import org.apache.xindice.core.xupdate.XPathQueryFactoryImpl;
-import org.apache.xindice.core.xupdate.XUpdateImpl;
-import org.apache.xindice.xml.NamespaceMap;
-import org.apache.xml.utils.PrefixResolver;
-import org.apache.xml.utils.PrefixResolverDefault;
-import org.apache.xpath.XPathAPI;
-import org.apache.xpath.objects.XObject;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xmldb.common.xml.queries.XPathQueryFactory;
-
-/**
- * Multiple forms editor usecase.
- * 
- * @version $Id$
- */
-public class FormsEditor extends DocumentUsecase {
-
-    protected static final String VALIDATION_ERRORS = "private.validationErrors";
-
-    private static final class XUpdateAttributes {
-        /**
-         * <code>xupdateAttrExpr</code> The Xupdate expression
-         */
-        public String xupdateAttrExpr = "";
-        /**
-         * <code>tagID</code> The tag ID
-         */
-        public String tagID = "";
-
-        /**
-         * Set Xupdate attributes
-         * @param _xupdateAttrExpr The xupdate expression
-         * @param _tagID The tag id
-         */
-        public XUpdateAttributes(String _xupdateAttrExpr, String _tagID) {
-            this.xupdateAttrExpr = _xupdateAttrExpr;
-            this.tagID = _tagID;
-        }
-    }
-
-    protected static final String WORKFLOW_INVOKED = "private.workflowInvoked";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        org.apache.lenya.cms.publication.Document doc = getSourceDocument();
-        Set nodes = new HashSet();
-        if (doc != null) {
-            nodes.add(doc.getRepositoryNode());
-        }
-        return (org.apache.lenya.cms.repository.Node[])
-            nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-            org.apache.lenya.cms.publication.Document doc = getSourceDocument();
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), doc, getLogger());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.Usecase#advance()
-     */
-    public void advance() throws UsecaseException {
-        super.advance();
-
-        String unnumberTagsXslUri = "fallback://lenya/modules/editors/usecases/forms/unnumberTags.xsl";
-        String numberTagsXslUri = "fallback://lenya/modules/editors/usecases/forms/numberTags.xsl";
-
-        Source unnumberTagsXslSource = null;
-        Source numberTagsXslSource = null;
-
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            unnumberTagsXslSource = resolver.resolveURI(unnumberTagsXslUri);
-            numberTagsXslSource = resolver.resolveURI(numberTagsXslUri);
-
-            if (getParameterAsString("cancel") != null) {
-                getLogger().warn("Editing has been canceled");
-                // modifiableXmlSource.delete();
-                return;
-            }
-
-            Request request = ContextHelper.getRequest(this.context);
-            String encoding = request.getCharacterEncoding();
-            save(resolver, getSourceDocument(), unnumberTagsXslSource, numberTagsXslSource, encoding);
-
-            if (hasErrors()) {
-                setParameter(VALIDATION_ERRORS, getErrorMessages());
-            } else if (!getParameterAsBoolean(WORKFLOW_INVOKED, false)) {
-                deleteParameter(VALIDATION_ERRORS);
-                WorkflowUtil.invoke(this.manager,
-                        getSession(),
-                        getLogger(),
-                        getSourceDocument(),
-                        getEvent());
-                setParameter(WORKFLOW_INVOKED, Boolean.valueOf(true));
-            }
-
-        } catch (final Exception e) {
-            throw new UsecaseException(e);
-        } finally {
-            if (resolver != null) {
-                if (unnumberTagsXslSource != null) {
-                    resolver.release(unnumberTagsXslSource);
-                }
-                if (numberTagsXslSource != null) {
-                    resolver.release(numberTagsXslSource);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        advance();
-
-        List errors = (List) getParameter(VALIDATION_ERRORS);
-        if (errors != null) {
-            for (Iterator i = errors.iterator(); i.hasNext();) {
-                UsecaseMessage message = (UsecaseMessage) i.next();
-                addErrorMessage(message.getMessage(), message.getParameters());
-            }
-        }
-    }
-
-    /**
-     * Save the Form
-     * @param resolver
-     * @param lenyaDocument
-     * @param unnumberTagsXslSource
-     * @param numberTagsXslSource
-     * @throws ProcessingException
-     * @throws FactoryConfigurationError
-     * @throws ParserConfigurationException
-     * @throws IOException
-     * @throws SAXException
-     * @throws XPathQueryConfigurationException
-     * @throws Exception
-     * @throws MalformedURLException
-     * @throws TransformerConfigurationException
-     * @throws TransformerException
-     */
-    private void save(SourceResolver resolver, org.apache.lenya.cms.publication.Document lenyaDocument,
-            Source unnumberTagsXslSource, Source numberTagsXslSource,String encoding) throws Exception {
-        if (!lenyaDocument.exists()) {
-            throw new ProcessingException("The document [" + lenyaDocument + "] does not exist.");
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Save modifications to [" + lenyaDocument + "]");
-        }
-        
-        Document doc = null;
-        DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance();
-        parserFactory.setValidating(false);
-        parserFactory.setNamespaceAware(true);
-        parserFactory.setIgnoringElementContentWhitespace(true);
-        DocumentBuilder builder = parserFactory.newDocumentBuilder();
-
-        InputSource xmlInputSource = new InputSource(lenyaDocument.getInputStream());
-        Document document = builder.parse(xmlInputSource);
-
-        Document renumberedDocument = renumberDocument(document, unnumberTagsXslSource,numberTagsXslSource);
-        
-        System.setProperty(XPathQueryFactory.class.getName(), XPathQueryFactoryImpl.class.getName());
-
-        XUpdateImpl xUpdate = new XUpdateImpl();
-
-        String editSelect = processElements(renumberedDocument, xUpdate);
-        setParameter("editSelect", editSelect);
-
-        Source validationSource = null;
-        Source unnumberTagsSource = null;
-
-        try {
-            String validationUri = lenyaDocument.getSourceURI() + ".validate";
-            validationSource = resolver.resolveURI(validationUri);
-            checkModifiability(validationSource);
-
-            String unnumberTagsUri = lenyaDocument.getSourceURI() + ".validate.unnumber";
-            unnumberTagsSource = resolver.resolveURI(unnumberTagsUri);
-            checkModifiability(unnumberTagsSource);
-
-            javax.xml.transform.Source transformXmlSource = new DOMSource(renumberedDocument);
-            javax.xml.transform.Source transformXslSource = new StreamSource(unnumberTagsXslSource.getInputStream());
-
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            StreamResult unnumberXmlResult = new StreamResult(out);
-
-            TransformerFactory factory = TransformerFactory.newInstance();
-            Transformer transformer = factory.newTransformer(transformXslSource);
-            transformer.transform(transformXmlSource, unnumberXmlResult);
-
-            ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
-            doc = DocumentHelper.readDocument(in);
-            
-            ValidationUtil.validate(this.manager, doc, getSourceDocument().getResourceType()
-                    .getSchema(), new UsecaseErrorHandler(this));
-
-        } finally {
-            if (validationSource != null) {
-                resolver.release(validationSource);
-            }
-            if (unnumberTagsSource != null) {
-                resolver.release(unnumberTagsSource);
-            }
-        }
-
-        if (doc != null){
-        	writeDocument(doc, getSourceDocument().getOutputStream(), encoding);
-        }
-    }
-
-    /**
-     * Process elements
-     * @param document
-     * @param xq
-     * @return A string.
-     * @throws Exception
-     */
-    private String processElements(Document document, XUpdateImpl xq) throws Exception {
-        String editSelect = null;
-        String[] paramNames = getParameterNames();
-        for (int paramIndex = 0; paramIndex < paramNames.length; paramIndex++) {
-            String pname = paramNames[paramIndex];
-            getLogger().debug("Parameter: " + pname + " = " + getParameterAsString(pname));
-
-            // Extract the xpath to edit
-            if (pname.indexOf("edit[") >= 0) {
-                if (pname.endsWith("].x")) {
-                    editSelect = pname.substring(5, pname.length() - 3);
-                    getLogger().debug("Edit: " + editSelect);
-                }
-                deleteParameter(pname);
-            }
-
-            // Make sure we are dealing with an xupdate statement,
-            // else skip
-            if (pname.startsWith("<xupdate:")) {
-                String select = pname.substring(pname.indexOf("select") + 8);
-                select = select.substring(0, select.indexOf("\""));
-                getLogger().debug("Select Node: " + select);
-
-                // Check if node exists
-                PrefixResolver resolver = new FormPrefixResolver(document.getDocumentElement());
-                XObject xObject = XPathAPI.eval(document.getDocumentElement(), select, resolver);
-                NodeList nodes = xObject.nodelist();
-                if (nodes.getLength() == 0) {
-                    getLogger().debug(".act(): Node does not exist (might have been deleted during update): "
-                            + select);
-                } else {
-                    String xupdateModifications = null;
-                    // now check for the different xupdate
-                    // statements, and handle appropriately
-                    if (pname.indexOf("xupdate:update-parent") > 0) {
-                        getLogger().debug("UPDATE PARENT Node: " + pname);
-                        // CDATA updates need to be handled
-                        // seperately
-                        if (pname.indexOf("<![CDATA[") > 0) {
-                            xupdateModifications = updateCDATA(pname, true);
-                        } else {
-                            xupdateModifications = update(pname, select, nodes.item(0), true);
-                        }
-                    } else if (pname.indexOf("xupdate:update") > 0) {
-                        getLogger().debug("UPDATE Node: " + pname);
-                        // CDATA updates need to be handled
-                        // seperately
-                        if (pname.indexOf("<![CDATA[") > 0) {
-                            xupdateModifications = updateCDATA(pname, false);
-                        } else {
-                            xupdateModifications = update(pname, select, nodes.item(0), false);
-                        }
-                    } else if (pname.indexOf("xupdate:append") > 0 && pname.endsWith(">.x")) {
-                        xupdateModifications = append(pname.substring(0, pname.length() - 2));
-                        // insert-before: in case of select/option
-                    } else if (pname.indexOf("xupdate:insert-before") > 0 && pname.endsWith("/>")) {
-                        if (!getParameterAsString(pname).equals("null")) {
-                            xupdateModifications = insertBefore(getParameterAsString(pname));
-                            editSelect = pname.substring(31,pname.length() - 3);
-                            editSelect = changeTagNumber(editSelect, -1);
-                        }
-                        // insert-before: in case of image
-                    } else if (pname.indexOf("xupdate:insert-before") > 0 && pname.endsWith(">.x")) {
-                    	xupdateModifications = insertBefore(pname.substring(0, pname.length() - 2));
-                        // insert-after: in case of select/option
-                    } else if (pname.indexOf("xupdate:insert-after") > 0 && pname.endsWith("/>")) {
-                        if (!getParameterAsString(pname).equals("null")) {
-                            xupdateModifications = insertAfter(getParameterAsString(pname));
-                            editSelect = pname.substring(30,pname.length() - 3);
-                            editSelect = changeTagNumber(editSelect, 1);
-                        }
-                        // insert-after: in case of image
-                    } else if (pname.indexOf("xupdate:insert-after") > 0 && pname.endsWith(">.x")) {
-                        xupdateModifications = insertAfter(pname.substring(0, pname.length() - 2));
-                    } else if (pname.indexOf("xupdate:remove") > 0 && pname.endsWith("/>.x")) {
-                        xupdateModifications = remove(pname.substring(0, pname.length() - 2));
-                        editSelect = pname.substring(24,pname.length() - 3);
-                    } else if (pname.endsWith(">.y")) {
-                        getLogger().debug("Don't handle this: " + pname);
-                    } else {
-                        getLogger().debug("Don't handle this either: " + pname);
-                    }
-
-                    // Get hidden namespaces
-                    String namespaces = getParameterAsString("namespaces");
-
-                    // Add XML declaration
-                    // NOTE: select/option is generating parameter
-                    // which should be considered as null
-                    if (xupdateModifications != null) {
-                        xupdateModifications = "<?xml version=\"1.0\"?>" + xupdateModifications;
-                    }
-
-                    // now run the assembled xupdate query
-                    if (xupdateModifications != null) {
-                        getLogger().info("Execute XUpdate Modifications: " + xupdateModifications);
-                        xq.setQString(xupdateModifications);
-                        xq.setNamespaceMap(getNamespaceMap(namespaces));
-                        xq.execute(document);
-                    } else {
-                        getLogger().debug("Parameter did not match any xupdate command: " + pname);
-                    }
-                }
-                deleteParameter(pname);
-            }
-        }
-        return editSelect;
-    }
-
-    protected NamespaceMap getNamespaceMap(String namespaces) {
-        NamespaceMap nsMap = new NamespaceMap();
-        String[] namespace = namespaces.split("[\\s]+");
-        for (int i = 0; i < namespace.length; i++) {
-            String[] prefixAndUri = namespace[i].split("=");
-            String prefix = prefixAndUri[0];
-            String uri = prefixAndUri[1].replaceAll("\"", "");
-            
-            int colonIndex = prefix.indexOf(":");
-            if (colonIndex == -1) {
-                nsMap.setDefaultNamespace(uri);
-            } else {
-                prefix = prefix.substring(colonIndex + 1);
-                if (!nsMap.containsKey(prefix)) {
-                    nsMap.setNamespace(prefix, uri);
-                }
-            }
-        }
-        return nsMap;
-    }
-
-    /**
-     * Change the tag number of the selected node.
-     * The variable is used in a javascript in order to jump to the 
-     * appropriate node after deleting or inserting a node.
-     * @param tagID The tagID where the new node is inserted.
-     * @param step  int value for changing the tagID.
-     */   
-    protected String changeTagNumber(String tagID, int step){
-        String number = tagID.substring(tagID.lastIndexOf(".")+1,tagID.lastIndexOf("]")-1);
-        int num = Integer.parseInt(number) + step;
-        String newTagNumber = tagID.substring(0, tagID.lastIndexOf(".")+1);
-        return newTagNumber.concat(Integer.toString(num)+"']");
-    }
- 
-
-    /**
-     * Writes a document to a modifiable source.
-     * @param document The document.
-     * @param oStream The source.
-     * @throws IOException if an error occurs.
-     * @throws TransformerConfigurationException if an error occurs.
-     * @throws TransformerException if an error occurs.
-     * @throws ProcessingException if an error occurs.
-     */
-    protected void writeDocument(Document document, OutputStream oStream, String encoding) throws IOException,
-            TransformerConfigurationException, TransformerException, ProcessingException {
-        Writer writer = new OutputStreamWriter(oStream, encoding);
-        DocumentHelper.writeDocument(document, writer);
-        if (oStream != null) {
-            oStream.flush();
-            try {
-                oStream.close();
-            } catch (Throwable t) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Exception closing output stream: ", t);
-                }
-                throw new ProcessingException("Could not write document: ", t);
-            }
-        }
-    }
-
-    /**
-     * Checks if a source is modifiable.
-     * @param source The source.
-     * @throws ProcessingException if the source is not modifiable.
-     */
-    protected void checkModifiability(Source source) throws ProcessingException {
-        if (!(source instanceof ModifiableSource)) {
-            throw new ProcessingException("Cannot write to source [" + source.getURI() + "]");
-        }
-    }
-
-    /**
-     * Get attributes from original node
-     * @param node Original node
-     * @return An XupdateAttributes class holding the attributes
-     */
-    private XUpdateAttributes getAttributes(Node node) {
-
-        StringBuffer buf = new StringBuffer();
-        String xupdateString = "";
-        String tagID = "";
-        org.w3c.dom.NamedNodeMap attributes = node.getAttributes();
-        if (attributes != null) {
-            for (int i = 0; i < attributes.getLength(); i++) {
-                org.w3c.dom.Attr attribute = (org.w3c.dom.Attr) attributes.item(i);
-                getLogger().debug(".getAttributes(): " + attribute.getName() + " "
-                        + attribute.getValue());
-                if (!attribute.getName().equals("tagID")) {
-                    String namespace = attribute.getNamespaceURI();
-                    getLogger().debug(".getAttributes(): Namespace: " + namespace);
-                    String namespaceAttribute = "";
-                    if (namespace != null) {
-                        namespaceAttribute = " namespace=\"" + namespace + "\"";
-                    }
-                    buf.append("<xupdate:attribute name=\"" + attribute.getName() + "\""
-                            + namespaceAttribute + ">" + attribute.getValue()
-                            + "</xupdate:attribute>");
-                } else {
-                    buf.append("<xupdate:attribute name=\"tagID\">temp</xupdate:attribute>");
-                    tagID = attribute.getValue();
-                }
-            }
-            xupdateString = buf.toString();
-        } else {
-            xupdateString = "";
-        }
-        getLogger().debug("Attributes: " + xupdateString);
-
-        return new XUpdateAttributes(xupdateString, tagID);
-    }
-
-    /**
-     * Get attributes from actual update
-     * @param update The actual update
-     * @param tagID The tag id to get the updates for
-     * @return An XupdateAttributes class holding the attributes
-     */
-    private XUpdateAttributes getAttributes(String update, String tagID) {
-        getLogger().debug(update);
-
-        StringBuffer xupdateBuffer = new StringBuffer("<xupdate:attribute name=\"tagID\">temp</xupdate:attribute>");
-
-        String[] attributes = update.substring(0, update.indexOf(">")).split(" ");
-        for (int i = 1; i < attributes.length; i++) {
-            // TODO: beware of white spaces
-            int index = attributes[i].indexOf("=");
-            if (index > 0) {
-                String name = attributes[i].substring(0, index);
-                String value = attributes[i].substring(index + 2, attributes[i].length() - 1);
-                if (name.indexOf("xmlns") < 0) {
-                    xupdateBuffer.append("<xupdate:attribute name=\"" + name + "\">");
-                    xupdateBuffer.append(value).append("</xupdate:attribute>");
-                }
-            }
-        }
-
-        getLogger().debug("Attributes: " + xupdateBuffer.toString());
-
-        return new XUpdateAttributes(xupdateBuffer.toString(), tagID);
-    }
-
-    /**
-     * xupdate:update
-     * @param pname Name of the parent element
-     * @param select The attribute to update
-     * @param nodeToUpdate The node to update
-     * @param parent If true then parent element is part of update and attributes need to be updated
-     *            resp. added or deleted
-     * @return the Xupdate statement
-     */
-    private String update(String pname, String select, Node nodeToUpdate, boolean parent) {
-        getLogger().debug("Update node: " + select);
-
-        // deal with attribute values here..
-        if (nodeToUpdate.getNodeType() == Node.ATTRIBUTE_NODE) {
-            getLogger().debug("Update attribute: " + select);
-
-            String xupdateUpdate = pname + getParameterAsString(pname) + "</xupdate:update>";
-            return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">"
-                    + xupdateUpdate + "</xupdate:modifications>";
-            /*
-             * And deal with mixed content here.. NOTE: Lexus has trouble with mixed content. As
-             * Workaround we insert-after the new node, remove the original node and replace the
-             * temporary tagID by the original tagID.
-             */
-        }
-
-        getLogger().debug("Update element: " + select);
-
-        String namespace = nodeToUpdate.getNamespaceURI();
-        String namespaceAttribute = "";
-        if (namespace != null) {
-            namespaceAttribute = " namespace=\"" + namespace + "\"";
-        }
-        // NOTE: getAttributes adds the attribute tagID with value "temp",
-        // which will be replaced further down
-        XUpdateAttributes xa = getAttributes(nodeToUpdate);
-        String xupdateInsertAfter = null;
-        if (parent) {
-            xa = getAttributes(getParameterAsString(pname), xa.tagID);
-            xupdateInsertAfter = "<xupdate:insert-after select=\"" + select
-                    + " \"><xupdate:element name=\"" + new XPath(select).getNameWithoutPredicates()
-                    + "\"" + namespaceAttribute + ">" + xa.xupdateAttrExpr
-                    + removeParent(getParameterAsString(pname))
-                    + "</xupdate:element></xupdate:insert-after>";
-        } else {
-            xupdateInsertAfter = "<xupdate:insert-after select=\"" + select
-                    + " \"><xupdate:element name=\"" + new XPath(select).getNameWithoutPredicates()
-                    + "\"" + namespaceAttribute + ">" + xa.xupdateAttrExpr
-                    + getParameterAsString(pname) + "</xupdate:element></xupdate:insert-after>";
-        }
-        getLogger().debug(".update(): Update Node (insert-after): " + xupdateInsertAfter);
-
-        String xupdateRemove = "<xupdate:remove select=\"" + select + " \"/>";
-        getLogger().debug(".update(): Update Node (remove): " + xupdateRemove);
-
-        String xupdateUpdateAttribute = "<xupdate:update select=\""
-                + new XPath(select).removePredicates(select) + "[@tagID='temp']/@tagID" + " \">"
-                + xa.tagID + "</xupdate:update>";
-        getLogger().debug(".update(): Update Node (update tagID attribute): "
-                + xupdateUpdateAttribute);
-
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">"
-                + xupdateInsertAfter + xupdateRemove + xupdateUpdateAttribute
-                + "</xupdate:modifications>";
-    }
-
-    /**
-     * xupdate:update CDATA
-     * @param pname The name of the parent element
-     * @param parent if true then attributes of parent will also be updated
-     * @return The Xupdate expression
-     */
-    private String updateCDATA(String pname, boolean parent) {
-        String xupdateUpdate = pname + getParameterAsString(pname) + "]]></xupdate:update>";
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">"
-                + xupdateUpdate + "</xupdate:modifications>";
-    }
-
-    /**
-     * xupdate:append
-     * @param pname The node to append to
-     * @return The Xupdate statement
-     */
-    private String append(String pname) {
-        getLogger().debug(".append() APPEND Node: " + pname);
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">" + pname
-                + "</xupdate:modifications>";
-    }
-
-    /**
-     * xupdate:insert-before
-     * @param pname The node to insert before
-     * @return The Xupdate statement
-     */
-    private String insertBefore(String pname) {
-        getLogger().debug(".insertBefore() INSERT-BEFORE Node: " + pname);
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">" + pname
-                + "</xupdate:modifications>";
-    }
-
-    /**
-     * xupdate:insert-after
-     * @param pname The node to insert after
-     * @return The Xupdate statement
-     */
-    private String insertAfter(String pname) {
-        getLogger().debug(".insertAfter() INSERT-AFTER Node: " + pname);
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">" + pname
-                + "</xupdate:modifications>";
-    }
-
-    /**
-     * xupdate:remove
-     * @param pname The node to remove
-     * @return The Xupdate statement
-     */
-    private String remove(String pname) {
-        getLogger().debug(".remove() REMOVE Node: " + pname);
-        return "<xupdate:modifications xmlns:xupdate=\"http://www.xmldb.org/xupdate\">" + pname
-                + "</xupdate:modifications>";
-    }
-
-    /**
-     * Renumber the tags within a document. Each tag gets a unique number used in Xupdate
-     * expressions.
-     * @param doc The document to renumber
-     * @param unnumberTagsXSL The XSL stylesheet to remove the tagID attribute
-     * @param numberTagsXSL The XSL stylesheet to add the tagID attribute
-     * @return The renumbered document
-     * @throws UsecaseException
-     */
-    private Document renumberDocument(Document doc, Source unnumberTagsXSL, Source numberTagsXSL)
-            throws UsecaseException {
-
-        try {
-            DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance();
-            parserFactory.setValidating(false);
-            parserFactory.setNamespaceAware(true);
-            parserFactory.setIgnoringElementContentWhitespace(true);
-            DocumentBuilder builder = parserFactory.newDocumentBuilder();
-
-            TransformerFactory tf = TransformerFactory.newInstance();
-
-            // Remove tagIDs
-            Transformer ut = tf.newTransformer(new StreamSource(unnumberTagsXSL.getInputStream()));
-            Document unnumberedDocument = builder.newDocument();
-            ut.transform(new DOMSource(doc), new DOMResult(unnumberedDocument));
-
-            // Add tagIDs
-            Transformer nt = tf.newTransformer(new StreamSource(numberTagsXSL.getInputStream()));
-            Document renumberedDocument = builder.newDocument();
-            nt.transform(new DOMSource(unnumberedDocument), new DOMResult(renumberedDocument));
-
-            return renumberedDocument;
-        } catch (final Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * Remove parent element
-     * @param xmlSnippet The XML snippet to remove the parent from
-     * @return The XML snippet with the parent removed
-     */
-    private String removeParent(String xmlSnippet) {
-        String xmlSnippetWithoutParent = xmlSnippet;
-        xmlSnippetWithoutParent = xmlSnippetWithoutParent.substring(xmlSnippetWithoutParent.indexOf(">") + 1);
-        xmlSnippetWithoutParent = StringUtils.reverse(xmlSnippetWithoutParent);
-        xmlSnippetWithoutParent = xmlSnippetWithoutParent.substring(xmlSnippetWithoutParent.indexOf("<") + 1);
-        xmlSnippetWithoutParent = StringUtils.reverse(xmlSnippetWithoutParent);
-        return xmlSnippetWithoutParent;
-    }
-
-    /**
-     * Prefix resolver which uses the usecase parameters like
-     * "namespace.xhtml=http://www.w3.org/1999/xhtml" to resolve prefixes.
-     */
-    public class FormPrefixResolver extends PrefixResolverDefault {
-
-        /**
-         * Ctor.
-         * @param context The context node.
-         */
-        public FormPrefixResolver(Node context) {
-            super(context);
-        }
-
-        /**
-         * @see org.apache.xml.utils.PrefixResolver#getNamespaceForPrefix(java.lang.String,
-         *      org.w3c.dom.Node)
-         */
-        public String getNamespaceForPrefix(String prefix, Node context) {
-            String uri = super.getNamespaceForPrefix(prefix, context);
-            if (uri == null) {
-                uri = FormsEditor.this.getParameterAsString("namespace." + prefix);
-            }
-            return uri;
-        }
-
-    }
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-}
diff --git a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java b/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java
deleted file mode 100644
index 72836cf..0000000
--- a/trunk/src/modules/editors/java/src/org/apache/lenya/cms/editors/forms/OneFormEditor.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors.forms;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.Schema;
-import org.apache.lenya.xml.ValidationUtil;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-/**
- * One form editor.
- * 
- * @version $Id$
- */
-public class OneFormEditor extends DocumentUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        org.apache.lenya.cms.publication.Document doc = getSourceDocument();
-        Set nodes = new HashSet();
-        if (doc != null) {
-            nodes.add(doc.getRepositoryNode());
-        }
-        return (org.apache.lenya.cms.repository.Node[])
-            nodes.toArray(new org.apache.lenya.cms.repository.Node[nodes.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!hasErrors()) {
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
-                getLogger());
-        }
-        setParameter("executable", Boolean.valueOf(!hasErrors()));
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String encoding = getEncoding();
-        String content = getXmlString(encoding);
-        saveDocument(encoding, content);
-    }
-
-    protected String getEncoding() {
-        Request request = ContextHelper.getRequest(this.context);
-        String encoding = request.getCharacterEncoding();
-        return encoding;
-    }
-
-    protected String getXmlString(String encoding) {
-        // Get namespaces
-        String namespaces = removeRedundantNamespaces(getParameterAsString("namespaces"));
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(namespaces);
-        }
-        // Aggregate content
-        String content = "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>\n"
-                + addNamespaces(namespaces, getParameterAsString("content"));
-        return content;
-    }
-
-    public void advance() throws UsecaseException {
-        clearErrorMessages();
-        try {
-            Document xml = getXml();
-            if (xml != null) {
-                validate(xml);
-            }
-            if (!hasErrors()) {
-                SourceUtil.writeDOM(xml, getSourceDocument().getOutputStream());
-                deleteParameter("content");
-            }
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document xml = getXml();
-        if (xml != null) {
-            validate(xml);
-        }
-    }
-
-    protected void validate(Document xml) throws Exception {
-        ResourceType resourceType = getSourceDocument().getResourceType();
-        Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xml, schema, new UsecaseErrorHandler(this));
-    }
-
-    protected Document getXml() throws ParserConfigurationException, IOException {
-        String encoding = getEncoding();
-        String xmlString = getXmlString(encoding);
-
-        Document xml = null;
-        try {
-            xml = DocumentHelper.readDocument(xmlString, encoding);
-        } catch (SAXException e) {
-            addErrorMessage("error-document-form", new String[] { e.getMessage() });
-        }
-        return xml;
-    }
-
-    /**
-     * Save the content to the document source. After saving, the XML is
-     * validated. If validation errors occur, the usecase transaction is rolled
-     * back, so the changes are not persistent. If the validation succeeded, the
-     * workflow event is invoked.
-     * @param encoding The encoding to use.
-     * @param content The content to save.
-     * @throws Exception if an error occurs.
-     */
-    protected void saveDocument(String encoding, String content) throws Exception {
-        saveXMLFile(encoding, content, getSourceDocument());
-
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), getSourceDocument(),
-                getEvent());
-    }
-
-    /**
-     * Save the XML file
-     * @param encoding The encoding
-     * @param content The content
-     * @param document The source
-     * @throws FileNotFoundException if the file was not found
-     * @throws UnsupportedEncodingException if the encoding is not supported
-     * @throws IOException if an IO error occurs
-     */
-    private void saveXMLFile(String encoding, String content,
-            org.apache.lenya.cms.publication.Document document) throws FileNotFoundException,
-            UnsupportedEncodingException, IOException {
-        Writer writer = null;
-
-        try {
-            writer = new OutputStreamWriter(document.getOutputStream(), encoding);
-            writer.write(content, 0, content.length());
-        } catch (FileNotFoundException e) {
-            getLogger().error("File not found " + e.toString());
-        } catch (UnsupportedEncodingException e) {
-            getLogger().error("Encoding not supported " + e.toString());
-        } catch (IOException e) {
-            getLogger().error("IO error " + e.toString());
-        } finally {
-            // close all streams
-            if (writer != null)
-                writer.close();
-        }
-    }
-
-    /**
-     * Remove redundant namespaces
-     * @param namespaces The namespaces to remove
-     * @return The namespace string without the removed namespaces
-     */
-    private String removeRedundantNamespaces(String namespaces) {
-        String[] namespace = namespaces.split(" ");
-
-        String ns = "";
-        for (int i = 0; i < namespace.length; i++) {
-            if (ns.indexOf(namespace[i]) < 0) {
-                ns = ns + " " + namespace[i];
-            } else {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Redundant namespace: " + namespace[i]);
-                }
-            }
-        }
-        return ns;
-    }
-
-    /**
-     * Add namespaces
-     * @param namespaces The namespaces to add
-     * @param content The content to add them to
-     * @return The content with the added namespaces
-     */
-    private String addNamespaces(String namespaces, String content) {
-        int i = content.indexOf(">");
-        return content.substring(0, i) + " " + namespaces + content.substring(i);
-    }
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-}
diff --git a/trunk/src/modules/editors/resources/i18n/cmsui.xml b/trunk/src/modules/editors/resources/i18n/cmsui.xml
deleted file mode 100644
index 3600b0e..0000000
--- a/trunk/src/modules/editors/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="Reformat">Reformat</message>

-

-  <message key="insertLink.heading">Insert Link</message>

-  <message key="insertLink.clickTreeOrType">

-    You can either click on a node in the tree for an internal link or enter a link in the URL field.

-  </message>

-  <message key="insertLink.URL">URL</message>

-  <message key="insertLink.text">Link text</message>

-  <message key="insertLink.title">Link title</message>

-  <message key="insertLink.submit">Insert Link</message>

-  

-  <message key="insertAsset.headingAsset">Insert Asset</message>

-  <message key="insertAsset.headingImage">Insert Image</message>

-  <message key="insertAsset.availableAsset">Available assets</message>

-  <message key="insertAsset.availableImage">Available images</message>

-  <message key="insertAsset.file">File</message>

-  <message key="insertAsset.preview">Preview</message>

-  <message key="insertAsset.title">Title</message>

-  <message key="insertAsset.fileSize">Size</message>

-  <message key="insertAsset.imageSize">W x H</message>

-  <message key="insertAsset.creationDate">created</message>

-  <message key="insertAsset.captionImage">Image description</message>

-  <message key="insertAsset.captionAsset">Asset text</message>

-  <message key="insertAsset.width">Width</message>

-  <message key="insertAsset.height">height</message>

-  <message key="insertAsset.insertAsset">Insert asset</message>

-  <message key="insertAsset.insertImage">Insert image</message>

-  <message key="insertAsset.createResource">Upload new resource</message>
-  
-  <message key="Choose element ...">Choose element ...</message>

-</catalogue>

diff --git a/trunk/src/modules/editors/resources/i18n/cmsui_de.xml b/trunk/src/modules/editors/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 80a99c2..0000000
--- a/trunk/src/modules/editors/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="Reformat">Formatieren</message>

-

-  <message key="insertLink.heading">Link einfügen</message>

-  <message key="insertLink.clickTreeOrType">

-    Sie können entweder ein Dokument im Baum auswählen oder eine beliebige URL eingeben.

-  </message>

-  <message key="insertLink.URL">URL</message>

-  <message key="insertLink.text">Link-Text</message>

-  <message key="insertLink.title">Link-Titel</message>

-  <message key="insertLink.submit">Link einfügen</message> 

-   

-  <message key="insertAsset.headingAsset">Anlage einfügen</message>

-  <message key="insertAsset.headingImage">Bild einfügen</message>

-  <message key="insertAsset.availableAsset">Verfügbare Anlagen</message>

-  <message key="insertAsset.availableImage">Verfügbare Bilder</message>

-  <message key="insertAsset.file">Datei</message>

-  <message key="insertAsset.preview">Vorschau</message>

-  <message key="insertAsset.title">Titel</message>

-  <message key="insertAsset.fileSize">Größe</message>

-  <message key="insertAsset.imageSize">B x H</message>

-  <message key="insertAsset.creationDate">erstellt am</message>

-  <message key="insertAsset.captionAsset">Anlagentext</message>

-  <message key="insertAsset.captionImage">Bildbeschreibung</message>

-  <message key="insertAsset.width">Breite</message>

-  <message key="insertAsset.height">Höhe</message>

-  <message key="insertAsset.insertAsset">Anlage einfügen</message>

-  <message key="insertAsset.insertImage">Bild einfügen</message>

-  <message key="insertAsset.createResource">Neue Datei hochladen...</message>

-
-  <message key="Choose element ...">Element wählen ...</message>
-</catalogue>

diff --git a/trunk/src/modules/editors/resources/javascript/disablebackspace.js b/trunk/src/modules/editors/resources/javascript/disablebackspace.js
deleted file mode 100644
index f8b08f7..0000000
--- a/trunk/src/modules/editors/resources/javascript/disablebackspace.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-/* 
-* Processes the event. Ordering is important for Opera 9 on Windows,
-* as it must use the Mozilla style code, but will match IE style code.
-*/
-function LenyaDisableBackspace(e)
-{
-  // Mozilla style code for Opera and Safari as well
-  // For Opera 9 under Windows to work properly, the Mozilla test must be first.
-  if(typeof document.addEventListener != 'undefined') {
-    var src = e.target.type;
-    var key = e.which;
-    if( key == 8 && (src != 'text' && src != 'textarea')) {
-      e.preventDefault();
-      e.stopPropagation();
-      return false;
-    }
-  }
-  // IE style code for IE 6 and IE 7. Should work on IE 5.5+
-  else if(typeof document.attachEvent != 'undefined' && window.event) {
-    var src = event.srcElement.type;
-    var key = window.event.keyCode;
-    if(key == 8 && (src != 'text' && src != 'textarea')) {
-      window.event.cancelBubble = true;
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
-* Register event handler.
-* This does not need to wait for onload to fire.
-*/
-// Mozilla style for Opera and Safari as well
-if(typeof document.addEventListener != 'undefined') {
-  document.addEventListener('keypress',LenyaDisableBackspace,false);
-}
-// IE style code for IE 6 and IE 7. Should work on IE 5.5+
-else if(typeof document.attachEvent != 'undefined') {
-  document.attachEvent('onkeydown',LenyaDisableBackspace);
-}
-
diff --git a/trunk/src/modules/editors/resources/javascript/insertAsset.js b/trunk/src/modules/editors/resources/javascript/insertAsset.js
deleted file mode 100644
index 7992a36..0000000
--- a/trunk/src/modules/editors/resources/javascript/insertAsset.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
-  * updates the hidden form data whenever the user selects a new asset radiobutton.
-  */
-function updateData(url, title, height, width, type) { 
-  
-  var text = document.forms["insertAsset"].text.value;
-  if (text && text != document.forms["insertAsset"].title.value) {
-    // if the user has provided an entry for "text" 
-    //    (other than a copy of "title"), use that:
-    text  = document.forms["insertAsset"].text.value;
-  } else {
-    // otherwise just copy the title value:
-    text = title;
-  }
-  // we store the ratio with every image for correct re-scaling.
-  var ratio = 1;
-  if (width != 0) {
-    ratio = height / width;
-  }
-  document.forms["insertAsset"].ratio.value = ratio;
-
-  var objectData = new org.apache.lenya.editors.ObjectData({
-    url    : url,
-    title  : title,
-    text   : text,
-    height : height,
-    width  : width,
-    type   : type
-  });
-  //alert("Setting form data:" + objectData.toString());
-  org.apache.lenya.editors.setFormValues("insertAsset", objectData);
-}
-
-/**
-  * updates the height to maintain correct ratio when the user changes the width
-  */
-function scaleHeight(width) {
-  var ratio = document.forms['insertAsset'].ratio.value;
-  document.forms['insertAsset'].height.value = width * ratio;
-  focus(); 
-} 
-
-/**
-  * updates the width to maintain correct ratio when the user changes the height
-  */
-function scaleWidth(height) {
-  var ratio = document.forms['insertAsset'].ratio.value;
-  document.forms['insertAsset'].width.value = height * ratio;
-  focus(); 
-} 
-
-window.onload = function() {
-  org.apache.lenya.editors.handleFormLoad("insertAsset");
-};
diff --git a/trunk/src/modules/editors/resources/javascript/insertLink.js b/trunk/src/modules/editors/resources/javascript/insertLink.js
deleted file mode 100644
index fd90e34..0000000
--- a/trunk/src/modules/editors/resources/javascript/insertLink.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-/* Constructor for LinkTree object */
-function LinkTree(doc, treeElement) {
-    this.doc = doc;
-    this.treeElement = treeElement;
-    this.selected = null;
-}
-
-/**
-  * FIXME: CHOSEN_LANGUAGE should not be a global variable!
-  * a callback used by the LinkTree object.
-  */
-function setLink(uuid) {
-    var language = CHOSEN_LANGUAGE;
-    document.forms["insertLink"].url.value = "lenya-document:" + uuid + ",lang=" + language;
-}
-
-
-function buildTree() {
-    var placeholder = document.getElementById('tree');
-    var tree = new LinkTree(document, placeholder);
-    tree.init(PUBLICATION_ID);
-    tree.render();
-    tree.loadInitialTree(AREA, DOCUMENT_ID);
-}
-
-LinkTree.prototype = new NavTree;
-LinkTree.prototype.handleItemClick = function(item, event) {
-    setLink(item.uuid);
-}
-
-window.onload = function() {
-  buildTree();
-  org.apache.lenya.editors.handleFormLoad('insertLink');
-};
diff --git a/trunk/src/modules/editors/resources/javascript/oneform_lenya_glue.js b/trunk/src/modules/editors/resources/javascript/oneform_lenya_glue.js
deleted file mode 100644
index 1b0b1e7..0000000
--- a/trunk/src/modules/editors/resources/javascript/oneform_lenya_glue.js
+++ /dev/null
@@ -1,56 +0,0 @@
-org.apache.lenya.editors.setObjectData = function(objectData, windowName) {
-  var currentUsecase = usecaseMap[windowName];
-  var snippet = org.apache.lenya.editors.generateContentSnippet(currentUsecase, objectData);
-  org.apache.lenya.editors.insertContent(
-    document.forms['oneform'].elements['content'], 
-    snippet
-  );
-  usecaseMap[windowName] = undefined; // we're done!
-  objectData[windowName] = undefined; // we're done!
-}
-
-org.apache.lenya.editors.getObjectData = function(windowName) {
-  return objectData[windowName];
-}
-
-function triggerUsecase(usecase) {
-  var windowName = org.apache.lenya.editors.generateUniqueWindowName();
-  var selectedText = org.apache.lenya.editors.getSelectedText(document.forms[0].elements['content']);
-  switch (usecase) {
-
-    case org.apache.lenya.editors.USECASE_INSERTLINK:
-      objectData[windowName] = new org.apache.lenya.editors.ObjectData({
-        url   : "",
-        text  : selectedText,
-        title : ""
-      });
-      break;
-
-    case org.apache.lenya.editors.USECASE_INSERTIMAGE:
-      objectData[windowName] = new org.apache.lenya.editors.ObjectData({
-        url   : "",
-        text  : selectedText,
-        title : "",
-        width : "",
-        height: ""
-      });
-      break;
-
-    case org.apache.lenya.editors.USECASE_INSERTASSET:
-      objectData[windowName] = new org.apache.lenya.editors.ObjectData({
-        url   : "",
-        text  : selectedText,
-        title : ""
-      })
-      break;
-  }
-  org.apache.lenya.editors.openUsecaseWindow(usecase, windowName);
-  usecaseMap[windowName] = usecase;
-  /*  alert("Stored values for new window " + windowName + ":\n"
-      + "objectData[windowName] = '" + objectData[windowName] + "'\n"
-      + "usecaseMap[windowName] = '" + usecaseMap[windowName] + "'"
-  ); */ 
-}
-
-var objectData = new Array();
-var usecaseMap = new Array();
diff --git a/trunk/src/modules/editors/resources/javascript/org.apache.lenya.editors.js b/trunk/src/modules/editors/resources/javascript/org.apache.lenya.editors.js
deleted file mode 100644
index f4ea647..0000000
--- a/trunk/src/modules/editors/resources/javascript/org.apache.lenya.editors.js
+++ /dev/null
@@ -1,472 +0,0 @@
-// create a domain-based "package" to keep the global namespace clean
-var org;
-if (!org) org = new Object();
-if (!org.apache) org.apache = new Object();
-if (!org.apache.lenya) org.apache.lenya = new Object();
-if (!org.apache.lenya.editors) org.apache.lenya.editors = new Object();
-
-//alert("Module 'org.apache.lenya.editors' loaded.");
-
-/**
-  * ObjectData constructor, the interface between generic editor usecases
-  * and editor modules.
-  *
-  * The idea is to use the same data structure for links, images and assets.
-  * Thus, insertLink, insertImage and insertAsset can all share most of the javascript code.
-  *
-  * FIXME: objectData is an exceptionally stupid term. Please fix if you can think of 
-  * something that encompasses "data for to-be-inserted links, images and assets in general".
-  *
-  * @param an optional hash map of initial values
-  */
-org.apache.lenya.editors.ObjectData = function(init) {
-  if (init) {
-    for (var i in this) {
-      if (typeof this[i] == "function") continue; // skip the methods!
-      //alert("Checking this[" + i + "], init[" + i + "] is '" + init[i] + "'.");
-      this[i] = init[i];
-    }
-  //alert("Created new ObjectData = " + this.toString());
-  }
-}
-
-
-/**
-  * href for links, src for assets and images
-  */
-org.apache.lenya.editors.ObjectData.prototype.url = undefined;
-
-/**
-  * XHTML title attribute:
-  */
-org.apache.lenya.editors.ObjectData.prototype.title = undefined;
-
-/**
-  * element content for links and assets, alt text for images: 
-  */
-org.apache.lenya.editors.ObjectData.prototype.text = undefined;
-
-/**
-  * width for images
-  */
-org.apache.lenya.editors.ObjectData.prototype.width = undefined;
-
-/**
-  * height for images
-  */
-org.apache.lenya.editors.ObjectData.prototype.height = undefined;
-
-/** 
-  * MIME Type for images and assets.
-  */
-org.apache.lenya.editors.ObjectData.prototype.type = undefined;
-
-
-/**
-  * Utility function to ease debugging. Will dump all fields in
-  * a human-readable fashion, including their types.
-  */
-org.apache.lenya.editors.ObjectData.prototype.toString = function() {
-  var s = "\n";
-  for (var i in this) {
-    if (typeof this[i] != "function") {
-      s += "\t" + i + ": [" + this[i] + "] (" + typeof this[i] + ")\n";
-    }
-  } 
-  return s;
-}
-
-
-/**
-  * set objectData object in editor
-  *
-  * This callback must be implemented in the editor window.
-  * It will be called when the usecase has completed successfully 
-  * and make the obtained data available to your editor.
-  * Here you must implement the necessary code to either add the
-  * data to your editor area directly (you may want to use 
-  * org.apache.lenya.editors.generateContentSnippet  and 
-  * org.apache.lenya.editors.insertContent as helpers), or
-  * to fill the values into some editor-specific dialog.
-  *
-  * If you want to allow for multiple active usecase windows in parallel,
-  * you can use the windowName parameter to uniquely identify each window
-  * and do your own bookkeeping. 
-  * Consider using org.apache.lenya.editors.openUsecaseWindow to 
-  * manage your windows.
-  * 
-  * @param objectData a data object as defined by objectDataTemplate
-  * @param windowName the ID of the usecase window (window.name).
-  * @see org.apache.lenya.editors.ObjectData
-  */
-org.apache.lenya.editors.setObjectData = function(objectData, windowName) {
-  alert("Programming error:\n  You must override org.apache.lenya.editors.setObjectData(objectData, windowName)!");
-};
-
-
-/**
-  * get objectData object from editor
-  *
-  * This callback must be implemented in the editor window. 
-  * The usecase will query your editor for an objectData object, which
-  * it will use to fill form fields with default values (if provided).
-  * All form fields whose values in objectData are undefined will be 
-  * deactivated, so that your editor can handle them.
-  *
-  * Usually, default values are based on selected text or user settings.
-  * @param windowName the ID of the usecase window (window.name).
-  * @returns an objectData object.
-  * @see org.apache.lenya.editors.ObjectData
-  * @see org.apache.lenya.editors.setObjectData
-   */
-org.apache.lenya.editors.getObjectData = function(windowName) {
-  alert("Programming error:\n  You must override org.apache.lenya.editors.getObjectData(windowName)!");
-};
-
-
-/**
-  * sets default values of the usecase form
-  *
-  * The form field names must correspond to the properties of
-  * objectDataTemplate.
-  * Note: if a value in objectData is undefined (as opposed to ""),
-  * the corresponding form field will be disabled (greyed out).
-  * Editors should use this to deactivate properties they wish
-  * to handle themselves.
-  * @param formName the "name" attribute of the form
-  * @param objectData 
-  * @see org.apache.lenya.editors.objectDataTemplate
-  */
-org.apache.lenya.editors.setFormValues = function(formName, objectData) {
-  var form = document.forms[formName];
-  for (var i in org.apache.lenya.editors.ObjectData.prototype) {
-    if (form[i] !== undefined) {
-      if (objectData[i] !== undefined) {
-        form[i].value = objectData[i];
-      } else {
-        form[i].disabled = true;
-        form[i].title = "disabled by editor";
-      }
-    }
-  } 
-}
-
-
-/**
-  * reads the values from the usecase form
-  *
-  * The form field names must correspond to the properties of
-  * objectDataTemplate.
-  * @param formName the "name" attribute of the form
-  * @returns objectData
-  */
-org.apache.lenya.editors.getFormValues = function(formName) {
-  var form = document.forms[formName];
-  var objectData = new org.apache.lenya.editors.ObjectData();
-  for (var i in org.apache.lenya.editors.ObjectData.prototype) {
-    if (form[i] !== undefined) {
-      objectData[i] = form[i].value;
-    }
-  }
-  return objectData;
-}
-
-/*
-org.apache.lenya.editors.findAncestor = function() {
-  // check our parent window:
-  return org.apache.lenya.editors.__findAncestor(window.opener.top);
-}
-
-org.apache.lenya.editors.__findAncestor = function(ancestor) {
-  // if ancestor is undefined, we don't have an ancestor that
-  // provides the org.apache.lenya.editors package.
-  if (!ancestor) {
-    alert("no ancestor found. baling out...");
-    return undefined;
-  }
-  try {
-  // probe for the package in the ancestor:
-     var probe = ancestor.org.apache.lenya.editors;
-  } catch (exception) { 
-     alert("probe: " + probe + "\n" + exception);
-   // woops. no package. check the ancestor's parent.
-    return org.apache.lenya.editors.__findAncestor(ancestor.opener.top);
-  }
-  // gotcha: ancestor has the package.
-  alert("found ancestor '" + ancestor.name + "' with package!");
-  return ancestor;
-}
-*/
-
-/**
-  * handle the submit event of the form
-  *
-  * @param formName the "name" attribute of the form
-  */
-org.apache.lenya.editors.handleFormSubmit = function(formName) {
-  var objectData = org.apache.lenya.editors.getFormValues(formName);
-  window.opener.org.apache.lenya.editors.setObjectData(objectData, window.name);
-  window.close();
-}
-
-
-/**
-  * handle the load event of the form
-  *
-  * @param formName the "name" attribute of the form
-  */
-org.apache.lenya.editors.handleFormLoad = function(formName) {
-  var objectData = window.opener.org.apache.lenya.editors.getObjectData(window.name);
-  org.apache.lenya.editors.setFormValues(formName, objectData);
-}
-
-
-/**
-  * default attributes for usecase windows (window.open()...)
-  */
-org.apache.lenya.editors.usecaseWindowOptions = 
-      "toolbar=no,"
-    + "scrollbars=yes,"
-    + "status=no,"
-    + "resizable=yes,"
-//  + "dependent=yes,"  not in IE6, and the moz people want to get rid of it, too...
-    + "width=600,"
-    + "height=700";
-
-
-org.apache.lenya.editors.USECASE_INSERTLINK = 'insertLink';
-org.apache.lenya.editors.USECASE_INSERTIMAGE = 'insertImage';
-org.apache.lenya.editors.USECASE_INSERTASSET = 'insertAsset';
-
-
-org.apache.lenya.editors.generateUniqueWindowName = function() {
-  return new String("Lenya_" + Math.random().toString().substr(2));
-}
-
-
-/**
-  * a helper function to open new usecase windows.
-  *
-  * If everyone used this, we'd save some maintenance work in the long run 
-  * and can ensure consistent behaviour across different editors.
-  *
-  * @param usecase the name of the usecase to invoke, one of
-  *   org.apache.lenya.editors.USECASE_INSERTLINK 
-  *   | org.apache.lenya.editors.USECASE_INSERTIMAGE 
-  *   | org.apache.lenya.editors.USECASE_INSERTASSET
-  * @param windowName the name of the new window, in case the editor needs 
-  *   that info later on.
-  * @returns the new window object
-  */
-org.apache.lenya.editors.openUsecaseWindow = function(usecase, windowName) {
-  var currentBaseURL;
-  var usecaseWindow;
-
-  switch (usecase) {
-    case org.apache.lenya.editors.USECASE_INSERTLINK:
-    case org.apache.lenya.editors.USECASE_INSERTASSET:
-    case org.apache.lenya.editors.USECASE_INSERTIMAGE:
-      currentBaseURL = window.location.href.replace(/\?.*$/,"");
-      usecaseWindow = window.open(
-        currentBaseURL + "?lenya.usecase=editors." + usecase,
-        windowName,
-        org.apache.lenya.editors.usecaseWindowOptions
-      );
-      usecaseWindow.focus(); //IE6 likes to open windows in the back...
-      break;
-    default:
-      alert("openUsecaseWindow: Unknown usecase '" + usecase + "'. This is likely a programming error.");
-  }
-  return usecaseWindow;
-}
-
-
-/**
-  * this data structure helps with the insertion of generated tags 
-  */
-org.apache.lenya.editors.ContentSnippet = function(
-    beforeSelection, 
-    afterSelection, 
-    replaceSelection
-) {
-  this.beforeSelection = beforeSelection,
-  this.afterSelection = afterSelection,
-  this.replaceSelection = replaceSelection
-}
-
-
-/**
-  * the characters to be inserted before the selected text
-  */
-org.apache.lenya.editors.ContentSnippet.prototype.beforeSelection = "";
-
-/**
-  * the characters to be inserted after the selected text
-  */
-org.apache.lenya.editors.ContentSnippet.prototype.afterSelection = "";
-
-/**
-  * the text to replace the currently selected area (if any)
-  */
-org.apache.lenya.editors.ContentSnippet.prototype.replaceSelection = undefined;
-
-/**
-  * @see org.apache.lenya.editors.ObjectData.prototype.toString
-  */
-org.apache.lenya.editors.ContentSnippet.prototype.toString =  
-    org.apache.lenya.editors.ObjectData.prototype.toString;
-
-
-/**
-  * generates a content snippet to be inserted into the editor area
-  * 
-  * @param usecase the usecase for which the snippet should be generated
-  * @param objectData an objectData object for the contents
-  * @param namespace an optional namespace URI (usually http://www.w3.org/1999/xhtml)
-  * @returns an object of type ContentSnippet 
-  * @see org.apache.lenya.editors.ContentSnippet
-  */
-org.apache.lenya.editors.generateContentSnippet = function(usecase, objectData, namespace) {
-  var snippet = new org.apache.lenya.editors.ContentSnippet();
-
-  switch (usecase) {
-
-    case org.apache.lenya.editors.USECASE_INSERTLINK:
-      snippet.beforeSelection = '<a'
-        + (namespace ? ' xmlns="' + namespace + '"' : '')
-        + (objectData.url ? ' href="' + objectData.url + '"' : '')
-        + (objectData.title ? ' title="' + objectData.title + '"' : '')
-        + '>';
-      snippet.afterSelection = '</a>';
-      snippet.replaceSelection =
-        objectData.text ? objectData.text : undefined;
-      break;
-
-    case org.apache.lenya.editors.USECASE_INSERTASSET:
-      snippet.beforeSelection = '<a'
-        + (namespace ? ' xmlns="' + namespace + '"' : '')
-        + (objectData.url ? ' href="' + objectData.url + '"' : '')
-        + (objectData.title ? ' title="' + objectData.title + '"' : '')
-        + ' class="lenya.asset">';
-      snippet.afterSelection = '</a>';
-      snippet.replaceSelection =
-        objectData.text ? objectData.text : undefined;
-      break;
-
-    case org.apache.lenya.editors.USECASE_INSERTIMAGE:
-      snippet.beforeSelection = '<img'
-        + (namespace ? ' xmlns="' + namespace + '"' : '')
-        + (objectData.url ? ' src="' + objectData.url + '"' : '')
-        + (objectData.title ? ' title="' + objectData.title + '"' : '')
-        + (objectData.text ? ' alt="' + objectData.text + '"' : '')
-        + (objectData.width ? ' width="' + objectData.width + '"' : '')
-        + (objectData.height ? ' height="' + objectData.height + '"' : '')
-        + '/>';
-      snippet.afterSelection = "";
-      snippet.replaceSelection = undefined;
-      break;
-
-    default:
-      alert("setObjectData: Unknown usecase " + currentUsecase + ". This is likely a programming error.");
-      return undefined;
-  }
-  return snippet;
-}
-
-
-/**
-  * a cross-browser helper to obtain selected text
-  *
-  * @param sourceElement an XHTML input or window object (optional), such as
-  *   document.forms['youreditor'].elements['content'] or window.top.
-  * You must specify it if you want to retrieve selections from 
-  * form fields, or from frames other than "window" (the default).
-  *
-  * @returns the selected text or the empty string.
-  *
-  * NOTE: This function is really versatile and powerful. It is also not
-  * particularly well tested except with IE 6/7 and Firefox under Windows and Linux.
-  */
-org.apache.lenya.editors.getSelectedText = function(sourceElement) {
-  var debug = false;
-
-  if (!sourceElement) sourceElement = window;
-
-  // FF and friends if a form input element was specified
-  if (sourceElement.selectionStart) {
-    debug && alert("FF or similar, using 'selectionStart' on an XHTML <input> element named '" + sourceElement.name + "'.");
-    return sourceElement.value.substr(
-         sourceElement.selectionStart, 
-         sourceElement.selectionEnd - sourceElement.selectionStart);
-  } else 
-  // FF and friends in other parts of the document
-  if (sourceElement.getSelection) {
-    debug && alert("FF or similar, using a 'getSelection()' on a window element named '" + sourceElement.name + "'.");
-    return sourceElement.getSelection().toString();
-  } else
-  // IE if a window element was specified
-  if (sourceElement.document.selection) {
-    debug && alert("IE, using using 'selection' on the document element of a window named '" + sourceElement.name + "'.");
-    return sourceElement.document.selection.createRange().text;
-  } else {
-  // IE if a form object was specified (ignore it and use document instead)
-  if (window.document.selection) {
-    debug && alert("IE, ignoring form element and using 'selection' on the document element of the current window '" + window.name + "'.");
-    return window.document.selection.createRange().text;
-  } else
-    debug && alert("Sorry, your browser apparently doesn't support text selection via javascript.");
-    return "";
-  }
-}
-
-
-/**
-  * a cross-browser helper to insert data at the selected position in a form field (textarea etc.)
-  *
-  * @param formElement a XHTML form element (document.forms[foo].bar)
-  * @param contentSnippet a org.apache.lenya.editors.ContentSnippet with the text to insert
-  *
-  * inspired by http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/
-  */
-org.apache.lenya.editors.insertContent = function(formElement, snippet) {
-
-  //alert("snippet: '" + snippet.toString() + "'\n");
- 
-  // Danger, Will Robinson: you are leaving the w3c sector!
-  // Selections are not properly standardized yet...
-  formElement.focus();
-  // Firefox and friends will support this for textareas etc.
-  if (formElement.selectionStart !== undefined) {
-    var begin = formElement.selectionStart;
-    var end = formElement.selectionEnd;
-    var content = formElement.value; 
-    var selection = content.substring(begin, end);
-    // alert("Found selection beginning at [" + begin + "], ending at [" + end + "].");
-    formElement.value = content.substr(0, begin)
-      + snippet.beforeSelection
-      + (snippet.replaceSelection ? snippet.replaceSelection : selection)
-      + snippet.afterSelection
-      + content.substr(end);
-    // update cursor position:
-    formElement.selectionStart = begin;
-    formElement.selectionEnd = begin;
-  } else 
-  // IE does it thusly:
-  if (document.selection) {
-    alert("Hey, you are using IE, right? Please get in touch with dev@lenya.apache.org to test this feature!");
-    var range = document.selection.createRange();
-    var selection = range.text;
-    range.text = snippet.beforeSelection
-      + (snippet.replaceSelection ? snippet.replaceSelection : selection)
-      + snippet.afterSelection;
-    range.select();
-  } else {
-  // for all other browsers, paste the stuff at the end...
-    alert("Hey, what kind of browser is this? Please get in touch with dev@lenya.apache.org to make this feature work properly for you!");
-    formElement.value = formElement.value
-      + snippet.beforeSelection
-      + (snippet.replaceSelection ? snippet.replaceSelection : selection)
-      + snippet.afterSelection;
-  }
-}
-
diff --git a/trunk/src/modules/editors/sitemap.xmap b/trunk/src/modules/editors/sitemap.xmap
deleted file mode 100644
index bbcd25e..0000000
--- a/trunk/src/modules/editors/sitemap.xmap
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
- 
-  <map:resources>
- 
-   <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl">
-        <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
-      </map:transform>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-      <map:transform type="proxy"/>
-    </map:resource>
-
-  </map:resources>
-
-  <map:pipelines>
-    
-    <map:component-configurations>
-      <global-variables>
-        <!-- To access core resources -->
-        <basedir>../..</basedir>
-      </global-variables>
-    </map:component-configurations>
-
-    <map:pipeline>
-      <map:match pattern="form/*/**">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}?session=usecase"/>
-        <map:transform src="fallback://lenya/modules/editors/usecases/forms/numberTags.xsl"/>
-        <map:transform src="fallback://lenya/modules/editors/usecases/forms/{1}.xsl">
-          <map:parameter name="docid" value="{page-envelope:document-path}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="form" value="{1}"/>
-        </map:transform>
-        <map:transform src="fallback://lenya/modules/editors/usecases/forms/form-layout.xsl">
-          <map:parameter name="contextPrefix" value="{proxy:}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="wfevent" value="{request-param:lenya.event}"/>
-<!--          <map:parameter name="edit" value="{flow-attribute:usecase/parameter[@name = 'editSelect']}"/> -->
-          <map:parameter name="edit" value="{2}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match pattern="oneform">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}?session=usecase"/>
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test" value="{request-param:reformat}"/>
-          <map:when test=""/>
-          <map:otherwise>
-            <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-          </map:otherwise>
-        </map:select> 
-        <map:transform src="fallback://lenya/modules/editors/usecases/forms/oneform.xsl">
-          <map:parameter name="docid" value="{page-envelope:document-uuid}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match pattern="stream.xml">
-        <map:generate type="stream"/>
-        <map:transform type="incoming-proxy"/>
-        <map:transform type="url2uuid"/>
-        <map:serialize type="xml"/>
-      </map:match>
- 
-     <!-- this is a usecase view (see config/cocoon-xconf/usecase-insertLink.xconf) -->
-      <map:match pattern="editors.insertLink">
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:transform src="fallback://lenya/modules/editors/xslt/insertLink.xsl">
-          <map:parameter name="publicationId" value="{page-envelope:publication-id}"/>
-          <map:parameter name="area" value="authoring"/>
-          <map:parameter name="documentPath" value="{page-envelope:document-path}"/>
-          <map:parameter name="documentLanguage" value="{page-envelope:document-language}"/>
-          <map:parameter name="documentExtension" value="{page-envelope:document-extension}"/>
-          <map:parameter name="defaultLanguage" value="{page-envelope:default-language}"/>
-          <map:parameter name="languages" value="{page-envelope:publication-languages-csv}"/>
-          <map:parameter name="areaBasePath"
-             value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}}"/>
-        </map:transform>
-        <map:call resource="style-cms-page"/>
-        <map:serialize />
-      </map:match>
-
-
-      <map:match pattern="**">
-        <map:read src="lenya-document:/{page-envelope:document-uuid}"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/editors/usecases/forms/copy-mixed-content.xsl b/trunk/src/modules/editors/usecases/forms/copy-mixed-content.xsl
deleted file mode 100644
index 5d4bedd..0000000
--- a/trunk/src/modules/editors/usecases/forms/copy-mixed-content.xsl
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: copy-mixed-content.xsl 42908 2004-04-26 14:57:25Z michi $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-
-
-<!-- FIXME: works bugfree, but is kind of ugly, because each element will list all namespaces -->
-<!--
-<xsl:template match="//*" mode="mixedcontent" priority="-1">
-<xsl:variable name="prefix"><xsl:if test="contains(name(),':')">:<xsl:value-of select="substring-before(name(),':')"/></xsl:if></xsl:variable>
-
-<xsl:choose>
-<xsl:when test="node()">
-<xsl:text>&lt;</xsl:text><xsl:value-of select="name()"/>
-
-<xsl:apply-templates select="@*[local-name()!='tagID']" mode="mixedcontent"/>
-
-<xsl:for-each select="namespace::*">
-<xsl:variable name="prefix"><xsl:if test="local-name() != ''">:<xsl:value-of select="local-name()"/></xsl:if></xsl:variable>
-<xsl:if test=". != 'http://www.w3.org/XML/1998/namespace'">
-<xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="."/><xsl:text>"</xsl:text>
-</xsl:if>
-</xsl:for-each>
-
-<xsl:text>&gt;</xsl:text>
-
-<xsl:apply-templates select="node()" mode="mixedcontent"/>
-
-<xsl:text>&lt;/</xsl:text><xsl:value-of select="name()"/><xsl:text>&gt;</xsl:text>
-
-</xsl:when>
-
-<xsl:otherwise>
-
-<xsl:text>&lt;</xsl:text><xsl:value-of select="name()"/>
-
-<xsl:apply-templates select="@*[local-name()!='tagID']" mode="mixedcontent"/>
-
-<xsl:for-each select="namespace::*">
-<xsl:variable name="prefix"><xsl:if test="local-name() != ''">:<xsl:value-of select="local-name()"/></xsl:if></xsl:variable>
-<xsl:if test=". != 'http://www.w3.org/XML/1998/namespace'">
-<xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="."/><xsl:text>"</xsl:text>
-</xsl:if>
-</xsl:for-each>
-
-<xsl:text>/&gt;</xsl:text></xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<xsl:template match="@*" mode="mixedcontent"><xsl:text> </xsl:text><xsl:value-of select="name()"/>="<xsl:value-of select="."/>"</xsl:template>
--->
-
-
-
-
-
-
-
-
-
-
-<!-- List all the namespaces -->
-<xsl:template match="//*" mode="namespaces" priority="-1">
-<xsl:variable name="prefix"><xsl:if test="contains(name(),':')">:<xsl:value-of select="substring-before(name(),':')"/></xsl:if></xsl:variable>
-
-<xsl:if test="namespace-uri()"><xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="namespace-uri()"/>"</xsl:if><xsl:apply-templates select="@*[local-name()!='tagID']" mode="namespaces"/>
-<xsl:apply-templates select="node()" mode="namespaces"/>
-</xsl:template>
-
-<xsl:template match="@*" mode="namespaces">
-<xsl:variable name="prefix"><xsl:if test="contains(name(),':')">:<xsl:value-of select="substring-before(name(),':')"/></xsl:if></xsl:variable>
-
-<xsl:if test="namespace-uri()"><xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="namespace-uri()"/>"</xsl:if></xsl:template>
-
-<xsl:template match="text()" mode="namespaces"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<!-- FIXME: namespaces occur multiple times, e.g. xlink:show="" xlink:href="" xmlns:xlink="" xmlns:xlink="" -->
-<xsl:template match="//*" mode="mixedcontent" priority="-1">
-<xsl:variable name="prefix"><xsl:if test="contains(name(),':')">:<xsl:value-of select="substring-before(name(),':')"/></xsl:if></xsl:variable>
-
-<xsl:choose>
-<xsl:when test="node()">
-<xsl:text>&lt;</xsl:text><xsl:value-of select="name()"/><!--<xsl:if test="namespace-uri()"><xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="namespace-uri()"/>"</xsl:if>--><xsl:apply-templates select="@*[local-name()!='tagID']" mode="mixedcontent"/><xsl:text>&gt;</xsl:text>
-<xsl:apply-templates select="node()" mode="mixedcontent"/>
-<xsl:text>&lt;/</xsl:text><xsl:value-of select="name()"/><xsl:text>&gt;</xsl:text>
-</xsl:when>
-
-<!-- Empty element (why is this not node?) -->
-<xsl:otherwise>
-<xsl:text>&lt;</xsl:text><xsl:value-of select="name()"/><!--<xsl:if test="namespace-uri()"><xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="namespace-uri()"/>"</xsl:if>--><xsl:apply-templates select="@*[local-name()!='tagID']" mode="mixedcontent"/><xsl:text> /&gt;</xsl:text>
-</xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<!-- Attributes -->
-<xsl:template match="@*" mode="mixedcontent">
-<xsl:variable name="prefix"><xsl:if test="contains(name(),':')">:<xsl:value-of select="substring-before(name(),':')"/></xsl:if></xsl:variable>
-
-<xsl:text> </xsl:text><xsl:value-of select="name()"/>="<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="."/></xsl:call-template>"<!--<xsl:if test="namespace-uri()"><xsl:text> </xsl:text>xmlns<xsl:value-of select="$prefix"/>="<xsl:value-of select="namespace-uri()"/>"</xsl:if>--></xsl:template>
-
-
-
-<xsl:template match="text()" mode="mixedcontent">
-  <xsl:call-template name="search-and-replace">
-    <xsl:with-param name="string" select="."/>
-  </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="search-and-replace">
-<xsl:param name="string"/>
-
-<xsl:choose>
-<xsl:when test="contains($string, '&lt;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&lt;')"/></xsl:call-template>&amp;lt;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&lt;')"/></xsl:call-template>
-</xsl:when>
-<xsl:when test="contains($string, '&gt;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&gt;')"/></xsl:call-template>&amp;gt;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&gt;')"/></xsl:call-template>
-</xsl:when>
-<xsl:when test="contains($string, '&amp;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&amp;')"/></xsl:call-template>&amp;amp;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&amp;')"/></xsl:call-template>
-</xsl:when>
-<!-- FIXME: &quot; and &apos; -->
-<xsl:otherwise>
-  <xsl:value-of select="$string"/>
-</xsl:otherwise>
-</xsl:choose>
-</xsl:template>
- 
-</xsl:stylesheet>
diff --git a/trunk/src/modules/editors/usecases/forms/form-layout.xsl b/trunk/src/modules/editors/usecases/forms/form-layout.xsl
deleted file mode 100644
index bd6a2f2..0000000
--- a/trunk/src/modules/editors/usecases/forms/form-layout.xsl
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: form-layout.xsl 155267 2005-02-24 22:41:27Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-
-<xsl:param name="nodeid" select="''"/>
-
-<xsl:param name="contextPrefix" select="'/lenya'"/>
-<xsl:param name="edit" select="'No node selected yet'"/>
-<xsl:param name="wfevent" select="'null'"/>
-
-<xsl:variable name="imagesPath"><xsl:value-of select="$contextPrefix"/>/lenya/images/editor</xsl:variable>
-
-<xsl:include href="copy-mixed-content.xsl"/>
-  
-  
-  <xsl:template name="buttons">
-    <input type="submit" value="Save" name="submit" i18n:attr="value"/>
-    <xsl:text> </xsl:text>
-    <input type="submit" value="Cancel" name="cancel" i18n:attr="value"/>
-  </xsl:template>
-
-
-<xsl:template match="form">
-<div>
-<div class="lenya-box">
-  <div class="lenya-box-title" style="text-align: right">
-    <input type="hidden" name="namespaces">
-      <xsl:attribute name="value">
-        <xsl:for-each select="//namespace">
-          <xsl:text>xmlns:</xsl:text>
-          <xsl:value-of select="@prefix"/>="<xsl:value-of select="@uri"/>"
-          <xsl:text> </xsl:text>
-        </xsl:for-each>
-        <xsl:apply-templates select="//*" mode="namespaces" />
-      </xsl:attribute>
-    </input>
-    <xsl:call-template name="buttons"/>
-  </div>
-  <div class="lenya-box-body">
-  
-  <table class="lenya-table">
-    <xsl:apply-templates mode="nodes"/>
-  </table>
-
-  </div>
-  <div class="lenya-box-title" style="text-align: right">
-    <xsl:call-template name="buttons"/>
-  </div>
-</div>
-
-<div class="lenya-box">
-  <div class="lenya-box-title"><a href="http://www.w3.org/TR/REC-xml#syntax">Predefined Entities</a></div>
-  <div class="lenya-box-body">
-<ul>
-<li>&amp;lt; instead of &lt; (left angle bracket <strong>must</strong> be escaped)</li>
-<li>&amp;amp; instead of &amp; (ampersand <strong>must</strong> be escaped)</li>
-<li>&amp;gt; instead of > (right angle bracket)</li>
-<li>&amp;apos; instead of ' (single-quote)</li>
-<li>&amp;quot; instead of " (double-quote)</li>
-</ul>
-</div>
-</div>
-
- <xsl:variable name="currentTagID">
-    <xsl:value-of select="substring-before(substring-after($edit, &quot;@tagID='&quot;), &quot;'&quot;)"/>
-  </xsl:variable>
-  <xsl:if test="$currentTagID != ''">
-    <script type="text/javascript">
-
-      function addLoadEvent(func) {
-        var oldonload = window.onload;
-        if (typeof window.onload != 'function') {
-          window.onload = func;
-        } else {
-          window.onload = function() {
-            oldonload();
-            func();
-          }
-        }
-      }
-
-     addLoadEvent(goAnchor);
-
-      function goAnchor() {
-         document.location.hash = '<xsl:value-of select="$currentTagID"/>';
-         window.scrollBy(0, -150);
-      }
-    </script>
-  </xsl:if>
-
-</div>
-</xsl:template>
-
-<xsl:template match="namespace" mode="nodes">
-  <input type="hidden" name="namespace.{@prefix}" value="{@uri}"/>
-</xsl:template>
-
-<xsl:template match="node" mode="nodes">
-<tr>
-  <td valign="top" style="background-color: #BFBFA2"><xsl:apply-templates select="action"/><xsl:if test="not(action)">&#160;</xsl:if><xsl:apply-templates select="@select"/></td>
-  <xsl:choose>
-    <xsl:when test="content">
-      <td valign="top" style="background-color:#DCDBBF"><xsl:apply-templates select="@name"/></td>
-      <td valign="top"><xsl:apply-templates select="content"/></td>
-    </xsl:when>
-    <xsl:otherwise>
-      <td colspan="2" valign="top" style="background-color:#DCDBBF"><xsl:apply-templates select="@name"/></td>
-    </xsl:otherwise>
-  </xsl:choose>
-</tr>
-</xsl:template>
-
-<xsl:template match="insert-before" mode="nodes">
-    <tr>
-      <td style="background-color: #BFBFA2"><input type="submit" value="Insert before" name="insert-before" i18n:attr="value"/></td>
-      <td colspan="2" style="background-color: #DCDBBF">
-        <select name="&lt;xupdate:insert-before select=&quot;{@select}&quot;/&gt;" size="1">
-            <option value="null">Choose element ...</option>
-          <xsl:for-each select="element">
-            <option value="{@xupdate}"><xsl:value-of select="@name"/></option>
-          </xsl:for-each>
-        </select>
-      </td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="insert-after" mode="nodes">
-    <tr>
-      <td style="background-color: #BFBFA2"><input type="submit" value="Insert" name="insert-after" i18n:attr="value"/></td>
-      <td colspan="2" style="background-color: #DCDBBF">
-        <select name="&lt;xupdate:insert-after select=&quot;{@select}&quot;/&gt;" size="1">
-          <option value="null"><i18n:text>Choose element ...</i18n:text></option>
-          <xsl:for-each select="element">
-            <option value="{@xupdate}"><xsl:value-of select="@name"/></option>
-          </xsl:for-each>
-        </select>
-      </td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="node()" mode="nodes" priority="-1">
-</xsl:template>
-
-<xsl:template match="action">
-<xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="content">
-<xsl:choose>
-<xsl:when test="$edit = ../@select">
-  <xsl:apply-templates select="textarea"/>
-  <xsl:copy-of select="input"/>
-</xsl:when>
-<xsl:otherwise>
-  <p>
-    <xsl:choose>
-      <xsl:when test="(../@name='Object')">
-        <img src="{$nodeid}/{input/@value}"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="input/@value"/>
-        <xsl:copy-of select="textarea/node()"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </p>
-</xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<xsl:template match="textarea">
-<xsl:copy>
-  <xsl:copy-of select="@*"/>
-  <xsl:apply-templates mode="mixedcontent"/>
-</xsl:copy>
-</xsl:template>
-
-<xsl:template match="insert">
-<!--
-<input type="submit" name="{@name}" value="INSERT"/>
--->
-<xsl:text> </xsl:text>
-<input type="image" src="{$imagesPath}/add.png" name="{@name}" value="LENYA"/>
-</xsl:template>
-
-<xsl:template match="delete">
-<xsl:text> </xsl:text>
-<input type="image" src="{$imagesPath}/delete.png" name="{@name}" value="true"/>
-</xsl:template>
-
-<xsl:template match="@select">
-<xsl:text> </xsl:text>
-<!-- FIXME: Internet Explorer does not send the value of input type equals image. Mozilla does. -->
-
-<xsl:variable name="tagID">
-    <xsl:value-of select="substring-before(substring-after(., &quot;@tagID='&quot;), &quot;'&quot;)"/>
-</xsl:variable>
-<xsl:value-of select="@tagID"/>
-<a name="{$tagID}"/>
-<input type="image" src="{$imagesPath}/edit.png" name="edit[{.}]" value="{.}"/>
-</xsl:template>
-
-</xsl:stylesheet>  
diff --git a/trunk/src/modules/editors/usecases/forms/form.xsl b/trunk/src/modules/editors/usecases/forms/form.xsl
deleted file mode 100644
index 488a22d..0000000
--- a/trunk/src/modules/editors/usecases/forms/form.xsl
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: form.xsl 42908 2004-04-26 14:57:25Z michi $ -->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
-    <xsl:param name="docid"/>
-    <xsl:param name="form"/>
-    <xsl:param name="message"/>
-    
-    <xsl:template match="/">
-        <form id="form">
-            <docid><xsl:value-of select="$docid"/></docid>
-            <ftype><xsl:value-of select="$form"/></ftype>
-            <xsl:if test="$message">
-                <message><xsl:value-of select="$message"/></message>
-            </xsl:if>
-            <xsl:apply-templates/>
-        </form>
-    </xsl:template>
-    
-</xsl:stylesheet>
diff --git a/trunk/src/modules/editors/usecases/forms/forms.jx b/trunk/src/modules/editors/usecases/forms/forms.jx
deleted file mode 100644
index f49e9f6..0000000
--- a/trunk/src/modules/editors/usecases/forms/forms.jx
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:title><i18n:text>Edit</i18n:text></page:title>
-  <page:head>
-    <script type="text/javascript" src="/modules/editors/javascript/disablebackspace.js"/>
-  </page:head>
-  <page:body>
-    
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <form method="post" id="form-edit">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      <jx:choose>
-        <jx:when test="${! usecase.hasErrors()}">
-          
-          <p>
-            <jx:set var="title"
-              value="${usecase.getParameter('document')
-              .getMetaData('http://purl.org/dc/elements/1.1/')
-              .getFirstValue('title')}"/>
-            <i18n:text>Document</i18n:text>: <q><jx:out value="${title}"/></q>
-          </p>
-          
-          <cinclude:includexml>
-            <cinclude:src>cocoon://modules/editors/form/<jx:out value="${usecase.getParameter('form')}"/>/<jx:out value="${usecase.getParameter('editSelect')}"/></cinclude:src>
-          </cinclude:includexml>
-        </jx:when>
-        <jx:otherwise>
-          <input type="submit" name="cancel" value="Cancel"/>
-        </jx:otherwise>
-      </jx:choose>
-    </form>
-    
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/editors/usecases/forms/numberTags.xsl b/trunk/src/modules/editors/usecases/forms/numberTags.xsl
deleted file mode 100644
index 945dc93..0000000
--- a/trunk/src/modules/editors/usecases/forms/numberTags.xsl
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: numberTags.xsl 155356 2005-02-25 18:25:59Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:output method="xml" version="1.0" indent="yes"/>
-
-<xsl:template match="/">
-  <xsl:apply-templates select="*">
-    <xsl:with-param name="parentID" select="'tag'"/>
-  </xsl:apply-templates>
-</xsl:template>
-
-<xsl:template match="*|text()|@*">
-  <xsl:param name="parentID"/>
-  <xsl:variable name="thisID" select="concat($parentID,'.', count(preceding-sibling::*))"/>
-  <xsl:copy>
-    <xsl:attribute name="tagID"><xsl:value-of select="$thisID"/></xsl:attribute>
-    <xsl:copy-of select="@*"/>
-    <xsl:apply-templates select="*|text()|@*">
-      <xsl:with-param name="parentID" select="$thisID"/>
-    </xsl:apply-templates>
-  </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/editors/usecases/forms/oneform.jx b/trunk/src/modules/editors/usecases/forms/oneform.jx
deleted file mode 100644
index 7377bc3..0000000
--- a/trunk/src/modules/editors/usecases/forms/oneform.jx
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:title><i18n:text>Edit</i18n:text></page:title>
-  <page:head>
-    <script type="text/javascript" src="/modules/editors/javascript/org.apache.lenya.editors.js"/>
-    <script type="text/javascript" src="/modules/editors/javascript/oneform_lenya_glue.js"/>
-    <script type="text/javascript" src="/modules/editors/javascript/disablebackspace.js"/>
-  </page:head>
-  <page:body>
-    
-
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <form method="post" name="oneform" enctype="multipart/form-data">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      <jx:choose>
-        <jx:when test="${usecase.getParameter('executable').booleanValue()}">
-          
-          <div class="lenya-box-toggled" style="float: left; margin-right: 10px;">
-            <div class="lenya-box-title">Information</div>
-            <div class="lenya-box-body">
-              <jx:set var="doc" value="${usecase.getParameter('document')}"/>
-              <table class="lenya-table-noborder">
-                <tr>
-                  <td class="lenya-entry-caption"><i18n:text>Titel</i18n:text>:</td>
-                  <td><jx:out value="${doc.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/></td>
-                </tr>
-                <tr>
-                  <td class="lenya-entry-caption"><i18n:text>UUID</i18n:text>:</td>
-                  <td><jx:out value="${doc.getUUID()}"/></td>
-                </tr>
-                <tr>
-                  <td class="lenya-entry-caption"><i18n:text>Language</i18n:text>:</td>
-                  <td>
-                    <jx:out value="${doc.getLanguage()}"/>
-                    (<i18n:text><jx:out value="${doc.getLanguage()}"/></i18n:text>)
-                  </td>
-                </tr>
-              </table>
-            </div>
-          </div>
-          
-          <div class="lenya-box-toggled" style="float: left; margin-right: 10px;">
-            <div class="lenya-box-title">
-              <a href="http://www.w3.org/TR/REC-xml#syntax">Predefined Entities</a>
-            </div>
-            <div class="lenya-box-body">
-              <ul>
-                <li>&amp;lt; instead of &lt; (left angle bracket <strong>must</strong> be escaped)</li>
-                <li>&amp;amp; instead of &amp; (ampersand <strong>must</strong> be escaped)</li>
-                <li>&amp;gt; instead of &gt; (right angle bracket)</li>
-                <li>&amp;apos; instead of ' (single-quote)</li>
-                <li>&amp;quot; instead of " (double-quote)</li>
-              </ul>
-            </div>
-          </div>
-          
-          <div style="clear: both;">
-            <input type="submit" value="Save" name="submit" i18n:attr="value"/>
-            <input type="submit" value="Cancel" name="cancel" i18n:attr="value"/>
-            <input type="submit" value="Reformat" name="reformat" i18n:attr="value"/>
-            <input type="button" value="insertLink.submit" i18n:attr="value"
-              onclick="triggerUsecase('insertLink')"/>
-            <input type="button" value="insertAsset.insertImage" i18n:attr="value"
-              onclick="triggerUsecase('insertImage')"/>
-            <input type="button" value="insertAsset.insertAsset" i18n:attr="value"
-              onclick="triggerUsecase('insertAsset')"/>
-          </div>
-
-          <div style="clear: both;">
-            <jx:choose>
-              <jx:when test="${usecase.getParameter('content')}">
-                <textarea name="content" cols="120" rows="80">
-                  <jx:out value="${usecase.getParameter('content')}"/>
-                </textarea>
-              </jx:when>
-              <jx:otherwise>
-                <cinclude:includexml>
-                  <cinclude:src>cocoon://modules/editors/oneform</cinclude:src>
-                </cinclude:includexml>
-              </jx:otherwise>
-            </jx:choose>
-          </div>
-
-          <div>
-            <input type="submit" value="Save" name="submit" i18n:attr="value"/>
-            <input type="submit" value="Cancel" name="cancel" i18n:attr="value"/>
-          </div>
-          
-        </jx:when>
-        <jx:otherwise>
-          <input type="submit" name="cancel" value="Cancel" i18n:attr="value"/>
-        </jx:otherwise>
-      </jx:choose>
-    </form>
-    
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/editors/usecases/forms/oneform.xsl b/trunk/src/modules/editors/usecases/forms/oneform.xsl
deleted file mode 100644
index ba6fb18..0000000
--- a/trunk/src/modules/editors/usecases/forms/oneform.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: oneform.xsl 42908 2004-04-26 14:57:25Z michi $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  >
-
-  <xsl:output indent="no" />
-  <xsl:param name="docid" />
-  <xsl:param name="language" />
-
-  <xsl:include href="copy-mixed-content.xsl" />
-  
-  <xsl:template match="/">
-    <input type="hidden" name="namespaces"><xsl:attribute name="value"><xsl:apply-templates mode="namespaces" /></xsl:attribute></input>
-    <textarea name="content" cols="120" rows="80">
-      <xsl:apply-templates mode="mixedcontent" />
-    </textarea>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/trunk/src/modules/editors/usecases/forms/unnumberTags.xsl b/trunk/src/modules/editors/usecases/forms/unnumberTags.xsl
deleted file mode 100644
index acbf81d..0000000
--- a/trunk/src/modules/editors/usecases/forms/unnumberTags.xsl
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: unnumberTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:output method="xml" version="1.0" indent="yes"/>
-
-<xsl:template match="/">
-  <xsl:apply-templates select="*"/>
-</xsl:template>
-
-<!-- FIXME: there seems to be something wrong!!! (Xalan?) if something is written in front of Copy, then it works, else it doesn't ... -->
-<xsl:template match="*|text()">
-  <xsl:copy>
-    <xsl:copy-of select="@*[name()!='tagID']"/>
-    <xsl:apply-templates select="*|text()"/>
-  </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/editors/usecases/insertAsset.jx b/trunk/src/modules/editors/usecases/insertAsset.jx
deleted file mode 100644
index 1c9f58c..0000000
--- a/trunk/src/modules/editors/usecases/insertAsset.jx
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: insertAsset.jx 508032 2007-02-15 17:41:53Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:head>
-    <script type="text/javascript" src="/modules/editors/javascript/org.apache.lenya.editors.js">&#160;</script>
-    <script type="text/javascript" src="/modules/editors/javascript/insertAsset.js">&#160;</script>
-  </page:head>
-  
-  <!-- This view can handle both insertAsset and insertImage, 
-       depending on the setting of the mode parameter ("Asset"|"Image") -->
-  <jx:set var="mode" value="${usecase.getParameterAsString('mode')}"/>
-  
-  <page:title>
-    <i18n:text>insertAsset.heading<jx:out value="${mode}"/></i18n:text>
-  </page:title>
-  
-  <page:body>
-
-    <form method="POST" name="insertAsset">
-
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <div class="lenya-box">
-        <div class="lenya-box-title">
-          <i18n:text>insertAsset.available<jx:out value="${mode}"/></i18n:text>
-        </div>
-        <div class="lenya-box-body">
-
-          <table class="lenya-table-list" style="border: none">
-
-            <tr>
-              <th style="background: none;"/>
-              <th style="background: none;"><i18n:text>insertAsset.file</i18n:text></th>
-              <th style="background: none;"><i18n:text>insertAsset.preview</i18n:text></th>
-              <th style="background: none;"><i18n:text>insertAsset.title</i18n:text></th>
-              <th style="background: none;"><i18n:text>insertAsset.fileSize</i18n:text></th>
-              <th style="background: none;"><i18n:text>insertAsset.imageSize</i18n:text></th>
-              <th style="background: none;"><i18n:text>insertAsset.creationDate</i18n:text></th>
-            </tr>
-
-            <jx:set var="asset2proxyUrl" value="${usecase.getParameter('asset2proxyUrl')}"/>
-            <jx:forEach var="asset" items="${usecase.getParameter('assets')}">
-              <jx:set var="mimeType" value="${asset.getMimeType()}"/>
-              <!-- Images are displayed in both "Asset" and "Image" mode. Other resources
-                   are displayed only in "Asset" mode. -->
-              <jx:if test="${mode.equals('Asset') || mimeType.startsWith('image/')}">
-                <!-- We must differenciate between images and assets here: 
-                     images get a path-based URL to allow WYSIWYG editors to render them 
-                     (they will be converted to lenya-document: UR later). 
-                     Assets get a UUID-based lenya-document URL.
-                -->
-               <jx:choose>
-                  <jx:when test="${mode.equals('Image')}">
-                    <jx:set var="url" value="${asset2proxyUrl.get(asset)}"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <jx:set var="url" value="${('lenya-document:' + asset.getUUID() + ',lang=' + asset.getLanguage())}"/>
-                  </jx:otherwise>
-                </jx:choose>
-                <tr>
-                  <td>
-                    <!-- The "+''" construction is to avoid nulls (it forces them to be cast to the empty string).
-                         Undefined values would cause the form field to be disabled.
-                    -->
-                    <input type="radio" name="asset" value="${asset.getPath()}" 
-                      onClick="updateData(
-                          '${url}',
-                          '${asset.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title') + ''}',
-                          '${asset.getMetaData('http://apache.org/lenya/metadata/media/1.0').getFirstValue('height') + ''}',
-                          '${asset.getMetaData('http://apache.org/lenya/metadata/media/1.0').getFirstValue('width') + ''}',
-                          '${asset.getMimeType() + ''}'
-                      )"
-                    /> 
-                  </td>
-                  <td>
-                    <jx:out value="${asset.getPath()}"/>
-                  </td>
-                  <td>
-                    <jx:choose>
-                      <jx:when test="${mimeType.startsWith('image/')}">
-                        <!-- ??? --><jx:set var="doc" value="${usecase.getParameter('document')}"/>
-                        <img src="${url}" style="height: 32px; vertical-align: middle; margin: 3px 0px;"/>&#160;
-                      </jx:when>
-                      <jx:otherwise>
-                        <jx:out value="${mimeType}"/>
-                      </jx:otherwise>
-                    </jx:choose>
-                  </td>
-                  <td>
-                    <jx:out value="${asset.getMetaData('http://purl.org/dc/elements/1.1/').getFirstValue('title')}"/>
-                  </td>
-                  <td align="right">
-                    <jx:out value="${asset.getContentLength() / 1000}"/> kB
-                  </td>
-                  <td align="right">
-                    <jx:if test="${mimeType.startsWith('image/')}">
-                      <jx:out value="${asset.getMetaData('http://apache.org/lenya/metadata/media/1.0').getFirstValue('width')}"/> x <jx:out value="${asset.getMetaData('http://apache.org/lenya/metadata/media/1.0').getFirstValue('height')}"/></jx:if>
-                  </td>
-                  <td align="right">
-                    <jx:out value="${java.text.DateFormat.getDateInstance().format(asset.getLastModified())}"/>
-                  </td>
-                </tr>
-              </jx:if>
-            </jx:forEach>
-
-          </table>
-
-          <br/>
-          <input type="hidden" name="url" value=""/>
-          <input type="hidden" name="type" value=""/>
-          <input type="hidden" name="ratio" value=""/>
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="text"><i18n:text>insertAsset.caption<jx:out value="${mode}"/></i18n:text></label>:
-              </td>
-              <td>
-                <input class="lenya-form-element" type="text" name="text" title=""/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="title"><i18n:text>insertAsset.title</i18n:text></label>:
-              </td>
-              <td>
-                <input class="lenya-form-element" type="text" name="title" title=""/>
-              </td>
-            </tr>
-
-            <jx:if test="${mode.equals('Image')}">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="width"><i18n:text>insertAsset.width</i18n:text></label>:
-                </td>
-                <td>
-                  <input class="lenya-form-element" type="text" name="width" title="" onchange="scaleHeight(this.value)"/>
-                </td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="height"><i18n:text>insertAsset.height</i18n:text></label>:
-                </td>
-                <td>
-                  <input class="lenya-form-element" type="text" name="height" title="" onchange="scaleWidth(this.value)"/>
-                </td>
-              </tr>
-            </jx:if>
-
-            <tr>
-              <td colspan="2">
-                <input 
-                  i18n:attr="value" 
-                  type="submit" 
-                  value="insertAsset.insert${mode}"
-                  onclick="org.apache.lenya.editors.handleFormSubmit('insertAsset');" 
-                />
-                &#160;
-                <input 
-                  i18n:attr="value" 
-                  type="submit" 
-                  name="cancel" 
-                  value="Cancel"
-                  onClick="window.close();" 
-                />
-                &#160;
-                <input 
-                  i18n:attr="value"
-                   type="button"
-                   value="insertAsset.createResource"
-                   onclick="location.href='?doctype=resource&amp;lenya.usecase=editors.createResource&amp;lenya.exitUsecase=${usecase.getName()}'"
-                />
-              </td>
-            </tr>
-          </table>
-        </div>
-      </div>
-
-    </form>
-
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/editors/xslt/insertLink.xsl b/trunk/src/modules/editors/xslt/insertLink.xsl
deleted file mode 100644
index 2e87249..0000000
--- a/trunk/src/modules/editors/xslt/insertLink.xsl
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  $Id: link.xsl 555656 2007-07-12 15:17:47Z nettings $
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  xmlns:usecase="http://apache.org/cocoon/lenya/usecase/1.0"     
-  >
-  
-  <xsl:param name="publicationId"/>
-  <xsl:param name="area"/>
-  <xsl:param name="documentPath"/>
-  <xsl:param name="documentLanguage"/>
-  <xsl:param name="documentExtension"/>
-  <xsl:param name="defaultLanguage"/>
-  <xsl:param name="languages"/>
-  <xsl:param name="areaBasePath"/>
-  
-  <xsl:variable name="extension">
-    <xsl:if test="$documentExtension != ''">
-      <xsl:text>.</xsl:text>
-    </xsl:if>
-    <xsl:value-of select="$documentExtension"/>
-  </xsl:variable>
-  
-  <xsl:template match="/">
-    <page:page>
-      <page:title><i18n:text>insertLink.heading</i18n:text></page:title>
-      <page:body style="width:auto;">
-
-        <script type="text/javascript" src="/modules/sitetree/javascript/tree.js">&#160;</script>
-        <script type="text/javascript" src="/modules/sitetree/javascript/lenyatree.js">&#160;</script>
-        <script type="text/javascript" src="/modules/sitetree/javascript/navtree.js">&#160;</script>
-        <script type="text/javascript" src="/modules/editors/javascript/org.apache.lenya.editors.js">&#160;</script>
-        <script type="text/javascript" src="/modules/editors/javascript/insertLink.js">&#160;</script>
-        <script type="text/javascript">
-          AREA = "<xsl:value-of select="$area"/>";
-          DOCUMENT_ID = "<xsl:value-of select="$documentPath"/>";
-          PUBLICATION_ID = "<xsl:value-of select="$publicationId"/>";
-          CHOSEN_LANGUAGE = "<xsl:value-of select="$documentLanguage"/>";
-          DEFAULT_LANGUAGE = "<xsl:value-of select="$defaultLanguage"/>";
-          IMAGE_PATH = "/lenya/images/tree/";
-          CUT_DOCUMENT_ID = '';
-          ALL_AREAS = "authoring";
-          PIPELINE_PATH = '/sitetree-fragment.xml';
-          AREA_BASE_PATH = "<xsl:value-of select="$areaBasePath"/>";
-        </script>
-
-        <div id="lenya-info-treecanvas" style="width: 250px;">
-          <div class="lenya-tabs">
-            <xsl:call-template name="languageTabs">
-              <xsl:with-param name="languages" select="$languages"/>
-            </xsl:call-template>
-          </div>
-          <div id="lenya-info-tree">
-            <div id="tree">&#160;
-            </div>
-          </div>
-        </div>
-        <div class="lenya-box" style="margin-left: 260px;">
-          <div class="lenya-box-title"><i18n:text>insertLink.heading</i18n:text></div>
-          <div class="lenya-box-body">
-
-            <form name="insertLink">
-
-              <table class="lenya-table-noborder">
-                <tr>
-                  <td colspan="2" class="lenya-form-caption">
-                    <i18n:text>insertLink.clickTreeOrType</i18n:text>
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="2">&#160;</td>
-                </tr>
-                <tr>
-                  <td class="lenya-form-caption">
-                    <i18n:text>insertLink.URL</i18n:text>:
-                  </td>
-                  <td>
-                    <input class="lenya-form-element" type="text" name="url"/>
-                  </td>
-                </tr>
-                <tr>
-                  <td class="lenya-form-caption">
-                    <i18n:text>insertLink.title</i18n:text>:
-                  </td>
-                  <td>
-                    <input class="lenya-form-element" type="text" name="title"/>
-                  </td>
-                </tr>
-                <tr>
-                  <td class="lenya-form-caption">
-                    <i18n:text>insertLink.text</i18n:text>:</td>
-                  <td>
-                    <input class="lenya-form-element" type="text" name="text"/>
-                  </td>
-                </tr>
-                <tr>
-                  <td colspan="2">&#160;</td>
-                </tr>
-                <tr>
-                  <td colspan="2">
-                    <input 
-                      i18n:attr="value" 
-                      type="submit" 
-                      value="insertLink.submit" 
-                      onclick="org.apache.lenya.editors.handleFormSubmit('insertLink')"
-                    />
-                    &#160;
-                    <input 
-                      i18n:attr="value"
-                      type="submit"
-                      value="Cancel" 
-                      name="cancel"
-                      onclick="window.close()"
-                    />
-                    &#160;
-                    <input 
-                      i18n:attr="value" 
-                      type="button" 
-                      value="insertAsset.createResource" 
-                      onclick="location.href='?lenya.usecase=editors.createResource&amp;doctype=resource&amp;lenya.exitUsecase=editors.insertLink'"
-                    />
-                  </td>
-                </tr>
-              </table>
-            </form>
-          </div>
-        </div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-  <xsl:template name="languageTabs">
-    <xsl:param name="languages"/>
-    <xsl:choose>
-      <xsl:when test="not(contains($languages,','))">
-        <xsl:call-template name="languageTab">
-          <xsl:with-param name="language">
-            <xsl:value-of select="$languages"/>
-          </xsl:with-param>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:variable name="head" select="substring-before($languages,',')" />
-        <xsl:variable name="tail" select="substring-after($languages,',')" />
-        <xsl:call-template name="languageTab">
-          <xsl:with-param name="language" select="$head"/>
-        </xsl:call-template>
-        <xsl:call-template name="languageTabs">
-          <xsl:with-param name="languages" select="$tail"/>
-        </xsl:call-template>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template name="languageTab">
-    <xsl:param name="language"/>
-    <a id="{$language}">
-      <xsl:attribute name="href">
-        <xsl:text>/</xsl:text>
-        <xsl:value-of select="$publicationId"/>
-        <xsl:text>/</xsl:text>
-        <xsl:value-of select="$area"/>
-        <xsl:value-of select="$documentPath"/>
-        <xsl:text>_</xsl:text>
-        <xsl:value-of select="$language"/>
-        <xsl:value-of select="$extension"/>
-        <xsl:text>?lenya.usecase=editors.insertLink</xsl:text>
-      </xsl:attribute>
-      <xsl:attribute name="class">
-        <xsl:text>lenya-tablink</xsl:text>
-        <xsl:if test="$documentLanguage = $language">
-          <xsl:text>-active</xsl:text>
-        </xsl:if>
-      </xsl:attribute>
-      <xsl:value-of select="$language"/>
-    </a>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/export/config/cocoon-xconf/usecase-import.xconf b/trunk/src/modules/export/config/cocoon-xconf/usecase-import.xconf
deleted file mode 100644
index 6d6fc31..0000000
--- a/trunk/src/modules/export/config/cocoon-xconf/usecase-import.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'export.import']">

-    <component-instance name="export.import" logger="lenya.export"

-      class="org.apache.lenya.cms.export.Import">

-      <view uri="modules/export/usecases/import.jx" menu="false"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/export/config/cocoon-xconf/usecase-importExampleContent.xconf b/trunk/src/modules/export/config/cocoon-xconf/usecase-importExampleContent.xconf
deleted file mode 100644
index 19b8c18..0000000
--- a/trunk/src/modules/export/config/cocoon-xconf/usecase-importExampleContent.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'export.importExampleContent']">

-    <component-instance name="export.importExampleContent" logger="lenya.export"

-      class="org.apache.lenya.cms.export.Import">

-      <view uri="modules/export/usecases/importExampleContent.jx" menu="false"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/export/config/module.xml b/trunk/src/modules/export/config/module.xml
deleted file mode 100644
index 82e2056..0000000
--- a/trunk/src/modules/export/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.export</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.sitetree"/>
-  <depends module="org.apache.lenya.modules.linking"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Export and import</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Export and import documents</description>
-</module>
diff --git a/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java b/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java
deleted file mode 100644
index b0e646f..0000000
--- a/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Import.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.export;
-
-import java.io.File;
-
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Import content.
- */
-public class Import extends AbstractUsecase {
-
-    protected void initParameters() {
-        super.initParameters();
-
-        Publication publication;
-        try {
-            publication = PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
-                    getSourceURL());
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-        String path = getExampleContentPath(publication);
-        if (!new File(path).exists()) {
-            path = getExampleContentPath(getDefaultPub());
-        }
-        setParameter("path", path);
-    }
-
-    protected String getExampleContentPath(Publication publication) {
-        return publication.getDirectory().getAbsolutePath().replace(File.separatorChar, '/')
-                + "/example-content";
-    }
-
-    protected Publication getDefaultPub() {
-        Publication defaultPub;
-        try {
-            defaultPub = getDocumentFactory().getPublication("default");
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-        return defaultPub;
-    }
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        Area area = getArea();
-        if (area.getDocuments().length > 0) {
-            addErrorMessage("You can't import anything because this publication already contains content.");
-        }
-    }
-
-    protected Area getArea() {
-        String url = getSourceURL();
-        URLInformation info = new URLInformation(url);
-        String pubId = info.getPublicationId();
-        String areaName = info.getArea();
-        Area area;
-        try {
-            area = getDocumentFactory().getPublication(pubId).getArea(areaName);
-        } catch (PublicationException e) {
-            throw new RuntimeException(e);
-        }
-        return area;
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        String path = getParameterAsString("path");
-        String baseUri = "file://" + path;
-        String sitetreeUri = baseUri + "/sitetree.xml";
-        if (!SourceUtil.exists(sitetreeUri, this.manager)) {
-            addErrorMessage("The sitetree file does not exist in this directory.");
-        }
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        String path = getParameterAsString("path");
-        Importer importer = new Importer(this.manager, getLogger());
-        importer.importContent(getDefaultPub(), getArea(), path);
-    }
-
-}
diff --git a/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java b/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java
deleted file mode 100644
index 24fbcfe..0000000
--- a/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.export;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.linking.LinkConverter;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.DefaultSiteTree;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * Import content.
- */
-public class Importer extends AbstractLogEnabled {
-
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public Importer(ServiceManager manager, Logger logger) {
-        this.manager = manager;
-        enableLogging(logger);
-    }
-
-    /**
-     * Imports content into an area.
-     * @param area The area.
-     * @param path The path containing the content.
-     * @throws Exception if an error occurs.
-     */
-    public void importContent(Area area, String path) throws Exception {
-        importContent(area.getPublication(), area, path);
-    }
-
-    /**
-     * Imports content from a different publication into an area.
-     * @param srcPub The source publication.
-     * @param area The area.
-     * @param path The path containing the content.
-     * @throws Exception if an error occurs.
-     */
-    public void importContent(Publication srcPub, Area area, String path) throws Exception {
-        getLogger().info("Importing documents into area [" + area + "]");
-
-        String baseUri = "file://" + path;
-        String sitetreeUri = baseUri + "/sitetree.xml";
-
-        org.w3c.dom.Document xml = SourceUtil.readDOM(sitetreeUri, this.manager);
-        NamespaceHelper helper = new NamespaceHelper(DefaultSiteTree.NAMESPACE_URI, "", xml);
-
-        Element siteElement = xml.getDocumentElement();
-        importChildren(area, helper, siteElement, baseUri, "");
-
-        convertLinks(srcPub, area);
-    }
-
-    protected void importElement(Area area, NamespaceHelper helper, Element element,
-            String baseUri, String parentPath) {
-        String path = parentPath + "/" + element.getAttribute("id");
-
-        boolean visible = true;
-        String visibleString = element.getAttribute("visibleinnav");
-        if (visibleString != null && !visibleString.equals("")) {
-            visible = Boolean.valueOf(visibleString).booleanValue();
-        }
-
-        Element[] labelElements = helper.getChildren(element, "label");
-        for (int i = 0; i < labelElements.length; i++) {
-            importDocument(area, labelElements[i], baseUri, path, visible);
-        }
-        importChildren(area, helper, element, baseUri, path);
-    }
-
-    protected void importDocument(Area area, Element element, String baseUri, String path,
-            boolean visibleInNav) {
-        String language = element.getAttribute("xml:lang");
-        String navigationTitle = DocumentHelper.getSimpleElementText(element);
-
-        String contentUri = baseUri + path + "/index_" + language;
-        String metaUri = contentUri + ".meta";
-
-        DocumentManager docManager = null;
-        ServiceSelector selector = null;
-        ResourceType resourceType = null;
-        SourceResolver resolver = null;
-        try {
-
-            org.w3c.dom.Document xml = SourceUtil.readDOM(metaUri, this.manager);
-            NamespaceHelper helper = new NamespaceHelper(
-                    "http://apache.org/cocoon/lenya/page-envelope/1.0", "", xml);
-            Element metaElement = helper.getFirstChild(xml.getDocumentElement(), "meta");
-            Element internalElement = helper.getFirstChild(metaElement, "internal");
-            Element resourceTypeElement = helper.getFirstChild(internalElement, "resourceType");
-            String resourceTypeName = DocumentHelper.getSimpleElementText(resourceTypeElement);
-
-            Element mimeTypeElement = helper.getFirstChild(internalElement, "mimeType");
-            String mimeType = DocumentHelper.getSimpleElementText(mimeTypeElement);
-
-            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = (ResourceType) selector.select(resourceTypeName);
-
-            docManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            Document newDoc;
-            SiteStructure site = area.getSite();
-            if (!site.contains(path) || site.getNode(path).getLanguages().length == 0) {
-                newDoc = docManager.add(area.getPublication().getFactory(), resourceType,
-                        contentUri, area.getPublication(), area.getName(), path, language, "xml",
-                        navigationTitle, visibleInNav);
-                newDoc.setMimeType(mimeType);
-            } else {
-                SiteNode node = site.getNode(path);
-                Document doc = node.getLink(node.getLanguages()[0]).getDocument();
-                newDoc = docManager.addVersion(doc, area.getName(), language, true);
-                resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-                SourceUtil.copy(resolver, contentUri, newDoc.getOutputStream());
-                newDoc.getLink().setLabel(navigationTitle);
-            }
-
-            String dcNamespace = "http://purl.org/dc/elements/1.1/";
-
-            Element dcElement = helper.getFirstChild(metaElement, "dc");
-            NamespaceHelper dcHelper = new NamespaceHelper(dcNamespace, "dc", xml);
-            Element[] dcElements = dcHelper.getChildren(dcElement);
-
-            MetaData meta = newDoc.getMetaData(dcNamespace);
-            for (int i = 0; i < dcElements.length; i++) {
-                String key = dcElements[i].getLocalName();
-                String value = DocumentHelper.getSimpleElementText(dcElements[i]);
-                meta.setValue(key, value);
-            }
-            
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (docManager != null) {
-                this.manager.release(docManager);
-            }
-            if (selector != null) {
-                this.manager.release(selector);
-            }
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    protected void importChildren(Area area, NamespaceHelper helper, Element element,
-            String baseUri, String path) {
-        Element[] elements = helper.getChildren(element, "node");
-        for (int i = 0; i < elements.length; i++) {
-            importElement(area, helper, elements[i], baseUri, path);
-        }
-    }
-
-    protected void convertLinks(Publication srcPub, Area area) {
-        Document[] docs = area.getDocuments();
-        for (int i = 0; i < docs.length; i++) {
-            LinkConverter converter = new LinkConverter(this.manager, getLogger());
-            converter.convertUrlsToUuids(srcPub, docs[i], false);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java b/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java
deleted file mode 100644
index 86f2586..0000000
--- a/trunk/src/modules/export/java/test/org/apache/lenya/cms/export/ImportTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.export;
-
-import java.io.File;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.linking.Link;
-import org.apache.lenya.cms.linking.LinkManager;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Import example content into test publication.
- */
-public class ImportTest extends AbstractAccessControlTest {
-
-    /**
-     * @throws Exception if an error occurs.
-     */
-    public void testImport() throws Exception {
-        
-        Session session = login("lenya");
-        
-        Publication pub = getPublication(session, "test");
-        Area area = pub.getArea("authoring");
-        
-        if (area.getDocuments().length == 0) {
-            Publication defaultPub = getPublication(session, "default");
-            Area defaultArea = defaultPub.getArea("authoring");
-            String pubPath = defaultArea.getPublication().getDirectory().getAbsolutePath();
-            String path = pubPath.replace(File.separatorChar, '/') + "/example-content";
-            Importer importer = new Importer(getManager(), getLogger());
-            importer.importContent(defaultPub, area, path);
-            session.commit();
-        }
-        
-        assertTrue(area.getSite().contains("/tutorial"));
-        checkLinks(area);
-        
-        Session aliceSession = login("alice");
-        Publication alicePub = getPublication(aliceSession, "test");
-        assertTrue(alicePub.getArea("authoring").getSite().contains("/tutorial"));
-        
-    }
-
-    protected void checkLinks(Area area) throws PublicationException, ServiceException {
-        SiteStructure site = area.getSite();
-        Document source = site.getNode("/index").getLink("en").getDocument();
-        
-        LinkManager linkManager = null;
-        try {
-            linkManager = (LinkManager) getManager().lookup(LinkManager.ROLE);
-            Link[] links = linkManager.getLinksFrom(source);
-            assertTrue(links.length > 0);
-        }
-        finally {
-            if (linkManager != null) {
-                getManager().release(linkManager);
-            }
-        }
-        
-    }
-    
-}
diff --git a/trunk/src/modules/export/resources/i18n/cmsui.xml b/trunk/src/modules/export/resources/i18n/cmsui.xml
deleted file mode 100644
index 1ec8265..0000000
--- a/trunk/src/modules/export/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="getting-started">Getting Started</message>

-  <message key="thanks">Thank you for considering Apache Lenya!</message>

-  <message key="import-example-content">Import example pages</message>

-  <message key="create-own-page">Start with own page</message>

-  <message key="may-take-a-while">This may take a couple of seconds.</message>

-  

-</catalogue>

diff --git a/trunk/src/modules/export/resources/i18n/cmsui_de.xml b/trunk/src/modules/export/resources/i18n/cmsui_de.xml
deleted file mode 100644
index bec6feb..0000000
--- a/trunk/src/modules/export/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="getting-started">Erste Schritte</message>

-  <message key="thanks">Vielen Dank, dass Sie sich Apache Lenya näher anschauen!</message>

-  <message key="import-example-content">Beispiel-Inhalt importieren</message>

-  <message key="create-own-page">Eigene Seite anlegen</message>

-  <message key="may-take-a-while">Dies kann einige Sekunden dauern.</message>

-  

-</catalogue>

diff --git a/trunk/src/modules/export/sitemap.xmap b/trunk/src/modules/export/sitemap.xmap
deleted file mode 100644
index 052e474..0000000
--- a/trunk/src/modules/export/sitemap.xmap
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  <map:pipelines>
-    
-    <map:pipeline>
-      <map:match pattern="directory/**:*">
-        <map:generate type="directory" src="/{1}"/>
-        <map:transform src="xslt/dir2xhtml.xsl">
-          <map:parameter name="path" value="{1}"/>
-          <map:parameter name="continuationId" value="{2}"/>
-          <map:parameter name="uri" value="{request:requestUri}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/export/usecases/import.jx b/trunk/src/modules/export/usecases/import.jx
deleted file mode 100644
index 9743905..0000000
--- a/trunk/src/modules/export/usecases/import.jx
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: forms.jx 416646 2006-06-23 09:02:03Z andreas $ -->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:ci="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:title><i18n:text>Import</i18n:text></page:title>
-  <page:body>
-    
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <form method="post">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      
-      <jx:choose>
-        <jx:when test="${! usecase.hasErrors()}">
-          <p><i18n:text>Select import directory</i18n:text>:</p>
-          <p style="margin-bottom: 0">
-            <jx:set var="path" value="${usecase.getParameter('path')}"/>
-            <jx:set var="lastIndex" value="${path.lastIndexOf('/')}"/>
-            <jx:if test="${lastIndex &gt; -1}">
-              <a href="?lenya.usecase=${usecase.getName()}&amp;lenya.continuation=${continuation.id}&amp;path=${path.substring(0, lastIndex)}">..</a>
-            </jx:if>
-          </p>
-          <ci:include src="cocoon://modules/export/directory/${usecase.getParameter('path')}:${continuation.id}"/>
-          <p>
-            <input type="submit" name="submit" value="Import" i18n:attr="value"/>
-            <input type="submit" value="Cancel" i18n:attr="value"/>
-          </p>
-        </jx:when>
-        <jx:otherwise>
-          <p>
-            <input type="submit" value="Cancel" i18n:attr="value"/>
-          </p>
-        </jx:otherwise>
-      </jx:choose>
-      
-    </form>
-    
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules/export/usecases/importExampleContent.jx b/trunk/src/modules/export/usecases/importExampleContent.jx
deleted file mode 100644
index 424c840..0000000
--- a/trunk/src/modules/export/usecases/importExampleContent.jx
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: forms.jx 416646 2006-06-23 09:02:03Z andreas $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:ci="http://apache.org/cocoon/include/1.0"
-  >
-
-  <page:title><i18n:text>getting-started</i18n:text></page:title>
-  <page:body>
-
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-
-    <jx:choose>
-      <jx:when test="${! usecase.hasErrors()}">
-        <p><i18n:text>thanks</i18n:text></p>
-        <form name="import" method="post">
-          <p>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="submit" name="submit" value="import-example-content" i18n:attr="value"/>
-            <i18n:text>may-take-a-while</i18n:text>
-          </p>
-        </form>
-        <form name="create" method="get">
-          <p>
-            <input type="hidden" name="lenya.usecase" value="sitemanagement.create"/>
-            <input type="hidden" name="path" value="/index"/>
-            <input type="submit" name="submit" value="create-own-page" i18n:attr="value"/>
-          </p>
-        </form>
-      </jx:when>
-      <jx:otherwise>
-        <p>
-          <form method="post">
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="submit" value="Cancel" i18n:attr="value"/>
-          </form>
-        </p>
-      </jx:otherwise>
-    </jx:choose>
-
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/export/xslt/dir2xhtml.xsl b/trunk/src/modules/export/xslt/dir2xhtml.xsl
deleted file mode 100644
index 823910f..0000000
--- a/trunk/src/modules/export/xslt/dir2xhtml.xsl
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xinclude.xsl 123414 2004-12-27 14:52:24Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:dir="http://apache.org/cocoon/directory/2.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-  <xsl:param name="path"/>
-  <xsl:param name="uri"/>
-  <xsl:param name="continuationId"/>
-  
-  
-  <xsl:template match="/dir:directory">
-    <p style="margin-bottom: 0">
-      <xsl:value-of select="$path"/>
-    </p>
-    <xsl:call-template name="children"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="dir:directory">
-    <li>
-      <a href="{$uri}?lenya.usecase=export.import&amp;lenya.continuation={$continuationId}&amp;path={$path}/{@name}"><xsl:value-of select="@name"/></a>
-    </li>
-    <xsl:if test="*">
-      <xsl:call-template name="children"/>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template name="children">
-    <ul style="margin-top: 0; margin-bottom: 0; list-style-type: none;">
-      <xsl:apply-templates select="*">
-        <xsl:sort/>
-      </xsl:apply-templates>
-    </ul>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/fckeditor/config/cocoon-xconf/usecases-edit-fckeditor.xconf b/trunk/src/modules/fckeditor/config/cocoon-xconf/usecases-edit-fckeditor.xconf
deleted file mode 100644
index 4bd233f..0000000
--- a/trunk/src/modules/fckeditor/config/cocoon-xconf/usecases-edit-fckeditor.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'fckeditor.edit']">
-
-  <component-instance name="fckeditor.edit" logger="lenya.publication"
-                      class="org.apache.lenya.cms.editors.fckeditor.Fckeditor">
-    <transaction policy="pessimistic"/>
-    <parameter name="tidyConfig" value="fallback://lenya/modules/fckeditor/config/jtidy.properties"/> 
-    <view uri="/modules/fckeditor/fckeditor.open" menu="false"/>
-    <event id="edit" />
-    <parameter name="checkoutRestrictedToSession" value="false"/>
-  </component-instance>
-    
-</xconf>
diff --git a/trunk/src/modules/fckeditor/config/jtidy.properties b/trunk/src/modules/fckeditor/config/jtidy.properties
deleted file mode 100644
index b2eb911..0000000
--- a/trunk/src/modules/fckeditor/config/jtidy.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-add-xml-decl=yes
-add-xml-space=yes
-alt-text=""
-assume-xml-procins=yes
-bare=yes
-clean=yes
-drop-empty-paras=yes
-drop-font-tags=yes
-drop-proprietary-attributes=yes
-enclose-text=yes
-indent-cdata=yes
-logical-emphasis=yes
-numeric-entities=yes
-output-xhtml=yes
-quote-nbsp=no
-word-2000=yes
-break-before-br=yes
-indent=auto
-vertical-space=yes
-markup=no
-tidy-mark=no
diff --git a/trunk/src/modules/fckeditor/config/menu.xsp b/trunk/src/modules/fckeditor/config/menu.xsp
deleted file mode 100644
index fbb7048..0000000
--- a/trunk/src/modules/fckeditor/config/menu.xsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-            if ("xhtml".equals(doctype) || "homepage".equals(doctype)) {
-                <block info="false">
-                  <item wf:event="edit" uc:usecase="fckeditor.edit" href="?"><i18n:text>With FCKEditor</i18n:text></item>
-                </block>
-            }
-          </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
\ No newline at end of file
diff --git a/trunk/src/modules/fckeditor/config/module.xml b/trunk/src/modules/fckeditor/config/module.xml
deleted file mode 100644
index 27aa541..0000000
--- a/trunk/src/modules/fckeditor/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.fckeditor</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.2-dev</version>
-  <name>FCK Editor</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>FCK Editor, now uses generic usecases to insert links, images and
-  assets</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java b/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java
deleted file mode 100644
index 571bc0c..0000000
--- a/trunk/src/modules/fckeditor/java/src/org/apache/lenya/cms/editors/fckeditor/Fckeditor.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.editors.fckeditor;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.Arrays;
-import java.util.Properties;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.OutputKeys;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.xml.XMLUtils;
-import org.apache.excalibur.source.ModifiableSource;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.linking.LinkConverter;
-import org.apache.lenya.cms.linking.LinkRewriter;
-import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.Schema;
-import org.apache.lenya.xml.ValidationUtil;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-import org.w3c.tidy.Tidy;
-
-/**
- * Fckeditor Usecase
- * 
- */
-public class Fckeditor extends DocumentUsecase {
-
-    public static final String TIDY_CONFIG = "tidyConfig";
-    public static final String XSLT_CLEAN_FORMAT = "xslt-clean";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        org.apache.lenya.cms.repository.Node[] objects = { getSourceDocument().getRepositoryNode() };
-        return objects;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Request request = ContextHelper.getRequest(this.context);
-        String requesturi = request.getRequestURI();
-        setParameter("requesturi", requesturi);
-        URLInformation info = new URLInformation(getSourceURL());
-        String pubId = info.getPublicationId();
-        LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, getSession(),
-                    getSourceURL(), request.isSecure(), false, false);
-        
-        setParameter("proxyUrl",rewriter.rewrite("/" + pubId));
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
-                getLogger());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        // Get namespaces
-        String namespaces = removeRedundantNamespaces(getParameterAsString("namespaces"));
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(namespaces);
-        }
-
-        // Aggregate content
-        Request request = ContextHelper.getRequest(this.context);
-        String encoding = request.getCharacterEncoding();
-        String content = "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>\n"
-                + addNamespaces(namespaces, getParameterAsString("content"));
-        saveDocument(encoding, content);
-    }
-
-    /**
-     * Save the content to the document source. After saving, the XML is
-     * validated. If validation errors occur, the usecase transaction is rolled
-     * back, so the changes are not persistent. If the validation succeeded, the
-     * workflow event is invoked.
-     * @param encoding The encoding to use.
-     * @param content The content to save.
-     * @throws Exception if an error occurs.
-     */
-    protected void saveDocument(String encoding, String content) throws Exception {
-        SourceResolver resolver = null;
-        Source indexSource = null;
-        Source tidySource = null;
-        ModifiableSource xsltSource = null;
-        Properties properties = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            saveXMLFile(encoding, content, getSourceDocument().getOutputStream());
-
-            Document xmlDoc = null;
-
-            // Setup an instance of Tidy.
-            Tidy tidy = new Tidy();
-
-            String tidyProps = this.getParameterAsString(TIDY_CONFIG, null);
-            if (tidyProps != null) {
-                tidySource = resolver.resolveURI(tidyProps);
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Loading configuration from " + tidySource.getURI());
-                }
-                properties = new Properties();
-                properties.load(tidySource.getInputStream());
-
-                if (properties == null) {
-                    tidy.setXHTML(true);
-                } else {
-                    tidy.setConfigurationFromProps(properties);
-                }
-
-                // Set Jtidy warnings on-off
-                tidy.setShowWarnings(getLogger().isWarnEnabled());
-                // Set Jtidy final result summary on-off
-                tidy.setQuiet(!getLogger().isInfoEnabled());
-                // Set Jtidy infos to a String (will be logged) instead of
-                // System.out
-                StringWriter stringWriter = new StringWriter();
-                PrintWriter errorWriter = new PrintWriter(stringWriter);
-                tidy.setErrout(errorWriter);
-
-                xmlDoc = tidy.parseDOM(getSourceDocument().getInputStream(), null);
-
-                // FIXME: Jtidy doesn't warn or strip duplicate attributes in
-                // same
-                // tag; stripping.
-                XMLUtils.stripDuplicateAttributes(xmlDoc, null);
-
-                StringWriter output = new StringWriter();
-                StreamResult strResult = new StreamResult(output);
-                TransformerFactory tfac = TransformerFactory.newInstance();
-                try {
-                    Transformer t = tfac.newTransformer();
-                    t.setOutputProperty(OutputKeys.ENCODING, encoding);
-                    t.setOutputProperty(OutputKeys.INDENT, "yes");
-                    t.setOutputProperty(OutputKeys.METHOD, "xml");
-                    t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
-                    t.transform(new DOMSource(xmlDoc.getDocumentElement()), strResult);
-
-                    content = strResult.getWriter().toString();
-                } catch (Exception e) {
-                    addErrorMessage(e.getMessage());
-                }
-
-                saveXMLFile(encoding, content, getSourceDocument().getOutputStream());
-            } else {
-                try {
-                    xmlDoc = DocumentHelper.readDocument(getSourceDocument().getInputStream());
-                } catch (SAXException e) {
-                    addErrorMessage("error-document-form", new String[] { e.getMessage() });
-                }
-            }
-
-
-
-            // Try to clean the xml using xslt
-            ResourceType resType = getSourceDocument().getResourceType();
-            String[] formats = resType.getFormats();
-            if (Arrays.asList(formats).contains(XSLT_CLEAN_FORMAT)) {
-                StringWriter output = new StringWriter();
-                StreamResult strResult = new StreamResult(output);
-                TransformerFactory tfac = TransformerFactory.newInstance();
-                try {
-                    xsltSource = (ModifiableSource) resolver.resolveURI(resType
-                            .getFormatURI(XSLT_CLEAN_FORMAT));
-                    Transformer t = tfac.newTransformer(new StreamSource(xsltSource
-                            .getInputStream()));
-                    t.setOutputProperty(OutputKeys.ENCODING, encoding);
-                    t.setOutputProperty(OutputKeys.INDENT, "yes");
-                    t.setOutputProperty(OutputKeys.METHOD, "xml");
-                    t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
-                    xmlDoc = DocumentHelper.readDocument(getSourceDocument().getInputStream());
-                    t.transform(new DOMSource(xmlDoc.getDocumentElement()), strResult);
-
-                    content = strResult.getWriter().toString();
-                } catch (Exception e) {
-                    addErrorMessage(e.getMessage());
-                }
-
-                saveXMLFile(encoding, content, getSourceDocument().getOutputStream());
-            }
-            // Convert URLs back to UUIDs. convert() does a save
-            LinkConverter converter = new LinkConverter(this.manager, getLogger());
-            converter.convertUrlsToUuids(getSourceDocument(),false);
-
-            xmlDoc = DocumentHelper.readDocument(getSourceDocument().getInputStream());
-
-            if (xmlDoc != null) {
-                ResourceType resourceType = getSourceDocument().getResourceType();
-                Schema schema = resourceType.getSchema();
-
-                ValidationUtil
-                        .validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
-
-                if (!hasErrors()) {
-                    WorkflowUtil.invoke(this.manager, getSession(), getLogger(),
-                            getSourceDocument(), getEvent());
-                }
-            }
-
-        } finally {
-            if (resolver != null) {
-                if (indexSource != null) {
-                    resolver.release(indexSource);
-                }
-                if (tidySource != null) {
-                    resolver.release(tidySource);
-                }
-                if (xsltSource != null) {
-                    resolver.release(xsltSource);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Save the XML file
-     * @param encoding The encoding
-     * @param content The content
-     * @param out The stream to write to
-     * @throws FileNotFoundException if the file was not found
-     * @throws UnsupportedEncodingException if the encoding is not supported
-     * @throws IOException if an IO error occurs
-     */
-    private void saveXMLFile(String encoding, String content, OutputStream out)
-            throws FileNotFoundException, UnsupportedEncodingException, IOException {
-        Writer writer = null;
-
-        try {
-            writer = new OutputStreamWriter(out, encoding);
-            writer.write(content, 0, content.length());
-        } catch (FileNotFoundException e) {
-            getLogger().error("File not found " + e.toString());
-        } catch (UnsupportedEncodingException e) {
-            getLogger().error("Encoding not supported " + e.toString());
-        } catch (IOException e) {
-            getLogger().error("IO error " + e.toString());
-        } finally {
-            // close all streams
-            if (writer != null)
-                writer.close();
-        }
-    }
-
-    /**
-     * Remove redundant namespaces
-     * @param namespaces The namespaces to remove
-     * @return The namespace string without the removed namespaces
-     */
-    private String removeRedundantNamespaces(String namespaces) {
-        String[] namespace = namespaces.split(" ");
-
-        String ns = "";
-        for (int i = 0; i < namespace.length; i++) {
-            if (ns.indexOf(namespace[i]) < 0) {
-                ns = ns + " " + namespace[i];
-            } else {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Redundant namespace: " + namespace[i]);
-                }
-            }
-        }
-        return ns;
-    }
-
-    /**
-     * Add namespaces
-     * @param namespaces The namespaces to add
-     * @param content The content to add them to
-     * @return The content with the added namespaces
-     */
-    private String addNamespaces(String namespaces, String content) {
-        int i = content.indexOf(">");
-        return content.substring(0, i) + " " + namespaces + content.substring(i);
-    }
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-}
diff --git a/trunk/src/modules/fckeditor/menus.xmap b/trunk/src/modules/fckeditor/menus.xmap
deleted file mode 100644
index 4955e63..0000000
--- a/trunk/src/modules/fckeditor/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/fckeditor/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/fckeditor/resources/UNPACK_FCKEDITOR_ARCHIVE_HERE b/trunk/src/modules/fckeditor/resources/UNPACK_FCKEDITOR_ARCHIVE_HERE
deleted file mode 100644
index e69de29..0000000
--- a/trunk/src/modules/fckeditor/resources/UNPACK_FCKEDITOR_ARCHIVE_HERE
+++ /dev/null
diff --git a/trunk/src/modules/fckeditor/resources/javascript/fckconfig.js b/trunk/src/modules/fckeditor/resources/javascript/fckconfig.js
deleted file mode 100644
index 44ceeb8..0000000
--- a/trunk/src/modules/fckeditor/resources/javascript/fckconfig.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-
-/*
- * toolbar for lenya
- */
-
-FCKConfig.ToolbarSets["Lenya"] = [
-	['Source','DocProps','-','Lenya_save','Preview','-','Templates'],
-	['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
-	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
-	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
-	['OrderedList','UnorderedList','-','Outdent','Indent'],
-	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
-	['Link', 'Lenya_insertLink','Unlink','Anchor'],
-	['Image', 'Lenya_insertImage','Table','Rule','Smiley','SpecialChar','PageBreak'],
-	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
-	'/',
-	['Style','FontFormat','FontName','FontSize'],
-	['TextColor','BGColor'],
-	['About']
-  ];  
-  
- /*
- * plugin for save in lenya
- */  
-FCKConfig.Plugins.Add( 'fck_lenya_glue', 'de,en', '../../plugins/' ) ;
-
-/*
- * disable uploads since it needs to be done from within Lenya
- */
-FCKConfig.ImageUpload = false;
-FCKConfig.LinkUpload  = false;
-FCKConfig.FlashUpload = false;
-
-/*
- * disable server browsing since we now use plugins for that
- */
-FCKConfig.ImageBrowser = false;
-FCKConfig.LinkBrowser = false;
-
diff --git a/trunk/src/modules/fckeditor/resources/javascript/fckloader.js b/trunk/src/modules/fckeditor/resources/javascript/fckloader.js
deleted file mode 100644
index 7afaebb..0000000
--- a/trunk/src/modules/fckeditor/resources/javascript/fckloader.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-function fckloader(requesturi, contextPath)
-{
-  var oFCKeditor = new FCKeditor( 'content' ) ;
-  oFCKeditor.BasePath	= contextPath + '/modules/fckeditor/fckeditor/' ;
-  oFCKeditor.Width="800";
-  oFCKeditor.Height="700";
-  oFCKeditor.Config[ "FullPage" ] = true ;
-  oFCKeditor.Config[ "ProcessHTMLEntities" ] = true ;
-  oFCKeditor.Config[ "ProcessNumericEntities" ] = true ;
-  oFCKeditor.Config["CustomConfigurationsPath"] = contextPath + "/modules/fckeditor/javascript/fckconfig.js"  ;
-  oFCKeditor.ToolbarSet = 'Lenya' ;
-// the current API does not support this anymore. there is a plugin for that job now.
-// with an extra html page, this function could probably be restored easily, which would be
-// nice because it plugs into the rather comfortable image and link dialogs of FCK...
-//  oFCKeditor.Config[ "ImageBrowserURL" ] = requesturi +'?lenya.usecase=editors.insertImage' ;
-//  oFCKeditor.Config[ "LinkBrowserURL" ] = requesturi +'?lenya.usecase=editors.insertLink' ;
-  oFCKeditor.ReplaceTextarea() ;
-}
diff --git a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/fckplugin.js b/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/fckplugin.js
deleted file mode 100644
index 726eccd..0000000
--- a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/fckplugin.js
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-
-/**
-  * implements a "save" button that works with Lenya
-  *
-  * All it does is trigger a submit event, and then the normal 
-  * usecase handler takes over, as if the user had clicked 
-  * the XHTML submit button.
-  */
-function LenyaSaveCommand() {  this.Name = 'Lenya_save'; }
-
-/**
-  * an FCKeditor callback that is run when the command is invoked
-  */
-LenyaSaveCommand.prototype.Execute = function() {
-  var oForm = FCK.LinkedField.form ;
-  oForm.submit.click()
-}
-/**
-  * an FCKeditor callback that takes care of button state
-  */ 
-LenyaSaveCommand.prototype.GetState = function() { 
-  return FCK_TRISTATE_OFF;
-}
-
-
-/**
-  * implements an "insert link" button that works with Lenya
-  *
-  * It will open the editors.insertLink usecase in a new window.
-  */
-function LenyaInsertLinkCommand() { this.Name = 'Lenya_insertLink'; }
-
-/**
-  * an FCKeditor callback that is run when the command is invoked
-  */
-LenyaInsertLinkCommand.prototype.Execute = function() {
-  //alert("Lenya_insertLink executed.");
-  var windowName = org.apache.lenya.editors.generateUniqueWindowName();
-  var selection = org.apache.lenya.editors.getSelectedText(FCK.EditorWindow);
-  usecaseMap[windowName] = org.apache.lenya.editors.USECASE_INSERTLINK;
-  objectData[windowName] = new org.apache.lenya.editors.ObjectData({
-    url   : "",
-    title : "",
-    text  : selection
-  });
-  org.apache.lenya.editors.openUsecaseWindow(
-    usecaseMap[windowName],
-    windowName
-  );
-}
-
-/**
-  * an FCKeditor callback that takes care of button state
-  */ 
-LenyaInsertLinkCommand.prototype.GetState = function() { 
-  return FCK_TRISTATE_OFF; 
-}
-
-
-/**
-  * implements an "insert image" button that works with Lenya
-  *
-  * It will open the editors.insertImage usecase in a new window.
-  */
-function LenyaInsertImageCommand() { this.Name = 'Lenya_insertLink'; }
-
-/**
-  * an FCKeditor callback that is run when the command is invoked
-  */
-LenyaInsertImageCommand.prototype.Execute = function() {
-  //alert("Lenya_insertImage executed.");
-  var windowName = org.apache.lenya.editors.generateUniqueWindowName();
-  var selection = org.apache.lenya.editors.getSelectedText(FCK.EditorWindow);
-  usecaseMap[windowName] = org.apache.lenya.editors.USECASE_INSERTIMAGE;
-  objectData[windowName] = new org.apache.lenya.editors.ObjectData({
-    url   : "",
-    title : "",
-    text  : selection,
-    height: "",
-    width : ""
-  });
-  org.apache.lenya.editors.openUsecaseWindow(
-    usecaseMap[windowName],
-    windowName
-  );
-}
-
-/**
-  * an FCKeditor callback that takes care of button state
-  */ 
-LenyaInsertImageCommand.prototype.GetState = function() { 
-  return FCK_TRISTATE_OFF;
-}
-
-
-/***************** main *******************************************************/  
-
-/**
-  * FCKeditor uses frames heavily, which means that our helper library
-  * will not be in the current scope. So we define it to point to the
-  * "top" window, which hopefully has the library included.
-  */
-var org;
-if (!org) {
-  org = window.top.org;
-} else if (!org.apache) {
-  org.apache = window.top.org.apache;
-} else if (!org.apache.lenya) {
-  org.apache.lenya = window.top.org.apache.lenya;
-} else if (!org.apache.lenya.editors) {
-  org.apache.lenya.editors = window.top.org.apache.lenya.editors;
-}
-
-/**
-  * to store usecase data per window
-  */
-var objectData = new Array();
-
-/**
-  * to map usecase names to window names
-  */
-var usecaseMap = new Array();
-
-
-/* FCKCommands.RegisterCommand(commandName, command)
-       commandName - Command name, referenced by the Toolbar, etc...
-       command - Command object (must provide an Execute() function).
-*/
-
-// Register Lenya-specific commands
-
-FCKCommands.RegisterCommand('Lenya_save', new LenyaSaveCommand());
-FCKCommands.RegisterCommand('Lenya_insertLink', new LenyaInsertLinkCommand());
-FCKCommands.RegisterCommand('Lenya_insertImage', new LenyaInsertImageCommand());
-
-
-
-// Create Lenya-specific toolbar buttons:
- 
-var oLenya_saveItem = new FCKToolbarButton('Lenya_save', FCKLang['DlgLenya_saveTitle']);
-oLenya_saveItem.IconPath= [FCKConfig.SkinPath + 'fck_strip.gif', 16, 3]; // use FCKEditor's icons
-FCKToolbarItems.RegisterItem( 'Lenya_save', oLenya_saveItem ) ;
-
-var oLenya_insertLinkItem = new FCKToolbarButton('Lenya_insertLink', FCKLang['DlgLenya_insertLinkTitle']);
-oLenya_insertLinkItem.IconPath = FCKPlugins.Items['fck_lenya_glue'].Path + 'insertLink.gif' ;
-FCKToolbarItems.RegisterItem( 'Lenya_insertLink', oLenya_insertLinkItem ) ;
-
-var oLenya_insertImageItem = new FCKToolbarButton( 'Lenya_insertImage', FCKLang['DlgLenya_insertImageTitle']);
-oLenya_insertImageItem.IconPath = FCKPlugins.Items['fck_lenya_glue'].Path + 'insertImage.gif';
-FCKToolbarItems.RegisterItem('Lenya_insertImage', oLenya_insertImageItem);
-
-
-/******************** Lenya editor usecase callbacks **********************/
-
-
-org.apache.lenya.editors.setObjectData = function(objectData, windowName) {
-  var usecase = usecaseMap[windowName];
-  var snippet = org.apache.lenya.editors.generateContentSnippet(usecase, objectData);
-  var selection = org.apache.lenya.editors.getSelectedText(FCK.EditorWindow);
-  
-  FCK.InsertHtml(
-    snippet.beforeSelection 
-    + (snippet.replaceSelection ? snippet.replaceSelection : selection)
-    + snippet.afterSelection
-  );
-
-  usecaseMap[windowName] = undefined; // we're done!
-  objectData[windowName] = undefined; // we're done!
-}
-
-org.apache.lenya.editors.getObjectData = function(windowName, usecase) {
-  return objectData[windowName];
-}
diff --git a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertImage.gif b/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertImage.gif
deleted file mode 100644
index c07078c..0000000
--- a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertImage.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertLink.gif b/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertLink.gif
deleted file mode 100644
index c07078c..0000000
--- a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/insertLink.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/de.js b/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/de.js
deleted file mode 100644
index 42e2c5a..0000000
--- a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/de.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-FCKLang['DlgLenya_saveTitle'] = 'Lenya-Dokument speichern'; 
-FCKLang['DlgLenya_insertLinkTitle'] = 'Lenya-Link einfügen'; 
-FCKLang['DlgLenya_insertImageTitle'] = 'Lenya-Bild einfügen'; 
diff --git a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/en.js b/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/en.js
deleted file mode 100644
index 0dd43c1..0000000
--- a/trunk/src/modules/fckeditor/resources/plugins/fck_lenya_glue/lang/en.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-FCKLang['DlgLenya_saveTitle'] = 'Save Lenya Document'; 
-FCKLang['DlgLenya_insertLinkTitle'] = 'Insert Lenya link'; 
-FCKLang['DlgLenya_insertImageTitle'] = 'Insert Lenya image'; 
diff --git a/trunk/src/modules/fckeditor/sitemap.xmap b/trunk/src/modules/fckeditor/sitemap.xmap
deleted file mode 100644
index c4f6be6..0000000
--- a/trunk/src/modules/fckeditor/sitemap.xmap
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<!-- =========================== Components ================================ -->
-  <map:resources>
-      <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:components>
-  
-    <map:serializers default="xhtml"> 
-      <map:serializer name="xml-get" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="text/xml">
-        <encoding>utf-8</encoding>
-        <omit-xml-declaration>yes</omit-xml-declaration>
-      </map:serializer>
-    </map:serializers>
- 
-  </map:components>
-
-  <map:pipelines>
-    <map:pipeline>
-
-      <map:match pattern="fckeditor.open" >
-        <map:generate type="jx" src="fallback://lenya/modules/fckeditor/usecases/fckeditor.jx"/>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:transform src="cocoon://lenya-screen.xsl"/>
-        <map:transform type="proxy"/>
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xhtml"/>
-      </map:match>
-
-      <map:match pattern="content">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}"/>
-        <map:transform type="uuid2url">
-          <map:parameter name="urls" value="absolute"/>
-        </map:transform>
-        <map:serialize type="xml-get"/>
-      </map:match>
-
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/fckeditor/usecases/fckeditor.jx b/trunk/src/modules/fckeditor/usecases/fckeditor.jx
deleted file mode 100644
index 8ac66b4..0000000
--- a/trunk/src/modules/fckeditor/usecases/fckeditor.jx
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
- 
-  <jx:set var="pathInfo" value="${usecase.getSourceURL()}"/>
-  <jx:set var="steps" value="${pathInfo.split('/')}"/>
-  <jx:set var="pubId" value="${java.util.Arrays.asList(steps).get(1)}"/>
- 
-  <script type="text/javascript" src="/${pubId}/modules/fckeditor/fckeditor/fckeditor.js">&#160;</script>
-  <script type="text/javascript" src="/${pubId}/modules/fckeditor/javascript/fckloader.js">&#160;</script>
-  <script type="text/javascript" src="/${pubId}/modules/editors/javascript/disablebackspace.js">&#160;</script>
-  <script type="text/javascript" src="/${pubId}/modules/editors/javascript/org.apache.lenya.editors.js">&#160;</script> 
-  <script type="text/javascript">
-    function loadfckloader() {
-      fckloader('${usecase.getParameter('requesturi')}', '${usecase.getParameter('proxyUrl')}');
-    }
-
-    if(typeof window.addEventListener != 'undefined') {
-      window.addEventListener('load',loadfckloader,false);
-    }
-    else if(typeof window.attachEvent != 'undefined') {
-      window.attachEvent('onload',loadfckloader);
-    }
-    else {
-      window.onload = loadfckloader();
-    }
-  </script>
-  
-	<page:title>FCKeditor - Sample</page:title>
-
-        <jx:choose>
-          <jx:when test="${usecase.hasErrors()}">
-            <page:body>
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </page:body>
-          </jx:when>
-          <jx:otherwise>
-            <page:body>
-	  
-                <div class="lenya-box">
-                  <div class="lenya-box-title">Information</div>
-                  <div class="lenya-box-body">
-                    <table class="lenya-table-noborder">
-                      <tr>
-                        <td class="lenya-entry-caption">Document:</td>
-                        <td><jx:out value="${usecase.getParameter('document').getId()}"/></td>
-                      </tr>
-                      <tr>
-                        <td class="lenya-entry-caption">Workflow Event:</td>
-                        <jx:set var="event" value="${request.getParameter('lenya.event')}"/>
-                        <jx:choose>
-                          <jx:when test="${event.equals('') || event.equals('null')}">
-                            <td>No workflow event specified</td>
-                          </jx:when>
-                          <jx:otherwise>
-                            <td><jx:out value="${event}"/></td>
-                          </jx:otherwise>
-                        </jx:choose>
-                      </tr>
-                    </table>
-                  </div>
-                </div>
-          
-              <form method="post" name="fckeditor" id="fckeditor">
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>		
-            <input name="namespaces" type="hidden" value=" xmlns=&quot;http://www.w3.org/1999/xhtml&quot;" />
-			    <div>
-				    <textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 200px">
-                      <cinclude:includexml>
-                        <cinclude:src>cocoon://modules/fckeditor/content</cinclude:src>
-                      </cinclude:includexml>		
-				    </textarea>
-			    </div>
-			    <br />
-			    <input name="submit" type="submit" value="Save" />
-          <input type="submit" name="cancel" value="Cancel"/>
-		      </form>
-            			
-	    </page:body>
-          </jx:otherwise>
-        </jx:choose>
-</page:page>
diff --git a/trunk/src/modules/kupu/config/cocoon-xconf/usecase-kupu.xconf b/trunk/src/modules/kupu/config/cocoon-xconf/usecase-kupu.xconf
deleted file mode 100644
index 9fd8468..0000000
--- a/trunk/src/modules/kupu/config/cocoon-xconf/usecase-kupu.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 1999-2005 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.

--->

-

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'kupu.edit']">

-    

-    <component-instance name="kupu.edit" logger="lenya.publication" 

-      class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">

-      <view uri="modules/kupu/usecases/kupu.jx" menu="false" createContinuation="false"/>
-      <transaction policy="pessimistic"/>

-      <event id="edit"/>

-      <parameter name="checkoutRestrictedToSession" value="false"/>
-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules/kupu/config/module.xml b/trunk/src/modules/kupu/config/module.xml
deleted file mode 100644
index c2337c5..0000000
--- a/trunk/src/modules/kupu/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.kupu</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Kupu editor</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Kupu editor</description>
-</module>
diff --git a/trunk/src/modules/kupu/kupu.js b/trunk/src/modules/kupu/kupu.js
deleted file mode 100644
index 3b43515..0000000
--- a/trunk/src/modules/kupu/kupu.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright  1999-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.
- *
- */
-
-importClass(Packages.java.util.ArrayList);
-
-/**
- * Kupu usecase flow.
- * @version $Id$
- */
-
-/**
- * Collects all link/url information from a publication's siteree.
- * This information is used to generate xml for the Kupu (link) library drawer.
- */
-function sitetree_link_library() {
-    
-    var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-    var documentHelper = flowHelper.getDocumentHelper(cocoon);
-    var pageEnvelope = flowHelper.getPageEnvelope(cocoon);
-    var areaName = pageEnvelope.getArea();
-    var area = pageEnvelope.getPublication().getArea(areaName);
-    var siteTree = area.getSite();
-    var allNodes = siteTree.preOrder();
-    var resources = new ArrayList(allNodes.length - 1);
-    var addedResourcesCount = 0;
-    var language = pageEnvelope.getDocument().getLanguage();
-    
-    for(var i=1; i < allNodes.length; i++) {
-        if (allNodes[i].hasLink(language)) {
-    		var languageLabel = allNodes[i].getLink(language);
-			/* If the current sitree node does not exist in the displayed document's language
-		 	 * Continue with next node. This is a quick fix for bug #32808.
-		 	 * Next step would be to offer all links to the available languages.
-		 	 * by roku 
-		 	*/
-		
-        	resources.add(addedResourcesCount, {
-                "url" : "lenya-document:" + allNodes[i].getUuid(),
-                "title" : getTitle(allNodes[i].getLink(language).getDocument()),
-                "label" : languageLabel.getLabel(),
-                "id" : allNodes[i].getName(),
-                "fullid" : allNodes[i].getPath(),
-                "language" : pageEnvelope.getDocument().getLanguage()});
-        	addedResourcesCount++;
-        }
-    }
-    cocoon.releaseComponent(flowHelper);
-    cocoon.sendPage("sitetree_link_library_template", {"resources" : resources});
-}
-
-function getTitle(doc) {
-    var meta = doc.getMetaData("http://purl.org/dc/elements/1.1/");
-    var title = meta.getFirstValue("title");
-    return title;
-}
-
-/**
- * Collects infos about all image resources in a publication.
- */
-function publication_image_library() {        
-    var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-    var pageEnvelope = flowHelper.getPageEnvelope(cocoon);
-    var areaName = pageEnvelope.getArea();
-    var site = pageEnvelope.getPublication().getArea(areaName).getSite();
-    var imageInfos = new ArrayList();
-    
-    var rootPath = cocoon.parameters["rootPath"];
-    var allNodes = site.getNode(rootPath).preOrder();
-    
-    var baseUrl = cocoon.parameters["baseUrl"];
-    
-    for (var i=0; i < allNodes.length; i++) {
-    
-        if (allNodes[i].getPath().equals(pageEnvelope.getDocument().getPath()))
-            continue;
-            
-        var languages = allNodes[i].getLanguages();
-        for (var lang = 0; lang < languages.length; lang++) {
-            var doc = allNodes[i].getLink(languages[lang]).getDocument();
-            if (doc.getResourceType().getName().equals("resource")) {
-            
-	            var title = getTitle(doc);
-	            var url = doc.getCanonicalDocumentURL();
-	            url = url.substring(0, url.length() - 4);
-	            url = url + doc.getSourceExtension();
-	            
-	            imageInfos.add({
-	                    "previewurl" : baseUrl + url,
-	                    "url" : baseUrl + url,
-	                    "name" : doc.getName(),
-	                    "title" : title,
-	                    "length" : doc.getContentLength(),
-	                    "iconUrl" : cocoon.parameters["iconUrl"]
-	            });
-            }
-        }
-            
-    }
-    cocoon.releaseComponent(flowHelper);
-    cocoon.sendPage(cocoon.parameters["template"], {"imageInfos" : imageInfos});
-}
diff --git a/trunk/src/modules/kupu/sitemap.xmap b/trunk/src/modules/kupu/sitemap.xmap
deleted file mode 100644
index fc72e18..0000000
--- a/trunk/src/modules/kupu/sitemap.xmap
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright 1999-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.
--->
-
-<!-- $Id: sitemap.xmap 423198 2006-07-18 18:52:43Z chestnut $ -->
-
-<!--
-  Kupu usecase sitemaps. Integrates the Kupu editor (http://kupu.oscom.org/) into Lenya.
-  Most matchers serve as callbacks for Kupu running in a client's browser.
-  Make sure that Kupu is installed under lenya/resources/kupu.
-  
-  Most of (re)sources used in generators and transfomers of this sitemap
-  are located in the Kupu distribution.
-  
-  Enjoy using Kupu.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  <!-- =========================== Components ================================ -->
-  <map:components/>
-  <!-- =========================== Resources ================================= -->
-
-  <map:resources>
-    <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl">
-        <map:parameter name="contextprefix" value=""/>
-      </map:transform>
-      <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-    </map:resource>
-  </map:resources>
-  
-  <!-- =========================== Flow ===================================== -->
-  <map:flow language="javascript">
-    <map:script src="kupu.js"/>
-    <map:script src="fallback://lenya/modules/usecase/edit-document.js"/>
-  </map:flow>
-  <!-- =========================== Pipelines ================================ -->  
-  <map:pipelines>
-    
-    <map:component-configurations>
-      <global-variables>
-        <resourceIconUrl>/modules/kupu/kupu/apache-lenya/lenya/images/right_arrow.png</resourceIconUrl>
-        <imageBase>/modules/kupu/kupu/apache-lenya/lenya/images</imageBase>
-      </global-variables>
-    </map:component-configurations>
-
-
-    <map:pipeline internal-only="true">
-      <map:match pattern="kupu-stream">
-        <map:generate type="stream"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- Flow callbacks -->
-      <map:match pattern="sitetree_link_library_template">
-        <map:generate src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/sitetree_link_library.xml.jx" type="jx">
-          <map:parameter name="resource-icon-url" value="{proxy:{global:resourceIconUrl}}"/>
-        </map:generate>
-        <map:serialize type="xml"/>
-      </map:match>      
-      <map:match pattern="publication_image_library_template">
-        <map:generate src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/publication_image_library.xml.jx" type="jx">
-          <map:parameter name="resource-icon-url" value="{proxy:{global:resourceIconUrl}}"/>
-        </map:generate>
-        <map:serialize type="xml"/>
-      </map:match>      
-      <map:match pattern="request2document">
-        <map:aggregate element="edit-envelope">
-          <map:part element="edited" src="cocoon:/kupu-stream"/>
-          <map:part element="original" 
-              src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}"/>
-        </map:aggregate>              
-        <map:transform src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/kupusave.xsl"/>
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>   
-    
-    <map:pipeline>
-      
-      <map:match pattern="kupu.open">
-          <map:generate 
-            src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/kupu/kupumacros.html"/>
-          <map:transform src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/kupumacros.xsl">
-            <map:parameter name="contentfile" 
-              value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=content"/>
-            <map:parameter name="context-prefix" value="/{page-envelope:publication-id}/modules/kupu"/>
-            <!-- Only used to display the document path of the edited doc  -->
-            <map:parameter name="document-path" value="&quot;{dublincore:title}&quot;"/>
-            <map:parameter name="save-destination" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.event=edit"/>
-            <map:parameter name="exit-destination" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=exit"/>
-            <map:parameter name="reload-after-save" value="1"/>
-            <map:parameter name="use-css" value="1"/>
-            <map:parameter name="imagedrawer-xsl-uri" 
-              value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=imagedrawerxsl"/>
-            <map:parameter name="linkdrawer-xsl-uri" 
-              value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=linkdrawerxsl"/>
-            <map:parameter name="image-libraries-uri" 
-              value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=image_libraries"/>
-            <map:parameter name="link-libraries-uri" 
-              value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=link_libraries"/>
-          </map:transform>
-          <map:serialize type="xml"/>
-      </map:match>
-        
-        <!-- Requested by Kupu to load the document into the editor -->    
-        <map:match pattern="content" type="step">
-          <map:match pattern="*/authoring/**">
-            <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}"/>
-            <map:transform 
-              src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/content2edit.xsl">
-              <map:parameter name="css" value="/{1}/authoring/css/page.css"/>
-              <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-            </map:transform>
-            <map:transform type="uuid2url"/>
-            <map:transform type="proxy">
-              <map:parameter name="urls" value="absolute"/>
-            </map:transform>
-            <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-            <map:serialize type="xhtml"/>
-          </map:match>            
-        </map:match>
-        
-        <!-- Kupu Image Drawer -->
-        <map:match pattern="*drawerxsl" type="step">
-          <map:generate type="jx" src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/{1}drawer.xsl">
-            <!-- We need to use the hole uri scheme i.e. http://servername:port/, since IE xslt processor  
-                 throws an access violation upon loading of xslts from the internet.
-                 This requires to configure the proxy accordingly in publication.xml.
-             -->
-            <map:parameter name="import-stylesheet-url"
-              value="{proxy:/modules/kupu/kupu/common/kupudrawers/drawer.xsl}"/>
-          </map:generate>  
-          <map:serialize type="xml"/>
-        </map:match>
-        
-        <map:match pattern="image_libraries" type="step">
-          <map:generate src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/imagelibraries.xml.jx" type="jx">
-            <map:parameter name="pubLibUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=publication_image_library"/>
-            <map:parameter name="pageLibUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=page_image_library"/>
-            <map:parameter name="imageBaseUrl" value="{proxy:{global:imageBase}}"/>
-          </map:generate>
-          <map:serialize type="xml"/>
-        </map:match>
-        <map:match pattern="link_libraries" type="step">
-          <map:generate src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/linklibraries.xml.jx" type="jx">
-            <map:parameter name="pubLibUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=sitetree_link_library"/>
-            <map:parameter name="pageLibUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}}?lenya.module=kupu&amp;lenya.step=other_link_library"/>
-            <map:parameter name="imageBaseUrl" value="{proxy:{global:imageBase}}"/>
-          </map:generate>
-          <map:serialize type="xml"/>
-        </map:match>
-                  
-        <map:match pattern="page_image_library" type="step">
-          <map:call function="publication_image_library">
-            <map:parameter name="template" value="publication_image_library_template"/>
-            <map:parameter name="iconUrl" value="{proxy:{global:resourceIconUrl}}"/>
-            <map:parameter name="rootPath" value=""/>
-            <map:parameter name="baseUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}}"/>
-          </map:call>
-        </map:match>
-        <map:match pattern="sitetree_link_library" type="step">
-          <map:call function="sitetree_link_library"/>
-        </map:match>        
-        <map:match pattern="publication_image_library" type="step">
-          <map:call function="publication_image_library">
-            <map:parameter name="template" value="publication_image_library_template"/>
-            <map:parameter name="iconUrl" value="{proxy:{global:resourceIconUrl}}"/>
-            <map:parameter name="rootPath" value="{page-envelope:document-path}"/>
-            <map:parameter name="baseUrl" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}}"/>
-          </map:call>
-        </map:match>
-        
-        <map:match pattern="*_library" type="step">
-          <map:generate src="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/drawers/{1}_library.xml.jx" type="jx"/>
-          <map:serialize type="xml"/>
-        </map:match>
-        <!-- /Kupu Image Drawer -->  
-        
-        <!-- Checkin document on exit and trigger workflow -->
-        <map:match pattern="exit" type="step">
-          <map:act type="reserved-checkin">
-            <map:generate src="fallback://lenya/content/rc/{exception}.xsp" type="serverpages">
-              <map:parameter name="user" value="{user}"/>
-              <map:parameter name="filename" value="{filename}"/>
-              <map:parameter name="checkType" value="{checkType}"/>
-              <map:parameter name="date" value="{date}"/>
-              <map:parameter name="message" value="{message}"/>
-            </map:generate>
-            <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-            <map:call resource="style-cms-page"/>
-            <map:serialize />
-          </map:act>
-          <map:redirect-to uri="{proxy:/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-path}.html}"/>
-        </map:match>
-      
-    </map:pipeline>
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/kupu/usecases/kupu.jx b/trunk/src/modules/kupu/usecases/kupu.jx
deleted file mode 100644
index 4297008..0000000
--- a/trunk/src/modules/kupu/usecases/kupu.jx
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<jx:choose
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:ci="http://apache.org/cocoon/include/1.0">
-  
-  <jx:when test="${usecase.hasErrors()}">
-    <page:page
-      xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-      xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-      >
-      
-      <page:title><i18n:text>Kupu Editor</i18n:text></page:title>
-      
-      <jx:set var="sourceUrl" value="${usecase.getSourceURL()}"/>
-      <jx:set var="steps" value="${sourceUrl.split('/')}"/>
-      <jx:set var="lastStep" value="${steps[steps.size() - 1]}"/>
-      
-      <page:body>
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      </page:body>
-    </page:page>
-  </jx:when>
-  <jx:otherwise>
-    <ci:include src="cocoon://modules/kupu/kupu.open"/>
-  </jx:otherwise>
-</jx:choose>
\ No newline at end of file
diff --git a/trunk/src/modules/languageselector/config/module.xml b/trunk/src/modules/languageselector/config/module.xml
deleted file mode 100644
index d130284..0000000
--- a/trunk/src/modules/languageselector/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.languageselector</id>
-  <package>org.apache.lenya.modules</package>
-  <version>1.0</version>
-  <name>Language selector</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>A language selector for Lenya publications that uses Batik to render SVG flag images.</description>
-</module>
diff --git a/trunk/src/modules/languageselector/resources/i18n/cmsui.xml b/trunk/src/modules/languageselector/resources/i18n/cmsui.xml
deleted file mode 100644
index b57a84b..0000000
--- a/trunk/src/modules/languageselector/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->
-
-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-<!--
-  it may look strange to have phrases in different languages here, but since
-  these are the controls to switch languages, it makes sense to present
-  them in the "target" language regardless of the current locale. 
-  thus, we need only one catalogue - all other languages will fall back
-  to this one.
--->
-     
-  <message key="en-isCurrent">English is your currently selected language.</message>
-  <message key="en-isUnavailable">Sorry, no English translation is available for this document.</message>
-  <message key="en-isAvailable">switch to English translation</message>
-  <message key="de-isCurrent">Deutsch ist die aktuell gewählte Sprache.</message>
-  <message key="de-isUnavailable">Leider ist für diese Seite keine deutsche Übersetzung verfügbar.</message>
-  <message key="de-isAvailable">zur deutschen Übersetzung</message>
-  <!-- sorry, my french sucks. anyone? -->
-  <message key="fr-isCurrent">Vous lisez la version française.</message>
-  <message key="fr-isUnavailable">Nous regrettons qu'il n'y a pas de traduction française.</message>
-  <message key="fr-isAvailable">vers la version française</message>
-  <!-- my spanish either. -->
-  <message key="es-isCurrent">Eso es castellano.</message>
-  <message key="es-isUnavailable">Desafortunadamente no hay una traducción castellana.</message>
-  <message key="es-isAvailable">para la traducción castellana</message>
-  <!-- my hebrew is even worse. -->
-  <message key="he-isCurrent">.זה בספה עברית</message>
-  <message key="he-isUnavailable">.אנלנו העמוד הזה בעברית</message>
-  <message key="he-isAvailable">.לעמוד עברית</message>
-  <message key="en">English</message>
-  <message key="de">Deutsch</message>
-  <message key="fr">Français</message>
-  <message key="es">Español</message>
-  <message key="he">עברית</message>
-  
-</catalogue>
diff --git a/trunk/src/modules/languageselector/resources/images/README b/trunk/src/modules/languageselector/resources/images/README
deleted file mode 100644
index 51e0bc1..0000000
--- a/trunk/src/modules/languageselector/resources/images/README
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# If you change this file, please keep the website documentation in sync. Thanks!
-#
-
-More flags can be obtained from 
-http://en.wikipedia.org/wiki/Gallery_of_sovereign_state_flags.
-
-Be sure to rename them according to "<two-letter-language-code>.svg".
diff --git a/trunk/src/modules/languageselector/resources/images/de.svg b/trunk/src/modules/languageselector/resources/images/de.svg
deleted file mode 100644
index 7e2d461..0000000
--- a/trunk/src/modules/languageselector/resources/images/de.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg>
-<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="600" viewBox="0 0 5 3">
-   <rect id="black_stripe"	fill="#000"	width="5" height="3"/>
-   <rect id="red_stripe"	fill="#D00"	width="5" height="2" y="1"/>
-   <rect id="gold_stripe"	fill="#FFCE00"	width="5" height="1" y="2"/>
-</svg>
diff --git a/trunk/src/modules/languageselector/resources/images/default.svg b/trunk/src/modules/languageselector/resources/images/default.svg
deleted file mode 100644
index 93ed0b5..0000000
--- a/trunk/src/modules/languageselector/resources/images/default.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="450"
-   height="300"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <g
-     id="layer1">
-    <rect
-       width="450"
-       height="300"
-       x="0"
-       y="0"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-opacity:1"
-       id="rect1325" />
-  </g>
-</svg>
diff --git a/trunk/src/modules/languageselector/resources/images/en.svg b/trunk/src/modules/languageselector/resources/images/en.svg
deleted file mode 100644
index c290bab..0000000
--- a/trunk/src/modules/languageselector/resources/images/en.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg>
-<svg version="1.1" baseProfile="full" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" zoomAndPan="magnify"
-   id="Union Jack"
-   viewBox="-15 -7.5 30 15"
-   width="1200" height="600">
-
-  <defs>
-    <clipPath id="border">
-      <rect x="-15" y="-7.5" width="30" height="15"/>
-    </clipPath>
-  </defs>
-
-  <g clip-path="url(#border)">
-    <circle r="20" fill="#00247D"/>
-    <path d="M -20,-10 L 20,10 M -20,10 L 20,-10" stroke-width="3" stroke="white" id="diags_white"/>
-    <path d="M -20,-10 L 20,10 M -20,10 L 20,-10" stroke-width="2" stroke="#CF142B" id="diags_red"/>
-    <path stroke="none" fill="white" d="M 0,0 l 20,10 h -3 l -20,-10 M 0,0 l 20,-10 h 3 l -20,10 M 0,0 l -20,10 h -3 l 20,-10 M 0,0 l -20,-10 h 3 l 20,10" id="eraser_white"/>
-<comment>I think the above two lines give the simplest way to make the diagonals</comment>
-    <path d="M -20,0 H 20 M 0,-10 V 10" stroke-width="5" stroke="white" id="cross_white"/>
-    <path d="M -20,0 H 20 M 0,-10 V 10" stroke-width="3" stroke="#CF142B" id="cross_red"/>
-  </g>
-</svg>
diff --git a/trunk/src/modules/languageselector/resources/images/es.svg b/trunk/src/modules/languageselector/resources/images/es.svg
deleted file mode 100644
index db66334..0000000
--- a/trunk/src/modules/languageselector/resources/images/es.svg
+++ /dev/null
@@ -1,2780 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg548"
-   height="500"
-   width="750"
-   y="0.0000000"
-   x="0.0000000"
-   version="1.0"
-   sodipodi:version="0.32"
-   inkscape:version="0.43"
-   sodipodi:docname="Flag_of_Spain.svg"
-   sodipodi:docbase="D:\Kuvat\Wikipedia">
-  <metadata
-     id="metadata2753">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="540"
-     inkscape:window-width="756"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="0.751663"
-     inkscape:cx="372.12987"
-     inkscape:cy="247.25214"
-     inkscape:window-x="58"
-     inkscape:window-y="141"
-     inkscape:current-layer="g3524" />
-  <defs
-     id="defs549">
-    <marker
-       id="ArrowEnd"
-       viewBox="0 0 10 10"
-       orient="auto"
-       markerHeight="3"
-       markerWidth="4"
-       refY="5"
-       refX="0"
-       markerUnits="strokeWidth">
-      <path
-         id="path551"
-         d="M 0,0 L 10,5 L 0,10 L 0,0 z " />
-    </marker>
-    <marker
-       id="ArrowStart"
-       viewBox="0 0 10 10"
-       orient="auto"
-       markerHeight="3"
-       markerWidth="4"
-       refY="5"
-       refX="10"
-       markerUnits="strokeWidth">
-      <path
-         id="path553"
-         d="M 10,0 L 0,5 L 10,10 L 10,0 z " />
-    </marker>
-    <style
-       id="style2435"
-       type="text/css">
-   
-    .str0 {stroke:#000000;stroke-width:3}
-    .fil1 {fill:none}
-    .fil2 {fill:#0039F0}
-    .fil0 {fill:#FFFF00}
-   
-  </style>
-  </defs>
-  <g
-     id="g3524">
-    <g
-       id="g7166">
-      <rect
-         width="750"
-         height="500"
-         x="0"
-         y="-2.0563602e-005"
-         style="font-size:12px;fill:#AD1519;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"
-         id="rect171" />
-      <rect
-         width="750"
-         height="250"
-         x="3.4521486e-007"
-         y="125"
-         style="font-size:12px;fill:#FABD00;fill-opacity:1;fill-rule:evenodd;stroke-width:1pt"
-         id="rect403" />
-      <g
-         transform="matrix(1.006896,0,0,1.006896,0.3043,-0.708342)"
-         id="g5161">
-        <path
-           id="path4887"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 166.536,221.4227 C 166.536,221.4227 166.029,221.4227 165.75,221.2637 C 165.471,221.1017 164.629,220.3047 164.629,220.3047 L 163.955,219.8247 L 163.341,218.9747 C 163.341,218.9747 162.611,217.8117 162.946,216.9047 C 163.281,216.0017 163.843,215.6807 164.35,215.4167 C 164.856,215.1517 165.918,214.8317 165.918,214.8317 C 165.918,214.8317 166.763,214.4607 167.042,214.4047 C 167.321,214.3517 168.334,214.0867 168.334,214.0867 C 168.334,214.0867 168.614,213.9287 168.893,213.8227 C 169.176,213.7167 169.567,213.7167 169.794,213.6607 C 170.017,213.6077 170.58,213.4277 170.915,213.4097 C 171.436,213.3887 172.263,213.5017 172.546,213.5017 C 172.825,213.5017 173.779,213.5577 174.17,213.5577 C 174.561,213.5577 175.964,213.4487 176.359,213.4487 C 176.75,213.4487 177.033,213.3997 177.484,213.4487 C 177.931,213.5017 178.716,213.7657 178.943,213.8757 C 179.167,213.9817 180.515,214.4607 181.018,214.6197 C 181.524,214.7747 182.76,214.9897 183.323,215.2547 C 183.881,215.5227 184.224,215.9707 184.503,216.3437 C 184.786,216.7147 184.838,217.1197 184.95,217.3877 C 185.058,217.6527 185.062,218.2237 184.954,218.4887 C 184.841,218.7527 184.444,219.2997 184.444,219.2997 L 183.825,220.3077 L 183.04,220.9427 C 183.04,220.9427 182.477,221.4787 182.031,221.4227 C 181.58,221.3767 177.033,220.5727 174.114,220.5727 C 171.194,220.5727 166.532,221.4227 166.532,221.4227" />
-        <path
-           id="path4889"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linejoin:round"
-           d="M 166.536,221.4227 C 166.536,221.4227 166.029,221.4227 165.75,221.2637 C 165.471,221.1017 164.629,220.3047 164.629,220.3047 L 163.955,219.8247 L 163.341,218.9747 C 163.341,218.9747 162.611,217.8117 162.946,216.9047 C 163.281,216.0017 163.843,215.6807 164.35,215.4167 C 164.856,215.1517 165.918,214.8317 165.918,214.8317 C 165.918,214.8317 166.763,214.4607 167.042,214.4047 C 167.321,214.3517 168.334,214.0867 168.334,214.0867 C 168.334,214.0867 168.614,213.9287 168.893,213.8227 C 169.176,213.7167 169.567,213.7167 169.794,213.6607 C 170.017,213.6077 170.58,213.4277 170.915,213.4097 C 171.436,213.3887 172.263,213.5017 172.546,213.5017 C 172.825,213.5017 173.779,213.5577 174.17,213.5577 C 174.561,213.5577 175.964,213.4487 176.359,213.4487 C 176.75,213.4487 177.033,213.3997 177.484,213.4487 C 177.931,213.5017 178.716,213.7657 178.943,213.8757 C 179.167,213.9817 180.515,214.4607 181.018,214.6197 C 181.524,214.7747 182.76,214.9897 183.323,215.2547 C 183.881,215.5227 184.224,215.9707 184.503,216.3437 C 184.786,216.7147 184.838,217.1197 184.95,217.3877 C 185.058,217.6527 185.062,218.2237 184.954,218.4887 C 184.841,218.7527 184.444,219.2997 184.444,219.2997 L 183.825,220.3077 L 183.04,220.9427 C 183.04,220.9427 182.477,221.4787 182.031,221.4227 C 181.58,221.3767 177.033,220.5727 174.114,220.5727 C 171.194,220.5727 166.532,221.4227 166.532,221.4227 L 166.536,221.4227 z " />
-        <path
-           id="path4891"
-           style="font-size:12px;fill:#c8b100"
-           d="M 172.781,214.9087 C 172.781,213.5367 173.395,212.4297 174.151,212.4297 C 174.907,212.4297 175.521,213.5367 175.521,214.9087 C 175.521,216.2737 174.907,217.3847 174.151,217.3847 C 173.395,217.3847 172.781,216.2737 172.781,214.9087" />
-        <path
-           id="path4893"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 172.781,214.9087 C 172.781,213.5367 173.395,212.4297 174.151,212.4297 C 174.907,212.4297 175.521,213.5367 175.521,214.9087 C 175.521,216.2737 174.907,217.3847 174.151,217.3847 C 173.395,217.3847 172.781,216.2737 172.781,214.9087 z " />
-        <path
-           id="path4895"
-           style="font-size:12px;fill:#c8b100"
-           d="M 173.548,214.9087 C 173.548,213.6467 173.831,212.6237 174.177,212.6237 C 174.527,212.6237 174.806,213.6467 174.806,214.9087 C 174.806,216.1607 174.527,217.1837 174.177,217.1837 C 173.831,217.1837 173.548,216.1607 173.548,214.9087" />
-        <path
-           id="path4897"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 173.548,214.9087 C 173.548,213.6467 173.831,212.6237 174.177,212.6237 C 174.527,212.6237 174.806,213.6467 174.806,214.9087 C 174.806,216.1607 174.527,217.1837 174.177,217.1837 C 173.831,217.1837 173.548,216.1607 173.548,214.9087 z " />
-        <path
-           id="path4899"
-           style="font-size:12px;fill:#c8b100"
-           d="M 173.253,212.2887 C 173.253,211.8127 173.663,211.4177 174.17,211.4177 C 174.676,211.4177 175.086,211.8127 175.086,212.2887 C 175.086,212.7677 174.676,213.1527 174.17,213.1527 C 173.663,213.1527 173.253,212.7677 173.253,212.2887" />
-        <path
-           id="path4901"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.817,211.9817 L 174.817,212.5597 L 173.399,212.5597 L 173.399,211.9817 L 173.864,211.9817 L 173.864,210.6807 L 173.25,210.6807 L 173.25,210.1057 L 173.864,210.1057 L 173.864,209.5417 L 174.467,209.5417 L 174.467,210.1057 L 175.078,210.1057 L 175.078,210.6807 L 174.467,210.6807 L 174.467,211.9817 L 174.817,211.9817" />
-        <path
-           id="path4903"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.29716"
-           d="M 174.817,211.9817 L 174.817,212.5597 L 173.399,212.5597 L 173.399,211.9817 L 173.864,211.9817 L 173.864,210.6807 L 173.25,210.6807 L 173.25,210.1057 L 173.864,210.1057 L 173.864,209.5417 L 174.467,209.5417 L 174.467,210.1057 L 175.078,210.1057 L 175.078,210.6807 L 174.467,210.6807 L 174.467,211.9817 L 174.817,211.9817" />
-        <path
-           id="path4905"
-           style="font-size:12px;fill:#c8b100"
-           d="M 175.451,211.9817 L 175.451,212.5597 L 172.933,212.5597 L 172.933,211.9817 L 173.864,211.9817 L 173.864,210.6807 L 173.25,210.6807 L 173.25,210.1057 L 173.864,210.1057 L 173.864,209.5417 L 174.467,209.5417 L 174.467,210.1057 L 175.078,210.1057 L 175.078,210.6807 L 174.467,210.6807 L 174.467,211.9817 L 175.451,211.9817" />
-        <path
-           id="path4907"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.29716"
-           d="M 175.451,211.9817 L 175.451,212.5597 L 172.933,212.5597 L 172.933,211.9817 L 173.864,211.9817 L 173.864,210.6807 L 173.25,210.6807 L 173.25,210.1057 L 173.864,210.1057 L 173.864,209.5417 L 174.467,209.5417 L 174.467,210.1057 L 175.078,210.1057 L 175.078,210.6807 L 174.467,210.6807 L 174.467,211.9817 L 175.451,211.9817" />
-        <path
-           id="path4909"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 174.434,211.4527 C 174.814,211.5587 175.086,211.8937 175.086,212.2887 C 175.086,212.7677 174.676,213.1527 174.17,213.1527 C 173.663,213.1527 173.253,212.7677 173.253,212.2887 C 173.253,211.8867 173.54,211.5447 173.931,211.4487" />
-        <path
-           id="path4911"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.173,221.2637 L 169.399,221.2637 L 169.288,220.0927 L 169.064,218.8727 L 168.826,217.3497 C 167.511,215.6137 166.301,214.4747 165.895,214.7187 C 165.992,214.3977 166.107,214.1577 166.361,214.0097 C 167.53,213.3147 169.943,214.9827 171.757,217.7227 C 171.92,217.9737 172.077,218.2237 172.215,218.4747 L 176.158,218.4747 C 176.3,218.2277 176.456,217.9767 176.62,217.7227 C 178.43,214.9827 180.846,213.3147 182.012,214.0097 C 182.265,214.1577 182.381,214.3977 182.481,214.7187 C 182.072,214.4787 180.865,215.6137 179.543,217.3497 L 179.308,218.8727 L 179.085,220.0927 L 178.976,221.2637 L 174.177,221.2637" />
-        <path
-           id="path4913"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 174.173,221.2637 L 169.399,221.2637 L 169.288,220.0927 L 169.064,218.8727 L 168.826,217.3497 C 167.511,215.6137 166.301,214.4747 165.895,214.7187 C 165.992,214.3977 166.107,214.1577 166.361,214.0097 C 167.53,213.3147 169.943,214.9827 171.757,217.7227 C 171.92,217.9737 172.077,218.2237 172.215,218.4747 L 176.158,218.4747 C 176.3,218.2277 176.456,217.9767 176.62,217.7227 C 178.43,214.9827 180.846,213.3147 182.012,214.0097 C 182.265,214.1577 182.381,214.3977 182.481,214.7187 C 182.072,214.4787 180.865,215.6137 179.543,217.3497 L 179.308,218.8727 L 179.085,220.0927 L 178.976,221.2637 L 174.177,221.2637 L 174.173,221.2637 z " />
-        <path
-           id="path4915"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 166.104,214.6727 C 167.001,214.1437 169.098,215.8047 170.799,218.3857 M 182.269,214.6727 C 181.368,214.1437 179.275,215.8047 177.573,218.3857" />
-        <path
-           id="path4917"
-           style="font-size:12px;fill:#c8b100"
-           d="M 167.12,223.4187 C 166.923,222.8507 166.547,222.3427 166.547,222.3427 C 168.48,221.7747 171.172,221.4187 174.166,221.4117 C 177.156,221.4187 179.871,221.7747 181.8,222.3427 C 181.8,222.3427 181.584,222.7237 181.286,223.2527 C 181.118,223.5457 180.899,224.0567 180.913,224.0567 C 179.167,223.5207 176.918,223.2457 174.151,223.2427 C 171.388,223.2457 168.729,223.5847 167.344,224.0917 C 167.359,224.0917 167.247,223.7717 167.109,223.4187 L 167.12,223.4187" />
-        <path
-           id="path4919"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 167.12,223.4187 C 166.923,222.8507 166.547,222.3427 166.547,222.3427 C 168.48,221.7747 171.172,221.4187 174.166,221.4117 C 177.156,221.4187 179.871,221.7747 181.8,222.3427 C 181.8,222.3427 181.584,222.7237 181.286,223.2527 C 181.118,223.5457 180.899,224.0567 180.913,224.0567 C 179.167,223.5207 176.918,223.2457 174.151,223.2427 C 171.388,223.2457 168.729,223.5847 167.344,224.0917 C 167.359,224.0917 167.247,223.7717 167.109,223.4187 L 167.12,223.4187" />
-        <path
-           id="path4921"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.166,225.8767 C 176.579,225.8727 179.241,225.5067 180.221,225.2527 C 180.88,225.0617 181.263,224.7657 181.193,224.4237 C 181.159,224.2617 181.018,224.1207 180.828,224.0397 C 179.383,223.5777 176.787,223.2497 174.166,223.2457 C 171.548,223.2497 168.934,223.5777 167.493,224.0397 C 167.303,224.1207 167.161,224.2617 167.128,224.4237 C 167.057,224.7657 167.441,225.0617 168.096,225.2527 C 169.079,225.5067 171.753,225.8727 174.166,225.8767" />
-        <path
-           id="path4923"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 174.166,225.8767 C 176.579,225.8727 179.241,225.5067 180.221,225.2527 C 180.88,225.0617 181.263,224.7657 181.193,224.4237 C 181.159,224.2617 181.018,224.1207 180.828,224.0397 C 179.383,223.5777 176.787,223.2497 174.166,223.2457 C 171.548,223.2497 168.934,223.5777 167.493,224.0397 C 167.303,224.1207 167.161,224.2617 167.128,224.4237 C 167.057,224.7657 167.441,225.0617 168.096,225.2527 C 169.079,225.5067 171.753,225.8727 174.166,225.8767 z " />
-        <path
-           id="path4925"
-           style="font-size:12px;fill:#c8b100"
-           d="M 181.923,221.2637 L 181.331,220.7317 C 181.331,220.7317 180.772,221.0767 180.068,220.9707 C 179.368,220.8657 179.141,220.0157 179.141,220.0157 C 179.141,220.0157 178.355,220.6747 177.711,220.6257 C 177.067,220.5687 176.646,220.0157 176.646,220.0157 C 176.646,220.0157 175.946,220.5157 175.328,220.4667 C 174.71,220.4107 174.121,219.6417 174.121,219.6417 C 174.121,219.6417 173.503,220.4387 172.885,220.4947 C 172.267,220.5447 171.76,219.9587 171.76,219.9587 C 171.76,219.9587 171.481,220.5447 170.695,220.6747 C 169.91,220.8087 169.239,220.0647 169.239,220.0647 C 169.239,220.0647 168.789,220.7837 168.256,220.9707 C 167.724,221.1577 167.02,220.7027 167.02,220.7027 C 167.02,220.7027 166.908,220.9707 166.826,221.1297 C 166.741,221.2887 166.517,221.3167 166.517,221.3167 L 166.692,221.7927 C 168.617,221.2357 171.224,220.8897 174.173,220.8867 C 177.126,220.8897 179.804,221.2357 181.733,221.7967 L 181.93,221.2637" />
-        <path
-           id="path4927"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 181.923,221.2637 L 181.331,220.7317 C 181.331,220.7317 180.772,221.0767 180.068,220.9707 C 179.368,220.8657 179.141,220.0157 179.141,220.0157 C 179.141,220.0157 178.355,220.6747 177.711,220.6257 C 177.067,220.5687 176.646,220.0157 176.646,220.0157 C 176.646,220.0157 175.946,220.5157 175.328,220.4667 C 174.71,220.4107 174.121,219.6417 174.121,219.6417 C 174.121,219.6417 173.503,220.4387 172.885,220.4947 C 172.267,220.5447 171.76,219.9587 171.76,219.9587 C 171.76,219.9587 171.481,220.5447 170.695,220.6747 C 169.91,220.8087 169.239,220.0647 169.239,220.0647 C 169.239,220.0647 168.789,220.7837 168.256,220.9707 C 167.724,221.1577 167.02,220.7027 167.02,220.7027 C 167.02,220.7027 166.908,220.9707 166.826,221.1297 C 166.741,221.2887 166.517,221.3167 166.517,221.3167 L 166.692,221.7927 C 168.617,221.2357 171.224,220.8897 174.173,220.8867 C 177.126,220.8897 179.804,221.2357 181.733,221.7967 L 181.93,221.2637 L 181.923,221.2637 z " />
-        <path
-           id="path4929"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.181,218.6927 L 174.46,218.7427 C 174.415,218.8587 174.404,218.9817 174.404,219.1127 C 174.404,219.6907 174.899,220.1597 175.514,220.1597 C 176.005,220.1597 176.419,219.8567 176.564,219.4367 C 176.583,219.4477 176.672,219.0557 176.717,219.0627 C 176.75,219.0627 176.746,219.4687 176.765,219.4617 C 176.832,219.9867 177.316,220.3467 177.86,220.3467 C 178.471,220.3467 178.961,219.8777 178.961,219.2997 C 178.961,219.2567 178.961,219.2147 178.955,219.1727 L 179.301,218.8267 L 179.491,219.2677 C 179.413,219.4017 179.387,219.5567 179.387,219.7227 C 179.387,220.2767 179.86,220.7247 180.44,220.7247 C 180.809,220.7247 181.129,220.5447 181.319,220.2767 L 181.543,219.9947 L 181.539,220.3437 C 181.539,220.6887 181.688,220.9997 182.027,221.0557 C 182.027,221.0557 182.41,221.0837 182.932,220.6747 C 183.446,220.2697 183.729,219.9307 183.729,219.9307 L 183.761,220.3467 C 183.761,220.3467 183.256,221.1787 182.794,221.4437 C 182.544,221.5917 182.156,221.7467 181.852,221.6937 C 181.532,221.6447 181.301,221.3837 181.181,221.0877 C 180.954,221.2247 180.683,221.3027 180.392,221.3027 C 179.766,221.3027 179.204,220.9567 178.981,220.4457 C 178.694,220.7557 178.296,220.9427 177.826,220.9427 C 177.327,220.9427 176.869,220.7207 176.583,220.3717 C 176.3,220.6327 175.916,220.7917 175.495,220.7917 C 174.944,220.7917 174.449,220.5157 174.17,220.1107 C 173.89,220.5157 173.399,220.7917 172.848,220.7917 C 172.427,220.7917 172.043,220.6327 171.76,220.3717 C 171.474,220.7207 171.015,220.9427 170.516,220.9427 C 170.047,220.9427 169.649,220.7557 169.362,220.4457 C 169.139,220.9537 168.576,221.3027 167.951,221.3027 C 167.66,221.3027 167.388,221.2247 167.161,221.0877 C 167.042,221.3837 166.811,221.6447 166.491,221.6937 C 166.186,221.7467 165.802,221.5917 165.549,221.4437 C 165.087,221.1787 164.543,220.3467 164.543,220.3467 L 164.614,219.9307 C 164.614,219.9307 164.901,220.2697 165.411,220.6747 C 165.929,221.0837 166.316,221.0557 166.316,221.0557 C 166.655,220.9997 166.804,220.6887 166.804,220.3437 L 166.8,219.9947 L 167.023,220.2767 C 167.213,220.5447 167.534,220.7247 167.902,220.7247 C 168.483,220.7247 168.956,220.2767 168.956,219.7227 C 168.956,219.5567 168.93,219.4017 168.856,219.2677 L 169.042,218.8267 L 169.388,219.1727 C 169.381,219.2147 169.377,219.2567 169.377,219.2997 C 169.377,219.8777 169.869,220.3467 170.483,220.3467 C 171.027,220.3467 171.507,219.9867 171.578,219.4617 C 171.593,219.4687 171.589,219.0627 171.626,219.0627 C 171.671,219.0557 171.764,219.4477 171.779,219.4367 C 171.924,219.8567 172.341,220.1597 172.833,220.1597 C 173.443,220.1597 173.939,219.6907 173.939,219.1127 C 173.939,218.9817 173.931,218.8587 173.883,218.7427 L 174.173,218.6927" />
-        <path
-           id="path4931"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linejoin:miter"
-           d="M 174.181,218.6927 L 174.46,218.7427 C 174.415,218.8587 174.404,218.9817 174.404,219.1127 C 174.404,219.6907 174.899,220.1597 175.514,220.1597 C 176.005,220.1597 176.419,219.8567 176.564,219.4367 C 176.583,219.4477 176.672,219.0557 176.717,219.0627 C 176.75,219.0627 176.746,219.4687 176.765,219.4617 C 176.832,219.9867 177.316,220.3467 177.86,220.3467 C 178.471,220.3467 178.961,219.8777 178.961,219.2997 C 178.961,219.2567 178.961,219.2147 178.955,219.1727 L 179.301,218.8267 L 179.491,219.2677 C 179.413,219.4017 179.387,219.5567 179.387,219.7227 C 179.387,220.2767 179.86,220.7247 180.44,220.7247 C 180.809,220.7247 181.129,220.5447 181.319,220.2767 L 181.543,219.9947 L 181.539,220.3437 C 181.539,220.6887 181.688,220.9997 182.027,221.0557 C 182.027,221.0557 182.41,221.0837 182.932,220.6747 C 183.446,220.2697 183.729,219.9307 183.729,219.9307 L 183.761,220.3467 C 183.761,220.3467 183.256,221.1787 182.794,221.4437 C 182.544,221.5917 182.156,221.7467 181.852,221.6937 C 181.532,221.6447 181.301,221.3837 181.181,221.0877 C 180.954,221.2247 180.683,221.3027 180.392,221.3027 C 179.766,221.3027 179.204,220.9567 178.981,220.4457 C 178.694,220.7557 178.296,220.9427 177.826,220.9427 C 177.327,220.9427 176.869,220.7207 176.583,220.3717 C 176.3,220.6327 175.916,220.7917 175.495,220.7917 C 174.944,220.7917 174.449,220.5157 174.17,220.1107 C 173.89,220.5157 173.399,220.7917 172.848,220.7917 C 172.427,220.7917 172.043,220.6327 171.76,220.3717 C 171.474,220.7207 171.015,220.9427 170.516,220.9427 C 170.047,220.9427 169.649,220.7557 169.362,220.4457 C 169.139,220.9537 168.576,221.3027 167.951,221.3027 C 167.66,221.3027 167.388,221.2247 167.161,221.0877 C 167.042,221.3837 166.811,221.6447 166.491,221.6937 C 166.186,221.7467 165.802,221.5917 165.549,221.4437 C 165.087,221.1787 164.543,220.3467 164.543,220.3467 L 164.614,219.9307 C 164.614,219.9307 164.901,220.2697 165.411,220.6747 C 165.929,221.0837 166.316,221.0557 166.316,221.0557 C 166.655,220.9997 166.804,220.6887 166.804,220.3437 L 166.8,219.9947 L 167.023,220.2767 C 167.213,220.5447 167.534,220.7247 167.902,220.7247 C 168.483,220.7247 168.956,220.2767 168.956,219.7227 C 168.956,219.5567 168.93,219.4017 168.856,219.2677 L 169.042,218.8267 L 169.388,219.1727 C 169.381,219.2147 169.377,219.2567 169.377,219.2997 C 169.377,219.8777 169.869,220.3467 170.483,220.3467 C 171.027,220.3467 171.507,219.9867 171.578,219.4617 C 171.593,219.4687 171.589,219.0627 171.626,219.0627 C 171.671,219.0557 171.764,219.4477 171.779,219.4367 C 171.924,219.8567 172.341,220.1597 172.833,220.1597 C 173.443,220.1597 173.939,219.6907 173.939,219.1127 C 173.939,218.9817 173.931,218.8587 173.883,218.7427 L 174.173,218.6927 L 174.181,218.6927 z " />
-        <path
-           id="path4933"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.166,221.4157 C 171.172,221.4187 168.48,221.7747 166.551,222.3467 C 166.42,222.3887 166.26,222.2897 166.219,222.1737 C 166.178,222.0507 166.271,221.8987 166.398,221.8567 C 168.338,221.2637 171.097,220.8897 174.166,220.8867 C 177.231,220.8897 180.001,221.2637 181.941,221.8567 C 182.068,221.8987 182.161,222.0507 182.12,222.1737 C 182.083,222.2897 181.919,222.3887 181.792,222.3467 C 179.86,221.7747 177.156,221.4187 174.166,221.4157" />
-        <path
-           id="path4935"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linejoin:round"
-           d="M 174.166,221.4157 C 171.172,221.4187 168.48,221.7747 166.551,222.3467 C 166.42,222.3887 166.26,222.2897 166.219,222.1737 C 166.178,222.0507 166.271,221.8987 166.398,221.8567 C 168.338,221.2637 171.097,220.8897 174.166,220.8867 C 177.231,220.8897 180.001,221.2637 181.941,221.8567 C 182.068,221.8987 182.161,222.0507 182.12,222.1737 C 182.083,222.2897 181.919,222.3887 181.792,222.3467 C 179.86,221.7747 177.156,221.4187 174.166,221.4157 z " />
-        <path
-           id="path4937"
-           style="font-size:12px;fill:#ffffff"
-           d="M 171.269,222.4767 C 171.269,222.2517 171.462,222.0677 171.704,222.0677 C 171.943,222.0677 172.136,222.2517 172.136,222.4767 C 172.136,222.7057 171.943,222.8857 171.704,222.8857 C 171.462,222.8857 171.269,222.7057 171.269,222.4767" />
-        <path
-           id="path4939"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 171.269,222.4767 C 171.269,222.2517 171.462,222.0677 171.704,222.0677 C 171.943,222.0677 172.136,222.2517 172.136,222.4767 C 172.136,222.7057 171.943,222.8857 171.704,222.8857 C 171.462,222.8857 171.269,222.7057 171.269,222.4767 z " />
-        <path
-           id="path4941"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 174.199,222.6537 L 173.239,222.6537 C 173.06,222.6537 172.911,222.5127 172.911,222.3427 C 172.911,222.1767 173.056,222.0397 173.231,222.0397 L 175.182,222.0397 C 175.361,222.0397 175.503,222.1767 175.503,222.3427 C 175.503,222.5127 175.357,222.6537 175.179,222.6537 L 174.199,222.6537" />
-        <path
-           id="path4943"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 174.199,222.6537 L 173.239,222.6537 C 173.06,222.6537 172.911,222.5127 172.911,222.3427 C 172.911,222.1767 173.056,222.0397 173.231,222.0397 L 175.182,222.0397 C 175.361,222.0397 175.503,222.1767 175.503,222.3427 C 175.503,222.5127 175.357,222.6537 175.179,222.6537 L 174.199,222.6537" />
-        <path
-           id="path4945"
-           style="font-size:12px;fill:#058e6e"
-           d="M 169.377,222.9847 L 168.688,223.0867 C 168.513,223.1117 168.342,222.9987 168.316,222.8297 C 168.29,222.6637 168.409,222.5087 168.584,222.4837 L 169.276,222.3817 L 169.984,222.2727 C 170.159,222.2517 170.323,222.3607 170.353,222.5267 C 170.375,222.6917 170.256,222.8507 170.081,222.8757 L 169.377,222.9847" />
-        <path
-           id="path4947"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 169.377,222.9847 L 168.688,223.0867 C 168.513,223.1117 168.342,222.9987 168.316,222.8297 C 168.29,222.6637 168.409,222.5087 168.584,222.4837 L 169.276,222.3817 L 169.984,222.2727 C 170.159,222.2517 170.323,222.3607 170.353,222.5267 C 170.375,222.6917 170.256,222.8507 170.081,222.8757 L 169.377,222.9847" />
-        <path
-           id="path4949"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 166.595,223.4677 L 166.901,222.9747 L 167.552,223.0977 L 167.172,223.6517 L 166.595,223.4677" />
-        <path
-           id="path4951"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 166.595,223.4677 L 166.901,222.9747 L 167.552,223.0977 L 167.172,223.6517 L 166.595,223.4677" />
-        <path
-           id="path4953"
-           style="font-size:12px;fill:#ffffff"
-           d="M 176.199,222.4767 C 176.199,222.2517 176.393,222.0677 176.635,222.0677 C 176.873,222.0677 177.067,222.2517 177.067,222.4767 C 177.067,222.7057 176.873,222.8857 176.635,222.8857 C 176.393,222.8857 176.199,222.7057 176.199,222.4767" />
-        <path
-           id="path4955"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 176.199,222.4767 C 176.199,222.2517 176.393,222.0677 176.635,222.0677 C 176.873,222.0677 177.067,222.2517 177.067,222.4767 C 177.067,222.7057 176.873,222.8857 176.635,222.8857 C 176.393,222.8857 176.199,222.7057 176.199,222.4767 z " />
-        <path
-           id="path4957"
-           style="font-size:12px;fill:#058e6e"
-           d="M 178.958,222.9847 L 179.651,223.0867 C 179.826,223.1117 179.99,222.9987 180.02,222.8297 C 180.046,222.6637 179.93,222.5087 179.755,222.4837 L 179.059,222.3817 L 178.355,222.2727 C 178.176,222.2517 178.013,222.3607 177.986,222.5267 C 177.957,222.6917 178.08,222.8507 178.258,222.8757 L 178.958,222.9847" />
-        <path
-           id="path4959"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 178.958,222.9847 L 179.651,223.0867 C 179.826,223.1117 179.99,222.9987 180.02,222.8297 C 180.046,222.6637 179.93,222.5087 179.755,222.4837 L 179.059,222.3817 L 178.355,222.2727 C 178.176,222.2517 178.013,222.3607 177.986,222.5267 C 177.957,222.6917 178.08,222.8507 178.258,222.8757 L 178.958,222.9847" />
-        <path
-           id="path4961"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 181.684,223.4957 L 181.438,222.9707 L 180.768,223.0267 L 181.088,223.6157 L 181.684,223.4957" />
-        <path
-           id="path4963"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 181.684,223.4957 L 181.438,222.9707 L 180.768,223.0267 L 181.088,223.6157 L 181.684,223.4957" />
-        <path
-           id="path4965"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 174.158,225.3157 C 171.742,225.3127 169.556,225.1007 167.895,224.6707 C 169.556,224.2437 171.742,223.9797 174.158,223.9727 C 176.575,223.9757 178.772,224.2407 180.437,224.6707 C 178.772,225.1007 176.575,225.3127 174.158,225.3157" />
-        <path
-           id="path4967"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linejoin:round"
-           d="M 174.158,225.3157 C 171.742,225.3127 169.556,225.1007 167.895,224.6707 C 169.556,224.2437 171.742,223.9797 174.158,223.9727 C 176.575,223.9757 178.772,224.2407 180.437,224.6707 C 178.772,225.1007 176.575,225.3127 174.158,225.3157 z " />
-        <path
-           id="path4969"
-           style="font-size:12px;fill:#c8b100"
-           d="M 181.781,220.0757 C 181.844,219.8887 181.785,219.7047 181.651,219.6587 C 181.517,219.6207 181.353,219.7407 181.29,219.9197 C 181.226,220.1107 181.282,220.2977 181.42,220.3397 C 181.554,220.3787 181.714,220.2627 181.781,220.0757" />
-        <path
-           id="path4971"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 181.781,220.0757 C 181.844,219.8887 181.785,219.7047 181.651,219.6587 C 181.517,219.6207 181.353,219.7407 181.29,219.9197 C 181.226,220.1107 181.282,220.2977 181.42,220.3397 C 181.554,220.3787 181.714,220.2627 181.781,220.0757 z " />
-        <path
-           id="path4973"
-           style="font-size:12px;fill:#c8b100"
-           d="M 176.97,219.1447 C 176.992,218.9507 176.899,218.7777 176.758,218.7597 C 176.616,218.7427 176.482,218.8907 176.46,219.0847 C 176.434,219.2787 176.527,219.4507 176.668,219.4687 C 176.81,219.4827 176.944,219.3347 176.97,219.1447" />
-        <path
-           id="path4975"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 176.97,219.1447 C 176.992,218.9507 176.899,218.7777 176.758,218.7597 C 176.616,218.7427 176.482,218.8907 176.46,219.0847 C 176.434,219.2787 176.527,219.4507 176.668,219.4687 C 176.81,219.4827 176.944,219.3347 176.97,219.1447 z " />
-        <path
-           id="path4977"
-           style="font-size:12px;fill:#c8b100"
-           d="M 171.38,219.1447 C 171.358,218.9507 171.451,218.7777 171.593,218.7597 C 171.734,218.7427 171.868,218.8907 171.894,219.0847 C 171.917,219.2787 171.824,219.4507 171.682,219.4687 C 171.544,219.4827 171.406,219.3347 171.38,219.1447" />
-        <path
-           id="path4979"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 171.38,219.1447 C 171.358,218.9507 171.451,218.7777 171.593,218.7597 C 171.734,218.7427 171.868,218.8907 171.894,219.0847 C 171.917,219.2787 171.824,219.4507 171.682,219.4687 C 171.544,219.4827 171.406,219.3347 171.38,219.1447 z " />
-        <path
-           id="path4981"
-           style="font-size:12px;fill:#c8b100"
-           d="M 166.569,220.0757 C 166.506,219.8887 166.565,219.7047 166.7,219.6587 C 166.834,219.6207 166.997,219.7407 167.061,219.9197 C 167.124,220.1107 167.068,220.2977 166.93,220.3397 C 166.796,220.3787 166.636,220.2627 166.569,220.0757" />
-        <path
-           id="path4983"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 166.569,220.0757 C 166.506,219.8887 166.565,219.7047 166.7,219.6587 C 166.834,219.6207 166.997,219.7407 167.061,219.9197 C 167.124,220.1107 167.068,220.2977 166.93,220.3397 C 166.796,220.3787 166.636,220.2627 166.569,220.0757 z " />
-        <path
-           id="path4985"
-           style="font-size:12px;fill:#c8b100"
-           d="M 174.158,216.3657 L 173.306,216.8797 L 173.939,218.2517 L 174.158,218.3967 L 174.374,218.2517 L 175.011,216.8797 L 174.158,216.3657" />
-        <path
-           id="path4987"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 174.158,216.3657 L 173.306,216.8797 L 173.939,218.2517 L 174.158,218.3967 L 174.374,218.2517 L 175.011,216.8797 L 174.158,216.3657" />
-        <path
-           id="path4989"
-           style="font-size:12px;fill:#c8b100"
-           d="M 172.293,218.4387 L 172.68,219.0037 L 174.013,218.5937 L 174.151,218.4077 L 174.009,218.2167 L 172.68,217.8287 L 172.293,218.4387" />
-        <path
-           id="path4991"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 172.293,218.4387 L 172.68,219.0037 L 174.013,218.5937 L 174.151,218.4077 L 174.009,218.2167 L 172.68,217.8287 L 172.293,218.4387" />
-        <path
-           id="path4993"
-           style="font-size:12px;fill:#c8b100"
-           d="M 176.035,218.4387 L 175.648,219.0037 L 174.315,218.5937 L 174.173,218.4077 L 174.318,218.2167 L 175.648,217.8287 L 176.035,218.4387" />
-        <path
-           id="path4995"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 176.035,218.4387 L 175.648,219.0037 L 174.315,218.5937 L 174.173,218.4077 L 174.318,218.2167 L 175.648,217.8287 L 176.035,218.4387" />
-        <path
-           id="path4997"
-           style="font-size:12px;fill:#c8b100"
-           d="M 168.617,216.9757 L 167.947,217.6067 L 168.803,218.7357 L 169.031,218.8267 L 169.198,218.6537 L 169.496,217.2897 L 168.617,216.9757" />
-        <path
-           id="path4999"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 168.617,216.9757 L 167.947,217.6067 L 168.803,218.7357 L 169.031,218.8267 L 169.198,218.6537 L 169.496,217.2897 L 168.617,216.9757" />
-        <path
-           id="path5001"
-           style="font-size:12px;fill:#c8b100"
-           d="M 167.213,219.2397 L 167.716,219.7117 L 168.93,219.0557 L 169.023,218.8447 L 168.848,218.6857 L 167.459,218.5657 L 167.213,219.2397" />
-        <path
-           id="path5003"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 167.213,219.2397 L 167.716,219.7117 L 168.93,219.0557 L 169.023,218.8447 L 168.848,218.6857 L 167.459,218.5657 L 167.213,219.2397" />
-        <path
-           id="path5005"
-           style="font-size:12px;fill:#c8b100"
-           d="M 170.878,218.5027 L 170.621,219.1267 L 169.228,218.9997 L 169.049,218.8407 L 169.146,218.6257 L 170.364,217.9837 L 170.878,218.5027" />
-        <path
-           id="path5007"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 170.878,218.5027 L 170.621,219.1267 L 169.228,218.9997 L 169.049,218.8407 L 169.146,218.6257 L 170.364,217.9837 L 170.878,218.5027" />
-        <path
-           id="path5009"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.873,219.4157 L 165.761,220.0757 L 164.372,220.2197 L 164.164,220.0997 L 164.208,219.8747 L 165.255,219.0067 L 165.873,219.4157" />
-        <path
-           id="path5011"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 165.873,219.4157 L 165.761,220.0757 L 164.372,220.2197 L 164.164,220.0997 L 164.208,219.8747 L 165.255,219.0067 L 165.873,219.4157" />
-        <path
-           id="path5013"
-           style="font-size:12px;fill:#c8b100"
-           d="M 168.554,218.8477 C 168.554,218.5907 168.774,218.3827 169.042,218.3827 C 169.31,218.3827 169.53,218.5907 169.53,218.8477 C 169.53,219.1017 169.31,219.3097 169.042,219.3097 C 168.774,219.3097 168.554,219.1017 168.554,218.8477" />
-        <path
-           id="path5015"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 168.554,218.8477 C 168.554,218.5907 168.774,218.3827 169.042,218.3827 C 169.31,218.3827 169.53,218.5907 169.53,218.8477 C 169.53,219.1017 169.31,219.3097 169.042,219.3097 C 168.774,219.3097 168.554,219.1017 168.554,218.8477 z " />
-        <path
-           id="path5017"
-           style="font-size:12px;fill:#c8b100"
-           d="M 179.726,216.9757 L 180.396,217.6067 L 179.539,218.7357 L 179.308,218.8267 L 179.145,218.6537 L 178.843,217.2897 L 179.726,216.9757" />
-        <path
-           id="path5019"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 179.726,216.9757 L 180.396,217.6067 L 179.539,218.7357 L 179.308,218.8267 L 179.145,218.6537 L 178.843,217.2897 L 179.726,216.9757" />
-        <path
-           id="path5021"
-           style="font-size:12px;fill:#c8b100"
-           d="M 181.126,219.2397 L 180.623,219.7117 L 179.409,219.0557 L 179.312,218.8447 L 179.495,218.6857 L 180.884,218.5657 L 181.126,219.2397" />
-        <path
-           id="path5023"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 181.126,219.2397 L 180.623,219.7117 L 179.409,219.0557 L 179.312,218.8447 L 179.495,218.6857 L 180.884,218.5657 L 181.126,219.2397" />
-        <path
-           id="path5025"
-           style="font-size:12px;fill:#c8b100"
-           d="M 177.465,218.5027 L 177.722,219.1267 L 179.107,218.9997 L 179.29,218.8407 L 179.189,218.6257 L 177.975,217.9837 L 177.465,218.5027" />
-        <path
-           id="path5027"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 177.465,218.5027 L 177.722,219.1267 L 179.107,218.9997 L 179.29,218.8407 L 179.189,218.6257 L 177.975,217.9837 L 177.465,218.5027" />
-        <path
-           id="path5029"
-           style="font-size:12px;fill:#c8b100"
-           d="M 182.276,219.4157 L 182.392,220.0757 L 183.781,220.2197 L 183.989,220.0997 L 183.941,219.8747 L 182.895,219.0067 L 182.276,219.4157" />
-        <path
-           id="path5031"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 182.276,219.4157 L 182.392,220.0757 L 183.781,220.2197 L 183.989,220.0997 L 183.941,219.8747 L 182.895,219.0067 L 182.276,219.4157" />
-        <path
-           id="path5033"
-           style="font-size:12px;fill:#c8b100"
-           d="M 173.678,218.4107 C 173.678,218.1497 173.898,217.9457 174.166,217.9457 C 174.438,217.9457 174.654,218.1497 174.654,218.4107 C 174.654,218.6647 174.438,218.8727 174.166,218.8727 C 173.898,218.8727 173.678,218.6647 173.678,218.4107" />
-        <path
-           id="path5035"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 173.678,218.4107 C 173.678,218.1497 173.898,217.9457 174.166,217.9457 C 174.438,217.9457 174.654,218.1497 174.654,218.4107 C 174.654,218.6647 174.438,218.8727 174.166,218.8727 C 173.898,218.8727 173.678,218.6647 173.678,218.4107 z " />
-        <path
-           id="path5037"
-           style="font-size:12px;fill:#c8b100"
-           d="M 178.821,218.8477 C 178.821,218.5907 179.04,218.3827 179.308,218.3827 C 179.58,218.3827 179.796,218.5907 179.796,218.8477 C 179.796,219.1017 179.58,219.3097 179.308,219.3097 C 179.04,219.3097 178.821,219.1017 178.821,218.8477" />
-        <path
-           id="path5039"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 178.821,218.8477 C 178.821,218.5907 179.04,218.3827 179.308,218.3827 C 179.58,218.3827 179.796,218.5907 179.796,218.8477 C 179.796,219.1017 179.58,219.3097 179.308,219.3097 C 179.04,219.3097 178.821,219.1017 178.821,218.8477 z " />
-        <path
-           id="path5041"
-           style="font-size:12px;fill:#c8b100"
-           d="M 163.996,220.1877 C 163.981,220.1987 163.62,219.7087 163.344,219.4617 C 163.147,219.2887 162.674,219.1407 162.674,219.1407 C 162.674,219.0527 162.95,218.8547 163.251,218.8547 C 163.43,218.8547 163.598,218.9287 163.694,219.0527 L 163.735,218.8617 C 163.735,218.8617 163.977,218.9077 164.089,219.1797 C 164.201,219.4617 164.13,219.8887 164.13,219.8887 C 164.13,219.8887 164.085,220.0857 163.996,220.1877" />
-        <path
-           id="path5043"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 163.996,220.1877 C 163.981,220.1987 163.62,219.7087 163.344,219.4617 C 163.147,219.2887 162.674,219.1407 162.674,219.1407 C 162.674,219.0527 162.95,218.8547 163.251,218.8547 C 163.43,218.8547 163.598,218.9287 163.694,219.0527 L 163.735,218.8617 C 163.735,218.8617 163.977,218.9077 164.089,219.1797 C 164.201,219.4617 164.13,219.8887 164.13,219.8887 C 164.13,219.8887 164.085,220.0857 163.996,220.1877 z " />
-        <path
-           id="path5045"
-           style="font-size:12px;fill:#c8b100"
-           d="M 164.015,219.9447 C 164.13,219.8247 164.368,219.8497 164.543,220.0017 C 164.722,220.1527 164.774,220.3747 164.659,220.4987 C 164.543,220.6217 164.305,220.5937 164.13,220.4417 C 163.951,220.2907 163.899,220.0647 164.015,219.9447" />
-        <path
-           id="path5047"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 164.015,219.9447 C 164.13,219.8247 164.368,219.8497 164.543,220.0017 C 164.722,220.1527 164.774,220.3747 164.659,220.4987 C 164.543,220.6217 164.305,220.5937 164.13,220.4417 C 163.951,220.2907 163.899,220.0647 164.015,219.9447 z " />
-        <path
-           id="path5049"
-           style="font-size:12px;fill:#c8b100"
-           d="M 184.157,220.1877 C 184.168,220.1987 184.533,219.7087 184.809,219.4617 C 184.998,219.2887 185.479,219.1407 185.479,219.1407 C 185.479,219.0527 185.2,218.8547 184.898,218.8547 C 184.723,218.8547 184.555,218.9287 184.455,219.0527 L 184.414,218.8617 C 184.414,218.8617 184.172,218.9077 184.06,219.1797 C 183.952,219.4617 184.023,219.8887 184.023,219.8887 C 184.023,219.8887 184.064,220.0857 184.157,220.1877" />
-        <path
-           id="path5051"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 184.157,220.1877 C 184.168,220.1987 184.533,219.7087 184.809,219.4617 C 184.998,219.2887 185.479,219.1407 185.479,219.1407 C 185.479,219.0527 185.2,218.8547 184.898,218.8547 C 184.723,218.8547 184.555,218.9287 184.455,219.0527 L 184.414,218.8617 C 184.414,218.8617 184.172,218.9077 184.06,219.1797 C 183.952,219.4617 184.023,219.8887 184.023,219.8887 C 184.023,219.8887 184.064,220.0857 184.157,220.1877 z " />
-        <path
-           id="path5053"
-           style="font-size:12px;fill:#c8b100"
-           d="M 184.168,219.9447 C 184.053,219.8247 183.814,219.8497 183.636,220.0017 C 183.457,220.1527 183.405,220.3747 183.52,220.4987 C 183.636,220.6217 183.874,220.5937 184.053,220.4417 C 184.231,220.2907 184.28,220.0647 184.168,219.9447" />
-        <path
-           id="path5055"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 184.168,219.9447 C 184.053,219.8247 183.814,219.8497 183.636,220.0017 C 183.457,220.1527 183.405,220.3747 183.52,220.4987 C 183.636,220.6217 183.874,220.5937 184.053,220.4417 C 184.231,220.2907 184.28,220.0647 184.168,219.9447 z " />
-        <path
-           id="path5057"
-           style="font-size:12px;fill:#c8b100"
-           d="M 163.151,231.4807 L 185.285,231.4807 L 185.285,225.6787 L 163.151,225.6787 L 163.151,231.4807 z " />
-        <path
-           id="path5059"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 163.151,231.4807 L 185.285,231.4807 L 185.285,225.6787 L 163.151,225.6787 L 163.151,231.4807 z " />
-        <path
-           id="path5061"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.474,235.3417 C 165.612,235.2857 165.713,235.2787 165.884,235.2787 L 182.459,235.2787 C 182.623,235.2787 182.779,235.3067 182.909,235.3597 C 182.343,235.1697 181.934,234.6547 181.934,234.0477 C 181.934,233.4417 182.377,232.9157 182.95,232.7187 C 182.82,232.7607 182.626,232.7997 182.47,232.7997 L 165.884,232.7997 C 165.716,232.7997 165.556,232.7927 165.419,232.7467 L 165.508,232.7607 C 166.1,232.9437 166.439,233.4697 166.439,234.0477 C 166.439,234.6047 166.063,235.1627 165.474,235.3417" />
-        <path
-           id="path5063"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 165.474,235.3417 C 165.612,235.2857 165.713,235.2787 165.884,235.2787 L 182.459,235.2787 C 182.623,235.2787 182.779,235.3067 182.909,235.3597 C 182.343,235.1697 181.934,234.6547 181.934,234.0477 C 181.934,233.4417 182.377,232.9157 182.95,232.7187 C 182.82,232.7607 182.626,232.7997 182.47,232.7997 L 165.884,232.7997 C 165.716,232.7997 165.556,232.7927 165.419,232.7467 L 165.508,232.7607 C 166.1,232.9437 166.439,233.4697 166.439,234.0477 C 166.439,234.6047 166.063,235.1627 165.474,235.3417 z " />
-        <path
-           id="path5065"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.884,235.2787 L 182.459,235.2787 C 183.021,235.2787 183.475,235.6277 183.475,236.0547 C 183.475,236.4847 183.021,236.8337 182.459,236.8337 L 165.884,236.8337 C 165.322,236.8337 164.867,236.4847 164.867,236.0547 C 164.867,235.6277 165.322,235.2787 165.884,235.2787" />
-        <path
-           id="path5067"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 165.884,235.2787 L 182.459,235.2787 C 183.021,235.2787 183.475,235.6277 183.475,236.0547 C 183.475,236.4847 183.021,236.8337 182.459,236.8337 L 165.884,236.8337 C 165.322,236.8337 164.867,236.4847 164.867,236.0547 C 164.867,235.6277 165.322,235.2787 165.884,235.2787 z " />
-        <path
-           id="path5069"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.884,231.4807 L 182.47,231.4807 C 183.029,231.4807 183.487,231.7767 183.487,232.1367 C 183.487,232.5027 183.029,232.7997 182.47,232.7997 L 165.884,232.7997 C 165.322,232.7997 164.867,232.5027 164.867,232.1367 C 164.867,231.7767 165.322,231.4807 165.884,231.4807" />
-        <path
-           id="path5071"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 165.884,231.4807 L 182.47,231.4807 C 183.029,231.4807 183.487,231.7767 183.487,232.1367 C 183.487,232.5027 183.029,232.7997 182.47,232.7997 L 165.884,232.7997 C 165.322,232.7997 164.867,232.5027 164.867,232.1367 C 164.867,231.7767 165.322,231.4807 165.884,231.4807 z " />
-        <path
-           id="path5073"
-           style="font-size:12px;fill:#005bbf"
-           d="M 189.668,329.1147 C 188.138,329.1147 186.775,328.7937 185.769,328.2577 C 184.771,327.7497 183.42,327.4397 181.93,327.4397 C 180.433,327.4397 179.048,327.7537 178.05,328.2647 C 177.048,328.7907 175.663,329.1147 174.151,329.1147 C 172.62,329.1147 171.258,328.7587 170.252,328.2227 C 169.262,327.7357 167.936,327.4397 166.484,327.4397 C 164.983,327.4397 163.65,327.7257 162.652,328.2437 C 161.646,328.7767 160.254,329.1147 158.727,329.1147 L 158.727,331.5127 C 160.254,331.5127 161.646,331.1637 162.652,330.6347 C 163.65,330.1197 164.983,329.8277 166.484,329.8277 C 167.932,329.8277 169.258,330.1267 170.252,330.6177 C 171.254,331.1497 172.62,331.5127 174.151,331.5127 C 175.663,331.5127 177.048,331.1817 178.05,330.6597 C 179.048,330.1417 180.433,329.8277 181.93,329.8277 C 183.42,329.8277 184.771,330.1417 185.769,330.6527 C 186.775,331.1887 188.115,331.5127 189.65,331.5127 L 189.668,329.1147" />
-        <path
-           id="path5075"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 189.668,329.1147 C 188.138,329.1147 186.775,328.7937 185.769,328.2577 C 184.771,327.7497 183.42,327.4397 181.93,327.4397 C 180.433,327.4397 179.048,327.7537 178.05,328.2647 C 177.048,328.7907 175.663,329.1147 174.151,329.1147 C 172.62,329.1147 171.258,328.7587 170.252,328.2227 C 169.262,327.7357 167.936,327.4397 166.484,327.4397 C 164.983,327.4397 163.65,327.7257 162.652,328.2437 C 161.646,328.7767 160.254,329.1147 158.727,329.1147 L 158.727,331.5127 C 160.254,331.5127 161.646,331.1637 162.652,330.6347 C 163.65,330.1197 164.983,329.8277 166.484,329.8277 C 167.932,329.8277 169.258,330.1267 170.252,330.6177 C 171.254,331.1497 172.62,331.5127 174.151,331.5127 C 175.663,331.5127 177.048,331.1817 178.05,330.6597 C 179.048,330.1417 180.433,329.8277 181.93,329.8277 C 183.42,329.8277 184.771,330.1417 185.769,330.6527 C 186.775,331.1887 188.115,331.5127 189.65,331.5127 L 189.668,329.1147 z " />
-        <path
-           id="path5077"
-           style="font-size:12px;fill:#cccccc"
-           d="M 189.668,331.5127 C 188.138,331.5127 186.775,331.1887 185.769,330.6527 C 184.771,330.1417 183.42,329.8277 181.93,329.8277 C 180.433,329.8277 179.048,330.1417 178.05,330.6597 C 177.048,331.1817 175.663,331.5127 174.151,331.5127 C 172.62,331.5127 171.258,331.1497 170.252,330.6177 C 169.262,330.1267 167.936,329.8277 166.484,329.8277 C 164.983,329.8277 163.65,330.1197 162.652,330.6347 C 161.646,331.1637 160.254,331.5127 158.727,331.5127 L 158.727,333.9037 C 160.254,333.9037 161.646,333.5617 162.652,333.0327 C 163.65,332.5107 164.983,332.2217 166.484,332.2217 C 167.932,332.2217 169.258,332.5217 170.252,333.0117 C 171.254,333.5447 172.62,333.9037 174.151,333.9037 C 175.663,333.9037 177.048,333.5727 178.05,333.0507 C 179.048,332.5357 180.433,332.2217 181.93,332.2217 C 183.42,332.2217 184.771,332.5357 185.769,333.0467 C 186.775,333.5797 188.115,333.9037 189.65,333.9037 L 189.668,331.5127" />
-        <path
-           id="path5079"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 189.668,331.5127 C 188.138,331.5127 186.775,331.1887 185.769,330.6527 C 184.771,330.1417 183.42,329.8277 181.93,329.8277 C 180.433,329.8277 179.048,330.1417 178.05,330.6597 C 177.048,331.1817 175.663,331.5127 174.151,331.5127 C 172.62,331.5127 171.258,331.1497 170.252,330.6177 C 169.262,330.1267 167.936,329.8277 166.484,329.8277 C 164.983,329.8277 163.65,330.1197 162.652,330.6347 C 161.646,331.1637 160.254,331.5127 158.727,331.5127 L 158.727,333.9037 C 160.254,333.9037 161.646,333.5617 162.652,333.0327 C 163.65,332.5107 164.983,332.2217 166.484,332.2217 C 167.932,332.2217 169.258,332.5217 170.252,333.0117 C 171.254,333.5447 172.62,333.9037 174.151,333.9037 C 175.663,333.9037 177.048,333.5727 178.05,333.0507 C 179.048,332.5357 180.433,332.2217 181.93,332.2217 C 183.42,332.2217 184.771,332.5357 185.769,333.0467 C 186.775,333.5797 188.115,333.9037 189.65,333.9037 L 189.668,331.5127" />
-        <path
-           id="path5081"
-           style="font-size:12px;fill:#005bbf"
-           d="M 189.668,333.9037 C 188.138,333.9037 186.775,333.5797 185.769,333.0467 C 184.771,332.5357 183.42,332.2217 181.93,332.2217 C 180.433,332.2217 179.048,332.5357 178.05,333.0507 C 177.048,333.5727 175.663,333.9037 174.151,333.9037 C 172.62,333.9037 171.258,333.5447 170.252,333.0117 C 169.262,332.5217 167.936,332.2217 166.484,332.2217 C 164.983,332.2217 163.65,332.5107 162.652,333.0327 C 161.646,333.5617 160.254,333.9037 158.727,333.9037 L 158.727,336.2947 C 160.254,336.2947 161.646,335.9527 162.652,335.4207 C 163.65,334.9057 164.983,334.6167 166.484,334.6167 C 167.932,334.6167 169.258,334.9167 170.252,335.4027 C 171.254,335.9387 172.62,336.2947 174.151,336.2947 C 175.663,336.2947 177.048,335.9677 178.05,335.4457 C 179.048,334.9307 180.433,334.6167 181.93,334.6167 C 183.42,334.6167 184.771,334.9267 185.769,335.4387 C 186.775,335.9777 188.115,336.2947 189.65,336.2947 L 189.668,333.9037" />
-        <path
-           id="path5083"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 189.668,333.9037 C 188.138,333.9037 186.775,333.5797 185.769,333.0467 C 184.771,332.5357 183.42,332.2217 181.93,332.2217 C 180.433,332.2217 179.048,332.5357 178.05,333.0507 C 177.048,333.5727 175.663,333.9037 174.151,333.9037 C 172.62,333.9037 171.258,333.5447 170.252,333.0117 C 169.262,332.5217 167.936,332.2217 166.484,332.2217 C 164.983,332.2217 163.65,332.5107 162.652,333.0327 C 161.646,333.5617 160.254,333.9037 158.727,333.9037 L 158.727,336.2947 C 160.254,336.2947 161.646,335.9527 162.652,335.4207 C 163.65,334.9057 164.983,334.6167 166.484,334.6167 C 167.932,334.6167 169.258,334.9167 170.252,335.4027 C 171.254,335.9387 172.62,336.2947 174.151,336.2947 C 175.663,336.2947 177.048,335.9677 178.05,335.4457 C 179.048,334.9307 180.433,334.6167 181.93,334.6167 C 183.42,334.6167 184.771,334.9267 185.769,335.4387 C 186.775,335.9777 188.115,336.2947 189.65,336.2947 L 189.668,333.9037" />
-        <path
-           id="path5085"
-           style="font-size:12px;fill:#cccccc"
-           d="M 189.65,338.6897 C 188.115,338.6897 186.775,338.3657 185.769,337.8297 C 184.771,337.3217 183.42,337.0107 181.93,337.0107 C 180.433,337.0107 179.048,337.3217 178.05,337.8367 C 177.048,338.3587 175.663,338.6897 174.151,338.6897 C 172.62,338.6897 171.258,338.3297 170.252,337.7937 C 169.262,337.3077 167.936,337.0107 166.484,337.0107 C 164.983,337.0107 163.65,337.3007 162.652,337.8147 C 161.646,338.3477 160.254,338.6897 158.727,338.6897 L 158.727,336.3097 C 160.254,336.3097 161.646,335.9527 162.652,335.4207 C 163.65,334.9057 164.983,334.6167 166.484,334.6167 C 167.932,334.6167 169.258,334.9167 170.252,335.4027 C 171.254,335.9387 172.62,336.2947 174.151,336.2947 C 175.663,336.2947 177.048,335.9677 178.05,335.4457 C 179.048,334.9307 180.433,334.6167 181.93,334.6167 C 183.42,334.6167 184.771,334.9267 185.769,335.4387 C 186.775,335.9777 188.138,336.2947 189.668,336.2947 L 189.65,338.6897" />
-        <path
-           id="path5087"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 189.65,338.6897 C 188.115,338.6897 186.775,338.3657 185.769,337.8297 C 184.771,337.3217 183.42,337.0107 181.93,337.0107 C 180.433,337.0107 179.048,337.3217 178.05,337.8367 C 177.048,338.3587 175.663,338.6897 174.151,338.6897 C 172.62,338.6897 171.258,338.3297 170.252,337.7937 C 169.262,337.3077 167.936,337.0107 166.484,337.0107 C 164.983,337.0107 163.65,337.3007 162.652,337.8147 C 161.646,338.3477 160.254,338.6897 158.727,338.6897 L 158.727,336.3097 C 160.254,336.3097 161.646,335.9527 162.652,335.4207 C 163.65,334.9057 164.983,334.6167 166.484,334.6167 C 167.932,334.6167 169.258,334.9167 170.252,335.4027 C 171.254,335.9387 172.62,336.2947 174.151,336.2947 C 175.663,336.2947 177.048,335.9677 178.05,335.4457 C 179.048,334.9307 180.433,334.6167 181.93,334.6167 C 183.42,334.6167 184.771,334.9267 185.769,335.4387 C 186.775,335.9777 188.138,336.2947 189.668,336.2947 L 189.65,338.6897" />
-        <path
-           id="path5089"
-           style="font-size:12px;fill:#005bbf"
-           d="M 189.65,341.0847 C 188.115,341.0847 186.775,340.7597 185.769,340.2277 C 184.771,339.7127 183.42,339.3987 181.93,339.3987 C 180.433,339.3987 179.048,339.7157 178.05,340.2307 C 177.048,340.7527 175.663,341.0847 174.151,341.0847 C 172.62,341.0847 171.258,340.7207 170.252,340.1887 C 169.262,339.6987 167.936,339.3987 166.484,339.3987 C 164.983,339.3987 163.65,339.6917 162.652,340.2097 C 161.646,340.7387 160.254,341.0847 158.727,341.0847 L 158.727,338.7107 C 160.254,338.7107 161.646,338.3477 162.652,337.8147 C 163.65,337.3007 164.983,337.0147 166.484,337.0147 C 167.932,337.0147 169.258,337.3107 170.252,337.7977 C 171.254,338.3297 172.62,338.6897 174.151,338.6897 C 175.663,338.6897 177.048,338.3587 178.05,337.8367 C 179.048,337.3217 180.433,337.0147 181.93,337.0147 C 183.42,337.0147 184.771,337.3217 185.769,337.8327 C 186.775,338.3657 188.13,338.6897 189.664,338.6897 L 189.65,341.0847" />
-        <path
-           id="path5091"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 189.65,341.0847 C 188.115,341.0847 186.775,340.7597 185.769,340.2277 C 184.771,339.7127 183.42,339.3987 181.93,339.3987 C 180.433,339.3987 179.048,339.7157 178.05,340.2307 C 177.048,340.7527 175.663,341.0847 174.151,341.0847 C 172.62,341.0847 171.258,340.7207 170.252,340.1887 C 169.262,339.6987 167.936,339.3987 166.484,339.3987 C 164.983,339.3987 163.65,339.6917 162.652,340.2097 C 161.646,340.7387 160.254,341.0847 158.727,341.0847 L 158.727,338.7107 C 160.254,338.7107 161.646,338.3477 162.652,337.8147 C 163.65,337.3007 164.983,337.0147 166.484,337.0147 C 167.932,337.0147 169.258,337.3107 170.252,337.7977 C 171.254,338.3297 172.62,338.6897 174.151,338.6897 C 175.663,338.6897 177.048,338.3587 178.05,337.8367 C 179.048,337.3217 180.433,337.0147 181.93,337.0147 C 183.42,337.0147 184.771,337.3217 185.769,337.8327 C 186.775,338.3657 188.13,338.6897 189.664,338.6897 L 189.65,341.0847 z " />
-        <path
-           id="path5093"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.474,319.2897 C 165.527,319.4907 165.601,319.6887 165.601,319.9037 C 165.601,321.3567 164.346,322.5127 162.812,322.5127 L 185.591,322.5127 C 184.056,322.5127 182.801,321.3567 182.801,319.9037 C 182.801,319.6917 182.842,319.4907 182.895,319.2897 C 182.764,319.3357 182.608,319.3427 182.459,319.3427 L 165.884,319.3427 C 165.75,319.3427 165.594,319.3287 165.474,319.2897" />
-        <path
-           id="path5095"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 165.474,319.2897 C 165.527,319.4907 165.601,319.6887 165.601,319.9037 C 165.601,321.3567 164.346,322.5127 162.812,322.5127 L 185.591,322.5127 C 184.056,322.5127 182.801,321.3567 182.801,319.9037 C 182.801,319.6917 182.842,319.4907 182.895,319.2897 C 182.764,319.3357 182.608,319.3427 182.459,319.3427 L 165.884,319.3427 C 165.75,319.3427 165.594,319.3287 165.474,319.2897 z " />
-        <path
-           id="path5097"
-           style="font-size:12px;fill:#c8b100"
-           d="M 165.884,317.7837 L 182.459,317.7837 C 183.021,317.7837 183.475,318.1367 183.475,318.5637 C 183.475,318.9937 183.021,319.3427 182.459,319.3427 L 165.884,319.3427 C 165.322,319.3427 164.867,318.9937 164.867,318.5637 C 164.867,318.1367 165.322,317.7837 165.884,317.7837" />
-        <path
-           id="path5099"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 165.884,317.7837 L 182.459,317.7837 C 183.021,317.7837 183.475,318.1367 183.475,318.5637 C 183.475,318.9937 183.021,319.3427 182.459,319.3427 L 165.884,319.3427 C 165.322,319.3427 164.867,318.9937 164.867,318.5637 C 164.867,318.1367 165.322,317.7837 165.884,317.7837 z " />
-        <path
-           id="path5101"
-           style="font-size:12px;fill:#c8b100"
-           d="M 162.842,328.3077 L 185.561,328.3077 L 185.561,322.5127 L 162.842,322.5127 L 162.842,328.3077 z " />
-        <path
-           id="path5103"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 162.842,328.3077 L 185.561,328.3077 L 185.561,322.5127 L 162.842,322.5127 L 162.842,328.3077 z " />
-        <path
-           id="path5105"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 161.065,297.2767 C 158.816,298.5747 157.293,299.9037 157.539,300.5667 C 157.662,301.1767 158.377,301.6317 159.397,302.3087 C 161.002,303.4267 161.978,305.4227 161.214,306.3437 C 162.544,305.2717 163.385,303.6707 163.385,301.8897 C 163.385,300.0277 162.499,298.3487 161.065,297.2767" />
-        <path
-           id="path5107"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 161.065,297.2767 C 158.816,298.5747 157.293,299.9037 157.539,300.5667 C 157.662,301.1767 158.377,301.6317 159.397,302.3087 C 161.002,303.4267 161.978,305.4227 161.214,306.3437 C 162.544,305.2717 163.385,303.6707 163.385,301.8897 C 163.385,300.0277 162.499,298.3487 161.065,297.2767 z " />
-        <path
-           id="path5109"
-           style="font-size:12px;fill:#cccccc"
-           d="M 166.096,316.8457 L 182.239,316.8457 L 182.239,237.7547 L 166.096,237.7547 L 166.096,316.8457 z " />
-        <path
-           id="path5111"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linecap:butt;stroke-linejoin:miter"
-           d="M 177.603,237.8637 L 177.603,316.7827 M 179.416,237.8637 L 179.416,316.7827" />
-        <path
-           id="path5113"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 166.096,316.8457 L 182.239,316.8457 L 182.239,237.7547 L 166.096,237.7547 L 166.096,316.8457 z " />
-        <path
-           id="path5115"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 198.728,267.3387 C 195.206,265.8827 189.218,264.8037 182.347,264.5777 C 179.979,264.5957 177.339,264.8177 174.613,265.2727 C 164.957,266.8837 157.602,270.7387 158.187,273.8777 C 158.198,273.9447 158.22,274.0817 158.235,274.1417 C 158.235,274.1417 154.616,265.9847 154.556,265.6747 C 153.912,262.1907 162.071,257.9087 172.788,256.1207 C 176.151,255.5597 179.431,255.3417 182.28,255.3697 C 189.136,255.3697 195.094,256.2477 198.683,257.5807 L 198.728,267.3387" />
-        <path
-           id="path5117"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 198.728,267.3387 C 195.206,265.8827 189.218,264.8037 182.347,264.5777 C 179.979,264.5957 177.339,264.8177 174.613,265.2727 C 164.957,266.8837 157.602,270.7387 158.187,273.8777 C 158.198,273.9447 158.22,274.0817 158.235,274.1417 C 158.235,274.1417 154.616,265.9847 154.556,265.6747 C 153.912,262.1907 162.071,257.9087 172.788,256.1207 C 176.151,255.5597 179.431,255.3417 182.28,255.3697 C 189.136,255.3697 195.094,256.2477 198.683,257.5807 L 198.728,267.3387" />
-        <path
-           id="path5119"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 166.07,277.2667 C 161.594,276.9457 158.537,275.7497 158.187,273.8777 C 157.911,272.3857 159.423,270.7357 162.127,269.2367 C 163.333,269.3667 164.692,269.5327 166.096,269.5327 L 166.07,277.2667" />
-        <path
-           id="path5121"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 166.07,277.2667 C 161.594,276.9457 158.537,275.7497 158.187,273.8777 C 157.911,272.3857 159.423,270.7357 162.127,269.2367 C 163.333,269.3667 164.692,269.5327 166.096,269.5327 L 166.07,277.2667" />
-        <path
-           id="path5123"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 182.269,271.2217 C 185.065,271.6447 187.166,272.3397 188.212,273.1937 L 188.305,273.3657 C 188.804,274.3887 186.347,276.5647 182.243,278.9947 L 182.269,271.2217" />
-        <path
-           id="path5125"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 182.269,271.2217 C 185.065,271.6447 187.166,272.3397 188.212,273.1937 L 188.305,273.3657 C 188.804,274.3887 186.347,276.5647 182.243,278.9947 L 182.269,271.2217" />
-        <path
-           id="path5127"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 156.042,292.5227 C 155.617,291.2457 159.982,288.6897 166.152,286.4257 C 168.971,285.4167 171.298,284.3657 174.184,283.0927 C 182.753,279.3047 189.084,274.9567 188.305,273.3697 L 188.22,273.2077 C 188.678,273.5777 189.385,281.3887 189.385,281.3887 C 190.167,282.8417 184.373,287.1267 176.482,290.9077 C 173.957,292.1137 168.625,294.0847 166.107,294.9667 C 161.605,296.5287 157.129,299.4737 157.539,300.5667 L 156.042,292.5267" />
-        <path
-           id="path5129"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 156.042,292.5227 C 155.617,291.2457 159.982,288.6897 166.152,286.4257 C 168.971,285.4167 171.298,284.3657 174.184,283.0927 C 182.753,279.3047 189.084,274.9567 188.305,273.3697 L 188.22,273.2077 C 188.678,273.5777 189.385,281.3887 189.385,281.3887 C 190.167,282.8417 184.373,287.1267 176.482,290.9077 C 173.957,292.1137 168.625,294.0847 166.107,294.9667 C 161.605,296.5287 157.129,299.4737 157.539,300.5667 L 156.042,292.5267 L 156.042,292.5227 z " />
-        <path
-           id="path5131"
-           style="font-size:12px;fill:#c8b100"
-           d="M 164.983,263.5447 C 166.957,262.8247 168.249,261.9747 167.616,260.4197 C 167.217,259.4327 166.197,259.2417 164.674,259.7997 L 161.974,260.7797 L 164.406,266.7717 C 164.67,266.6517 164.934,266.5277 165.21,266.4257 C 165.482,266.3267 165.769,266.2527 166.048,266.1717 L 164.983,263.5477 L 164.983,263.5447 z M 163.81,260.6527 L 164.491,260.4057 C 165.057,260.1977 165.698,260.4977 165.981,261.1957 C 166.193,261.7287 166.137,262.3207 165.486,262.7367 C 165.273,262.8677 165.028,262.9657 164.789,263.0617 L 163.81,260.6527" />
-        <path
-           id="path5133"
-           style="font-size:12px;fill:#c8b100"
-           d="M 171.291,258.1457 C 171.008,258.2227 170.725,258.3077 170.438,258.3637 C 170.152,258.4207 169.857,258.4517 169.567,258.4907 L 170.967,264.7227 L 175.32,263.8477 C 175.268,263.7247 175.201,263.5937 175.175,263.4667 C 175.145,263.3367 175.149,263.1917 175.141,263.0617 C 174.378,263.2797 173.544,263.5167 172.542,263.7177 L 171.295,258.1457" />
-        <path
-           id="path5135"
-           style="font-size:12px;fill:#c8b100"
-           d="M 180.009,263.5197 C 180.832,261.2597 181.826,259.0937 182.805,256.9007 C 182.63,256.9287 182.444,256.9537 182.269,256.9637 C 182.094,256.9747 181.904,256.9777 181.729,256.9707 C 181.208,258.5617 180.56,260.1517 179.878,261.7357 C 179.059,260.2327 178.154,258.7657 177.465,257.2527 C 177.126,257.2957 176.78,257.3447 176.437,257.3697 C 176.099,257.3907 175.745,257.3867 175.406,257.3907 C 176.661,259.4357 177.871,261.4747 179.018,263.5837 C 179.178,263.5547 179.342,263.5167 179.516,263.5057 C 179.677,263.4947 179.845,263.5097 180.009,263.5167" />
-        <path
-           id="path5137"
-           style="font-size:12px;fill:#c8b100"
-           d="M 189.11,258.7237 C 189.262,258.4207 189.415,258.1237 189.586,257.8417 C 189.352,257.6197 188.633,257.2957 187.791,257.2107 C 186.015,257.0347 184.995,257.8247 184.876,258.8967 C 184.626,261.1397 188.167,260.9457 188.004,262.4337 C 187.933,263.0757 187.251,263.3367 186.529,263.2657 C 185.721,263.1847 185.133,262.7407 185.028,262.0807 L 184.809,262.0597 C 184.693,262.4517 184.522,262.8287 184.339,263.2057 C 184.856,263.5407 185.531,263.7317 186.175,263.7947 C 187.985,263.9747 189.367,263.2487 189.497,262.0567 C 189.732,259.9257 186.157,259.8027 186.294,258.5477 C 186.354,258.0187 186.76,257.6727 187.683,257.7647 C 188.346,257.8317 188.756,258.1907 188.935,258.7057 L 189.11,258.7237" />
-        <path
-           id="path5139"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 322.319,219.6167 C 322.319,219.6167 321.589,220.3857 321.056,220.4947 C 320.524,220.6007 319.85,220.0157 319.85,220.0157 C 319.85,220.0157 319.37,220.5157 318.781,220.6497 C 318.193,220.7837 317.376,219.9867 317.376,219.9867 C 317.376,219.9867 316.815,220.7837 316.311,220.9707 C 315.806,221.1577 315.191,220.7317 315.191,220.7317 C 315.191,220.7317 314.968,221.1267 314.547,221.3447 C 314.368,221.4297 314.071,221.2887 314.071,221.2887 L 313.477,220.9177 L 312.803,220.1987 L 312.186,219.9587 C 312.186,219.9587 311.907,219.0557 311.877,218.8977 C 311.855,218.7387 311.795,218.3367 311.795,218.3367 C 311.669,217.6917 312.663,216.9437 314.081,216.6227 C 314.897,216.4327 315.607,216.4467 316.13,216.6087 C 316.696,216.1257 317.895,215.7907 319.306,215.7907 C 320.583,215.7907 321.704,216.0617 322.323,216.4817 C 322.933,216.0617 324.054,215.7907 325.335,215.7907 C 326.739,215.7907 327.937,216.1257 328.504,216.6087 C 329.029,216.4467 329.736,216.4357 330.556,216.6227 C 331.97,216.9437 332.969,217.6917 332.841,218.3367 C 332.841,218.3367 332.782,218.7387 332.757,218.8977 C 332.727,219.0557 332.448,219.9587 332.448,219.9587 L 331.829,220.1987 L 331.155,220.9177 L 330.571,221.2887 C 330.571,221.2887 330.273,221.4297 330.094,221.3447 C 329.673,221.1297 329.446,220.7317 329.446,220.7317 C 329.446,220.7317 328.828,221.1577 328.325,220.9707 C 327.819,220.7837 327.257,219.9867 327.257,219.9867 C 327.257,219.9867 326.445,220.7837 325.852,220.6497 C 325.264,220.5157 324.786,220.0157 324.786,220.0157 C 324.786,220.0157 324.112,220.6007 323.581,220.4947 C 323.045,220.3857 322.323,219.6167 322.323,219.6167" />
-        <path
-           id="path5141"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.26816899"
-           d="M 322.319,219.6167 C 322.319,219.6167 321.589,220.3857 321.056,220.4947 C 320.524,220.6007 319.85,220.0157 319.85,220.0157 C 319.85,220.0157 319.37,220.5157 318.781,220.6497 C 318.193,220.7837 317.376,219.9867 317.376,219.9867 C 317.376,219.9867 316.815,220.7837 316.311,220.9707 C 315.806,221.1577 315.191,220.7317 315.191,220.7317 C 315.191,220.7317 314.968,221.1267 314.547,221.3447 C 314.368,221.4297 314.071,221.2887 314.071,221.2887 L 313.477,220.9177 L 312.803,220.1987 L 312.186,219.9587 C 312.186,219.9587 311.907,219.0557 311.877,218.8977 C 311.855,218.7387 311.795,218.3367 311.795,218.3367 C 311.669,217.6917 312.663,216.9437 314.081,216.6227 C 314.897,216.4327 315.607,216.4467 316.13,216.6087 C 316.696,216.1257 317.895,215.7907 319.306,215.7907 C 320.583,215.7907 321.704,216.0617 322.323,216.4817 C 322.933,216.0617 324.054,215.7907 325.335,215.7907 C 326.739,215.7907 327.937,216.1257 328.504,216.6087 C 329.029,216.4467 329.736,216.4357 330.556,216.6227 C 331.97,216.9437 332.969,217.6917 332.841,218.3367 C 332.841,218.3367 332.782,218.7387 332.757,218.8977 C 332.727,219.0557 332.448,219.9587 332.448,219.9587 L 331.829,220.1987 L 331.155,220.9177 L 330.571,221.2887 C 330.571,221.2887 330.273,221.4297 330.094,221.3447 C 329.673,221.1297 329.446,220.7317 329.446,220.7317 C 329.446,220.7317 328.828,221.1577 328.325,220.9707 C 327.819,220.7837 327.257,219.9867 327.257,219.9867 C 327.257,219.9867 326.445,220.7837 325.852,220.6497 C 325.264,220.5157 324.786,220.0157 324.786,220.0157 C 324.786,220.0157 324.112,220.6007 323.581,220.4947 C 323.045,220.3857 322.323,219.6167 322.323,219.6167 L 322.319,219.6167 z " />
-        <path
-           id="path5143"
-           style="font-size:12px;fill:#c8b100"
-           d="M 320.93,215.4197 C 320.93,214.3447 321.541,213.4737 322.296,213.4737 C 323.052,213.4737 323.667,214.3447 323.667,215.4197 C 323.667,216.4997 323.052,217.3737 322.296,217.3737 C 321.541,217.3737 320.93,216.4997 320.93,215.4197" />
-        <path
-           id="path5145"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 320.93,215.4197 C 320.93,214.3447 321.541,213.4737 322.296,213.4737 C 323.052,213.4737 323.667,214.3447 323.667,215.4197 C 323.667,216.4997 323.052,217.3737 322.296,217.3737 C 321.541,217.3737 320.93,216.4997 320.93,215.4197 z " />
-        <path
-           id="path5147"
-           style="font-size:12px;fill:#c8b100"
-           d="M 321.693,215.4197 C 321.693,214.4327 321.976,213.6287 322.323,213.6287 C 322.672,213.6287 322.952,214.4327 322.952,215.4197 C 322.952,216.4107 322.672,217.2157 322.323,217.2157 C 321.976,217.2157 321.693,216.4107 321.693,215.4197" />
-        <path
-           id="path5149"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 321.693,215.4197 C 321.693,214.4327 321.976,213.6287 322.323,213.6287 C 322.672,213.6287 322.952,214.4327 322.952,215.4197 C 322.952,216.4107 322.672,217.2157 322.323,217.2157 C 321.976,217.2157 321.693,216.4107 321.693,215.4197 z " />
-        <path
-           id="path5151"
-           style="font-size:12px;fill:#c8b100"
-           d="M 315.269,223.4187 C 315.068,222.8507 314.691,222.3427 314.691,222.3427 C 316.625,221.7747 319.317,221.4187 322.311,221.4117 C 325.305,221.4187 328.016,221.7747 329.949,222.3427 C 329.949,222.3427 329.733,222.7237 329.431,223.2527 C 329.264,223.5457 329.044,224.0567 329.059,224.0567 C 327.312,223.5207 325.063,223.2457 322.3,223.2427 C 319.533,223.2457 316.874,223.5847 315.488,224.0917 C 315.508,224.0917 315.392,223.7717 315.254,223.4187 L 315.269,223.4187" />
-        <path
-           id="path5153"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 315.269,223.4187 C 315.068,222.8507 314.691,222.3427 314.691,222.3427 C 316.625,221.7747 319.317,221.4187 322.311,221.4117 C 325.305,221.4187 328.016,221.7747 329.949,222.3427 C 329.949,222.3427 329.733,222.7237 329.431,223.2527 C 329.264,223.5457 329.044,224.0567 329.059,224.0567 C 327.312,223.5207 325.063,223.2457 322.3,223.2427 C 319.533,223.2457 316.874,223.5847 315.488,224.0917 C 315.508,224.0917 315.392,223.7717 315.254,223.4187 L 315.269,223.4187" />
-        <path
-           id="path5155"
-           style="font-size:12px;fill:#c8b100"
-           d="M 322.311,225.8767 C 324.727,225.8727 327.387,225.5067 328.37,225.2527 C 329.025,225.0617 329.409,224.7657 329.338,224.4237 C 329.305,224.2617 329.163,224.1207 328.972,224.0397 C 327.531,223.5777 324.933,223.2497 322.311,223.2457 C 319.694,223.2497 317.083,223.5777 315.637,224.0397 C 315.452,224.1207 315.306,224.2617 315.276,224.4237 C 315.202,224.7657 315.586,225.0617 316.245,225.2527 C 317.225,225.5067 319.897,225.8727 322.311,225.8767" />
-        <path
-           id="path5157"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.311,225.8767 C 324.727,225.8727 327.387,225.5067 328.37,225.2527 C 329.025,225.0617 329.409,224.7657 329.338,224.4237 C 329.305,224.2617 329.163,224.1207 328.972,224.0397 C 327.531,223.5777 324.933,223.2497 322.311,223.2457 C 319.694,223.2497 317.083,223.5777 315.637,224.0397 C 315.452,224.1207 315.306,224.2617 315.276,224.4237 C 315.202,224.7657 315.586,225.0617 316.245,225.2527 C 317.225,225.5067 319.897,225.8727 322.311,225.8767 z " />
-        <path
-           id="path5159"
-           style="font-size:12px;fill:#ffffff"
-           d="M 328.169,216.2917 C 328.169,216.0547 328.37,215.8647 328.615,215.8647 C 328.865,215.8647 329.066,216.0547 329.066,216.2917 C 329.066,216.5277 328.865,216.7147 328.615,216.7147 C 328.37,216.7147 328.169,216.5277 328.169,216.2917" />
-        <path
-           id="path5161"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 328.169,216.2917 C 328.169,216.0547 328.37,215.8647 328.615,215.8647 C 328.865,215.8647 329.066,216.0547 329.066,216.2917 C 329.066,216.5277 328.865,216.7147 328.615,216.7147 C 328.37,216.7147 328.169,216.5277 328.169,216.2917 z " />
-        <path
-           id="path5163"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 327.916,214.8027 C 327.916,214.5667 328.116,214.3767 328.363,214.3767 C 328.611,214.3767 328.813,214.5667 328.813,214.8027 C 328.813,215.0357 328.611,215.2267 328.363,215.2267 C 328.116,215.2267 327.916,215.0357 327.916,214.8027 z M 326.791,213.8717 C 326.791,213.6357 326.991,213.4457 327.242,213.4457 C 327.486,213.4457 327.689,213.6357 327.689,213.8717 C 327.689,214.1087 327.486,214.2987 327.242,214.2987 C 326.991,214.2987 326.791,214.1087 326.791,213.8717 z M 325.386,213.4237 C 325.386,213.1847 325.588,212.9937 325.837,212.9937 C 326.087,212.9937 326.285,213.1847 326.285,213.4237 C 326.285,213.6537 326.087,213.8477 325.837,213.8477 C 325.588,213.8477 325.386,213.6537 325.386,213.4237 z M 323.957,213.4737 C 323.957,213.2367 324.157,213.0467 324.404,213.0467 C 324.654,213.0467 324.855,213.2367 324.855,213.4737 C 324.855,213.7097 324.654,213.8967 324.404,213.8967 C 324.157,213.8967 323.957,213.7097 323.957,213.4737 z " />
-        <path
-           id="path5165"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linecap:round"
-           d="M 332.608,219.1827 C 332.742,218.8547 332.826,218.4917 332.826,218.1147 C 332.826,216.5347 331.573,215.2507 330.02,215.2507 C 329.524,215.2507 329.059,215.3847 328.653,215.6177" />
-        <path
-           id="path5167"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 327.61,217.1727 C 327.755,216.9157 327.86,216.6017 327.86,216.3057 C 327.86,215.1667 326.683,214.2427 325.235,214.2427 C 324.616,214.2427 324.05,214.4117 323.604,214.6897" />
-        <path
-           id="path5169"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 332.995,217.8857 C 332.995,217.6527 333.2,217.4587 333.446,217.4587 C 333.695,217.4587 333.896,217.6527 333.896,217.8857 C 333.896,218.1217 333.695,218.3087 333.446,218.3087 C 333.2,218.3087 332.995,218.1217 332.995,217.8857 z M 332.826,216.3197 C 332.826,216.0827 333.029,215.8967 333.277,215.8967 C 333.524,215.8967 333.725,216.0827 333.725,216.3197 C 333.725,216.5527 333.524,216.7427 333.277,216.7427 C 333.029,216.7427 332.826,216.5527 332.826,216.3197 z M 331.818,215.1207 C 331.818,214.8877 332.019,214.6977 332.265,214.6977 C 332.515,214.6977 332.715,214.8877 332.715,215.1207 C 332.715,215.3567 332.515,215.5467 332.265,215.5467 C 332.019,215.5467 331.818,215.3567 331.818,215.1207 z M 330.47,214.4817 C 330.47,214.2497 330.671,214.0587 330.92,214.0587 C 331.167,214.0587 331.368,214.2497 331.368,214.4817 C 331.368,214.7187 331.167,214.9127 330.92,214.9127 C 330.671,214.9127 330.47,214.7187 330.47,214.4817 z M 329.037,214.5387 C 329.037,214.3027 329.238,214.1117 329.487,214.1117 C 329.736,214.1117 329.938,214.3027 329.938,214.5387 C 329.938,214.7717 329.736,214.9617 329.487,214.9617 C 329.238,214.9617 329.037,214.7717 329.037,214.5387 z " />
-        <path
-           id="path5171"
-           style="font-size:12px;fill:#c8b100"
-           d="M 330.067,221.2637 L 329.48,220.7317 C 329.48,220.7317 328.917,221.0767 328.214,220.9707 C 327.514,220.8657 327.29,220.0157 327.29,220.0157 C 327.29,220.0157 326.501,220.6747 325.86,220.6257 C 325.216,220.5687 324.795,220.0157 324.795,220.0157 C 324.795,220.0157 324.091,220.5157 323.473,220.4667 C 322.855,220.4107 322.266,219.6417 322.266,219.6417 C 322.266,219.6417 321.649,220.4387 321.03,220.4947 C 320.412,220.5447 319.909,219.9587 319.909,219.9587 C 319.909,219.9587 319.626,220.5447 318.84,220.6747 C 318.055,220.8087 317.381,220.0647 317.381,220.0647 C 317.381,220.0647 316.938,220.7837 316.401,220.9707 C 315.869,221.1577 315.169,220.7027 315.169,220.7027 C 315.169,220.7027 315.057,220.9707 314.972,221.1297 C 314.886,221.2887 314.662,221.3167 314.662,221.3167 L 314.838,221.7927 C 316.761,221.2357 319.37,220.8897 322.319,220.8867 C 325.272,220.8897 327.952,221.2357 329.874,221.7967 L 330.072,221.2637" />
-        <path
-           id="path5173"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 330.067,221.2637 L 329.48,220.7317 C 329.48,220.7317 328.917,221.0767 328.214,220.9707 C 327.514,220.8657 327.29,220.0157 327.29,220.0157 C 327.29,220.0157 326.501,220.6747 325.86,220.6257 C 325.216,220.5687 324.795,220.0157 324.795,220.0157 C 324.795,220.0157 324.091,220.5157 323.473,220.4667 C 322.855,220.4107 322.266,219.6417 322.266,219.6417 C 322.266,219.6417 321.649,220.4387 321.03,220.4947 C 320.412,220.5447 319.909,219.9587 319.909,219.9587 C 319.909,219.9587 319.626,220.5447 318.84,220.6747 C 318.055,220.8087 317.381,220.0647 317.381,220.0647 C 317.381,220.0647 316.938,220.7837 316.401,220.9707 C 315.869,221.1577 315.169,220.7027 315.169,220.7027 C 315.169,220.7027 315.057,220.9707 314.972,221.1297 C 314.886,221.2887 314.662,221.3167 314.662,221.3167 L 314.838,221.7927 C 316.761,221.2357 319.37,220.8897 322.319,220.8867 C 325.272,220.8897 327.952,221.2357 329.874,221.7967 L 330.072,221.2637 L 330.067,221.2637 z " />
-        <path
-           id="path5175"
-           style="font-size:12px;fill:#ffffff"
-           d="M 315.497,216.2917 C 315.497,216.0547 315.697,215.8647 315.947,215.8647 C 316.192,215.8647 316.394,216.0547 316.394,216.2917 C 316.394,216.5277 316.192,216.7147 315.947,216.7147 C 315.697,216.7147 315.497,216.5277 315.497,216.2917" />
-        <path
-           id="path5177"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 315.497,216.2917 C 315.497,216.0547 315.697,215.8647 315.947,215.8647 C 316.192,215.8647 316.394,216.0547 316.394,216.2917 C 316.394,216.5277 316.192,216.7147 315.947,216.7147 C 315.697,216.7147 315.497,216.5277 315.497,216.2917 z " />
-        <path
-           id="path5179"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 315.75,214.8027 C 315.75,214.5667 315.951,214.3767 316.2,214.3767 C 316.446,214.3767 316.647,214.5667 316.647,214.8027 C 316.647,215.0357 316.446,215.2267 316.2,215.2267 C 315.951,215.2267 315.75,215.0357 315.75,214.8027 z M 316.871,213.8717 C 316.871,213.6357 317.072,213.4457 317.321,213.4457 C 317.571,213.4457 317.772,213.6357 317.772,213.8717 C 317.772,214.1087 317.571,214.2987 317.321,214.2987 C 317.072,214.2987 316.871,214.1087 316.871,213.8717 z M 318.275,213.4237 C 318.275,213.1847 318.476,212.9937 318.725,212.9937 C 318.975,212.9937 319.176,213.1847 319.176,213.4237 C 319.176,213.6537 318.975,213.8477 318.725,213.8477 C 318.476,213.8477 318.275,213.6537 318.275,213.4237 z M 319.708,213.4737 C 319.708,213.2367 319.909,213.0467 320.155,213.0467 C 320.405,213.0467 320.606,213.2367 320.606,213.4737 C 320.606,213.7097 320.405,213.8967 320.155,213.8967 C 319.909,213.8967 319.708,213.7097 319.708,213.4737 z " />
-        <path
-           id="path5181"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linecap:round"
-           d="M 311.952,219.1827 C 311.821,218.8547 311.736,218.4917 311.736,218.1147 C 311.736,216.5347 312.99,215.2507 314.542,215.2507 C 315.038,215.2507 315.503,215.3847 315.91,215.6177" />
-        <path
-           id="path5183"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 316.986,217.1377 C 316.841,216.8837 316.702,216.6017 316.702,216.3057 C 316.702,215.1667 317.88,214.2427 319.328,214.2427 C 319.942,214.2427 320.512,214.4117 320.959,214.6897" />
-        <path
-           id="path5185"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.206561"
-           d="M 310.667,217.8857 C 310.667,217.6527 310.867,217.4587 311.118,217.4587 C 311.362,217.4587 311.564,217.6527 311.564,217.8857 C 311.564,218.1217 311.362,218.3087 311.118,218.3087 C 310.867,218.3087 310.667,218.1217 310.667,217.8857 z M 310.834,216.3197 C 310.834,216.0827 311.039,215.8967 311.285,215.8967 C 311.535,215.8967 311.736,216.0827 311.736,216.3197 C 311.736,216.5527 311.535,216.7427 311.285,216.7427 C 311.039,216.7427 310.834,216.5527 310.834,216.3197 z M 311.847,215.1207 C 311.847,214.8877 312.048,214.6977 312.298,214.6977 C 312.544,214.6977 312.745,214.8877 312.745,215.1207 C 312.745,215.3567 312.544,215.5467 312.298,215.5467 C 312.048,215.5467 311.847,215.3567 311.847,215.1207 z M 313.195,214.4817 C 313.195,214.2497 313.396,214.0587 313.641,214.0587 C 313.892,214.0587 314.092,214.2497 314.092,214.4817 C 314.092,214.7187 313.892,214.9127 313.641,214.9127 C 313.396,214.9127 313.195,214.7187 313.195,214.4817 z M 314.625,214.5387 C 314.625,214.3027 314.826,214.1117 315.076,214.1117 C 315.325,214.1117 315.523,214.3027 315.523,214.5387 C 315.523,214.7717 315.325,214.9617 315.076,214.9617 C 314.826,214.9617 314.625,214.7717 314.625,214.5387 z " />
-        <path
-           id="path5187"
-           style="font-size:12px;fill:#c8b100"
-           d="M 322.326,218.6927 L 322.605,218.7427 C 322.561,218.8587 322.552,218.9817 322.552,219.1127 C 322.552,219.6907 323.049,220.1597 323.659,220.1597 C 324.151,220.1597 324.568,219.8567 324.71,219.4367 C 324.727,219.4477 324.817,219.0557 324.861,219.0627 C 324.903,219.0627 324.896,219.4687 324.906,219.4617 C 324.98,219.9867 325.46,220.3467 326.005,220.3467 C 326.615,220.3467 327.11,219.8777 327.11,219.2997 C 327.11,219.2567 327.107,219.2147 327.1,219.1727 L 327.45,218.8267 L 327.635,219.2677 C 327.561,219.4017 327.531,219.5567 327.531,219.7227 C 327.531,220.2767 328.005,220.7247 328.586,220.7247 C 328.955,220.7247 329.279,220.5447 329.465,220.2767 L 329.688,219.9947 L 329.684,220.3437 C 329.684,220.6887 329.834,220.9997 330.171,221.0557 C 330.171,221.0557 330.562,221.0837 331.077,220.6747 C 331.595,220.2697 331.878,219.9307 331.878,219.9307 L 331.908,220.3467 C 331.908,220.3467 331.4,221.1787 330.943,221.4437 C 330.69,221.5917 330.305,221.7467 330.001,221.6937 C 329.676,221.6447 329.45,221.3837 329.33,221.0877 C 329.1,221.2247 328.828,221.3027 328.537,221.3027 C 327.912,221.3027 327.35,220.9567 327.13,220.4457 C 326.842,220.7557 326.441,220.9427 325.971,220.9427 C 325.473,220.9427 325.015,220.7207 324.727,220.3717 C 324.445,220.6327 324.062,220.7917 323.64,220.7917 C 323.09,220.7917 322.594,220.5157 322.315,220.1107 C 322.035,220.5157 321.547,220.7917 320.992,220.7917 C 320.571,220.7917 320.189,220.6327 319.906,220.3717 C 319.619,220.7207 319.165,220.9427 318.662,220.9427 C 318.193,220.9427 317.794,220.7557 317.508,220.4457 C 317.287,220.9537 316.722,221.3027 316.1,221.3027 C 315.81,221.3027 315.541,221.2247 315.31,221.0877 C 315.191,221.3837 314.961,221.6447 314.64,221.6937 C 314.335,221.7467 313.951,221.5917 313.698,221.4437 C 313.236,221.1787 312.689,220.3467 312.689,220.3467 L 312.76,219.9307 C 312.76,219.9307 313.042,220.2697 313.557,220.6747 C 314.074,221.0837 314.465,221.0557 314.465,221.0557 C 314.804,220.9997 314.948,220.6887 314.948,220.3437 L 314.948,219.9947 L 315.169,220.2767 C 315.359,220.5447 315.682,220.7247 316.047,220.7247 C 316.633,220.7247 317.105,220.2767 317.105,219.7227 C 317.105,219.5567 317.075,219.4017 317.001,219.2677 L 317.187,218.8267 L 317.533,219.1727 C 317.526,219.2147 317.526,219.2567 317.526,219.2997 C 317.526,219.8777 318.018,220.3467 318.623,220.3467 C 319.172,220.3467 319.652,219.9867 319.723,219.4617 C 319.738,219.4687 319.733,219.0627 319.771,219.0627 C 319.82,219.0557 319.909,219.4477 319.924,219.4367 C 320.069,219.8567 320.486,220.1597 320.977,220.1597 C 321.589,220.1597 322.084,219.6907 322.084,219.1127 C 322.084,218.9817 322.077,218.8587 322.032,218.7427 L 322.319,218.6927" />
-        <path
-           id="path5189"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.326,218.6927 L 322.605,218.7427 C 322.561,218.8587 322.552,218.9817 322.552,219.1127 C 322.552,219.6907 323.049,220.1597 323.659,220.1597 C 324.151,220.1597 324.568,219.8567 324.71,219.4367 C 324.727,219.4477 324.817,219.0557 324.861,219.0627 C 324.903,219.0627 324.896,219.4687 324.906,219.4617 C 324.98,219.9867 325.46,220.3467 326.005,220.3467 C 326.615,220.3467 327.11,219.8777 327.11,219.2997 C 327.11,219.2567 327.107,219.2147 327.1,219.1727 L 327.45,218.8267 L 327.635,219.2677 C 327.561,219.4017 327.531,219.5567 327.531,219.7227 C 327.531,220.2767 328.005,220.7247 328.586,220.7247 C 328.955,220.7247 329.279,220.5447 329.465,220.2767 L 329.688,219.9947 L 329.684,220.3437 C 329.684,220.6887 329.834,220.9997 330.171,221.0557 C 330.171,221.0557 330.562,221.0837 331.077,220.6747 C 331.595,220.2697 331.878,219.9307 331.878,219.9307 L 331.908,220.3467 C 331.908,220.3467 331.4,221.1787 330.943,221.4437 C 330.69,221.5917 330.305,221.7467 330.001,221.6937 C 329.676,221.6447 329.45,221.3837 329.33,221.0877 C 329.1,221.2247 328.828,221.3027 328.537,221.3027 C 327.912,221.3027 327.35,220.9567 327.13,220.4457 C 326.842,220.7557 326.441,220.9427 325.971,220.9427 C 325.473,220.9427 325.015,220.7207 324.727,220.3717 C 324.445,220.6327 324.062,220.7917 323.64,220.7917 C 323.09,220.7917 322.594,220.5157 322.315,220.1107 C 322.035,220.5157 321.547,220.7917 320.992,220.7917 C 320.571,220.7917 320.189,220.6327 319.906,220.3717 C 319.619,220.7207 319.165,220.9427 318.662,220.9427 C 318.193,220.9427 317.794,220.7557 317.508,220.4457 C 317.287,220.9537 316.722,221.3027 316.1,221.3027 C 315.81,221.3027 315.541,221.2247 315.31,221.0877 C 315.191,221.3837 314.961,221.6447 314.64,221.6937 C 314.335,221.7467 313.951,221.5917 313.698,221.4437 C 313.236,221.1787 312.689,220.3467 312.689,220.3467 L 312.76,219.9307 C 312.76,219.9307 313.042,220.2697 313.557,220.6747 C 314.074,221.0837 314.465,221.0557 314.465,221.0557 C 314.804,220.9997 314.948,220.6887 314.948,220.3437 L 314.948,219.9947 L 315.169,220.2767 C 315.359,220.5447 315.682,220.7247 316.047,220.7247 C 316.633,220.7247 317.105,220.2767 317.105,219.7227 C 317.105,219.5567 317.075,219.4017 317.001,219.2677 L 317.187,218.8267 L 317.533,219.1727 C 317.526,219.2147 317.526,219.2567 317.526,219.2997 C 317.526,219.8777 318.018,220.3467 318.623,220.3467 C 319.172,220.3467 319.652,219.9867 319.723,219.4617 C 319.738,219.4687 319.733,219.0627 319.771,219.0627 C 319.82,219.0557 319.909,219.4477 319.924,219.4367 C 320.069,219.8567 320.486,220.1597 320.977,220.1597 C 321.589,220.1597 322.084,219.6907 322.084,219.1127 C 322.084,218.9817 322.077,218.8587 322.032,218.7427 L 322.319,218.6927 L 322.326,218.6927 z " />
-        <path
-           id="path5191"
-           style="font-size:12px;fill:#c8b100"
-           d="M 322.311,221.4157 C 319.317,221.4187 316.628,221.7747 314.696,222.3467 C 314.566,222.3887 314.408,222.2897 314.365,222.1737 C 314.323,222.0507 314.417,221.8987 314.542,221.8567 C 316.487,221.2637 319.243,220.8897 322.311,220.8867 C 325.376,220.8897 328.146,221.2637 330.087,221.8567 C 330.216,221.8987 330.31,222.0507 330.269,222.1737 C 330.228,222.2897 330.064,222.3887 329.938,222.3467 C 328.005,221.7747 325.305,221.4187 322.311,221.4157" />
-        <path
-           id="path5193"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.311,221.4157 C 319.317,221.4187 316.628,221.7747 314.696,222.3467 C 314.566,222.3887 314.408,222.2897 314.365,222.1737 C 314.323,222.0507 314.417,221.8987 314.542,221.8567 C 316.487,221.2637 319.243,220.8897 322.311,220.8867 C 325.376,220.8897 328.146,221.2637 330.087,221.8567 C 330.216,221.8987 330.31,222.0507 330.269,222.1737 C 330.228,222.2897 330.064,222.3887 329.938,222.3467 C 328.005,221.7747 325.305,221.4187 322.311,221.4157 z " />
-        <path
-           id="path5195"
-           style="font-size:12px;fill:#ffffff"
-           d="M 319.414,222.4767 C 319.414,222.2517 319.608,222.0677 319.85,222.0677 C 320.088,222.0677 320.282,222.2517 320.282,222.4767 C 320.282,222.7057 320.088,222.8857 319.85,222.8857 C 319.608,222.8857 319.414,222.7057 319.414,222.4767" />
-        <path
-           id="path5197"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 319.414,222.4767 C 319.414,222.2517 319.608,222.0677 319.85,222.0677 C 320.088,222.0677 320.282,222.2517 320.282,222.4767 C 320.282,222.7057 320.088,222.8857 319.85,222.8857 C 319.608,222.8857 319.414,222.7057 319.414,222.4767 z " />
-        <path
-           id="path5199"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 322.348,222.6537 L 321.384,222.6537 C 321.205,222.6537 321.056,222.5127 321.056,222.3427 C 321.056,222.1767 321.201,222.0397 321.38,222.0397 L 323.328,222.0397 C 323.507,222.0397 323.647,222.1767 323.647,222.3427 C 323.647,222.5127 323.503,222.6537 323.324,222.6537 L 322.348,222.6537" />
-        <path
-           id="path5201"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.348,222.6537 L 321.384,222.6537 C 321.205,222.6537 321.056,222.5127 321.056,222.3427 C 321.056,222.1767 321.201,222.0397 321.38,222.0397 L 323.328,222.0397 C 323.507,222.0397 323.647,222.1767 323.647,222.3427 C 323.647,222.5127 323.503,222.6537 323.324,222.6537 L 322.348,222.6537" />
-        <path
-           id="path5203"
-           style="font-size:12px;fill:#058e6e"
-           d="M 317.523,222.9847 L 316.834,223.0867 C 316.657,223.1117 316.491,222.9987 316.461,222.8297 C 316.435,222.6637 316.553,222.5087 316.729,222.4837 L 317.421,222.3817 L 318.128,222.2727 C 318.305,222.2517 318.468,222.3607 318.498,222.5267 C 318.524,222.6917 318.401,222.8507 318.226,222.8757 L 317.523,222.9847" />
-        <path
-           id="path5205"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 317.523,222.9847 L 316.834,223.0867 C 316.657,223.1117 316.491,222.9987 316.461,222.8297 C 316.435,222.6637 316.553,222.5087 316.729,222.4837 L 317.421,222.3817 L 318.128,222.2727 C 318.305,222.2517 318.468,222.3607 318.498,222.5267 C 318.524,222.6917 318.401,222.8507 318.226,222.8757 L 317.523,222.9847" />
-        <path
-           id="path5207"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 314.74,223.4677 L 315.046,222.9747 L 315.702,223.0977 L 315.321,223.6517 L 314.74,223.4677" />
-        <path
-           id="path5209"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 314.74,223.4677 L 315.046,222.9747 L 315.702,223.0977 L 315.321,223.6517 L 314.74,223.4677" />
-        <path
-           id="path5211"
-           style="font-size:12px;fill:#ffffff"
-           d="M 324.345,222.4767 C 324.345,222.2517 324.542,222.0677 324.78,222.0677 C 325.019,222.0677 325.216,222.2517 325.216,222.4767 C 325.216,222.7057 325.019,222.8857 324.78,222.8857 C 324.542,222.8857 324.345,222.7057 324.345,222.4767" />
-        <path
-           id="path5213"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 324.345,222.4767 C 324.345,222.2517 324.542,222.0677 324.78,222.0677 C 325.019,222.0677 325.216,222.2517 325.216,222.4767 C 325.216,222.7057 325.019,222.8857 324.78,222.8857 C 324.542,222.8857 324.345,222.7057 324.345,222.4767 z " />
-        <path
-           id="path5215"
-           style="font-size:12px;fill:#058e6e"
-           d="M 327.104,222.9847 L 327.797,223.0867 C 327.972,223.1117 328.135,222.9987 328.165,222.8297 C 328.19,222.6637 328.076,222.5087 327.901,222.4837 L 327.208,222.3817 L 326.501,222.2727 C 326.322,222.2517 326.158,222.3607 326.132,222.5267 C 326.102,222.6917 326.229,222.8507 326.404,222.8757 L 327.104,222.9847" />
-        <path
-           id="path5217"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 327.104,222.9847 L 327.797,223.0867 C 327.972,223.1117 328.135,222.9987 328.165,222.8297 C 328.19,222.6637 328.076,222.5087 327.901,222.4837 L 327.208,222.3817 L 326.501,222.2727 C 326.322,222.2517 326.158,222.3607 326.132,222.5267 C 326.102,222.6917 326.229,222.8507 326.404,222.8757 L 327.104,222.9847" />
-        <path
-           id="path5219"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 329.83,223.4957 L 329.584,222.9707 L 328.912,223.0267 L 329.234,223.6157 L 329.83,223.4957" />
-        <path
-           id="path5221"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 329.83,223.4957 L 329.584,222.9707 L 328.912,223.0267 L 329.234,223.6157 L 329.83,223.4957" />
-        <path
-           id="path5223"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 322.307,225.3157 C 319.891,225.3127 317.705,225.1007 316.04,224.6707 C 317.705,224.2437 319.891,223.9797 322.307,223.9727 C 324.724,223.9757 326.921,224.2407 328.581,224.6707 C 326.921,225.1007 324.724,225.3127 322.307,225.3157" />
-        <path
-           id="path5225"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296;stroke-linejoin:round"
-           d="M 322.307,225.3157 C 319.891,225.3127 317.705,225.1007 316.04,224.6707 C 317.705,224.2437 319.891,223.9797 322.307,223.9727 C 324.724,223.9757 326.921,224.2407 328.581,224.6707 C 326.921,225.1007 324.724,225.3127 322.307,225.3157 z " />
-        <path
-           id="path5227"
-           style="font-size:12px;fill:#c8b100"
-           d="M 329.927,220.0757 C 329.99,219.8887 329.934,219.7047 329.795,219.6587 C 329.661,219.6207 329.502,219.7407 329.439,219.9197 C 329.372,220.1107 329.431,220.2977 329.565,220.3397 C 329.699,220.3787 329.863,220.2627 329.927,220.0757" />
-        <path
-           id="path5229"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 329.927,220.0757 C 329.99,219.8887 329.934,219.7047 329.795,219.6587 C 329.661,219.6207 329.502,219.7407 329.439,219.9197 C 329.372,220.1107 329.431,220.2977 329.565,220.3397 C 329.699,220.3787 329.863,220.2627 329.927,220.0757 z " />
-        <path
-           id="path5231"
-           style="font-size:12px;fill:#c8b100"
-           d="M 325.115,219.1447 C 325.141,218.9507 325.044,218.7777 324.903,218.7597 C 324.765,218.7427 324.627,218.8907 324.605,219.0847 C 324.579,219.2787 324.672,219.4507 324.814,219.4687 C 324.955,219.4827 325.089,219.3347 325.115,219.1447" />
-        <path
-           id="path5233"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 325.115,219.1447 C 325.141,218.9507 325.044,218.7777 324.903,218.7597 C 324.765,218.7427 324.627,218.8907 324.605,219.0847 C 324.579,219.2787 324.672,219.4507 324.814,219.4687 C 324.955,219.4827 325.089,219.3347 325.115,219.1447 z " />
-        <path
-           id="path5235"
-           style="font-size:12px;fill:#c8b100"
-           d="M 319.53,219.1447 C 319.504,218.9507 319.596,218.7777 319.738,218.7597 C 319.88,218.7427 320.013,218.8907 320.04,219.0847 C 320.061,219.2787 319.969,219.4507 319.831,219.4687 C 319.69,219.4827 319.555,219.3347 319.53,219.1447" />
-        <path
-           id="path5237"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 319.53,219.1447 C 319.504,218.9507 319.596,218.7777 319.738,218.7597 C 319.88,218.7427 320.013,218.8907 320.04,219.0847 C 320.061,219.2787 319.969,219.4507 319.831,219.4687 C 319.69,219.4827 319.555,219.3347 319.53,219.1447 z " />
-        <path
-           id="path5239"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.718,220.0757 C 314.651,219.8887 314.711,219.7047 314.845,219.6587 C 314.978,219.6207 315.142,219.7407 315.206,219.9197 C 315.269,220.1107 315.213,220.2977 315.08,220.3397 C 314.942,220.3787 314.781,220.2627 314.718,220.0757" />
-        <path
-           id="path5241"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 314.718,220.0757 C 314.651,219.8887 314.711,219.7047 314.845,219.6587 C 314.978,219.6207 315.142,219.7407 315.206,219.9197 C 315.269,220.1107 315.213,220.2977 315.08,220.3397 C 314.942,220.3787 314.781,220.2627 314.718,220.0757 z " />
-        <path
-           id="path5243"
-           style="font-size:12px;fill:#c8b100"
-           d="M 322.307,216.3657 L 321.455,216.8797 L 322.087,218.2517 L 322.307,218.3967 L 322.524,218.2517 L 323.16,216.8797 L 322.307,216.3657" />
-        <path
-           id="path5245"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.307,216.3657 L 321.455,216.8797 L 322.087,218.2517 L 322.307,218.3967 L 322.524,218.2517 L 323.16,216.8797 L 322.307,216.3657" />
-        <path
-           id="path5247"
-           style="font-size:12px;fill:#c8b100"
-           d="M 320.437,218.4387 L 320.826,219.0037 L 322.155,218.5937 L 322.296,218.4077 L 322.155,218.2167 L 320.826,217.8287 L 320.437,218.4387" />
-        <path
-           id="path5249"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 320.437,218.4387 L 320.826,219.0037 L 322.155,218.5937 L 322.296,218.4077 L 322.155,218.2167 L 320.826,217.8287 L 320.437,218.4387" />
-        <path
-           id="path5251"
-           style="font-size:12px;fill:#c8b100"
-           d="M 324.184,218.4387 L 323.793,219.0037 L 322.464,218.5937 L 322.323,218.4077 L 322.464,218.2167 L 323.793,217.8287 L 324.184,218.4387" />
-        <path
-           id="path5253"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 324.184,218.4387 L 323.793,219.0037 L 322.464,218.5937 L 322.323,218.4077 L 322.464,218.2167 L 323.793,217.8287 L 324.184,218.4387" />
-        <path
-           id="path5255"
-           style="font-size:12px;fill:#c8b100"
-           d="M 316.761,216.9757 L 316.093,217.6067 L 316.949,218.7357 L 317.176,218.8267 L 317.344,218.6537 L 317.645,217.2897 L 316.761,216.9757" />
-        <path
-           id="path5257"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 316.761,216.9757 L 316.093,217.6067 L 316.949,218.7357 L 317.176,218.8267 L 317.344,218.6537 L 317.645,217.2897 L 316.761,216.9757" />
-        <path
-           id="path5259"
-           style="font-size:12px;fill:#c8b100"
-           d="M 315.359,219.2397 L 315.861,219.7117 L 317.075,219.0557 L 317.168,218.8447 L 316.994,218.6857 L 315.605,218.5657 L 315.359,219.2397" />
-        <path
-           id="path5261"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 315.359,219.2397 L 315.861,219.7117 L 317.075,219.0557 L 317.168,218.8447 L 316.994,218.6857 L 315.605,218.5657 L 315.359,219.2397" />
-        <path
-           id="path5263"
-           style="font-size:12px;fill:#c8b100"
-           d="M 319.023,218.5027 L 318.766,219.1267 L 317.376,218.9997 L 317.195,218.8407 L 317.291,218.6257 L 318.509,217.9837 L 319.023,218.5027" />
-        <path
-           id="path5265"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 319.023,218.5027 L 318.766,219.1267 L 317.376,218.9997 L 317.195,218.8407 L 317.291,218.6257 L 318.509,217.9837 L 319.023,218.5027" />
-        <path
-           id="path5267"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.022,219.4157 L 313.907,220.0757 L 312.516,220.2197 L 312.305,220.0997 L 312.358,219.8747 L 313.403,219.0067 L 314.022,219.4157" />
-        <path
-           id="path5269"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 314.022,219.4157 L 313.907,220.0757 L 312.516,220.2197 L 312.305,220.0997 L 312.358,219.8747 L 313.403,219.0067 L 314.022,219.4157" />
-        <path
-           id="path5271"
-           style="font-size:12px;fill:#c8b100"
-           d="M 316.7,218.8477 C 316.7,218.5907 316.919,218.3827 317.187,218.3827 C 317.459,218.3827 317.675,218.5907 317.675,218.8477 C 317.675,219.1017 317.459,219.3097 317.187,219.3097 C 316.919,219.3097 316.7,219.1017 316.7,218.8477" />
-        <path
-           id="path5273"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 316.7,218.8477 C 316.7,218.5907 316.919,218.3827 317.187,218.3827 C 317.459,218.3827 317.675,218.5907 317.675,218.8477 C 317.675,219.1017 317.459,219.3097 317.187,219.3097 C 316.919,219.3097 316.7,219.1017 316.7,218.8477 z " />
-        <path
-           id="path5275"
-           style="font-size:12px;fill:#c8b100"
-           d="M 327.871,216.9757 L 328.541,217.6067 L 327.684,218.7357 L 327.457,218.8267 L 327.29,218.6537 L 326.988,217.2897 L 327.871,216.9757" />
-        <path
-           id="path5277"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 327.871,216.9757 L 328.541,217.6067 L 327.684,218.7357 L 327.457,218.8267 L 327.29,218.6537 L 326.988,217.2897 L 327.871,216.9757" />
-        <path
-           id="path5279"
-           style="font-size:12px;fill:#c8b100"
-           d="M 329.275,219.2397 L 328.772,219.7117 L 327.558,219.0557 L 327.461,218.8447 L 327.64,218.6857 L 329.029,218.5657 L 329.275,219.2397" />
-        <path
-           id="path5281"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 329.275,219.2397 L 328.772,219.7117 L 327.558,219.0557 L 327.461,218.8447 L 327.64,218.6857 L 329.029,218.5657 L 329.275,219.2397" />
-        <path
-           id="path5283"
-           style="font-size:12px;fill:#c8b100"
-           d="M 325.61,218.5027 L 325.867,219.1267 L 327.257,218.9997 L 327.435,218.8407 L 327.342,218.6257 L 326.125,217.9837 L 325.61,218.5027" />
-        <path
-           id="path5285"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 325.61,218.5027 L 325.867,219.1267 L 327.257,218.9997 L 327.435,218.8407 L 327.342,218.6257 L 326.125,217.9837 L 325.61,218.5027" />
-        <path
-           id="path5287"
-           style="font-size:12px;fill:#c8b100"
-           d="M 330.425,219.4157 L 330.537,220.0757 L 331.925,220.2197 L 332.134,220.0997 L 332.082,219.8747 L 331.04,219.0067 L 330.425,219.4157" />
-        <path
-           id="path5289"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 330.425,219.4157 L 330.537,220.0757 L 331.925,220.2197 L 332.134,220.0997 L 332.082,219.8747 L 331.04,219.0067 L 330.425,219.4157" />
-        <path
-           id="path5291"
-           style="font-size:12px;fill:#c8b100"
-           d="M 321.827,218.4107 C 321.827,218.1497 322.042,217.9457 322.315,217.9457 C 322.579,217.9457 322.803,218.1497 322.803,218.4107 C 322.803,218.6647 322.582,218.8727 322.315,218.8727 C 322.042,218.8727 321.827,218.6647 321.827,218.4107" />
-        <path
-           id="path5293"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 321.827,218.4107 C 321.827,218.1497 322.042,217.9457 322.315,217.9457 C 322.579,217.9457 322.803,218.1497 322.803,218.4107 C 322.803,218.6647 322.582,218.8727 322.315,218.8727 C 322.042,218.8727 321.827,218.6647 321.827,218.4107 z " />
-        <path
-           id="path5295"
-           style="font-size:12px;fill:#c8b100"
-           d="M 326.966,218.8477 C 326.966,218.5907 327.185,218.3827 327.454,218.3827 C 327.725,218.3827 327.946,218.5907 327.946,218.8477 C 327.946,219.1017 327.725,219.3097 327.454,219.3097 C 327.185,219.3097 326.966,219.1017 326.966,218.8477" />
-        <path
-           id="path5297"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 326.966,218.8477 C 326.966,218.5907 327.185,218.3827 327.454,218.3827 C 327.725,218.3827 327.946,218.5907 327.946,218.8477 C 327.946,219.1017 327.725,219.3097 327.454,219.3097 C 327.185,219.3097 326.966,219.1017 326.966,218.8477 z " />
-        <path
-           id="path5299"
-           style="font-size:12px;fill:#c8b100"
-           d="M 321.399,213.1917 C 321.399,212.7117 321.809,212.3237 322.315,212.3237 C 322.82,212.3237 323.235,212.7117 323.235,213.1917 C 323.235,213.6707 322.82,214.0587 322.315,214.0587 C 321.809,214.0587 321.399,213.6707 321.399,213.1917" />
-        <path
-           id="path5301"
-           style="font-size:12px;fill:#c8b100"
-           d="M 322.963,212.8847 L 322.963,213.4597 L 321.547,213.4597 L 321.547,212.8847 L 322.01,212.8847 L 322.01,211.5867 L 321.395,211.5867 L 321.395,211.0087 L 322.01,211.0087 L 322.01,210.4407 L 322.617,210.4407 L 322.617,211.0087 L 323.22,211.0087 L 323.22,211.5867 L 322.617,211.5867 L 322.617,212.8847 L 322.959,212.8847" />
-        <path
-           id="path5303"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.29716"
-           d="M 322.963,212.8847 L 322.963,213.4597 L 321.547,213.4597 L 321.547,212.8847 L 322.01,212.8847 L 322.01,211.5867 L 321.395,211.5867 L 321.395,211.0087 L 322.01,211.0087 L 322.01,210.4407 L 322.617,210.4407 L 322.617,211.0087 L 323.22,211.0087 L 323.22,211.5867 L 322.617,211.5867 L 322.617,212.8847 L 322.959,212.8847 L 322.963,212.8847 z " />
-        <path
-           id="path5305"
-           style="font-size:12px;fill:#c8b100"
-           d="M 323.596,212.8847 L 323.596,213.4597 L 321.079,213.4597 L 321.079,212.8847 L 322.01,212.8847 L 322.01,211.5867 L 321.395,211.5867 L 321.395,211.0087 L 322.01,211.0087 L 322.01,210.4407 L 322.617,210.4407 L 322.617,211.0087 L 323.223,211.0087 L 323.223,211.5867 L 322.617,211.5867 L 322.617,212.8847 L 323.596,212.8847" />
-        <path
-           id="path5307"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 322.579,212.3587 C 322.959,212.4617 323.235,212.7967 323.235,213.1917 C 323.235,213.6707 322.825,214.0587 322.315,214.0587 C 321.809,214.0587 321.399,213.6707 321.399,213.1917 C 321.399,212.7897 321.686,212.4547 322.077,212.3517" />
-        <path
-           id="path5309"
-           style="font-size:12px;fill:#c8b100"
-           d="M 312.141,220.1877 C 312.13,220.1987 311.765,219.7087 311.49,219.4617 C 311.296,219.2887 310.82,219.1407 310.82,219.1407 C 310.82,219.0527 311.099,218.8547 311.401,218.8547 C 311.576,218.8547 311.743,218.9287 311.842,219.0527 L 311.877,218.8617 C 311.877,218.8617 312.123,218.9077 312.231,219.1797 C 312.343,219.4617 312.272,219.8887 312.272,219.8887 C 312.272,219.8887 312.227,220.0857 312.141,220.1877" />
-        <path
-           id="path5311"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 312.141,220.1877 C 312.13,220.1987 311.765,219.7087 311.49,219.4617 C 311.296,219.2887 310.82,219.1407 310.82,219.1407 C 310.82,219.0527 311.099,218.8547 311.401,218.8547 C 311.576,218.8547 311.743,218.9287 311.842,219.0527 L 311.877,218.8617 C 311.877,218.8617 312.123,218.9077 312.231,219.1797 C 312.343,219.4617 312.272,219.8887 312.272,219.8887 C 312.272,219.8887 312.227,220.0857 312.141,220.1877 z " />
-        <path
-           id="path5313"
-           style="font-size:12px;fill:#c8b100"
-           d="M 312.16,219.9447 C 312.276,219.8247 312.514,219.8497 312.689,220.0017 C 312.868,220.1527 312.92,220.3747 312.803,220.4987 C 312.689,220.6217 312.454,220.5937 312.276,220.4417 C 312.096,220.2907 312.045,220.0647 312.16,219.9447" />
-        <path
-           id="path5315"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 312.16,219.9447 C 312.276,219.8247 312.514,219.8497 312.689,220.0017 C 312.868,220.1527 312.92,220.3747 312.803,220.4987 C 312.689,220.6217 312.454,220.5937 312.276,220.4417 C 312.096,220.2907 312.045,220.0647 312.16,219.9447 z " />
-        <path
-           id="path5317"
-           style="font-size:12px;fill:#c8b100"
-           d="M 332.301,220.1877 C 332.316,220.1987 332.677,219.7087 332.954,219.4617 C 333.144,219.2887 333.624,219.1407 333.624,219.1407 C 333.624,219.0527 333.345,218.8547 333.043,218.8547 C 332.868,218.8547 332.7,218.9287 332.6,219.0527 L 332.563,218.8617 C 332.563,218.8617 332.316,218.9077 332.209,219.1797 C 332.098,219.4617 332.167,219.8887 332.167,219.8887 C 332.167,219.8887 332.212,220.0857 332.301,220.1877" />
-        <path
-           id="path5319"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 332.301,220.1877 C 332.316,220.1987 332.677,219.7087 332.954,219.4617 C 333.144,219.2887 333.624,219.1407 333.624,219.1407 C 333.624,219.0527 333.345,218.8547 333.043,218.8547 C 332.868,218.8547 332.7,218.9287 332.6,219.0527 L 332.563,218.8617 C 332.563,218.8617 332.316,218.9077 332.209,219.1797 C 332.098,219.4617 332.167,219.8887 332.167,219.8887 C 332.167,219.8887 332.212,220.0857 332.301,220.1877 z " />
-        <path
-           id="path5321"
-           style="font-size:12px;fill:#c8b100"
-           d="M 332.314,219.9447 C 332.197,219.8247 331.96,219.8497 331.781,220.0017 C 331.602,220.1527 331.554,220.3747 331.665,220.4987 C 331.781,220.6217 332.019,220.5937 332.197,220.4417 C 332.376,220.2907 332.429,220.0647 332.314,219.9447" />
-        <path
-           id="path5323"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 332.314,219.9447 C 332.197,219.8247 331.96,219.8497 331.781,220.0017 C 331.602,220.1527 331.554,220.3747 331.665,220.4987 C 331.781,220.6217 332.019,220.5937 332.197,220.4417 C 332.376,220.2907 332.429,220.0647 332.314,219.9447 z " />
-        <path
-           id="path5325"
-           style="font-size:12px;fill:#c8b100"
-           d="M 311.263,231.4807 L 333.396,231.4807 L 333.396,225.6787 L 311.263,225.6787 L 311.263,231.4807 z " />
-        <path
-           id="path5327"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 311.263,231.4807 L 333.396,231.4807 L 333.396,225.6787 L 311.263,225.6787 L 311.263,231.4807 z " />
-        <path
-           id="path5329"
-           style="font-size:12px;fill:#c8b100"
-           d="M 331.074,235.3417 C 330.935,235.2857 330.83,235.2787 330.664,235.2787 L 314.089,235.2787 C 313.925,235.2787 313.769,235.3067 313.631,235.3597 C 314.201,235.1697 314.61,234.6547 314.61,234.0477 C 314.61,233.4417 314.164,232.9157 313.59,232.7187 C 313.728,232.7607 313.913,232.7997 314.077,232.7997 L 330.664,232.7997 C 330.83,232.7997 330.988,232.7927 331.129,232.7467 L 331.036,232.7607 C 330.444,232.9437 330.105,233.4697 330.105,234.0477 C 330.105,234.6047 330.481,235.1627 331.074,235.3417" />
-        <path
-           id="path5331"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 331.074,235.3417 C 330.935,235.2857 330.83,235.2787 330.664,235.2787 L 314.089,235.2787 C 313.925,235.2787 313.769,235.3067 313.631,235.3597 C 314.201,235.1697 314.61,234.6547 314.61,234.0477 C 314.61,233.4417 314.164,232.9157 313.59,232.7187 C 313.728,232.7607 313.913,232.7997 314.077,232.7997 L 330.664,232.7997 C 330.83,232.7997 330.988,232.7927 331.129,232.7467 L 331.036,232.7607 C 330.444,232.9437 330.105,233.4697 330.105,234.0477 C 330.105,234.6047 330.481,235.1627 331.074,235.3417 z " />
-        <path
-           id="path5333"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.089,235.2787 L 330.664,235.2787 C 331.222,235.2787 331.677,235.6277 331.677,236.0547 C 331.677,236.4847 331.222,236.8337 330.664,236.8337 L 314.089,236.8337 C 313.527,236.8337 313.072,236.4847 313.072,236.0547 C 313.072,235.6277 313.527,235.2787 314.089,235.2787" />
-        <path
-           id="path5335"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 314.089,235.2787 L 330.664,235.2787 C 331.222,235.2787 331.677,235.6277 331.677,236.0547 C 331.677,236.4847 331.222,236.8337 330.664,236.8337 L 314.089,236.8337 C 313.527,236.8337 313.072,236.4847 313.072,236.0547 C 313.072,235.6277 313.527,235.2787 314.089,235.2787 z " />
-        <path
-           id="path5337"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.077,231.4807 L 330.664,231.4807 C 331.222,231.4807 331.677,231.7767 331.677,232.1367 C 331.677,232.5027 331.222,232.7997 330.664,232.7997 L 314.077,232.7997 C 313.516,232.7997 313.061,232.5027 313.061,232.1367 C 313.061,231.7767 313.516,231.4807 314.077,231.4807" />
-        <path
-           id="path5339"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 314.077,231.4807 L 330.664,231.4807 C 331.222,231.4807 331.677,231.7767 331.677,232.1367 C 331.677,232.5027 331.222,232.7997 330.664,232.7997 L 314.077,232.7997 C 313.516,232.7997 313.061,232.5027 313.061,232.1367 C 313.061,231.7767 313.516,231.4807 314.077,231.4807 z " />
-        <path
-           id="path5341"
-           style="font-size:12px;fill:#005bbf"
-           d="M 306.876,329.1147 C 308.41,329.1147 309.772,328.7937 310.778,328.2577 C 311.777,327.7497 313.128,327.4397 314.617,327.4397 C 316.111,327.4397 317.5,327.7537 318.498,328.2647 C 319.496,328.7907 320.881,329.1147 322.393,329.1147 C 323.92,329.1147 325.29,328.7587 326.296,328.2227 C 327.286,327.7357 328.608,327.4397 330.064,327.4397 C 331.565,327.4397 332.894,327.7257 333.896,328.2437 C 334.897,328.7767 336.294,329.1147 337.82,329.1147 L 337.82,331.5127 C 336.294,331.5127 334.897,331.1637 333.896,330.6347 C 332.894,330.1197 331.565,329.8277 330.064,329.8277 C 328.608,329.8277 327.286,330.1267 326.296,330.6177 C 325.294,331.1497 323.92,331.5127 322.393,331.5127 C 320.885,331.5127 319.499,331.1817 318.498,330.6597 C 317.5,330.1417 316.115,329.8277 314.617,329.8277 C 313.128,329.8277 311.777,330.1417 310.778,330.6527 C 309.772,331.1887 308.429,331.5127 306.898,331.5127 L 306.876,329.1147" />
-        <path
-           id="path5343"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:miter"
-           d="M 306.876,329.1147 C 308.41,329.1147 309.772,328.7937 310.778,328.2577 C 311.777,327.7497 313.128,327.4397 314.617,327.4397 C 316.111,327.4397 317.5,327.7537 318.498,328.2647 C 319.496,328.7907 320.881,329.1147 322.393,329.1147 C 323.92,329.1147 325.29,328.7587 326.296,328.2227 C 327.286,327.7357 328.608,327.4397 330.064,327.4397 C 331.565,327.4397 332.894,327.7257 333.896,328.2437 C 334.897,328.7767 336.294,329.1147 337.82,329.1147 L 337.82,331.5127 C 336.294,331.5127 334.897,331.1637 333.896,330.6347 C 332.894,330.1197 331.565,329.8277 330.064,329.8277 C 328.608,329.8277 327.286,330.1267 326.296,330.6177 C 325.294,331.1497 323.92,331.5127 322.393,331.5127 C 320.885,331.5127 319.499,331.1817 318.498,330.6597 C 317.5,330.1417 316.115,329.8277 314.617,329.8277 C 313.128,329.8277 311.777,330.1417 310.778,330.6527 C 309.772,331.1887 308.429,331.5127 306.898,331.5127 L 306.876,329.1147 z " />
-        <path
-           id="path5345"
-           style="font-size:12px;fill:#cccccc"
-           d="M 306.876,331.5127 C 308.41,331.5127 309.772,331.1887 310.778,330.6527 C 311.777,330.1417 313.128,329.8277 314.617,329.8277 C 316.111,329.8277 317.5,330.1417 318.498,330.6597 C 319.496,331.1817 320.881,331.5127 322.393,331.5127 C 323.92,331.5127 325.29,331.1497 326.296,330.6177 C 327.286,330.1267 328.608,329.8277 330.064,329.8277 C 331.565,329.8277 332.894,330.1197 333.896,330.6347 C 334.897,331.1637 336.294,331.5127 337.82,331.5127 L 337.82,333.9037 C 336.294,333.9037 334.897,333.5617 333.896,333.0327 C 332.894,332.5107 331.565,332.2217 330.064,332.2217 C 328.608,332.2217 327.286,332.5217 326.296,333.0117 C 325.294,333.5447 323.92,333.9037 322.393,333.9037 C 320.885,333.9037 319.499,333.5727 318.498,333.0507 C 317.5,332.5357 316.115,332.2217 314.617,332.2217 C 313.128,332.2217 311.777,332.5357 310.778,333.0467 C 309.772,333.5797 308.429,333.9037 306.898,333.9037 L 306.876,331.5127" />
-        <path
-           id="path5347"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 306.876,331.5127 C 308.41,331.5127 309.772,331.1887 310.778,330.6527 C 311.777,330.1417 313.128,329.8277 314.617,329.8277 C 316.111,329.8277 317.5,330.1417 318.498,330.6597 C 319.496,331.1817 320.881,331.5127 322.393,331.5127 C 323.92,331.5127 325.29,331.1497 326.296,330.6177 C 327.286,330.1267 328.608,329.8277 330.064,329.8277 C 331.565,329.8277 332.894,330.1197 333.896,330.6347 C 334.897,331.1637 336.294,331.5127 337.82,331.5127 L 337.82,333.9037 C 336.294,333.9037 334.897,333.5617 333.896,333.0327 C 332.894,332.5107 331.565,332.2217 330.064,332.2217 C 328.608,332.2217 327.286,332.5217 326.296,333.0117 C 325.294,333.5447 323.92,333.9037 322.393,333.9037 C 320.885,333.9037 319.499,333.5727 318.498,333.0507 C 317.5,332.5357 316.115,332.2217 314.617,332.2217 C 313.128,332.2217 311.777,332.5357 310.778,333.0467 C 309.772,333.5797 308.429,333.9037 306.898,333.9037 L 306.876,331.5127" />
-        <path
-           id="path5349"
-           style="font-size:12px;fill:#005bbf"
-           d="M 306.876,333.9037 C 308.41,333.9037 309.772,333.5797 310.778,333.0467 C 311.777,332.5357 313.128,332.2217 314.617,332.2217 C 316.111,332.2217 317.5,332.5357 318.498,333.0507 C 319.496,333.5727 320.881,333.9037 322.393,333.9037 C 323.92,333.9037 325.29,333.5447 326.296,333.0117 C 327.286,332.5217 328.608,332.2217 330.064,332.2217 C 331.565,332.2217 332.894,332.5107 333.896,333.0327 C 334.897,333.5617 336.294,333.9037 337.82,333.9037 L 337.82,336.2947 C 336.294,336.2947 334.897,335.9527 333.896,335.4207 C 332.894,334.9057 331.565,334.6167 330.064,334.6167 C 328.608,334.6167 327.286,334.9167 326.296,335.4027 C 325.294,335.9387 323.92,336.2947 322.393,336.2947 C 320.885,336.2947 319.499,335.9677 318.498,335.4457 C 317.5,334.9307 316.115,334.6167 314.617,334.6167 C 313.128,334.6167 311.777,334.9267 310.778,335.4387 C 309.772,335.9777 308.429,336.2947 306.898,336.2947 L 306.876,333.9037" />
-        <path
-           id="path5351"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 306.876,333.9037 C 308.41,333.9037 309.772,333.5797 310.778,333.0467 C 311.777,332.5357 313.128,332.2217 314.617,332.2217 C 316.111,332.2217 317.5,332.5357 318.498,333.0507 C 319.496,333.5727 320.881,333.9037 322.393,333.9037 C 323.92,333.9037 325.29,333.5447 326.296,333.0117 C 327.286,332.5217 328.608,332.2217 330.064,332.2217 C 331.565,332.2217 332.894,332.5107 333.896,333.0327 C 334.897,333.5617 336.294,333.9037 337.82,333.9037 L 337.82,336.2947 C 336.294,336.2947 334.897,335.9527 333.896,335.4207 C 332.894,334.9057 331.565,334.6167 330.064,334.6167 C 328.608,334.6167 327.286,334.9167 326.296,335.4027 C 325.294,335.9387 323.92,336.2947 322.393,336.2947 C 320.885,336.2947 319.499,335.9677 318.498,335.4457 C 317.5,334.9307 316.115,334.6167 314.617,334.6167 C 313.128,334.6167 311.777,334.9267 310.778,335.4387 C 309.772,335.9777 308.429,336.2947 306.898,336.2947 L 306.876,333.9037" />
-        <path
-           id="path5353"
-           style="font-size:12px;fill:#cccccc"
-           d="M 306.898,338.6897 C 308.429,338.6897 309.772,338.3657 310.778,337.8297 C 311.777,337.3217 313.128,337.0107 314.617,337.0107 C 316.111,337.0107 317.5,337.3217 318.498,337.8367 C 319.496,338.3587 320.881,338.6897 322.393,338.6897 C 323.92,338.6897 325.29,338.3297 326.296,337.7937 C 327.286,337.3077 328.608,337.0107 330.064,337.0107 C 331.565,337.0107 332.894,337.3007 333.896,337.8147 C 334.897,338.3477 336.294,338.6897 337.82,338.6897 L 337.82,336.3097 C 336.294,336.3097 334.897,335.9527 333.896,335.4207 C 332.894,334.9057 331.565,334.6167 330.064,334.6167 C 328.608,334.6167 327.286,334.9167 326.296,335.4027 C 325.294,335.9387 323.92,336.2947 322.393,336.2947 C 320.885,336.2947 319.499,335.9677 318.498,335.4457 C 317.5,334.9307 316.115,334.6167 314.617,334.6167 C 313.128,334.6167 311.777,334.9267 310.778,335.4387 C 309.772,335.9777 308.41,336.2947 306.876,336.2947 L 306.898,338.6897" />
-        <path
-           id="path5355"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 306.898,338.6897 C 308.429,338.6897 309.772,338.3657 310.778,337.8297 C 311.777,337.3217 313.128,337.0107 314.617,337.0107 C 316.111,337.0107 317.5,337.3217 318.498,337.8367 C 319.496,338.3587 320.881,338.6897 322.393,338.6897 C 323.92,338.6897 325.29,338.3297 326.296,337.7937 C 327.286,337.3077 328.608,337.0107 330.064,337.0107 C 331.565,337.0107 332.894,337.3007 333.896,337.8147 C 334.897,338.3477 336.294,338.6897 337.82,338.6897 L 337.82,336.3097 C 336.294,336.3097 334.897,335.9527 333.896,335.4207 C 332.894,334.9057 331.565,334.6167 330.064,334.6167 C 328.608,334.6167 327.286,334.9167 326.296,335.4027 C 325.294,335.9387 323.92,336.2947 322.393,336.2947 C 320.885,336.2947 319.499,335.9677 318.498,335.4457 C 317.5,334.9307 316.115,334.6167 314.617,334.6167 C 313.128,334.6167 311.777,334.9267 310.778,335.4387 C 309.772,335.9777 308.41,336.2947 306.876,336.2947 L 306.898,338.6897" />
-        <path
-           id="path5357"
-           style="font-size:12px;fill:#005bbf"
-           d="M 306.898,341.0847 C 308.429,341.0847 309.772,340.7597 310.778,340.2277 C 311.777,339.7127 313.128,339.3987 314.617,339.3987 C 316.111,339.3987 317.5,339.7157 318.498,340.2307 C 319.496,340.7527 320.881,341.0847 322.393,341.0847 C 323.92,341.0847 325.29,340.7207 326.296,340.1887 C 327.286,339.6987 328.608,339.3987 330.064,339.3987 C 331.565,339.3987 332.894,339.6917 333.896,340.2097 C 334.897,340.7387 336.294,341.0847 337.82,341.0847 L 337.82,338.7107 C 336.294,338.7107 334.897,338.3477 333.896,337.8147 C 332.894,337.3007 331.565,337.0147 330.064,337.0147 C 328.608,337.0147 327.286,337.3107 326.296,337.7977 C 325.294,338.3297 323.92,338.6897 322.393,338.6897 C 320.885,338.6897 319.499,338.3587 318.498,337.8367 C 317.5,337.3217 316.115,337.0147 314.617,337.0147 C 313.128,337.0147 311.777,337.3217 310.778,337.8327 C 309.772,338.3657 308.414,338.6897 306.883,338.6897 L 306.898,341.0847" />
-        <path
-           id="path5359"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 306.898,341.0847 C 308.429,341.0847 309.772,340.7597 310.778,340.2277 C 311.777,339.7127 313.128,339.3987 314.617,339.3987 C 316.111,339.3987 317.5,339.7157 318.498,340.2307 C 319.496,340.7527 320.881,341.0847 322.393,341.0847 C 323.92,341.0847 325.29,340.7207 326.296,340.1887 C 327.286,339.6987 328.608,339.3987 330.064,339.3987 C 331.565,339.3987 332.894,339.6917 333.896,340.2097 C 334.897,340.7387 336.294,341.0847 337.82,341.0847 L 337.82,338.7107 C 336.294,338.7107 334.897,338.3477 333.896,337.8147 C 332.894,337.3007 331.565,337.0147 330.064,337.0147 C 328.608,337.0147 327.286,337.3107 326.296,337.7977 C 325.294,338.3297 323.92,338.6897 322.393,338.6897 C 320.885,338.6897 319.499,338.3587 318.498,337.8367 C 317.5,337.3217 316.115,337.0147 314.617,337.0147 C 313.128,337.0147 311.777,337.3217 310.778,337.8327 C 309.772,338.3657 308.414,338.6897 306.883,338.6897 L 306.898,341.0847 z " />
-        <path
-           id="path5361"
-           style="font-size:12px;fill:#c8b100"
-           d="M 331.07,319.2897 C 331.018,319.4907 330.947,319.6887 330.947,319.9037 C 330.947,321.3567 332.201,322.5127 333.732,322.5127 L 310.956,322.5127 C 312.487,322.5127 313.739,321.3567 313.739,319.9037 C 313.739,319.6917 313.698,319.4907 313.653,319.2897 C 313.776,319.3357 313.933,319.3427 314.085,319.3427 L 330.66,319.3427 C 330.794,319.3427 330.95,319.3287 331.066,319.2897" />
-        <path
-           id="path5363"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 331.07,319.2897 C 331.018,319.4907 330.947,319.6887 330.947,319.9037 C 330.947,321.3567 332.201,322.5127 333.732,322.5127 L 310.956,322.5127 C 312.487,322.5127 313.739,321.3567 313.739,319.9037 C 313.739,319.6917 313.698,319.4907 313.653,319.2897 C 313.776,319.3357 313.933,319.3427 314.085,319.3427 L 330.66,319.3427 C 330.794,319.3427 330.95,319.3287 331.066,319.2897 L 331.07,319.2897 z " />
-        <path
-           id="path5365"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.089,317.7837 L 330.664,317.7837 C 331.222,317.7837 331.677,318.1367 331.677,318.5637 C 331.677,318.9937 331.222,319.3427 330.664,319.3427 L 314.089,319.3427 C 313.527,319.3427 313.072,318.9937 313.072,318.5637 C 313.072,318.1367 313.527,317.7837 314.089,317.7837" />
-        <path
-           id="path5367"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 314.089,317.7837 L 330.664,317.7837 C 331.222,317.7837 331.677,318.1367 331.677,318.5637 C 331.677,318.9937 331.222,319.3427 330.664,319.3427 L 314.089,319.3427 C 313.527,319.3427 313.072,318.9937 313.072,318.5637 C 313.072,318.1367 313.527,317.7837 314.089,317.7837 z " />
-        <path
-           id="path5369"
-           style="font-size:12px;fill:#c8b100"
-           d="M 310.983,328.3077 L 333.703,328.3077 L 333.703,322.5127 L 310.983,322.5127 L 310.983,328.3077 z " />
-        <path
-           id="path5371"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:miter"
-           d="M 310.983,328.3077 L 333.703,328.3077 L 333.703,322.5127 L 310.983,322.5127 L 310.983,328.3077 z " />
-        <path
-           id="path5373"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 335.478,297.2767 C 337.728,298.5747 339.255,299.9037 339.009,300.5667 C 338.885,301.1767 338.171,301.6317 337.151,302.3087 C 335.546,303.4267 334.566,305.4227 335.33,306.3437 C 334.004,305.2717 333.166,303.6707 333.166,301.8897 C 333.166,300.0277 334.049,298.3487 335.478,297.2767" />
-        <path
-           id="path5375"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 335.478,297.2767 C 337.728,298.5747 339.255,299.9037 339.009,300.5667 C 338.885,301.1767 338.171,301.6317 337.151,302.3087 C 335.546,303.4267 334.566,305.4227 335.33,306.3437 C 334.004,305.2717 333.166,303.6707 333.166,301.8897 C 333.166,300.0277 334.049,298.3487 335.478,297.2767 z " />
-        <path
-           id="path5377"
-           style="font-size:12px;fill:#cccccc"
-           d="M 314.305,316.8457 L 330.448,316.8457 L 330.448,237.7547 L 314.305,237.7547 L 314.305,316.8457 z " />
-        <path
-           id="path5379"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 326.015,237.7257 L 326.015,316.6477 M 327.83,237.7257 L 327.83,316.6477" />
-        <path
-           id="path5381"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 314.305,316.8457 L 330.448,316.8457 L 330.448,237.7547 L 314.305,237.7547 L 314.305,316.8457 z " />
-        <path
-           id="path5383"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 297.816,267.3387 C 301.341,265.8827 307.33,264.8037 314.201,264.5777 C 316.568,264.5957 319.208,264.8177 321.935,265.2727 C 331.587,266.8837 338.942,270.7387 338.357,273.8777 C 338.345,273.9447 338.328,274.0817 338.309,274.1417 C 338.309,274.1417 341.931,265.9847 341.984,265.6747 C 342.632,262.1907 334.476,257.9087 323.76,256.1207 C 320.397,255.5597 317.113,255.3417 314.268,255.3697 C 307.409,255.3697 301.45,256.2477 297.861,257.5807 L 297.816,267.3387" />
-        <path
-           id="path5385"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 297.816,267.3387 C 301.341,265.8827 307.33,264.8037 314.201,264.5777 C 316.568,264.5957 319.208,264.8177 321.935,265.2727 C 331.587,266.8837 338.942,270.7387 338.357,273.8777 C 338.345,273.9447 338.328,274.0817 338.309,274.1417 C 338.309,274.1417 341.931,265.9847 341.984,265.6747 C 342.632,262.1907 334.476,257.9087 323.76,256.1207 C 320.397,255.5597 317.113,255.3417 314.268,255.3697 C 307.409,255.3697 301.45,256.2477 297.861,257.5807 L 297.816,267.3387" />
-        <path
-           id="path5387"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 330.477,277.2667 C 334.954,276.9457 338.011,275.7497 338.357,273.8777 C 338.637,272.3857 337.121,270.7357 334.421,269.2367 C 333.211,269.3667 331.851,269.5327 330.448,269.5327 L 330.477,277.2667" />
-        <path
-           id="path5389"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 330.477,277.2667 C 334.954,276.9457 338.011,275.7497 338.357,273.8777 C 338.637,272.3857 337.121,270.7357 334.421,269.2367 C 333.211,269.3667 331.851,269.5327 330.448,269.5327 L 330.477,277.2667" />
-        <path
-           id="path5391"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 314.279,271.2217 C 311.479,271.6447 309.381,272.3397 308.331,273.1937 L 308.239,273.3657 C 307.736,274.3887 310.197,276.5647 314.301,278.9947 L 314.279,271.2217" />
-        <path
-           id="path5393"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 314.279,271.2217 C 311.479,271.6447 309.381,272.3397 308.331,273.1937 L 308.239,273.3657 C 307.736,274.3887 310.197,276.5647 314.301,278.9947 L 314.279,271.2217" />
-        <path
-           id="path5395"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 340.502,292.5227 C 340.926,291.2457 336.561,288.6897 330.392,286.4257 C 327.573,285.4167 325.245,284.3657 322.36,283.0927 C 313.791,279.3047 307.46,274.9567 308.242,273.3697 L 308.325,273.2077 C 307.874,273.5777 307.167,281.3887 307.167,281.3887 C 306.385,282.8417 312.179,287.1267 320.061,290.9077 C 322.587,292.1137 327.922,294.0847 330.44,294.9667 C 334.942,296.5287 339.415,299.4737 339.009,300.5667 L 340.502,292.5267" />
-        <path
-           id="path5397"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 340.502,292.5227 C 340.926,291.2457 336.561,288.6897 330.392,286.4257 C 327.573,285.4167 325.245,284.3657 322.36,283.0927 C 313.791,279.3047 307.46,274.9567 308.242,273.3697 L 308.325,273.2077 C 307.874,273.5777 307.167,281.3887 307.167,281.3887 C 306.385,282.8417 312.179,287.1267 320.061,290.9077 C 322.587,292.1137 327.922,294.0847 330.44,294.9667 C 334.942,296.5287 339.415,299.4737 339.009,300.5667 L 340.502,292.5267 L 340.502,292.5227 z " />
-        <path
-           id="path5399"
-           style="font-size:12px;fill:#c8b100"
-           d="M 307.877,263.8727 C 308.488,261.5557 309.277,259.3157 310.052,257.0487 C 309.881,257.0947 309.695,257.1297 309.523,257.1577 C 309.349,257.1827 309.162,257.1997 308.984,257.2067 C 308.615,258.8367 308.116,260.4727 307.58,262.1087 C 306.626,260.6777 305.587,259.2877 304.761,257.8417 C 304.43,257.9087 304.086,257.9897 303.748,258.0397 C 303.416,258.0887 303.062,258.1137 302.72,258.1457 C 304.161,260.0777 305.554,262.0107 306.891,264.0167 C 307.051,263.9747 307.206,263.9217 307.383,263.8967 C 307.543,263.8757 307.71,263.8797 307.877,263.8727" />
-        <path
-           id="path5401"
-           style="font-size:12px;fill:#c8b100"
-           d="M 314.015,257.0947 C 313.72,257.1087 313.426,257.1297 313.131,257.1257 C 312.838,257.1227 312.544,257.0877 312.253,257.0657 L 312.134,263.4347 L 316.588,263.5097 C 316.565,263.3787 316.532,263.2377 316.536,263.1037 C 316.536,262.9727 316.577,262.8357 316.598,262.7047 C 315.801,262.7577 314.931,262.8077 313.91,262.7897 L 314.015,257.0947" />
-        <path
-           id="path5403"
-           style="font-size:12px;fill:#c8b100"
-           d="M 321.007,258.1417 C 321.719,258.2017 322.404,258.3247 323.09,258.4487 C 323.077,258.3147 323.056,258.1807 323.067,258.0427 C 323.077,257.9127 323.127,257.7817 323.164,257.6547 L 317.135,257.1547 C 317.15,257.2887 317.172,257.4187 317.158,257.5497 C 317.146,257.6907 317.098,257.8177 317.063,257.9477 C 317.678,257.9337 318.42,257.9267 319.25,257.9967 L 318.725,263.7277 C 319.019,263.7347 319.313,263.7317 319.604,263.7557 C 319.897,263.7777 320.189,263.8297 320.479,263.8727 L 321.004,258.1417" />
-        <path
-           id="path5405"
-           style="font-size:12px;fill:#c8b100"
-           d="M 323.473,264.4187 C 323.764,264.4647 324.057,264.4997 324.345,264.5637 C 324.631,264.6237 324.911,264.7157 325.19,264.7967 L 325.905,261.8697 L 325.983,261.8867 C 326.15,262.2887 326.367,262.7787 326.478,263.0617 L 327.372,265.2727 C 327.722,265.3287 328.071,265.3747 328.415,265.4487 C 328.768,265.5267 329.106,265.6287 329.446,265.7237 L 329.136,265.0607 C 328.655,264.0627 328.15,263.0687 327.733,262.0567 C 328.843,262.1057 329.703,261.7037 329.919,260.8117 C 330.072,260.1907 329.825,259.7037 329.24,259.2877 C 328.809,258.9807 327.972,258.8187 327.432,258.6987 L 325,258.1667 L 323.473,264.4187 M 326.593,259.0337 C 327.294,259.1887 328.169,259.3017 328.169,260.0987 C 328.165,260.2997 328.146,260.4407 328.113,260.5677 C 327.886,261.5027 327.178,261.8267 325.998,261.4747 L 326.593,259.0337" />
-        <path
-           id="path5407"
-           style="font-size:12px;fill:#c8b100"
-           d="M 334.956,266.3267 C 334.902,267.0177 334.779,267.6887 334.645,268.4147 C 334.95,268.5597 335.252,268.6897 335.546,268.8517 C 335.84,269.0147 336.111,269.1937 336.395,269.3707 L 336.991,262.1907 C 336.849,262.1337 336.722,262.0737 336.589,262.0037 C 336.454,261.9297 336.339,261.8557 336.215,261.7667 L 329.885,265.7877 C 330.052,265.8687 330.225,265.9427 330.388,266.0307 C 330.552,266.1227 330.69,266.2207 330.854,266.3127 C 331.385,265.8647 331.945,265.5017 332.585,265.0257 L 334.954,266.3237 L 334.956,266.3267 z M 333.162,264.6867 L 335.27,263.3227 L 335.024,265.7027 L 333.162,264.6867" />
-        <path
-           id="path5409"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 223.354,199.7797 C 223.354,198.6507 224.319,197.7377 225.507,197.7377 C 226.69,197.7377 227.659,198.6507 227.659,199.7797 C 227.659,200.9047 226.694,201.8177 225.507,201.8177 C 224.319,201.8177 223.354,200.9047 223.354,199.7797 z " />
-        <path
-           id="path5411"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.257296"
-           d="M 247.637,182.1747 C 254.236,182.1747 260.108,183.1517 263.933,184.6677 C 266.122,185.6557 269.061,186.3857 272.278,186.8157 C 274.728,187.1437 277.056,187.2107 279.081,187.0557 C 281.789,187.0027 285.706,187.7957 289.624,189.5207 C 292.867,190.9597 295.574,192.7087 297.372,194.4017 L 295.816,195.7877 L 295.366,199.7227 L 291.097,204.6107 L 288.964,206.4207 L 283.911,210.4657 L 281.33,210.6767 L 280.545,212.9097 L 247.853,209.0797 L 215.061,212.9097 L 214.275,210.6767 L 211.69,210.4657 L 206.638,206.4207 L 204.504,204.6107 L 200.237,199.7227 L 199.793,195.7877 L 198.229,194.4017 C 200.035,192.7087 202.743,190.9597 205.978,189.5207 C 209.896,187.7957 213.814,187.0027 216.52,187.0557 C 218.545,187.2107 220.874,187.1437 223.324,186.8157 C 226.542,186.3857 229.484,185.6557 231.669,184.6677 C 235.498,183.1517 241.042,182.1747 247.637,182.1747 z " />
-        <path
-           id="path5413"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.139,225.3337 C 235.959,225.3157 225.048,223.8737 217.262,221.5287 C 216.692,221.3557 216.394,220.8337 216.427,220.2937 C 216.417,219.7687 216.711,219.2927 217.262,219.1267 C 225.048,216.7847 235.959,215.3427 248.139,215.3247 C 260.317,215.3427 271.22,216.7847 279.007,219.1267 C 279.558,219.2927 279.847,219.7687 279.837,220.2937 C 279.867,220.8337 279.573,221.3557 279.007,221.5287 C 271.22,223.8737 260.317,225.3157 248.139,225.3337" />
-        <path
-           id="path5415"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 248.109,223.7357 C 237.117,223.7217 227.182,222.4527 219.619,220.4987 C 227.182,218.5417 237.117,217.3457 248.109,217.3247 C 259.099,217.3457 269.087,218.5417 276.65,220.4987 C 269.087,222.4527 259.099,223.7217 248.109,223.7357" />
-        <path
-           id="path5417"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.09301251"
-           d="M 248.92485,223.80217 L 248.92485,217.27966" />
-        <path
-           id="path5419"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.13693543"
-           d="M 247.15323,223.80217 L 247.15323,217.27966" />
-        <path
-           id="path5421"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.18344207"
-           d="M 245.48085,223.80217 L 245.48085,217.27966" />
-        <path
-           id="path5423"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.2299487"
-           d="M 243.82295,223.80217 L 243.82295,217.27966" />
-        <path
-           id="path5425"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.27645457"
-           d="M 242.34568,223.80217 L 242.34568,217.27966" />
-        <path
-           id="path5427"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.32296121"
-           d="M 239.52827,223.4505 L 239.48924,217.51394 M 240.86395,223.5286 L 240.86395,217.31896" />
-        <path
-           id="path5429"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.36688414"
-           d="M 236.92715,223.18356 L 236.92715,217.71402 M 238.24499,223.33974 L 238.20597,217.51904" />
-        <path
-           id="path5431"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.41339076"
-           d="M 233.43744,222.87119 L 233.43744,218.06569 M 234.58246,222.94928 L 234.58246,217.9095 M 235.76205,223.10547 L 235.76205,217.8702" />
-        <path
-           id="path5433"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.4598974"
-           d="M 232.21436,222.83189 L 232.21436,218.18308" />
-        <path
-           id="path5435"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.50640327"
-           d="M 231.0738,222.59761 L 231.0738,218.26117" />
-        <path
-           id="path5437"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.55290991"
-           d="M 229.85073,222.48021 L 229.85073,218.45615" />
-        <path
-           id="path5439"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.59683287"
-           d="M 227.34661,222.12905 L 227.30758,218.92522 M 228.62988,222.28524 L 228.62988,218.69094" />
-        <path
-           id="path5441"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.63042092"
-           d="M 226.06333,221.85547 L 226.06333,219.0421" />
-        <path
-           id="path5443"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.67692685"
-           d="M 224.8882,221.62732 L 224.8882,219.28454" />
-        <path
-           id="path5445"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.72084975"
-           d="M 223.60492,221.31495 L 223.60492,219.48003" />
-        <path
-           id="path5447"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.76477569"
-           d="M 222.28597,221.15877 L 222.28597,219.7924" />
-        <path
-           id="path5449"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.90170801"
-           d="M 220.89,220.8467 L 220.89,220.1827" />
-        <path
-           id="path5451"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0465064"
-           d="M 255.9734,223.4505 L 255.9734,217.47515 M 252.97202,223.64599 L 253.01104,217.31896 M 250.78454,223.72408 L 250.78454,217.27966" />
-        <path
-           id="path5453"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.054,215.3147 C 235.728,215.3387 224.665,216.8837 216.878,219.2817 C 217.525,218.9747 217.467,218.1777 216.662,216.1047 C 215.69,213.5967 214.175,213.7067 214.175,213.7067 C 222.784,211.1637 234.768,209.5727 248.106,209.5557 C 261.449,209.5727 273.529,211.1637 282.139,213.7067 C 282.139,213.7067 280.623,213.5967 279.651,216.1047 C 278.847,218.1777 278.787,218.9747 279.435,219.2817 C 271.649,216.8837 260.379,215.3387 248.054,215.3147" />
-        <path
-           id="path5455"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.106,209.5587 C 234.768,209.5797 222.784,211.1667 214.175,213.7137 C 213.601,213.8857 212.994,213.6607 212.808,213.1177 C 212.622,212.5737 212.931,211.9497 213.505,211.7737 C 222.151,209.1217 234.444,207.4567 248.109,207.4287 C 261.777,207.4537 274.117,209.1217 282.764,211.7737 C 283.338,211.9497 283.647,212.5737 283.461,213.1177 C 283.274,213.6607 282.667,213.8857 282.094,213.7137 C 273.484,211.1667 261.449,209.5797 248.106,209.5587" />
-        <path
-           id="path5457"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757;stroke-linejoin:round"
-           d="M 248.109,223.7357 C 237.117,223.7217 227.182,222.4527 219.619,220.4987 C 227.182,218.5417 237.117,217.3457 248.109,217.3247 C 259.099,217.3457 269.087,218.5417 276.65,220.4987 C 269.087,222.4527 259.099,223.7217 248.109,223.7357 z " />
-        <path
-           id="path5459"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 238.592,212.5887 C 238.592,212.0207 239.079,211.5587 239.679,211.5587 C 240.283,211.5587 240.771,212.0207 240.771,212.5887 C 240.771,213.1557 240.283,213.6217 239.679,213.6217 C 239.079,213.6217 238.592,213.1557 238.592,212.5887" />
-        <path
-           id="path5461"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.133,213.3997 L 244.869,213.3997 C 244.267,213.3997 243.768,212.9407 243.768,212.3697 C 243.768,211.8017 244.256,211.3367 244.856,211.3367 L 251.453,211.3367 C 252.053,211.3367 252.542,211.8017 252.542,212.3697 C 252.542,212.9407 252.043,213.3997 251.438,213.3997 L 248.133,213.3997" />
-        <path
-           id="path5463"
-           style="font-size:12px;fill:#058e6e;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 231.737,214.2987 L 229.389,214.5707 C 228.79,214.6407 228.235,214.2387 228.16,213.6777 C 228.087,213.1107 228.512,212.5957 229.111,212.5287 L 231.472,212.2537 L 233.874,211.9777 C 234.469,211.9077 235.013,212.3027 235.088,212.8707 C 235.158,213.4347 234.723,213.9527 234.127,214.0197 L 231.737,214.2987" />
-        <path
-           id="path5465"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 222.196,214.5037 C 222.196,213.9357 222.684,213.4737 223.283,213.4737 C 223.887,213.4737 224.374,213.9357 224.374,214.5037 C 224.374,215.0747 223.887,215.5367 223.283,215.5367 C 222.684,215.5367 222.196,215.0747 222.196,214.5037" />
-        <path
-           id="path5467"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 214.938,216.3797 L 216.149,214.7957 L 219.493,215.2187 L 216.819,217.1697 L 214.938,216.3797" />
-        <path
-           id="path5469"
-           style="font-size:12px;fill:#058e6e;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 264.532,214.2987 L 266.878,214.5707 C 267.473,214.6407 268.033,214.2387 268.107,213.6777 C 268.174,213.1107 267.753,212.5957 267.157,212.5287 L 264.797,212.2537 L 262.395,211.9777 C 261.795,211.9077 261.252,212.3027 261.181,212.8707 C 261.106,213.4347 261.546,213.9527 262.141,214.0197 L 264.532,214.2987" />
-        <path
-           id="path5471"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 255.498,212.5887 C 255.498,212.0207 255.986,211.5587 256.586,211.5587 C 257.189,211.5587 257.677,212.0207 257.677,212.5887 C 257.677,213.1557 257.189,213.6217 256.586,213.6217 C 255.986,213.6217 255.498,213.1557 255.498,212.5887" />
-        <path
-           id="path5473"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 271.894,214.5037 C 271.894,213.9357 272.382,213.4737 272.982,213.4737 C 273.585,213.4737 274.073,213.9357 274.073,214.5037 C 274.073,215.0747 273.585,215.5367 272.982,215.5367 C 272.382,215.5367 271.894,215.0747 271.894,214.5037" />
-        <path
-           id="path5475"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 281.33,216.3797 L 280.12,214.7957 L 276.776,215.2187 L 279.45,217.1697 L 281.33,216.3797" />
-        <path
-           id="path5477"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 218.305,220.8477 C 226.006,218.6857 236.477,217.3457 248.109,217.3247 C 259.74,217.3457 270.263,218.6857 277.964,220.8477" />
-        <path
-           id="path5479"
-           style="font-size:12px;fill:#c8b100"
-           d="M 223.492,190.8117 L 224.87,191.9157 L 226.936,188.5407 C 224.694,187.1687 223.157,184.7847 223.157,182.0687 C 223.157,181.7617 223.175,181.4627 223.213,181.1657 C 223.429,176.8597 228.675,173.3017 235.337,173.3017 C 238.793,173.3017 241.914,174.2467 244.111,175.7637 C 244.17,175.0967 244.23,174.5257 244.323,173.9187 C 241.903,172.5077 238.763,171.6587 235.337,171.6587 C 227.678,171.6587 221.686,176.0097 221.395,181.1627 C 221.365,181.4627 221.35,181.7657 221.35,182.0687 C 221.35,184.8167 222.606,187.2917 224.59,189.0127 L 223.492,190.8117" />
-        <path
-           id="path5481"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 223.492,190.8117 L 224.87,191.9157 L 226.936,188.5407 C 224.694,187.1687 223.157,184.7847 223.157,182.0687 C 223.157,181.7617 223.175,181.4627 223.213,181.1657 C 223.429,176.8597 228.675,173.3017 235.337,173.3017 C 238.793,173.3017 241.914,174.2467 244.111,175.7637 C 244.17,175.0967 244.23,174.5257 244.323,173.9187 C 241.903,172.5077 238.763,171.6587 235.337,171.6587 C 227.678,171.6587 221.686,176.0097 221.395,181.1627 C 221.365,181.4627 221.35,181.7657 221.35,182.0687 C 221.35,184.8167 222.606,187.2917 224.59,189.0127 L 223.492,190.8117" />
-        <path
-           id="path5483"
-           style="font-size:12px;fill:#c8b100"
-           d="M 223.581,190.8497 C 220.967,188.8997 219.344,186.2477 219.344,183.3277 C 219.344,179.9637 221.544,176.9627 224.888,174.9737 C 222.825,176.6307 221.574,178.7717 221.395,181.1627 C 221.365,181.4627 221.35,181.7657 221.35,182.0687 C 221.35,184.8167 222.606,187.2917 224.59,189.0127 L 223.581,190.8497" />
-        <path
-           id="path5485"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 223.581,190.8497 C 220.967,188.8997 219.344,186.2477 219.344,183.3277 C 219.344,179.9637 221.544,176.9627 224.888,174.9737 C 222.825,176.6307 221.574,178.7717 221.395,181.1627 C 221.365,181.4627 221.35,181.7657 221.35,182.0687 C 221.35,184.8167 222.606,187.2917 224.59,189.0127 L 223.581,190.8497" />
-        <path
-           id="path5487"
-           style="font-size:12px;fill:#c8b100"
-           d="M 200.52,194.2567 C 199.056,192.6167 198.159,190.4977 198.159,188.1807 C 198.159,186.7837 198.482,185.4477 199.067,184.2557 C 201.182,179.9037 207.818,176.7367 215.705,176.7367 C 217.854,176.7367 219.91,176.9697 221.809,177.4027 C 221.388,177.8617 221.057,178.3657 220.735,178.8737 C 219.157,178.5667 217.467,178.4007 215.705,178.4007 C 208.485,178.4007 202.445,181.2087 200.695,185.0027 C 200.229,185.9697 199.968,187.0487 199.968,188.1807 C 199.968,190.4867 201.048,192.5537 202.739,193.9647 L 200.125,198.2347 L 198.725,197.1207 L 200.52,194.2607" />
-        <path
-           id="path5489"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 200.52,194.2567 C 199.056,192.6167 198.159,190.4977 198.159,188.1807 C 198.159,186.7837 198.482,185.4477 199.067,184.2557 C 201.182,179.9037 207.818,176.7367 215.705,176.7367 C 217.854,176.7367 219.91,176.9697 221.809,177.4027 C 221.388,177.8617 221.057,178.3657 220.735,178.8737 C 219.157,178.5667 217.467,178.4007 215.705,178.4007 C 208.485,178.4007 202.445,181.2087 200.695,185.0027 C 200.229,185.9697 199.968,187.0487 199.968,188.1807 C 199.968,190.4867 201.048,192.5537 202.739,193.9647 L 200.125,198.2347 L 198.725,197.1207 L 200.52,194.2607 L 200.52,194.2567 z " />
-        <path
-           id="path5491"
-           style="font-size:12px;fill:#c8b100"
-           d="M 203.197,179.9497 C 201.298,181.1447 199.86,182.6157 199.067,184.2557 C 198.482,185.4477 198.159,186.7837 198.159,188.1807 C 198.159,190.4977 199.056,192.6167 200.52,194.2567 L 198.933,196.8317 C 197.414,194.8807 196.531,192.6027 196.531,190.1797 C 196.531,186.0077 199.186,182.3617 203.197,179.9497" />
-        <path
-           id="path5493"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 203.197,179.9497 C 201.298,181.1447 199.86,182.6157 199.067,184.2557 C 198.482,185.4477 198.159,186.7837 198.159,188.1807 C 198.159,190.4977 199.056,192.6167 200.52,194.2567 L 198.933,196.8317 C 197.414,194.8807 196.531,192.6027 196.531,190.1797 C 196.531,186.0077 199.186,182.3617 203.197,179.9497 z " />
-        <path
-           id="path5495"
-           style="font-size:12px;fill:#c8b100"
-           d="M 248.024,170.7977 C 249.774,170.7977 251.279,171.9547 251.637,173.5067 C 251.871,174.8787 252.017,176.4407 252.05,178.1047 C 252.053,178.2777 252.038,178.4467 252.038,178.6167 C 252.043,178.8137 252.08,179.0257 252.083,179.2267 C 252.143,182.7177 252.642,185.7997 253.353,187.6867 L 248.021,192.7867 L 242.632,187.6867 C 243.347,185.7997 243.842,182.7177 243.909,179.2267 C 243.913,179.0257 243.951,178.8137 243.951,178.6167 C 243.951,178.4467 243.939,178.2777 243.943,178.1047 C 243.969,176.4407 244.118,174.8787 244.353,173.5067 C 244.707,171.9547 246.274,170.7977 248.021,170.7977" />
-        <path
-           id="path5497"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 248.024,170.7977 C 249.774,170.7977 251.279,171.9547 251.637,173.5067 C 251.871,174.8787 252.017,176.4407 252.05,178.1047 C 252.053,178.2777 252.038,178.4467 252.038,178.6167 C 252.043,178.8137 252.08,179.0257 252.083,179.2267 C 252.143,182.7177 252.642,185.7997 253.353,187.6867 L 248.021,192.7867 L 242.632,187.6867 C 243.347,185.7997 243.842,182.7177 243.909,179.2267 C 243.913,179.0257 243.951,178.8137 243.951,178.6167 C 243.951,178.4467 243.939,178.2777 243.943,178.1047 C 243.969,176.4407 244.118,174.8787 244.353,173.5067 C 244.707,171.9547 246.274,170.7977 248.021,170.7977 L 248.024,170.7977 z " />
-        <path
-           id="path5499"
-           style="font-size:12px;fill:#c8b100"
-           d="M 248.024,172.4587 C 248.933,172.4587 249.699,173.0377 249.886,173.8407 C 250.106,175.1387 250.247,176.6207 250.277,178.1857 C 250.277,178.3487 250.269,178.5107 250.269,178.6687 C 250.269,178.8627 250.303,179.0567 250.307,179.2547 C 250.363,182.5517 250.836,185.4577 251.513,187.2457 L 247.998,190.5747 L 244.479,187.2457 C 245.15,185.4617 245.623,182.5517 245.682,179.2547 C 245.686,179.0567 245.72,178.8627 245.723,178.6687 C 245.723,178.5107 245.712,178.3487 245.712,178.1857 C 245.742,176.6207 245.883,175.1387 246.106,173.8407 C 246.289,173.0377 247.119,172.4587 248.024,172.4587" />
-        <path
-           id="path5501"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 248.024,172.4587 C 248.933,172.4587 249.699,173.0377 249.886,173.8407 C 250.106,175.1387 250.247,176.6207 250.277,178.1857 C 250.277,178.3487 250.269,178.5107 250.269,178.6687 C 250.269,178.8627 250.303,179.0567 250.307,179.2547 C 250.363,182.5517 250.836,185.4577 251.513,187.2457 L 247.998,190.5747 L 244.479,187.2457 C 245.15,185.4617 245.623,182.5517 245.682,179.2547 C 245.686,179.0567 245.72,178.8627 245.723,178.6687 C 245.723,178.5107 245.712,178.3487 245.712,178.1857 C 245.742,176.6207 245.883,175.1387 246.106,173.8407 C 246.289,173.0377 247.119,172.4587 248.024,172.4587 z " />
-        <path
-           id="path5503"
-           style="font-size:12px;fill:#c8b100"
-           d="M 272.516,190.8117 L 271.138,191.9157 L 269.072,188.5407 C 271.313,187.1687 272.851,184.7847 272.851,182.0687 C 272.851,181.7617 272.833,181.4627 272.796,181.1657 C 272.583,176.8597 267.329,173.3017 260.674,173.3017 C 257.211,173.3017 254.093,174.2467 251.894,175.7637 C 251.834,175.0967 251.782,174.5257 251.681,173.9187 C 254.102,172.5077 257.241,171.6587 260.674,171.6587 C 268.331,171.6587 274.322,176.0097 274.616,181.1627 C 274.642,181.4627 274.657,181.7657 274.657,182.0687 C 274.657,184.8167 273.403,187.2917 271.418,189.0127 L 272.516,190.8117" />
-        <path
-           id="path5505"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 272.516,190.8117 L 271.138,191.9157 L 269.072,188.5407 C 271.313,187.1687 272.851,184.7847 272.851,182.0687 C 272.851,181.7617 272.833,181.4627 272.796,181.1657 C 272.583,176.8597 267.329,173.3017 260.674,173.3017 C 257.211,173.3017 254.093,174.2467 251.894,175.7637 C 251.834,175.0967 251.782,174.5257 251.681,173.9187 C 254.102,172.5077 257.241,171.6587 260.674,171.6587 C 268.331,171.6587 274.322,176.0097 274.616,181.1627 C 274.642,181.4627 274.657,181.7657 274.657,182.0687 C 274.657,184.8167 273.403,187.2917 271.418,189.0127 L 272.516,190.8117" />
-        <path
-           id="path5507"
-           style="font-size:12px;fill:#c8b100"
-           d="M 272.427,190.8497 C 275.041,188.8997 276.665,186.2477 276.665,183.3277 C 276.665,179.9637 274.463,176.9627 271.124,174.9737 C 273.183,176.6307 274.433,178.7717 274.616,181.1627 C 274.642,181.4627 274.657,181.7657 274.657,182.0687 C 274.657,184.8167 273.403,187.2917 271.418,189.0127 L 272.427,190.8497" />
-        <path
-           id="path5509"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 272.427,190.8497 C 275.041,188.8997 276.665,186.2477 276.665,183.3277 C 276.665,179.9637 274.463,176.9627 271.124,174.9737 C 273.183,176.6307 274.433,178.7717 274.616,181.1627 C 274.642,181.4627 274.657,181.7657 274.657,182.0687 C 274.657,184.8167 273.403,187.2917 271.418,189.0127 L 272.427,190.8497" />
-        <path
-           id="path5511"
-           style="font-size:12px;fill:#c8b100"
-           d="M 295.492,194.2567 C 296.952,192.6167 297.848,190.4977 297.848,188.1807 C 297.848,186.7837 297.525,185.4477 296.945,184.2557 C 294.826,179.9037 288.19,176.7367 280.302,176.7367 C 278.153,176.7367 276.098,176.9697 274.199,177.4027 C 274.624,177.8617 274.952,178.3657 275.276,178.8737 C 276.847,178.5667 278.545,178.4007 280.298,178.4007 C 287.52,178.4007 293.563,181.2087 295.309,185.0027 C 295.778,185.9697 296.036,187.0487 296.036,188.1807 C 296.036,190.4867 294.956,192.5537 293.265,193.9647 L 295.879,198.2347 L 297.283,197.1207 L 295.489,194.2607" />
-        <path
-           id="path5513"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 295.492,194.2567 C 296.952,192.6167 297.848,190.4977 297.848,188.1807 C 297.848,186.7837 297.525,185.4477 296.945,184.2557 C 294.826,179.9037 288.19,176.7367 280.302,176.7367 C 278.153,176.7367 276.098,176.9697 274.199,177.4027 C 274.624,177.8617 274.952,178.3657 275.276,178.8737 C 276.847,178.5667 278.545,178.4007 280.298,178.4007 C 287.52,178.4007 293.563,181.2087 295.309,185.0027 C 295.778,185.9697 296.036,187.0487 296.036,188.1807 C 296.036,190.4867 294.956,192.5537 293.265,193.9647 L 295.879,198.2347 L 297.283,197.1207 L 295.489,194.2607 L 295.492,194.2567 z " />
-        <path
-           id="path5515"
-           style="font-size:12px;fill:#c8b100"
-           d="M 292.811,179.9497 C 294.71,181.1447 296.148,182.6157 296.945,184.2557 C 297.522,185.4477 297.848,186.7837 297.848,188.1807 C 297.848,190.4977 296.952,192.6167 295.492,194.2567 L 297.075,196.8317 C 298.594,194.8807 299.473,192.6027 299.473,190.1797 C 299.473,186.0077 296.822,182.3617 292.811,179.9497" />
-        <path
-           id="path5517"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 292.811,179.9497 C 294.71,181.1447 296.148,182.6157 296.945,184.2557 C 297.522,185.4477 297.848,186.7837 297.848,188.1807 C 297.848,190.4977 296.952,192.6167 295.492,194.2567 L 297.075,196.8317 C 298.594,194.8807 299.473,192.6027 299.473,190.1797 C 299.473,186.0077 296.822,182.3617 292.811,179.9497 z " />
-        <path
-           id="path5519"
-           style="font-size:12px;fill:#ffffff"
-           d="M 246.129,188.3427 C 246.129,187.3557 246.978,186.5587 248.021,186.5587 C 249.064,186.5587 249.913,187.3557 249.913,188.3427 C 249.913,189.3337 249.064,190.1347 248.021,190.1347 C 246.978,190.1347 246.129,189.3337 246.129,188.3427" />
-        <path
-           id="path5521"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 246.129,188.3427 C 246.129,187.3557 246.978,186.5587 248.021,186.5587 C 249.064,186.5587 249.913,187.3557 249.913,188.3427 C 249.913,189.3337 249.064,190.1347 248.021,190.1347 C 246.978,190.1347 246.129,189.3337 246.129,188.3427 z " />
-        <path
-           id="path5523"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 246.129,184.8337 C 246.129,183.8467 246.978,183.0417 248.021,183.0417 C 249.064,183.0417 249.913,183.8467 249.913,184.8337 C 249.913,185.8217 249.064,186.6217 248.021,186.6217 C 246.978,186.6217 246.129,185.8217 246.129,184.8337" />
-        <path
-           id="path5525"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 246.509,181.0597 C 246.509,180.2697 247.187,179.6317 248.021,179.6317 C 248.851,179.6317 249.529,180.2697 249.529,181.0597 C 249.529,181.8497 248.851,182.4887 248.021,182.4887 C 247.187,182.4887 246.509,181.8497 246.509,181.0597" />
-        <path
-           id="path5527"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 246.933,177.6567 C 246.933,177.0897 247.421,176.6277 248.021,176.6277 C 248.624,176.6277 249.108,177.0897 249.108,177.6567 C 249.108,178.2287 248.624,178.6907 248.021,178.6907 C 247.421,178.6907 246.933,178.2287 246.933,177.6567" />
-        <path
-           id="path5529"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 247.149,174.6807 C 247.149,174.2217 247.539,173.8557 248.021,173.8557 C 248.501,173.8557 248.892,174.2217 248.892,174.6807 C 248.892,175.1357 248.501,175.5057 248.021,175.5057 C 247.539,175.5057 247.149,175.1357 247.149,174.6807" />
-        <path
-           id="path5531"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.181,199.1127 L 249.41,199.3387 C 249.212,199.8357 249.171,200.3787 249.171,200.9507 C 249.171,203.4997 251.361,205.5737 254.057,205.5737 C 256.221,205.5737 258.064,204.2337 258.697,202.3827 C 258.768,202.4317 259.163,200.7107 259.367,200.7317 C 259.538,200.7497 259.52,202.5197 259.583,202.4877 C 259.896,204.8187 262.026,206.3957 264.424,206.3957 C 267.116,206.3957 269.299,204.3327 269.299,201.7787 C 269.299,201.5887 269.288,201.3987 269.262,201.2147 L 270.792,199.6987 L 271.614,201.6307 C 271.287,202.2377 271.157,202.9187 271.157,203.6487 C 271.157,206.0857 273.242,208.0567 275.816,208.0567 C 277.435,208.0567 278.857,207.2777 279.692,206.0957 L 280.671,204.8507 L 280.664,206.3777 C 280.664,207.9117 281.312,209.2877 282.809,209.5307 C 282.809,209.5307 284.528,209.6367 286.805,207.8487 C 289.084,206.0607 290.339,204.5797 290.339,204.5797 L 290.535,206.3707 C 290.535,206.3707 288.644,209.2947 286.585,210.4867 C 285.46,211.1427 283.751,211.8297 282.392,211.6077 C 280.954,211.3747 279.93,210.2217 279.402,208.8927 C 278.377,209.4957 277.167,209.8477 275.871,209.8477 C 273.086,209.8477 270.583,208.3207 269.593,206.0217 C 268.312,207.4037 266.528,208.2537 264.436,208.2537 C 262.212,208.2537 260.175,207.2527 258.898,205.7147 C 257.643,206.8577 255.937,207.5627 254.057,207.5627 C 251.595,207.5627 249.399,206.3567 248.154,204.5367 C 246.911,206.3567 244.717,207.5627 242.259,207.5627 C 240.38,207.5627 238.67,206.8577 237.414,205.7147 C 236.142,207.2527 234.101,208.2537 231.878,208.2537 C 229.785,208.2537 228.001,207.4037 226.719,206.0217 C 225.73,208.3207 223.228,209.8477 220.442,209.8477 C 219.145,209.8477 217.94,209.4957 216.916,208.8927 C 216.383,210.2217 215.359,211.3747 213.925,211.6077 C 212.566,211.8297 210.857,211.1427 209.729,210.4867 C 207.669,209.2947 205.78,206.3707 205.78,206.3707 L 205.978,204.5797 C 205.978,204.5797 207.234,206.0607 209.509,207.8487 C 211.788,209.6397 213.505,209.5307 213.505,209.5307 C 215.002,209.2877 215.649,207.9117 215.649,206.3777 L 215.642,204.8507 L 216.621,206.0957 C 217.455,207.2777 218.882,208.0567 220.498,208.0567 C 223.071,208.0567 225.156,206.0857 225.156,203.6487 C 225.156,202.9187 225.025,202.2377 224.698,201.6307 L 225.52,199.6987 L 227.052,201.2147 C 227.029,201.3987 227.015,201.5887 227.015,201.7787 C 227.015,204.3327 229.195,206.3957 231.889,206.3957 C 234.291,206.3957 236.417,204.8187 236.73,202.4877 C 236.797,202.5197 236.779,200.7497 236.949,200.7317 C 237.151,200.7107 237.549,202.4317 237.616,202.3827 C 238.253,204.2337 240.093,205.5737 242.264,205.5737 C 244.959,205.5737 247.142,203.4997 247.142,200.9507 C 247.142,200.3787 247.108,199.8357 246.907,199.3387 L 248.181,199.1127" />
-        <path
-           id="path5533"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 281.71,205.2067 C 281.992,204.3787 281.74,203.5597 281.144,203.3807 C 280.549,203.1937 279.833,203.7157 279.551,204.5407 C 279.267,205.3657 279.521,206.1807 280.117,206.3677 C 280.712,206.5467 281.427,206.0287 281.71,205.2067" />
-        <path
-           id="path5535"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 260.481,201.0947 C 260.592,200.2307 260.179,199.4767 259.557,199.4057 C 258.935,199.3317 258.339,199.9697 258.228,200.8307 C 258.116,201.6907 258.529,202.4497 259.151,202.5237 C 259.773,202.5937 260.369,201.9557 260.481,201.0947" />
-        <path
-           id="path5537"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 235.832,201.0947 C 235.721,200.2307 236.138,199.4767 236.756,199.4057 C 237.378,199.3317 237.974,199.9697 238.086,200.8307 C 238.193,201.6907 237.784,202.4497 237.162,202.5237 C 236.54,202.5937 235.944,201.9557 235.832,201.0947" />
-        <path
-           id="path5539"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 214.607,205.2067 C 214.324,204.3787 214.577,203.5597 215.173,203.3807 C 215.769,203.1937 216.48,203.7157 216.763,204.5407 C 217.042,205.3657 216.789,206.1807 216.197,206.3677 C 215.601,206.5467 214.89,206.0287 214.607,205.2067" />
-        <path
-           id="path5541"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 223.827,191.0407 C 224.881,191.7067 225.801,192.8147 226.12,194.0527 C 226.12,194.0527 226.244,193.7987 226.824,193.4637 C 227.409,193.1357 227.904,193.1457 227.904,193.1457 C 227.904,193.1457 227.737,194.1087 227.655,194.4547 C 227.57,194.7927 227.562,195.8267 227.339,196.7577 C 227.115,197.6887 226.709,198.4327 226.709,198.4327 C 226.296,198.0937 225.73,197.9247 225.145,198.0197 C 224.564,198.1187 224.095,198.4607 223.827,198.9117 C 223.827,198.9117 223.175,198.3447 222.631,197.5437 C 222.084,196.7427 221.712,195.7767 221.503,195.4837 C 221.298,195.1877 220.795,194.3347 220.795,194.3347 C 220.795,194.3347 221.258,194.1617 221.924,194.2847 C 222.59,194.4087 222.799,194.6097 222.799,194.6097 C 222.658,193.3367 223.079,192.0067 223.827,191.0407" />
-        <path
-           id="path5543"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 224.274,201.1797 C 223.939,200.9147 223.686,200.5447 223.604,200.1077 C 223.521,199.6737 223.615,199.2437 223.835,198.8907 C 223.835,198.8907 222.955,198.4467 222.013,198.1997 C 221.298,198.0127 220.04,198.0057 219.66,197.9987 C 219.28,197.9877 218.521,197.9707 218.521,197.9707 C 218.521,197.9707 218.584,198.1437 218.8,198.5207 C 219.06,198.9757 219.291,199.2607 219.291,199.2607 C 218.032,199.5507 216.96,200.3787 216.282,201.3387 C 217.266,202.0187 218.573,202.4317 219.857,202.3007 C 219.857,202.3007 219.745,202.6437 219.664,203.1617 C 219.597,203.5887 219.601,203.7647 219.601,203.7647 C 219.601,203.7647 220.308,203.5037 220.662,203.3737 C 221.016,203.2427 222.196,202.8337 222.803,202.4247 C 223.596,201.8817 224.274,201.1827 224.274,201.1827" />
-        <path
-           id="path5545"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 227.097,200.7067 C 227.316,200.3547 227.421,199.9237 227.339,199.4867 C 227.257,199.0497 227.018,198.6797 226.683,198.4147 C 226.683,198.4147 227.346,197.7127 228.139,197.1737 C 228.743,196.7647 229.926,196.3517 230.28,196.2247 C 230.634,196.0947 231.342,195.8297 231.342,195.8297 C 231.342,195.8297 231.345,196.0097 231.278,196.4367 C 231.197,196.9517 231.084,197.2937 231.084,197.2937 C 232.37,197.1597 233.679,197.5897 234.663,198.2737 C 233.986,199.2297 232.906,200.0437 231.651,200.3337 C 231.651,200.3337 231.878,200.6187 232.142,201.0737 C 232.358,201.4547 232.422,201.6237 232.422,201.6237 C 232.422,201.6237 231.662,201.6067 231.282,201.5997 C 230.902,201.5927 229.644,201.5887 228.929,201.3987 C 227.987,201.1477 227.097,200.7107 227.097,200.7107" />
-        <path
-           id="path5547"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 223.354,199.7797 C 223.354,198.6507 224.319,197.7377 225.507,197.7377 C 226.69,197.7377 227.659,198.6507 227.659,199.7797 C 227.659,200.9047 226.694,201.8177 225.507,201.8177 C 224.319,201.8177 223.354,200.9047 223.354,199.7797" />
-        <path
-           id="path5549"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.099,187.7787 C 249.134,188.7167 249.931,190.1197 250.032,191.5627 C 250.032,191.5627 250.218,191.3017 250.937,191.0407 C 251.655,190.7797 252.206,190.8817 252.206,190.8817 C 252.206,190.8817 251.823,191.9297 251.655,192.2957 C 251.488,192.6627 251.272,193.8127 250.824,194.8037 C 250.389,195.8017 249.782,196.5527 249.782,196.5527 C 249.387,196.1017 248.792,195.8087 248.121,195.8087 C 247.454,195.8087 246.859,196.1017 246.464,196.5527 C 246.464,196.5527 245.857,195.8017 245.418,194.8037 C 244.974,193.8127 244.755,192.6627 244.591,192.2957 C 244.424,191.9297 244.036,190.8817 244.036,190.8817 C 244.036,190.8817 244.591,190.7797 245.306,191.0407 C 246.024,191.3017 246.215,191.5627 246.215,191.5627 C 246.315,190.1197 247.068,188.7167 248.099,187.7787" />
-        <path
-           id="path5551"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 246.494,199.1657 C 246.174,198.8097 245.969,198.3477 245.969,197.8467 C 245.969,197.3497 246.159,196.8847 246.479,196.5347 C 246.479,196.5347 245.593,195.8717 244.595,195.4207 C 243.839,195.0747 242.435,194.8357 242.014,194.7577 C 241.59,194.6767 240.748,194.5177 240.748,194.5177 C 240.748,194.5177 240.782,194.7187 240.945,195.1807 C 241.143,195.7417 241.34,196.1017 241.34,196.1017 C 239.881,196.1897 238.506,196.9157 237.553,197.8577 C 238.506,198.7917 239.877,199.5007 241.34,199.5967 C 241.34,199.5967 241.143,199.9527 240.945,200.5167 C 240.782,200.9717 240.748,201.1757 240.748,201.1757 C 240.748,201.1757 241.59,201.0207 242.014,200.9437 C 242.435,200.8587 243.839,200.6227 244.595,200.2737 C 245.593,199.8217 246.494,199.1697 246.494,199.1697" />
-        <path
-           id="path5553"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 249.738,199.1657 C 250.058,198.8097 250.262,198.3477 250.262,197.8467 C 250.262,197.3497 250.073,196.8847 249.752,196.5347 C 249.752,196.5347 250.639,195.8717 251.637,195.4207 C 252.396,195.0747 253.8,194.8357 254.221,194.7577 C 254.638,194.6767 255.479,194.5177 255.479,194.5177 C 255.479,194.5177 255.45,194.7187 255.282,195.1807 C 255.084,195.7417 254.891,196.1017 254.891,196.1017 C 256.351,196.1897 257.724,196.9157 258.674,197.8577 C 257.724,198.7917 256.354,199.5007 254.891,199.5967 C 254.891,199.5967 255.084,199.9527 255.282,200.5167 C 255.446,200.9717 255.479,201.1757 255.479,201.1757 C 255.479,201.1757 254.642,201.0207 254.221,200.9437 C 253.8,200.8587 252.396,200.6227 251.637,200.2737 C 250.639,199.8217 249.738,199.1697 249.738,199.1697" />
-        <path
-           id="path5555"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 272.486,191.0407 C 271.436,191.7067 270.517,192.8147 270.196,194.0527 C 270.196,194.0527 270.068,193.7987 269.489,193.4637 C 268.908,193.1357 268.408,193.1457 268.408,193.1457 C 268.408,193.1457 268.576,194.1087 268.662,194.4547 C 268.748,194.7927 268.751,195.8267 268.974,196.7577 C 269.198,197.6887 269.603,198.4327 269.603,198.4327 C 270.021,198.0937 270.587,197.9247 271.168,198.0197 C 271.748,198.1187 272.218,198.4607 272.49,198.9117 C 272.49,198.9117 273.138,198.3447 273.686,197.5437 C 274.229,196.7427 274.605,195.7767 274.806,195.4837 C 275.011,195.1877 275.518,194.3347 275.518,194.3347 C 275.518,194.3347 275.052,194.1617 274.386,194.2847 C 273.719,194.4087 273.51,194.6097 273.51,194.6097 C 273.659,193.3367 273.234,192.0067 272.486,191.0407" />
-        <path
-           id="path5557"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 272.043,201.1797 C 272.375,200.9147 272.632,200.5447 272.709,200.1077 C 272.792,199.6737 272.702,199.2437 272.483,198.8907 C 272.483,198.8907 273.358,198.4467 274.299,198.1997 C 275.015,198.0127 276.277,198.0057 276.652,197.9987 C 277.033,197.9877 277.792,197.9707 277.792,197.9707 C 277.792,197.9707 277.732,198.1437 277.514,198.5207 C 277.252,198.9757 277.022,199.2607 277.022,199.2607 C 278.28,199.5507 279.352,200.3787 280.031,201.3387 C 279.051,202.0187 277.744,202.4317 276.456,202.3007 C 276.456,202.3007 276.571,202.6437 276.65,203.1617 C 276.712,203.5887 276.709,203.7647 276.709,203.7647 C 276.709,203.7647 276.001,203.5037 275.652,203.3737 C 275.298,203.2427 274.117,202.8337 273.51,202.4247 C 272.721,201.8817 272.043,201.1827 272.043,201.1827" />
-        <path
-           id="path5559"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 269.217,200.7067 C 268.997,200.3547 268.897,199.9237 268.974,199.4867 C 269.057,199.0497 269.299,198.6797 269.633,198.4147 C 269.633,198.4147 268.967,197.7127 268.174,197.1737 C 267.571,196.7647 266.386,196.3517 266.033,196.2247 C 265.679,196.0947 264.975,195.8297 264.975,195.8297 C 264.975,195.8297 264.972,196.0097 265.038,196.4367 C 265.117,196.9517 265.229,197.2937 265.229,197.2937 C 263.944,197.1597 262.633,197.5897 261.653,198.2737 C 262.332,199.2297 263.408,200.0437 264.663,200.3337 C 264.663,200.3337 264.436,200.6187 264.174,201.0737 C 263.955,201.4547 263.896,201.6237 263.896,201.6237 C 263.896,201.6237 264.651,201.6067 265.031,201.5997 C 265.407,201.5927 266.674,201.5887 267.384,201.3987 C 268.323,201.1477 269.213,200.7107 269.213,200.7107" />
-        <path
-           id="path5561"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 268.655,199.7797 C 268.655,198.6507 269.618,197.7377 270.807,197.7377 C 271.999,197.7377 272.963,198.6507 272.963,199.7797 C 272.963,200.9047 271.999,201.8177 270.807,201.8177 C 269.618,201.8177 268.655,200.9047 268.655,199.7797" />
-        <path
-           id="path5563"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 292.729,204.3077 C 292.222,203.7717 291.172,203.8847 290.387,204.5547 C 289.601,205.2207 289.373,206.2017 289.88,206.7337 C 290.387,207.2697 291.437,207.1537 292.222,206.4877 C 293.008,205.8137 293.236,204.8367 292.729,204.3077" />
-        <path
-           id="path5565"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 289.672,205.6057 C 289.78,205.2387 290.026,204.8647 290.387,204.5547 C 291.172,203.8847 292.222,203.7717 292.729,204.3077 C 292.792,204.3787 292.863,204.4737 292.904,204.5577 C 292.904,204.5577 293.995,202.4877 295.287,201.8007 C 296.58,201.1057 298.766,201.2817 298.766,201.2817 C 298.766,199.6947 297.466,198.4117 295.79,198.4117 C 294.807,198.4117 293.876,198.8207 293.328,199.5117 L 293.102,198.4467 C 293.102,198.4467 291.754,198.7147 291.135,200.2557 C 290.521,201.8007 291.191,204.0327 291.191,204.0327 C 291.191,204.0327 290.856,203.0737 290.35,202.4347 C 289.847,201.8007 288.555,201.1057 287.881,200.7887 C 287.207,200.4747 286.518,200.0017 286.518,200.0017 C 286.518,200.0017 286.488,200.1747 286.462,200.6017 C 286.436,201.1127 286.477,201.4267 286.477,201.4267 C 285.241,201.2647 283.799,201.4657 282.675,201.9027 C 283.155,202.8477 284.071,203.7367 285.27,204.1917 C 285.27,204.1917 284.838,204.5477 284.443,204.9387 C 284.116,205.2707 284.012,205.4257 284.012,205.4257 C 284.012,205.4257 284.857,205.5457 285.282,205.6057 C 285.702,205.6617 287.106,205.8837 287.944,205.8277 C 288.562,205.7887 289.255,205.6867 289.672,205.6057" />
-        <path
-           id="path5567"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 206.642,205.6057 C 206.534,205.2387 206.29,204.8647 205.927,204.5547 C 205.141,203.8847 204.094,203.7717 203.584,204.3077 C 203.517,204.3787 203.45,204.4737 203.409,204.5577 C 203.409,204.5577 202.314,202.4877 201.022,201.8007 C 199.734,201.1057 197.548,201.2817 197.548,201.2817 C 197.548,199.6947 198.848,198.4117 200.523,198.4117 C 201.51,198.4117 202.434,198.8207 202.988,199.5117 L 203.212,198.4467 C 203.212,198.4467 204.56,198.7147 205.178,200.2557 C 205.795,201.8007 205.122,204.0327 205.122,204.0327 C 205.122,204.0327 205.457,203.0737 205.964,202.4347 C 206.47,201.8007 207.762,201.1057 208.435,200.7887 C 209.107,200.4747 209.799,200.0017 209.799,200.0017 C 209.799,200.0017 209.825,200.1747 209.852,200.6017 C 209.878,201.1127 209.837,201.4267 209.837,201.4267 C 211.069,201.2647 212.514,201.4657 213.639,201.9027 C 213.158,202.8477 212.245,203.7367 211.043,204.1917 C 211.043,204.1917 211.475,204.5477 211.869,204.9387 C 212.198,205.2707 212.305,205.4257 212.305,205.4257 C 212.305,205.4257 211.456,205.5457 211.036,205.6057 C 210.61,205.6617 209.211,205.8837 208.373,205.8277 C 207.755,205.7887 207.062,205.6867 206.642,205.6057" />
-        <path
-           id="path5569"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 203.584,204.3077 C 204.094,203.7717 205.141,203.8847 205.927,204.5547 C 206.716,205.2207 206.939,206.2017 206.433,206.7337 C 205.927,207.2697 204.876,207.1537 204.091,206.4877 C 203.305,205.8137 203.078,204.8367 203.584,204.3077" />
-        <path
-           id="path5571"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 245.969,197.8467 C 245.969,196.7187 246.933,195.8087 248.121,195.8087 C 249.309,195.8087 250.277,196.7187 250.277,197.8467 C 250.277,198.9757 249.313,199.8887 248.121,199.8887 C 246.933,199.8887 245.969,198.9757 245.969,197.8467" />
-        <path
-           id="path5573"
-           style="font-size:12px;fill:#005bbf;stroke:#000000;stroke-width:0.257;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 243.641,166.8587 C 243.641,164.5517 245.612,162.6897 248.039,162.6897 C 250.467,162.6897 252.437,164.5517 252.437,166.8587 C 252.437,169.1577 250.467,171.0197 248.039,171.0197 C 245.612,171.0197 243.641,169.1577 243.641,166.8587" />
-        <path
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.257;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 246.88715,155.1751 L 246.88715,157.4251 L 244.4809,157.4251 L 244.4809,159.70635 L 246.88715,159.70635 L 246.88715,162.83135 L 246.88715,166.26885 L 243.8559,166.26885 C 243.82022,166.48289 243.63715,166.63893 243.63715,166.8626 C 243.63715,167.43735 243.7582,167.98974 243.9809,168.4876 C 243.98692,168.50106 244.00599,168.50547 244.01215,168.51885 L 252.07465,168.51885 C 252.08076,168.50558 252.09994,168.50094 252.1059,168.4876 C 252.32853,167.98974 252.44965,167.43735 252.44965,166.8626 C 252.44965,166.63973 252.26608,166.48229 252.2309,166.26885 L 249.2934,166.26885 L 249.2934,162.8626 L 249.2934,159.70635 L 251.69965,159.70635 L 251.69965,157.4251 L 249.2934,157.4251 L 249.2934,155.1751 L 246.88715,155.1751 z "
-           id="path5575" />
-        <path
-           id="path5577"
-           style="font-size:12px;fill:#cccccc"
-           d="M 248.475,342.6787 C 235.483,342.6787 222.606,339.4937 211.78,334.1967 C 203.8,330.2437 198.509,322.2737 198.509,313.1537 L 198.509,280.0807 L 298.244,280.0807 L 298.244,313.1537 C 298.244,322.2737 292.953,330.2437 284.972,334.1967 C 274.147,339.4937 261.471,342.6787 248.475,342.6787" />
-        <path
-           id="path5579"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.51459301"
-           d="M 248.475,342.6787 C 235.483,342.6787 222.606,339.4937 211.78,334.1967 C 203.8,330.2437 198.509,322.2737 198.509,313.1537 L 198.509,280.0807 L 298.244,280.0807 L 298.244,313.1537 C 298.244,322.2737 292.953,330.2437 284.972,334.1967 C 274.147,339.4937 261.471,342.6787 248.475,342.6787 z " />
-        <path
-           id="path5581"
-           style="font-size:12px;fill:#cccccc"
-           d="M 248.263,280.0247 L 298.24,280.0247 L 298.24,224.6917 L 248.263,224.6917 L 248.263,280.0247 z " />
-        <path
-           id="path5583"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.51459301"
-           d="M 248.263,280.0247 L 298.24,280.0247 L 298.24,224.6917 L 248.263,224.6917 L 248.263,280.0247 z " />
-        <path
-           id="path5585"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 248.3,313.1147 C 248.3,326.1847 237.225,336.7787 223.429,336.7787 C 209.628,336.7787 198.442,326.1847 198.442,313.1147 L 198.442,279.9927 L 248.3,279.9927 L 248.3,313.1147" />
-        <path
-           id="path5587"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.51459301"
-           d="M 209.334,332.6437 C 210.892,333.4707 213.032,334.8477 215.318,335.3987 L 215.173,278.8257 L 209.334,278.8257 L 209.334,332.6437 z " />
-        <path
-           id="path5589"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.49828601;stroke-linejoin:round"
-           d="M 198.36,312.6687 C 198.512,319.6487 201.283,324.8377 204.054,328.2357 L 204.054,279.1007 L 198.43,279.1007 L 198.36,312.6687 z " />
-        <path
-           id="path5591"
-           style="font-size:12px;fill:#c7b500;stroke:#000000;stroke-width:0.51459301"
-           d="M 220.45,336.6387 C 222.735,336.8687 224.439,336.8227 226.289,336.6387 L 226.289,278.8257 L 220.45,278.8257 L 220.45,336.6387 z " />
-        <path
-           id="path5593"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.51459301"
-           d="M 231.423,335.3987 C 233.709,334.9397 236.286,333.5167 237.408,332.7817 L 237.408,278.8257 L 231.569,278.8257 L 231.423,335.3987 z " />
-        <path
-           id="path5595"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 198.445,280.0247 L 248.281,280.0247 L 248.281,224.6917 L 198.445,224.6917 L 198.445,280.0247 z " />
-        <path
-           id="path5597"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.51459301"
-           d="M 198.445,280.0247 L 248.281,280.0247 L 248.281,224.6917 L 198.445,224.6917 L 198.445,280.0247 z " />
-        <path
-           id="path5599"
-           style="font-size:12px;fill:#c8b100;stroke:#000000;stroke-width:0.51459301"
-           d="M 242.834,327.6847 C 245.265,325.5267 247.551,320.6127 248.382,315.0107 L 248.527,278.8257 L 242.688,278.8257 L 242.834,327.6847 z " />
-        <path
-           id="path5601"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.51459301"
-           d="M 248.3,313.1147 C 248.3,326.1847 237.225,336.7787 223.429,336.7787 C 209.628,336.7787 198.442,326.1847 198.442,313.1147 L 198.442,279.9927 L 248.3,279.9927 L 248.3,313.1147" />
-        <path
-           id="path5603"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 298.289,279.9927 L 298.289,313.1147 C 298.289,326.1847 287.088,336.7787 273.287,336.7787 C 259.49,336.7787 248.3,326.1847 248.3,313.1147 L 248.3,279.9927 L 298.289,279.9927" />
-        <path
-           id="path5605"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.51459301"
-           d="M 298.289,279.9927 L 298.289,313.1147 C 298.289,326.1847 287.088,336.7787 273.287,336.7787 C 259.49,336.7787 248.3,326.1847 248.3,313.1147 L 248.3,279.9927 L 298.289,279.9927" />
-        <path
-           id="path5607"
-           style="font-size:12px;fill:#c8b100"
-           d="M 257.393,304.9927 C 257.472,305.1617 257.517,305.3317 257.517,305.5117 C 257.517,306.1217 256.999,306.6077 256.354,306.6077 C 255.713,306.6077 255.193,306.1217 255.193,305.5117 C 255.193,305.3317 255.238,305.1617 255.319,305.0137 L 253.696,304.9927 C 253.662,305.1587 253.643,305.3317 253.643,305.5117 C 253.643,306.6607 254.437,307.6347 255.534,307.9627 L 255.532,311.9477 L 257.234,311.9577 L 257.237,307.9447 C 258.027,307.6877 258.649,307.0947 258.921,306.3397 L 263.493,306.3397 L 263.493,304.9927 L 257.393,304.9927 M 279.818,304.9927 L 279.818,306.3397 L 275.707,306.3507 C 275.644,306.5307 275.542,306.6967 275.443,306.8547 L 280.217,312.2787 L 278.936,313.3157 L 274.185,307.8847 C 274.098,307.9127 274.054,307.9477 273.961,307.9727 L 273.95,316.9477 L 272.267,316.9477 L 272.263,307.9337 C 272.192,307.9167 272.132,307.8807 272.066,307.8497 L 267.12,313.3157 L 265.838,312.2787 L 270.781,306.7917 C 270.695,306.6537 270.632,306.5027 270.576,306.3397 L 266.327,306.3397 L 266.327,304.9927 L 279.822,304.9927 L 279.818,304.9927 z M 282.556,304.9927 L 282.556,306.3397 L 287.132,306.3397 C 287.404,307.0947 288.019,307.6877 288.815,307.9447 L 288.818,311.9577 L 290.517,311.9477 L 290.513,307.9627 C 291.612,307.6347 292.409,306.6607 292.409,305.5117 C 292.409,305.3317 292.39,305.1587 292.349,304.9927 L 290.733,304.9927 C 290.811,305.1617 290.852,305.3317 290.852,305.5117 C 290.852,306.1217 290.339,306.6077 289.694,306.6077 C 289.054,306.6077 288.532,306.1217 288.532,305.5117 C 288.532,305.3317 288.577,305.1617 288.659,305.0137 L 282.556,304.9927 M 275.647,327.8767 C 276.981,327.6657 278.21,327.2987 279.424,326.7877 L 280.258,328.2087 C 278.862,328.8077 277.357,329.2387 275.789,329.4747 C 275.528,330.6347 274.445,331.5057 273.142,331.5057 C 271.842,331.5057 270.758,330.6457 270.489,329.4927 C 268.833,329.2667 267.262,328.8397 265.791,328.2087 L 266.629,326.7877 C 267.906,327.3267 269.269,327.6867 270.683,327.8837 C 270.982,327.2357 271.529,326.7347 272.248,326.5017 L 272.263,319.5437 L 273.942,319.5437 L 273.957,326.4767 C 274.702,326.6997 275.331,327.2067 275.644,327.8767 L 275.647,327.8767 z M 264.233,325.5427 L 263.404,326.9707 C 261.984,326.0887 260.719,324.9997 259.632,323.7787 C 258.768,324.0327 257.792,323.8817 257.055,323.2817 C 255.915,322.3577 255.777,320.7357 256.753,319.6597 L 256.895,319.5087 C 256.208,317.9567 255.743,316.2887 255.584,314.5397 L 257.282,314.5467 C 257.416,316.0387 257.788,317.4597 258.368,318.7927 C 258.846,318.7257 259.356,318.7817 259.814,318.9517 L 264.063,314.2507 L 265.343,315.2837 L 261.121,319.9777 C 261.691,320.8447 261.668,321.9627 261.017,322.8167 C 261.954,323.8537 263.031,324.7777 264.233,325.5427 z M 257.933,320.6127 C 258.351,320.1467 259.084,320.0937 259.572,320.4887 C 260.06,320.8837 260.12,321.5817 259.703,322.0407 C 259.284,322.5027 258.552,322.5587 258.064,322.1637 C 257.576,321.7657 257.517,321.0747 257.933,320.6127 z M 255.792,315.9637 L 254.046,315.5727 L 253.8,311.1507 L 255.532,310.5787 L 255.534,313.1147 C 255.534,314.0987 255.621,315.0297 255.792,315.9637 z M 257.241,310.4807 L 258.98,310.8897 C 258.98,310.8897 259.069,313.7317 259.032,313.0937 C 258.987,312.3497 259.222,315.3157 259.222,315.3157 L 257.468,315.8937 C 257.293,314.9907 257.234,314.0667 257.234,313.1147 L 257.237,310.4807 L 257.241,310.4807 z M 262.974,324.6287 C 264.439,325.7717 266.141,326.6997 267.981,327.2877 L 268.368,325.6057 C 266.856,325.1297 265.455,324.4317 264.223,323.5257 L 262.974,324.6287 M 262.133,326.0817 C 263.619,327.1997 265.318,328.0957 267.139,328.7167 L 265.838,329.9327 C 264.379,329.3937 263.006,328.6817 261.747,327.8347 L 262.133,326.0817 M 264.402,316.3347 L 266.063,317.0397 L 269.101,313.6687 L 268.103,312.2327 L 264.402,316.3347 M 263.114,315.2937 L 262.118,313.8517 L 265.158,310.4807 L 266.814,311.1887 L 263.114,315.2937 M 281.818,325.5427 L 282.649,326.9707 C 284.067,326.0887 285.334,324.9997 286.421,323.7787 C 287.281,324.0327 288.261,323.8817 288.997,323.2817 C 290.137,322.3577 290.268,320.7357 289.298,319.6597 L 289.154,319.5087 C 289.843,317.9567 290.309,316.2887 290.461,314.5397 L 288.771,314.5467 C 288.637,316.0387 288.261,317.4597 287.683,318.7927 C 287.203,318.7257 286.697,318.7817 286.235,318.9517 L 281.99,314.2507 L 280.709,315.2837 L 284.928,319.9777 C 284.362,320.8447 284.384,321.9627 285.032,322.8167 C 284.097,323.8537 283.021,324.7777 281.818,325.5427 z M 288.115,320.6127 C 287.698,320.1467 286.968,320.0937 286.481,320.4887 C 285.992,320.8837 285.933,321.5817 286.35,322.0407 C 286.767,322.5027 287.501,322.5587 287.989,322.1637 C 288.477,321.7657 288.532,321.0747 288.115,320.6127 z M 290.257,315.9637 L 292.003,315.5727 L 292.249,311.1507 L 290.521,310.5787 L 290.517,313.1147 C 290.517,314.0987 290.431,315.0297 290.257,315.9637 z M 288.812,310.4807 L 287.073,310.8897 C 287.073,310.8897 286.979,313.7317 287.017,313.0937 C 287.065,312.3497 286.827,315.3157 286.827,315.3157 L 288.581,315.8937 C 288.756,314.9907 288.815,314.0667 288.815,313.1147 L 288.812,310.4807 M 283.077,324.6287 C 281.61,325.7717 279.907,326.6997 278.072,327.2877 L 277.685,325.6057 C 279.193,325.1297 280.597,324.4317 281.826,323.5257 L 283.077,324.6287 M 283.919,326.0817 C 282.428,327.1997 280.735,328.0957 278.913,328.7167 L 280.213,329.9327 C 281.673,329.3937 283.047,328.6817 284.306,327.8347 L 283.919,326.0817 M 281.65,316.3347 L 279.99,317.0397 L 276.951,313.6687 L 277.949,312.2327 L 281.65,316.3347 M 282.938,315.2937 L 283.934,313.8517 L 280.895,310.4807 L 279.238,311.1887 L 282.938,315.2937 M 262.138,306.3437 L 262.648,308.0007 L 267.329,308.0007 L 267.834,306.3437 L 262.138,306.3437 M 284.003,306.3437 L 283.49,308.0007 L 278.812,308.0007 L 278.307,306.3437 L 284.003,306.3437 M 271.98,328.9347 C 271.98,328.3247 272.501,327.8317 273.142,327.8317 C 273.782,327.8317 274.299,328.3247 274.299,328.9347 C 274.299,329.5417 273.782,330.0317 273.142,330.0317 C 272.501,330.0317 271.98,329.5417 271.98,328.9347 z M 273.95,320.9157 L 275.696,320.4257 L 275.696,315.9997 L 273.95,315.5197 L 273.95,320.9157 M 272.256,320.9157 L 270.513,320.4257 L 270.513,315.9997 L 272.256,315.5197 L 272.256,320.9157" />
-        <path
-           id="path5609"
-           style="font-size:12px;fill:#c8b100"
-           d="M 253.696,305.0317 C 253.897,304.1097 254.618,303.3607 255.547,303.0807 L 255.534,297.6157 L 257.219,297.6157 L 257.222,303.1097 C 258.053,303.3717 258.693,303.9857 258.95,304.7777 L 263.493,304.7847 L 263.493,305.0317 L 257.393,305.0317 C 257.204,304.6957 256.808,304.4457 256.354,304.4457 C 255.904,304.4457 255.509,304.6957 255.319,305.0527 L 253.696,305.0317 M 266.323,305.0317 L 266.323,304.7847 L 270.543,304.7847 C 270.591,304.6467 270.653,304.5127 270.725,304.3857 L 265.519,298.5837 L 266.799,297.5447 L 271.939,303.2517 C 272.028,303.2087 272.122,303.1697 272.214,303.1377 L 272.218,295.5347 L 273.901,295.5347 L 273.901,303.0917 C 273.976,303.1127 274.091,303.1337 274.166,303.1557 L 279.186,297.4387 L 280.477,298.4627 L 275.436,304.1557 C 275.566,304.3467 275.655,304.5587 275.726,304.7847 L 279.815,304.7847 L 279.815,305.0317 L 266.319,305.0317 L 266.323,305.0317 z M 288.659,305.0317 C 288.848,304.6957 289.24,304.4457 289.694,304.4457 C 290.149,304.4457 290.54,304.6957 290.733,305.0527 L 292.349,305.0317 C 292.147,304.1097 291.433,303.3607 290.502,303.0807 L 290.513,297.6187 L 288.833,297.6187 L 288.826,303.1127 C 288,303.3747 287.359,303.9857 287.102,304.7777 L 282.556,304.7847 L 282.556,305.0317 L 288.659,305.0317 M 257.491,289.5987 L 263.753,296.6187 L 265.035,295.5797 L 258.738,288.5877 C 258.864,288.3997 258.953,288.1957 259.028,287.9757 L 263.609,287.9757 L 263.609,286.3787 L 259.025,286.3787 C 258.674,285.3437 257.647,284.6017 256.437,284.6017 C 254.94,284.6017 253.722,285.7537 253.722,287.1747 C 253.722,288.3017 254.484,289.2627 255.549,289.6087 L 255.539,295.0257 L 257.222,295.0257 L 257.222,289.6447 C 257.293,289.6237 257.423,289.6237 257.491,289.5987 z M 290.532,289.6337 L 290.517,295.0257 L 288.833,295.0257 L 288.833,289.6127 C 288.704,289.5727 288.577,289.5197 288.457,289.4597 L 282.228,296.4887 L 280.94,295.4637 L 287.288,288.2977 C 287.236,288.1957 287.18,288.0897 287.143,287.9757 L 282.537,287.9757 L 282.537,286.3787 L 287.129,286.3787 C 287.482,285.3437 288.499,284.6017 289.705,284.6017 C 291.202,284.6017 292.42,285.7537 292.42,287.1747 C 292.42,288.3297 291.634,289.3047 290.532,289.6337 z M 273.92,289.6127 L 273.905,292.9337 L 272.222,292.9337 L 272.226,289.6407 C 271.388,289.3927 270.728,288.7717 270.453,287.9757 L 266.345,287.9757 L 266.345,286.3787 L 270.453,286.3787 C 270.807,285.3437 271.819,284.6017 273.026,284.6017 C 274.233,284.6017 275.253,285.3437 275.607,286.3787 L 279.796,286.3787 L 279.796,287.9757 L 275.596,287.9757 C 275.331,288.7427 274.721,289.3547 273.92,289.6127 z M 255.554,293.6437 L 253.808,294.1347 L 253.808,298.5737 L 255.554,299.0537 L 255.554,293.6437 M 257.249,293.6437 L 258.991,294.1347 L 258.991,298.5737 L 257.249,299.0537 L 257.249,293.6437 M 288.818,293.6437 L 287.076,294.1347 L 287.076,298.5737 L 288.818,299.0537 L 288.818,293.6437 M 290.513,293.6437 L 292.26,294.1347 L 292.26,298.5737 L 290.513,299.0537 L 290.513,293.6437 M 264.084,294.5197 L 265.746,293.8137 L 268.785,297.1917 L 267.787,298.6327 L 264.084,294.5197 M 262.797,295.5657 L 261.803,297.0117 L 264.841,300.3857 L 266.498,299.6757 L 262.797,295.5657 M 281.878,294.3897 L 280.213,293.6967 L 277.204,297.0997 L 278.213,298.5307 L 281.878,294.3897 M 283.174,295.4247 L 284.182,296.8587 L 281.174,300.2617 L 279.513,299.5657 L 283.174,295.4247 M 262.138,304.7817 L 262.648,303.1237 L 267.329,303.1237 L 267.834,304.7817 L 262.138,304.7817 M 255.275,287.1777 C 255.275,286.5707 255.796,286.0757 256.437,286.0757 C 257.077,286.0757 257.595,286.5707 257.595,287.1777 C 257.595,287.7857 257.077,288.2767 256.437,288.2767 C 255.796,288.2767 255.275,287.7857 255.275,287.1777 z M 267.794,287.9797 L 267.281,289.6407 L 262.603,289.6407 L 262.097,287.9797 L 267.794,287.9797 M 267.794,286.3717 L 267.281,284.7147 L 262.603,284.7147 L 262.097,286.3717 L 267.794,286.3717 M 284.003,304.7817 L 283.49,303.1237 L 278.812,303.1237 L 278.307,304.7817 L 284.003,304.7817 M 288.544,287.1777 C 288.544,286.5707 289.061,286.0757 289.705,286.0757 C 290.346,286.0757 290.864,286.5707 290.864,287.1777 C 290.864,287.7857 290.346,288.2767 289.705,288.2767 C 289.061,288.2767 288.544,287.7857 288.544,287.1777 z M 271.865,287.1777 C 271.865,286.5707 272.386,286.0757 273.026,286.0757 C 273.667,286.0757 274.185,286.5707 274.185,287.1777 C 274.185,287.7857 273.667,288.2767 273.026,288.2767 C 272.386,288.2767 271.865,287.7857 271.865,287.1777 z M 278.347,287.9797 L 278.862,289.6407 L 283.538,289.6407 L 284.045,287.9797 L 278.347,287.9797 M 278.347,286.3717 L 278.862,284.7147 L 283.538,284.7147 L 284.045,286.3717 L 278.347,286.3717 M 272.237,291.5557 L 270.494,292.0467 L 270.494,296.4847 L 272.237,296.9657 L 272.237,291.5557 M 273.913,291.5557 L 275.655,292.0467 L 275.655,296.4847 L 273.913,296.9657 L 273.913,291.5557" />
-        <path
-           id="path5611"
-           style="font-size:12px;fill:none;stroke:#c8b100;stroke-width:0.257296"
-           d="M 275.647,327.8767 C 276.981,327.6657 278.21,327.2987 279.424,326.7877 L 280.258,328.2087 C 278.862,328.8077 277.357,329.2387 275.789,329.4747 C 275.528,330.6347 274.445,331.5057 273.142,331.5057 C 271.842,331.5057 270.758,330.6457 270.489,329.4927 C 268.833,329.2667 267.262,328.8397 265.791,328.2087 L 266.629,326.7877 C 267.906,327.3267 269.269,327.6867 270.683,327.8837 C 270.982,327.2357 271.529,326.7347 272.248,326.5017 L 272.263,319.5437 L 273.942,319.5437 L 273.957,326.4767 C 274.702,326.6997 275.331,327.2067 275.644,327.8767 L 275.647,327.8767 z M 270.777,306.7947 C 270.692,306.6537 270.628,306.5027 270.572,306.3397 L 266.323,306.3397 L 266.323,304.7457 L 270.543,304.7457 C 270.591,304.6117 270.658,304.4777 270.728,304.3507 L 265.519,298.5567 L 266.799,297.5197 L 271.943,303.2157 C 272.032,303.1727 272.122,303.1347 272.218,303.1027 L 272.222,295.5137 L 273.901,295.5137 L 273.901,303.0567 C 273.976,303.0777 274.091,303.0987 274.166,303.1237 L 279.186,297.4137 L 280.477,298.4407 L 275.436,304.1187 C 275.566,304.3087 275.655,304.5207 275.726,304.7457 L 279.815,304.7457 L 279.815,306.3397 L 275.703,306.3507 C 275.644,306.5307 275.54,306.6967 275.443,306.8547 L 280.217,312.2827 L 278.936,313.3197 L 274.185,307.8847 C 274.098,307.9167 274.054,307.9517 273.957,307.9767 L 273.946,316.9517 L 272.263,316.9517 L 272.258,307.9377 C 272.188,307.9167 272.129,307.8807 272.062,307.8497 L 267.116,313.3197 L 265.836,312.2827 L 270.777,306.7947 M 257.491,289.5887 L 263.753,296.5957 L 265.035,295.5587 L 258.738,288.5797 C 258.864,288.3927 258.953,288.1887 259.028,287.9697 L 263.609,287.9697 L 263.609,286.3757 L 259.025,286.3757 C 258.674,285.3427 257.647,284.6017 256.437,284.6017 C 254.94,284.6017 253.722,285.7517 253.722,287.1697 C 253.722,288.2947 254.484,289.2537 255.549,289.5987 L 255.539,295.0057 L 257.222,295.0057 L 257.222,289.6347 C 257.293,289.6137 257.423,289.6137 257.491,289.5887 z M 264.233,325.5427 L 263.404,326.9707 C 261.984,326.0887 260.719,324.9997 259.632,323.7787 C 258.768,324.0327 257.792,323.8817 257.055,323.2817 C 255.915,322.3577 255.777,320.7357 256.753,319.6597 L 256.895,319.5087 C 256.208,317.9567 255.743,316.2887 255.584,314.5397 L 257.282,314.5467 C 257.416,316.0387 257.788,317.4597 258.368,318.7927 C 258.846,318.7257 259.356,318.7817 259.814,318.9517 L 264.063,314.2507 L 265.343,315.2837 L 261.121,319.9777 C 261.691,320.8447 261.668,321.9627 261.017,322.8167 C 261.954,323.8537 263.031,324.7777 264.233,325.5427 z M 255.532,311.9477 L 255.534,307.9627 C 254.437,307.6377 253.64,306.6607 253.64,305.5117 C 253.64,304.3647 254.448,303.3777 255.547,303.0457 L 255.534,297.5937 L 257.219,297.5937 L 257.222,303.0777 C 258.053,303.3387 258.693,303.9487 258.95,304.7387 L 263.493,304.7457 L 263.493,306.3397 L 258.921,306.3397 C 258.649,307.0947 258.027,307.6877 257.237,307.9447 L 257.234,311.9577 L 255.532,311.9477 M 257.933,320.6127 C 258.351,320.1467 259.084,320.0937 259.572,320.4887 C 260.06,320.8837 260.12,321.5817 259.703,322.0407 C 259.284,322.5027 258.552,322.5587 258.064,322.1637 C 257.576,321.7657 257.517,321.0747 257.933,320.6127 z M 255.792,315.9637 L 254.046,315.5727 L 253.8,311.1507 L 255.532,310.5787 L 255.534,313.1147 C 255.534,314.0987 255.621,315.0297 255.792,315.9637 z M 257.241,310.4807 L 258.98,310.8897 C 258.98,310.8897 259.069,313.7317 259.032,313.0937 C 258.987,312.3497 259.222,315.3157 259.222,315.3157 L 257.468,315.8937 C 257.293,314.9907 257.234,314.0667 257.234,313.1147 L 257.237,310.4807 L 257.241,310.4807 z M 262.974,324.6287 C 264.439,325.7717 266.141,326.6997 267.981,327.2877 L 268.368,325.6057 C 266.856,325.1297 265.455,324.4317 264.223,323.5257 L 262.974,324.6287 M 262.133,326.0817 C 263.619,327.1997 265.318,328.0957 267.139,328.7167 L 265.838,329.9327 C 264.379,329.3937 263.006,328.6817 261.747,327.8347 L 262.133,326.0817" />
-        <path
-           id="path5613"
-           style="font-size:12px;fill:none;stroke:#c8b100;stroke-width:0.257296"
-           d="M 264.402,316.3347 L 266.063,317.0397 L 269.101,313.6687 L 268.103,312.2327 L 264.402,316.3347 M 263.114,315.2937 L 262.118,313.8517 L 265.158,310.4807 L 266.814,311.1887 L 263.114,315.2937 M 255.193,305.5117 C 255.193,304.9007 255.713,304.4077 256.354,304.4077 C 256.995,304.4077 257.513,304.9007 257.513,305.5117 C 257.513,306.1217 256.995,306.6077 256.354,306.6077 C 255.713,306.6077 255.193,306.1217 255.193,305.5117 z M 281.818,325.5427 L 282.649,326.9707 C 284.067,326.0887 285.334,324.9997 286.421,323.7787 C 287.281,324.0327 288.261,323.8817 288.997,323.2817 C 290.137,322.3577 290.268,320.7357 289.298,319.6597 L 289.154,319.5087 C 289.843,317.9567 290.309,316.2887 290.461,314.5397 L 288.771,314.5467 C 288.637,316.0387 288.261,317.4597 287.683,318.7927 C 287.203,318.7257 286.697,318.7817 286.235,318.9517 L 281.99,314.2507 L 280.709,315.2837 L 284.928,319.9777 C 284.362,320.8447 284.384,321.9627 285.032,322.8167 C 284.097,323.8537 283.021,324.7777 281.818,325.5427 z M 290.521,311.9477 L 290.517,307.9627 C 291.616,307.6377 292.412,306.6607 292.412,305.5117 C 292.412,304.3647 291.605,303.3777 290.506,303.0457 L 290.517,297.5937 L 288.833,297.5937 L 288.826,303.0777 C 288,303.3387 287.359,303.9487 287.102,304.7387 L 282.556,304.7457 L 282.556,306.3397 L 287.132,306.3397 C 287.404,307.0947 288.019,307.6877 288.815,307.9447 L 288.818,311.9577 L 290.517,311.9477 L 290.521,311.9477 z M 288.115,320.6127 C 287.698,320.1467 286.968,320.0937 286.481,320.4887 C 285.992,320.8837 285.933,321.5817 286.35,322.0407 C 286.767,322.5027 287.501,322.5587 287.989,322.1637 C 288.477,321.7657 288.532,321.0747 288.115,320.6127 z M 290.257,315.9637 L 292.003,315.5727 L 292.249,311.1507 L 290.521,310.5787 L 290.517,313.1147 C 290.517,314.0987 290.431,315.0297 290.257,315.9637 z M 288.812,310.4807 L 287.073,310.8897 C 287.073,310.8897 286.979,313.7317 287.017,313.0937 C 287.065,312.3497 286.827,315.3157 286.827,315.3157 L 288.581,315.8937 C 288.756,314.9907 288.815,314.0667 288.815,313.1147 L 288.812,310.4807 M 290.532,289.6237 L 290.517,295.0057 L 288.833,295.0057 L 288.833,289.6027 C 288.704,289.5637 288.577,289.5107 288.457,289.4507 L 282.228,296.4657 L 280.94,295.4427 L 287.288,288.2907 C 287.236,288.1887 287.18,288.0827 287.143,287.9697 L 282.537,287.9697 L 282.537,286.3757 L 287.129,286.3757 C 287.482,285.3427 288.499,284.6017 289.705,284.6017 C 291.202,284.6017 292.42,285.7517 292.42,287.1697 C 292.42,288.3227 291.634,289.2957 290.532,289.6237 z M 273.92,289.6027 L 273.905,292.9177 L 272.222,292.9177 L 272.226,289.6307 C 271.388,289.3837 270.728,288.7637 270.453,287.9697 L 266.345,287.9697 L 266.345,286.3757 L 270.453,286.3757 C 270.807,285.3427 271.819,284.6017 273.026,284.6017 C 274.233,284.6017 275.253,285.3427 275.607,286.3757 L 279.796,286.3757 L 279.796,287.9697 L 275.596,287.9697 C 275.331,288.7347 274.721,289.3457 273.92,289.6027 z M 283.077,324.6287 C 281.61,325.7717 279.907,326.6997 278.072,327.2877 L 277.685,325.6057 C 279.193,325.1297 280.597,324.4317 281.826,323.5257 L 283.077,324.6287 M 283.919,326.0817 C 282.428,327.1997 280.735,328.0957 278.913,328.7167 L 280.213,329.9327 C 281.673,329.3937 283.047,328.6817 284.306,327.8347 L 283.919,326.0817 M 255.554,293.6267 L 253.808,294.1167 L 253.808,298.5467 L 255.554,299.0257 L 255.554,293.6267 M 257.249,293.6267 L 258.991,294.1167 L 258.991,298.5467 L 257.249,299.0257 L 257.249,293.6267 M 288.818,293.6267 L 287.076,294.1167 L 287.076,298.5467 L 288.818,299.0257 L 288.818,293.6267" />
-        <path
-           id="path5615"
-           style="font-size:12px;fill:none;stroke:#c8b100;stroke-width:0.257296"
-           d="M 290.513,293.6267 L 292.26,294.1167 L 292.26,298.5467 L 290.513,299.0257 L 290.513,293.6267 M 281.65,316.3347 L 279.99,317.0397 L 276.951,313.6687 L 277.949,312.2327 L 281.65,316.3347 M 282.938,315.2937 L 283.934,313.8517 L 280.895,310.4807 L 279.238,311.1887 L 282.938,315.2937 M 264.084,294.5007 L 265.746,293.7957 L 268.785,297.1677 L 267.787,298.6057 L 264.084,294.5007 M 262.797,295.5447 L 261.803,296.9877 L 264.841,300.3557 L 266.498,299.6467 L 262.797,295.5447 M 281.878,294.3707 L 280.213,293.6797 L 277.204,297.0757 L 278.213,298.5037 L 281.878,294.3707 M 283.174,295.4037 L 284.182,296.8357 L 281.174,300.2317 L 279.513,299.5367 L 283.174,295.4037 M 262.138,304.7427 L 262.648,303.0887 L 267.329,303.0887 L 267.834,304.7427 L 262.138,304.7427 M 262.138,306.3437 L 262.648,308.0007 L 267.329,308.0007 L 267.834,306.3437 L 262.138,306.3437 M 255.275,287.1727 C 255.275,286.5667 255.796,286.0727 256.437,286.0727 C 257.077,286.0727 257.595,286.5667 257.595,287.1727 C 257.595,287.7797 257.077,288.2697 256.437,288.2697 C 255.796,288.2697 255.275,287.7797 255.275,287.1727 z M 267.794,287.9737 L 267.281,289.6307 L 262.603,289.6307 L 262.097,287.9737 L 267.794,287.9737 M 267.794,286.3687 L 267.281,284.7147 L 262.603,284.7147 L 262.097,286.3687 L 267.794,286.3687 M 288.532,305.5117 C 288.532,304.9007 289.054,304.4077 289.694,304.4077 C 290.339,304.4077 290.852,304.9007 290.852,305.5117 C 290.852,306.1217 290.339,306.6077 289.694,306.6077 C 289.054,306.6077 288.532,306.1217 288.532,305.5117 z M 284.003,304.7427 L 283.49,303.0887 L 278.812,303.0887 L 278.307,304.7427 L 284.003,304.7427 M 284.003,306.3437 L 283.49,308.0007 L 278.812,308.0007 L 278.307,306.3437 L 284.003,306.3437 M 271.98,328.9347 C 271.98,328.3247 272.501,327.8317 273.142,327.8317 C 273.782,327.8317 274.299,328.3247 274.299,328.9347 C 274.299,329.5417 273.782,330.0317 273.142,330.0317 C 272.501,330.0317 271.98,329.5417 271.98,328.9347 z M 273.95,320.9157 L 275.696,320.4257 L 275.696,315.9997 L 273.95,315.5197 L 273.95,320.9157 M 272.256,320.9157 L 270.513,320.4257 L 270.513,315.9997 L 272.256,315.5197 L 272.256,320.9157 M 288.544,287.1727 C 288.544,286.5667 289.061,286.0727 289.705,286.0727 C 290.346,286.0727 290.864,286.5667 290.864,287.1727 C 290.864,287.7797 290.346,288.2697 289.705,288.2697 C 289.061,288.2697 288.544,287.7797 288.544,287.1727 z M 271.865,287.1727 C 271.865,286.5667 272.386,286.0727 273.026,286.0727 C 273.667,286.0727 274.185,286.5667 274.185,287.1727 C 274.185,287.7797 273.667,288.2697 273.026,288.2697 C 272.386,288.2697 271.865,287.7797 271.865,287.1727 z M 278.347,287.9737 L 278.862,289.6307 L 283.538,289.6307 L 284.045,287.9737 L 278.347,287.9737 M 278.347,286.3687 L 278.862,284.7147 L 283.538,284.7147 L 284.045,286.3687 L 278.347,286.3687" />
-        <path
-           id="path5617"
-           style="font-size:12px;fill:none;stroke:#c8b100;stroke-width:0.257296"
-           d="M 272.237,291.5427 L 270.494,292.0327 L 270.494,296.4617 L 272.237,296.9417 L 272.237,291.5427 M 273.913,291.5427 L 275.655,292.0327 L 275.655,296.4617 L 273.913,296.9417 L 273.913,291.5427" />
-        <path
-           id="path5619"
-           style="font-size:12px;fill:#058e6e"
-           d="M 270.423,305.5397 C 270.423,304.1147 271.641,302.9617 273.142,302.9617 C 274.639,302.9617 275.856,304.1147 275.856,305.5397 C 275.856,306.9577 274.639,308.1067 273.142,308.1067 C 271.641,308.1067 270.423,306.9577 270.423,305.5397" />
-        <path
-           id="path5621"
-           style="font-size:12px;fill:#db4446"
-           d="M 273.737,238.3257 L 273.793,237.7117 L 273.878,237.3697 C 273.878,237.3697 272.278,237.5007 271.436,237.2637 C 270.594,237.0247 269.835,236.6787 269.048,236.0157 C 268.264,235.3487 267.954,234.9327 267.392,234.8487 C 266.044,234.6337 265.005,235.2437 265.005,235.2437 C 265.005,235.2437 266.018,235.6167 266.778,236.5447 C 267.533,237.4797 268.357,237.9517 268.714,238.0647 C 269.303,238.2447 271.351,238.1177 271.913,238.1387 C 272.475,238.1667 273.737,238.3287 273.737,238.3287" />
-        <path
-           id="path5623"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 273.737,238.3257 L 273.793,237.7117 L 273.878,237.3697 C 273.878,237.3697 272.278,237.5007 271.436,237.2637 C 270.594,237.0247 269.835,236.6787 269.048,236.0157 C 268.264,235.3487 267.954,234.9327 267.392,234.8487 C 266.044,234.6337 265.005,235.2437 265.005,235.2437 C 265.005,235.2437 266.018,235.6167 266.778,236.5447 C 267.533,237.4797 268.357,237.9517 268.714,238.0647 C 269.303,238.2447 271.351,238.1177 271.913,238.1387 C 272.475,238.1667 273.737,238.3287 273.737,238.3287 L 273.737,238.3257 z " />
-        <path
-           id="path5625"
-           style="font-size:12px;fill:#ed72aa;fill-opacity:1;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 281.219,236.0757 C 281.219,236.0757 281.223,236.7917 281.293,237.4757 C 281.36,238.1317 281.081,238.7067 281.189,239.0697 C 281.293,239.4367 281.345,239.7257 281.487,239.9897 C 281.621,240.2547 281.695,240.9247 281.695,240.9247 C 281.695,240.9247 281.312,240.6527 280.957,240.3887 C 280.608,240.1207 280.357,239.9547 280.357,239.9547 C 280.357,239.9547 280.429,240.6707 280.462,240.9777 C 280.5,241.2847 280.679,241.8627 280.969,242.2047 C 281.256,242.5397 281.83,243.0897 282.007,243.5307 C 282.191,243.9757 282.154,244.9557 282.154,244.9557 C 282.154,244.9557 281.688,244.2117 281.288,244.0777 C 280.895,243.9397 280.031,243.4607 280.031,243.4607 C 280.031,243.4607 280.823,244.2467 280.823,244.9947 C 280.823,245.7417 280.5,246.5917 280.5,246.5917 C 280.5,246.5917 280.142,245.9147 279.677,245.4707 C 279.208,245.0297 278.56,244.5857 278.56,244.5857 C 278.56,244.5857 279.066,245.7417 279.066,246.5217 C 279.066,247.3077 278.925,248.9757 278.925,248.9757 C 278.925,248.9757 278.53,248.3307 278.135,248.0167 C 277.737,247.7137 277.272,247.4417 277.126,247.2407 C 276.985,247.0367 277.596,247.8827 277.662,248.3937 C 277.732,248.9057 277.975,250.7287 279.569,253.0567 C 280.5,254.4177 281.941,256.7977 285.028,256.0147 C 288.119,255.2357 286.972,251.0817 286.324,249.1417 C 285.676,247.2057 285.352,245.0577 285.39,244.3067 C 285.423,243.5627 285.963,241.3517 285.892,240.9387 C 285.821,240.5337 285.653,238.9537 286.037,237.6807 C 286.432,236.3547 286.76,235.8397 286.972,235.2927 C 287.183,234.7497 287.362,234.4427 287.434,233.9667 C 287.505,233.4907 287.505,232.6017 287.505,232.6017 C 287.505,232.6017 288.078,233.6597 288.223,234.0337 C 288.365,234.4107 288.365,235.5287 288.365,235.5287 C 288.365,235.5287 288.472,234.4107 289.337,233.8677 C 290.201,233.3177 291.206,232.7427 291.458,232.4357 C 291.709,232.1257 291.783,231.9247 291.783,231.9247 C 291.783,231.9247 291.709,233.8327 291.172,234.5837 C 290.815,235.0707 289.408,236.6577 289.408,236.6577 C 289.408,236.6577 290.13,236.3827 290.632,236.3547 C 291.135,236.3157 291.493,236.3547 291.493,236.3547 C 291.493,236.3547 290.882,236.8307 290.092,237.9867 C 289.303,239.1407 289.624,239.2427 289.05,240.1947 C 288.472,241.1467 288.007,241.1817 287.288,241.7607 C 286.208,242.6277 286.79,246.0767 286.931,246.5887 C 287.076,247.0967 288.942,251.3207 288.979,252.3407 C 289.012,253.3627 289.195,255.6417 287.396,257.1047 C 286.238,258.0537 284.343,258.0607 283.911,258.3317 C 283.478,258.5997 282.622,259.4497 282.622,261.2207 C 282.622,262.9947 283.263,263.2627 283.766,263.7067 C 284.272,264.1507 284.917,263.9117 285.061,264.2537 C 285.207,264.5917 285.277,264.7967 285.494,265.0007 C 285.71,265.2017 285.855,265.4417 285.781,265.8117 C 285.71,266.1897 284.883,267.0397 284.596,267.6567 C 284.306,268.2627 283.732,269.8677 283.732,270.1037 C 283.732,270.3437 283.665,271.0917 283.911,271.4687 C 283.911,271.4687 284.809,272.5167 284.197,272.7207 C 283.803,272.8547 283.416,272.4737 283.23,272.5167 C 282.693,272.6577 282.413,272.9887 282.258,272.9607 C 281.9,272.8937 281.9,272.7177 281.863,272.2127 C 281.83,271.7047 281.848,271.4967 281.688,271.4967 C 281.472,271.4967 281.363,271.6737 281.327,271.9417 C 281.288,272.2127 281.288,272.8227 281.04,272.8227 C 280.787,272.8227 280.429,272.3817 280.213,272.2837 C 279.997,272.1807 279.387,272.0787 279.352,271.8077 C 279.316,271.5357 279.711,270.9577 280.105,270.8547 C 280.5,270.7527 280.861,270.5517 280.608,270.3477 C 280.355,270.1427 280.105,270.1427 279.856,270.3477 C 279.603,270.5517 279.066,270.3787 279.1,270.0727 C 279.137,269.7657 279.208,269.3947 279.17,269.2227 C 279.137,269.0567 278.705,268.7147 279.275,268.4037 C 279.852,268.1007 280.101,268.6797 280.675,268.5767 C 281.252,268.4787 281.539,268.2667 281.755,267.9317 C 281.971,267.5927 281.933,266.8767 281.539,266.4367 C 281.144,265.9917 280.75,265.9217 280.604,265.6497 C 280.459,265.3787 280.247,264.7327 280.247,264.7327 C 280.247,264.7327 280.351,265.9217 280.28,266.0947 C 280.21,266.2637 280.247,266.9757 280.247,266.9757 C 280.247,266.9757 279.852,266.5347 279.528,266.1967 C 279.208,265.8547 278.884,264.8357 278.884,264.8357 C 278.884,264.8357 278.85,265.7877 278.85,266.1647 C 278.85,266.5347 279.278,266.8767 279.137,267.0147 C 278.992,267.1487 278.311,266.2987 278.132,266.1647 C 277.949,266.0277 277.376,265.5867 277.123,265.1067 C 276.873,264.6307 276.69,263.9537 276.62,263.7107 C 276.548,263.4737 276.43,262.4127 276.548,262.1447 C 276.727,261.7387 277.015,261.0227 277.015,261.0227 C 277.015,261.0227 276.37,261.0227 275.614,261.0227 C 274.862,261.0227 274.322,260.7867 274.035,261.2947 C 273.749,261.8057 273.89,262.8287 274.248,264.1547 C 274.609,265.4767 274.821,266.1257 274.717,266.3657 C 274.612,266.6017 274.144,267.1487 273.965,267.2477 C 273.782,267.3537 273.279,267.3177 273.063,267.2197 C 272.851,267.1167 272.494,266.9437 271.808,266.9437 C 271.127,266.9437 270.695,266.9757 270.446,266.9157 C 270.193,266.8457 269.582,266.5387 269.291,266.6057 C 269.004,266.6757 268.508,266.9297 268.643,267.3217 C 268.863,267.9347 268.431,268.0727 268.141,268.0377 C 267.854,268.0017 267.608,267.8997 267.243,267.8007 C 266.886,267.6957 266.345,267.8007 266.417,267.3887 C 266.487,266.9797 266.633,266.9477 266.811,266.6447 C 266.993,266.3337 267.06,266.1367 266.858,266.1157 C 266.606,266.0907 266.353,266.0627 266.156,266.2247 C 265.966,266.3837 265.657,266.7257 265.403,266.5987 C 265.149,266.4647 264.953,266.1717 264.953,265.5297 C 264.953,264.8917 264.278,264.3347 264.897,264.3627 C 265.515,264.3907 266.301,264.8427 266.442,264.4967 C 266.58,264.1477 266.495,263.9927 266.16,263.7207 C 265.823,263.4567 265.403,263.2977 265.853,262.9517 C 266.301,262.6097 266.413,262.6097 266.584,262.4197 C 266.752,262.2357 266.993,261.6367 267.307,261.7847 C 267.924,262.0777 267.336,262.5037 267.954,263.1917 C 268.573,263.8827 268.964,264.1267 270.003,264.0167 C 271.041,263.9117 271.325,263.7777 271.325,263.4847 C 271.325,263.1917 271.238,262.6627 271.208,262.4477 C 271.183,262.2357 271.351,261.4637 271.351,261.4637 C 271.351,261.4637 270.874,261.7597 270.733,262.0487 C 270.598,262.3417 270.315,262.8427 270.315,262.8427 C 270.315,262.8427 270.2,262.2467 270.233,261.7597 C 270.252,261.4747 270.353,260.9767 270.342,260.8787 C 270.315,260.6137 270.118,259.9477 270.118,259.9477 C 270.118,259.9477 269.949,260.6667 269.839,260.8787 C 269.727,261.0897 269.671,261.9437 269.671,261.9437 C 269.671,261.9437 269.012,261.3687 269.195,260.4027 C 269.332,259.6577 269.082,258.6747 269.306,258.3537 C 269.526,258.0327 270.058,256.7307 271.351,256.6747 C 272.643,256.6257 273.652,256.7307 274.103,256.7067 C 274.552,256.6747 276.151,256.3857 276.151,256.3857 C 276.151,256.3857 273.204,254.8727 272.531,254.4177 C 271.857,253.9697 270.818,252.7987 270.479,252.2667 C 270.143,251.7337 269.835,250.7007 269.835,250.7007 C 269.835,250.7007 269.306,250.7247 268.826,250.9897 C 268.349,251.2507 267.873,251.6567 267.593,251.9697 C 267.309,252.2907 266.863,253.0107 266.863,253.0107 C 266.863,253.0107 266.945,252.0797 266.945,251.7867 C 266.945,251.5007 266.889,250.9337 266.889,250.9337 C 266.889,250.9337 266.554,252.2097 265.88,252.6857 C 265.206,253.1687 264.42,253.8317 264.42,253.8317 C 264.42,253.8317 264.506,253.1197 264.506,252.9577 C 264.506,252.7987 264.674,251.9737 264.674,251.9737 C 264.674,251.9737 264.197,252.6857 263.467,252.8267 C 262.737,252.9577 261.668,252.9297 261.583,253.3847 C 261.501,253.8317 261.78,254.4457 261.613,254.7627 C 261.444,255.0837 261.08,255.2957 261.08,255.2957 C 261.08,255.2957 260.66,254.9467 260.294,254.9217 C 259.929,254.8937 259.591,255.0837 259.591,255.0837 C 259.591,255.0837 259.282,254.6817 259.393,254.4177 C 259.508,254.1527 260.067,253.7547 259.929,253.5927 C 259.788,253.4337 259.338,253.6487 259.058,253.7797 C 258.779,253.9137 258.187,254.0437 258.243,253.5927 C 258.299,253.1407 258.44,252.8767 258.299,252.5557 C 258.159,252.2417 258.243,252.0267 258.47,251.9457 C 258.693,251.8717 259.591,251.9697 259.676,251.7657 C 259.758,251.5507 259.453,251.2857 258.861,251.1517 C 258.272,251.0217 257.99,250.6727 258.299,250.3797 C 258.608,250.0867 258.693,250.0097 258.833,249.7417 C 258.973,249.4737 259.028,248.9967 259.564,249.2367 C 260.093,249.4737 259.981,250.0587 260.548,250.2457 C 261.103,250.4357 262.425,250.1677 262.703,250.0097 C 262.987,249.8467 263.884,249.1837 264.193,249.0217 C 264.503,248.8667 265.791,247.9077 265.791,247.9077 C 265.791,247.9077 265.035,247.3817 264.752,247.1107 C 264.473,246.8457 263.97,246.2107 263.721,246.0767 C 263.467,245.9397 262.231,245.4667 261.81,245.4387 C 261.389,245.4107 260.097,244.9627 260.097,244.9627 C 260.097,244.9627 260.686,244.7727 260.883,244.6137 C 261.08,244.4547 261.523,244.0527 261.754,244.0807 C 261.974,244.1097 262.029,244.1097 262.029,244.1097 C 262.029,244.1097 260.827,244.0527 260.573,243.9787 C 260.321,243.8937 259.591,243.4427 259.312,243.4427 C 259.028,243.4427 258.47,243.5517 258.47,243.5517 C 258.47,243.5517 259.226,243.0727 259.844,242.9667 C 260.462,242.8647 260.939,242.8857 260.939,242.8857 C 260.939,242.8857 259.986,242.6207 259.758,242.3037 C 259.535,241.9827 259.312,241.5097 259.14,241.2947 C 258.973,241.0837 258.861,240.7347 258.552,240.7097 C 258.243,240.6817 257.709,241.0837 257.401,241.0547 C 257.096,241.0307 256.868,240.8397 256.838,240.3917 C 256.817,239.9377 256.838,240.0957 256.731,239.8597 C 256.619,239.6167 256.169,239.0587 256.589,238.9287 C 257.014,238.7947 257.911,239.0067 257.993,238.8477 C 258.079,238.6887 257.517,238.2097 257.152,238.0227 C 256.787,237.8387 256.198,237.5177 256.507,237.2537 C 256.817,236.9887 257.124,236.8837 257.293,236.6437 C 257.461,236.4037 257.658,235.7407 258.023,235.9517 C 258.388,236.1637 258.893,237.2037 259.174,237.1227 C 259.457,237.0417 259.478,236.2977 259.427,235.9807 C 259.371,235.6597 259.427,235.1027 259.703,235.1547 C 259.986,235.2077 260.209,235.5787 260.66,235.6097 C 261.106,235.6347 261.78,235.5047 261.724,235.8177 C 261.668,236.1357 261.414,236.5307 261.106,236.8797 C 260.805,237.2287 260.663,237.9167 260.857,238.3677 C 261.053,238.8227 261.561,239.5427 262.008,239.8317 C 262.454,240.1237 263.296,240.3397 263.832,240.6817 C 264.364,241.0307 265.601,242.0107 266.022,242.1167 C 266.442,242.2257 266.863,242.4377 266.863,242.4377 C 266.863,242.4377 267.339,242.2257 267.988,242.2257 C 268.632,242.2257 270.118,242.3317 270.68,242.0917 C 271.242,241.8487 271.972,241.4537 271.748,240.9457 C 271.526,240.4447 270.289,239.9897 270.401,239.5947 C 270.513,239.1967 270.963,239.1687 271.718,239.1407 C 272.475,239.1157 273.514,239.2747 273.708,238.2097 C 273.905,237.1477 273.961,236.5337 272.9,236.2977 C 271.831,236.0577 271.044,236.0337 270.852,235.2607 C 270.653,234.4917 270.457,234.3057 270.68,234.0897 C 270.908,233.8817 271.298,233.7727 272.084,233.7237 C 272.87,233.6667 273.767,233.6667 274.021,233.4767 C 274.274,233.2967 274.326,232.7887 274.635,232.5737 C 274.943,232.3657 276.154,232.1747 276.154,232.1747 C 276.154,232.1747 277.596,232.8807 278.936,233.8747 C 280.135,234.7707 281.219,236.0937 281.219,236.0937" />
-        <path
-           id="path5627"
-           style="font-size:12px"
-           d="M 270.874,235.3277 C 270.874,235.3277 270.706,234.8487 270.677,234.7147 C 270.651,234.5837 270.564,234.4217 270.564,234.4217 C 270.564,234.4217 271.436,234.4217 271.407,234.6857 C 271.38,234.9537 271.127,234.9537 271.071,235.0567 C 271.016,235.1657 270.874,235.3277 270.874,235.3277" />
-        <path
-           id="path5629"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 270.874,235.3277 C 270.874,235.3277 270.706,234.8487 270.677,234.7147 C 270.651,234.5837 270.564,234.4217 270.564,234.4217 C 270.564,234.4217 271.436,234.4217 271.407,234.6857 C 271.38,234.9537 271.127,234.9537 271.071,235.0567 C 271.016,235.1657 270.874,235.3277 270.874,235.3277 z " />
-        <path
-           id="path5631"
-           style="font-size:12px"
-           d="M 274.862,233.9417 L 274.803,233.5157 C 274.803,233.5157 275.562,233.5227 275.927,233.7797 C 276.49,234.1787 276.851,234.7917 276.825,234.8167 C 276.727,234.9117 276.292,234.5517 275.983,234.4467 C 275.983,234.4467 275.759,234.4997 275.533,234.4997 C 275.309,234.4997 275.197,234.3937 275.167,234.2877 C 275.142,234.1787 275.197,233.9947 275.197,233.9947 L 274.862,233.9457" />
-        <path
-           id="path5633"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 274.862,233.9417 L 274.803,233.5157 C 274.803,233.5157 275.562,233.5227 275.927,233.7797 C 276.49,234.1787 276.851,234.7917 276.825,234.8167 C 276.727,234.9117 276.292,234.5517 275.983,234.4467 C 275.983,234.4467 275.759,234.4997 275.533,234.4997 C 275.309,234.4997 275.197,234.3937 275.167,234.2877 C 275.142,234.1787 275.197,233.9947 275.197,233.9947 L 274.862,233.9457 L 274.862,233.9417 z " />
-        <path
-           id="path5635"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 280.336,239.9517 C 280.336,239.9517 279.997,239.4717 279.915,239.3097 C 279.829,239.1547 279.688,238.8337 279.688,238.8337" />
-        <path
-           id="path5637"
-           style="font-size:12px;fill:#db4446"
-           d="M 259.784,235.1657 C 259.784,235.1657 260.261,235.5077 260.626,235.5607 C 260.991,235.6167 261.386,235.6167 261.442,235.6167 C 261.497,235.6167 261.613,235.0807 261.553,234.7147 C 261.356,233.5157 260.261,233.2507 260.261,233.2507 C 260.261,233.2507 260.588,233.9777 260.429,234.3127 C 260.205,234.7917 259.784,235.1657 259.784,235.1657" />
-        <path
-           id="path5639"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 259.784,235.1657 C 259.784,235.1657 260.261,235.5077 260.626,235.5607 C 260.991,235.6167 261.386,235.6167 261.442,235.6167 C 261.497,235.6167 261.613,235.0807 261.553,234.7147 C 261.356,233.5157 260.261,233.2507 260.261,233.2507 C 260.261,233.2507 260.588,233.9777 260.429,234.3127 C 260.205,234.7917 259.784,235.1657 259.784,235.1657 z " />
-        <path
-           id="path5641"
-           style="font-size:12px;fill:#db4446"
-           d="M 257.509,236.2027 C 257.509,236.2027 257.088,235.4307 256.191,235.5357 C 255.293,235.6417 254.701,236.3367 254.701,236.3367 C 254.701,236.3367 255.692,236.3047 255.937,236.4667 C 256.303,236.7067 256.414,237.3207 256.414,237.3207 C 256.414,237.3207 256.951,236.9997 257.118,236.7877 C 257.285,236.5727 257.509,236.2027 257.509,236.2027" />
-        <path
-           id="path5643"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 257.509,236.2027 C 257.509,236.2027 257.088,235.4307 256.191,235.5357 C 255.293,235.6417 254.701,236.3367 254.701,236.3367 C 254.701,236.3367 255.692,236.3047 255.937,236.4667 C 256.303,236.7067 256.414,237.3207 256.414,237.3207 C 256.414,237.3207 256.951,236.9997 257.118,236.7877 C 257.285,236.5727 257.509,236.2027 257.509,236.2027 z " />
-        <path
-           id="path5645"
-           style="font-size:12px;fill:#db4446"
-           d="M 256.414,239.3097 C 256.414,239.3097 255.658,239.4187 255.238,239.8987 C 254.813,240.3777 254.873,241.2807 254.873,241.2807 C 254.873,241.2807 255.375,240.7517 255.826,240.7517 C 256.277,240.7517 256.977,240.9107 256.977,240.9107 C 256.977,240.9107 256.753,240.3467 256.753,240.1097 C 256.753,239.8707 256.414,239.3097 256.414,239.3097" />
-        <path
-           id="path5647"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 256.414,239.3097 C 256.414,239.3097 255.658,239.4187 255.238,239.8987 C 254.813,240.3777 254.873,241.2807 254.873,241.2807 C 254.873,241.2807 255.375,240.7517 255.826,240.7517 C 256.277,240.7517 256.977,240.9107 256.977,240.9107 C 256.977,240.9107 256.753,240.3467 256.753,240.1097 C 256.753,239.8707 256.414,239.3097 256.414,239.3097 z " />
-        <path
-           id="path5649"
-           style="font-size:12px"
-           d="M 270.904,239.2037 L 271.238,238.6747 L 271.569,239.1547 L 270.904,239.2037" />
-        <path
-           id="path5651"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 270.904,239.2037 L 271.238,238.6747 L 271.569,239.1547 L 270.904,239.2037" />
-        <path
-           id="path5653"
-           style="font-size:12px"
-           d="M 271.715,239.1787 L 272.109,238.6497 L 272.531,239.1257 L 271.715,239.1787" />
-        <path
-           id="path5655"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 271.715,239.1787 L 272.109,238.6497 L 272.531,239.1257 L 271.715,239.1787" />
-        <path
-           id="path5657"
-           style="font-size:12px"
-           d="M 271.351,235.9097 L 272.166,236.2027 L 271.436,236.5727 L 271.351,235.9097" />
-        <path
-           id="path5659"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 271.351,235.9097 L 272.166,236.2027 L 271.436,236.5727 L 271.351,235.9097" />
-        <path
-           id="path5661"
-           style="font-size:12px"
-           d="M 272.333,236.1777 L 273.063,236.3617 L 272.475,236.8127 L 272.333,236.1777" />
-        <path
-           id="path5663"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 272.333,236.1777 L 273.063,236.3617 L 272.475,236.8127 L 272.333,236.1777" />
-        <path
-           id="path5665"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 266.858,242.4237 C 266.858,242.4237 266.059,242.6567 265.764,243.0867 C 265.4,243.6187 265.426,244.1517 265.426,244.1517 C 265.426,244.1517 266.1,243.5947 266.971,243.8307 C 267.843,244.0707 267.924,244.1517 268.293,244.1267 C 268.658,244.0987 269.556,243.7777 269.556,243.7777 C 269.556,243.7777 268.826,244.6277 268.908,245.2167 C 268.993,245.7987 269.101,246.0627 269.078,246.3597 C 269.018,247.0787 268.487,247.9567 268.487,247.9567 C 268.487,247.9567 268.796,247.7667 269.526,247.6077 C 270.252,247.4487 270.874,247.0997 271.265,246.8107 C 271.656,246.5147 272.162,245.7987 272.162,245.7987 C 272.162,245.7987 271.999,246.7827 272.162,247.2087 C 272.33,247.6357 272.386,248.8597 272.386,248.8597 C 272.386,248.8597 272.855,248.4437 273.227,248.2457 C 273.424,248.1367 273.931,247.8717 274.129,247.5547 C 274.266,247.3287 274.438,246.4967 274.438,246.4967 C 274.438,246.4967 274.549,247.3927 274.828,247.8267 C 275.112,248.2457 275.528,249.5547 275.528,249.5547 C 275.528,249.5547 275.812,248.7047 276.121,248.3557 C 276.426,248.0097 276.795,247.5587 276.821,247.2907 C 276.847,247.0257 276.739,246.4437 276.739,246.4437 L 277.13,247.2907 M 265.791,247.9007 C 265.791,247.9007 266.268,247.0787 266.718,246.8107 C 267.169,246.5427 267.787,246.0667 267.954,246.0137 C 268.118,245.9607 268.852,245.5587 268.852,245.5587 M 269.835,250.6937 C 269.835,250.6937 270.915,250.1397 271.238,249.9457 C 271.913,249.5507 272.389,248.8317 272.389,248.8317" />
-        <path
-           id="path5667"
-           style="font-size:12px;fill:#db4446"
-           d="M 258.968,249.3607 C 258.968,249.3607 258.548,248.9127 257.818,249.0427 C 257.088,249.1767 256.611,250.0027 256.611,250.0027 C 256.611,250.0027 257.229,249.8397 257.595,249.9207 C 257.959,250.0027 258.213,250.3727 258.213,250.3727 C 258.213,250.3727 258.548,250.0797 258.66,249.9207 C 258.772,249.7627 258.965,249.3607 258.965,249.3607" />
-        <path
-           id="path5669"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 258.968,249.3607 C 258.968,249.3607 258.548,248.9127 257.818,249.0427 C 257.088,249.1767 256.611,250.0027 256.611,250.0027 C 256.611,250.0027 257.229,249.8397 257.595,249.9207 C 257.959,250.0027 258.213,250.3727 258.213,250.3727 C 258.213,250.3727 258.548,250.0797 258.66,249.9207 C 258.772,249.7627 258.965,249.3607 258.965,249.3607 L 258.968,249.3607 z " />
-        <path
-           id="path5671"
-           style="font-size:12px;fill:#db4446"
-           d="M 258.127,252.3117 C 258.127,252.3117 257.509,252.2067 256.977,252.6327 C 256.444,253.0597 256.414,253.8817 256.414,253.8817 C 256.414,253.8817 256.921,253.4547 257.316,253.5117 C 257.707,253.5607 258.183,253.7757 258.183,253.7757 C 258.183,253.7757 258.269,253.2677 258.294,253.1377 C 258.381,252.7667 258.127,252.3117 258.127,252.3117" />
-        <path
-           id="path5673"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 258.127,252.3117 C 258.127,252.3117 257.509,252.2067 256.977,252.6327 C 256.444,253.0597 256.414,253.8817 256.414,253.8817 C 256.414,253.8817 256.921,253.4547 257.316,253.5117 C 257.707,253.5607 258.183,253.7757 258.183,253.7757 C 258.183,253.7757 258.269,253.2677 258.294,253.1377 C 258.381,252.7667 258.127,252.3117 258.127,252.3117 z " />
-        <path
-           id="path5675"
-           style="font-size:12px;fill:#db4446"
-           d="M 259.561,255.0277 C 259.561,255.0277 259.52,255.8177 259.896,256.3007 C 260.291,256.8087 261.021,256.8867 261.021,256.8867 C 261.021,256.8867 260.775,256.3577 260.738,256.0887 C 260.682,255.6907 261.073,255.3447 261.073,255.3447 C 261.073,255.3447 260.712,254.9747 260.347,254.9747 C 259.981,254.9747 259.561,255.0277 259.561,255.0277" />
-        <path
-           id="path5677"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 259.561,255.0277 C 259.561,255.0277 259.52,255.8177 259.896,256.3007 C 260.291,256.8087 261.021,256.8867 261.021,256.8867 C 261.021,256.8867 260.775,256.3577 260.738,256.0887 C 260.682,255.6907 261.073,255.3447 261.073,255.3447 C 261.073,255.3447 260.712,254.9747 260.347,254.9747 C 259.981,254.9747 259.561,255.0277 259.561,255.0277 z " />
-        <path
-           id="path5679"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 276.125,256.3537 C 276.125,256.3537 278.147,257.6057 278.091,258.6427 C 278.031,259.6797 276.966,261.0367 276.966,261.0367" />
-        <path
-           id="path5681"
-           style="font-size:12px;fill:#db4446"
-           d="M 266.858,262.0207 C 266.858,262.0207 266.353,261.3827 265.653,261.4077 C 264.949,261.4357 264.218,262.0947 264.218,262.0947 C 264.218,262.0947 265.091,262.0207 265.313,262.3097 C 265.541,262.6067 265.764,262.9727 265.764,262.9727 C 265.764,262.9727 266.156,262.7647 266.327,262.6307 C 266.495,262.5007 266.858,262.0207 266.858,262.0207" />
-        <path
-           id="path5683"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 266.858,262.0207 C 266.858,262.0207 266.353,261.3827 265.653,261.4077 C 264.949,261.4357 264.218,262.0947 264.218,262.0947 C 264.218,262.0947 265.091,262.0207 265.313,262.3097 C 265.541,262.6067 265.764,262.9727 265.764,262.9727 C 265.764,262.9727 266.156,262.7647 266.327,262.6307 C 266.495,262.5007 266.858,262.0207 266.858,262.0207 z " />
-        <path
-           id="path5685"
-           style="font-size:12px;fill:#db4446"
-           d="M 264.696,264.8107 C 264.696,264.8107 263.773,264.6767 263.322,265.1557 C 262.871,265.6327 262.901,266.5107 262.901,266.5107 C 262.901,266.5107 263.464,265.9007 263.966,265.9527 C 264.473,266.0057 265.035,266.2737 265.035,266.2737 C 265.035,266.2737 264.949,265.7417 264.893,265.5017 C 264.837,265.2617 264.696,264.8107 264.696,264.8107" />
-        <path
-           id="path5687"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 264.696,264.8107 C 264.696,264.8107 263.773,264.6767 263.322,265.1557 C 262.871,265.6327 262.901,266.5107 262.901,266.5107 C 262.901,266.5107 263.464,265.9007 263.966,265.9527 C 264.473,266.0057 265.035,266.2737 265.035,266.2737 C 265.035,266.2737 264.949,265.7417 264.893,265.5017 C 264.837,265.2617 264.696,264.8107 264.696,264.8107 z " />
-        <path
-           id="path5689"
-           style="font-size:12px;fill:#db4446"
-           d="M 266.692,267.7627 C 266.692,267.7627 266.241,268.4007 266.58,268.9047 C 266.915,269.4127 267.616,269.6527 267.616,269.6527 C 267.616,269.6527 267.366,269.2827 267.478,268.8517 C 267.567,268.5137 268.152,268.0547 268.152,268.0547 L 266.692,267.7657" />
-        <path
-           id="path5691"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 266.692,267.7627 C 266.692,267.7627 266.241,268.4007 266.58,268.9047 C 266.915,269.4127 267.616,269.6527 267.616,269.6527 C 267.616,269.6527 267.366,269.2827 267.478,268.8517 C 267.567,268.5137 268.152,268.0547 268.152,268.0547 L 266.692,267.7657 L 266.692,267.7627 z " />
-        <path
-           id="path5693"
-           style="font-size:12px;fill:#db4446"
-           d="M 279.014,268.9617 C 279.014,268.9617 278.203,268.7707 277.752,269.0387 C 277.305,269.3037 276.94,270.4217 276.94,270.4217 C 276.94,270.4217 277.67,269.8117 278.203,269.8857 C 278.735,269.9697 279.13,270.1817 279.13,270.1817 C 279.13,270.1817 279.211,269.7267 279.155,269.4127 C 279.122,269.2227 279.014,268.9617 279.014,268.9617" />
-        <path
-           id="path5695"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 279.014,268.9617 C 279.014,268.9617 278.203,268.7707 277.752,269.0387 C 277.305,269.3037 276.94,270.4217 276.94,270.4217 C 276.94,270.4217 277.67,269.8117 278.203,269.8857 C 278.735,269.9697 279.13,270.1817 279.13,270.1817 C 279.13,270.1817 279.211,269.7267 279.155,269.4127 C 279.122,269.2227 279.014,268.9617 279.014,268.9617 z " />
-        <path
-           id="path5697"
-           style="font-size:12px;fill:#db4446"
-           d="M 279.409,271.9347 C 279.409,271.9347 278.791,272.5727 279.014,273.1047 C 279.241,273.6377 279.632,274.1947 279.632,274.1947 C 279.632,274.1947 279.61,273.4017 279.86,273.1867 C 280.221,272.8687 280.895,272.8127 280.895,272.8127 C 280.895,272.8127 280.362,272.3367 280.191,272.2837 C 280.027,272.2267 279.409,271.9347 279.409,271.9347" />
-        <path
-           id="path5699"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 279.409,271.9347 C 279.409,271.9347 278.791,272.5727 279.014,273.1047 C 279.241,273.6377 279.632,274.1947 279.632,274.1947 C 279.632,274.1947 279.61,273.4017 279.86,273.1867 C 280.221,272.8687 280.895,272.8127 280.895,272.8127 C 280.895,272.8127 280.362,272.3367 280.191,272.2837 C 280.027,272.2267 279.409,271.9347 279.409,271.9347 z " />
-        <path
-           id="path5701"
-           style="font-size:12px;fill:#db4446"
-           d="M 282.496,272.8687 C 282.496,272.8687 282.187,273.6377 282.779,274.1417 C 283.367,274.6497 283.874,274.7027 283.874,274.7027 C 283.874,274.7027 283.423,273.9017 283.565,273.4787 C 283.71,273.0377 284.097,272.7627 284.097,272.7627 C 284.097,272.7627 283.367,272.5197 283.255,272.5477 C 283.144,272.5727 282.496,272.8687 282.496,272.8687" />
-        <path
-           id="path5703"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 282.496,272.8687 C 282.496,272.8687 282.187,273.6377 282.779,274.1417 C 283.367,274.6497 283.874,274.7027 283.874,274.7027 C 283.874,274.7027 283.423,273.9017 283.565,273.4787 C 283.71,273.0377 284.097,272.7627 284.097,272.7627 C 284.097,272.7627 283.367,272.5197 283.255,272.5477 C 283.144,272.5727 282.496,272.8687 282.496,272.8687 z " />
-        <path
-           id="path5705"
-           style="font-size:12px;fill:#ffd691;stroke:#000000;stroke-width:0.51499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 250.873,327.9967 C 252.951,328.6217 254.004,330.1697 254.004,331.9817 C 254.004,334.3417 251.715,336.1327 248.743,336.1327 C 245.772,336.1327 243.362,334.3417 243.362,331.9817 C 243.362,330.1977 244.353,328.2047 246.419,328.0607 C 246.419,328.0607 246.356,327.8737 246.178,327.5667 C 245.964,327.3377 245.541,326.9107 245.541,326.9107 C 245.541,326.9107 246.33,326.7627 246.785,326.9357 C 247.243,327.1087 247.544,327.3977 247.544,327.3977 C 247.544,327.3977 247.76,326.9747 248.062,326.6467 C 248.367,326.3217 248.762,326.1177 248.762,326.1177 C 248.762,326.1177 249.219,326.5017 249.369,326.7587 C 249.518,327.0237 249.615,327.3377 249.615,327.3377 C 249.615,327.3377 250.035,326.9917 250.4,326.8507 C 250.764,326.7067 251.234,326.5937 251.234,326.5937 C 251.234,326.5937 251.1,327.0487 251.011,327.2807 C 250.921,327.5107 250.873,327.9967 250.873,327.9967" />
-        <path
-           id="path5707"
-           style="font-size:12px;fill:#058e6e;stroke:#000000;stroke-width:0.51499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.304,338.6937 C 248.304,338.6937 244.353,336.0307 242.64,335.6707 C 240.45,335.2087 237.989,335.5827 236.924,335.5267 C 236.954,335.5577 238.201,336.4467 238.748,336.9967 C 239.296,337.5437 241.121,338.6367 242.152,338.8947 C 245.358,339.6987 248.304,338.6937 248.304,338.6937" />
-        <path
-           id="path5709"
-           style="font-size:12px;fill:#058e6e;stroke:#000000;stroke-width:0.51499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 249.432,338.9257 C 249.432,338.9257 251.963,336.2947 254.612,335.9317 C 257.743,335.4977 259.792,336.1897 261.008,336.5067 C 261.036,336.5067 260.003,336.9967 259.457,337.3707 C 258.908,337.7447 257.498,338.9257 255.342,338.9507 C 253.182,338.9827 250.799,338.7247 250.404,338.7847 C 250.009,338.8377 249.432,338.9257 249.432,338.9257" />
-        <path
-           id="path5711"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1;stroke:#000000;stroke-width:0.51499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 248.673,335.6707 C 247.678,334.7467 247.059,333.4347 247.059,331.9787 C 247.059,330.5257 247.682,329.2137 248.676,328.2937 C 249.667,329.2137 250.281,330.5257 250.281,331.9787 C 250.281,333.4347 249.663,334.7467 248.673,335.6707" />
-        <path
-           id="path5713"
-           style="font-size:12px;fill:#058e6e;stroke:#000000;stroke-width:0.51499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 247.667,341.0667 C 247.667,341.0667 248.278,339.5577 248.337,338.2597 C 248.389,337.1737 248.184,336.1017 248.184,336.1017 C 248.184,336.1017 248.52,336.1017 248.702,336.1017 C 248.885,336.1017 248.974,336.1017 248.974,336.1017 C 248.974,336.1017 249.369,337.2547 249.369,338.2597 C 249.369,339.2677 249.186,340.6087 249.186,340.6087 C 249.186,340.6087 248.639,340.6927 248.457,340.7777 C 248.278,340.8657 247.667,341.0667 247.667,341.0667" />
-        <path
-           id="path5715"
-           style="font-size:12px;fill:#ffffff"
-           d="M 297.648,198.0167 C 297.648,197.4447 298.136,196.9897 298.736,196.9897 C 299.339,196.9897 299.823,197.4447 299.823,198.0167 C 299.823,198.5877 299.339,199.0457 298.736,199.0457 C 298.136,199.0457 297.648,198.5877 297.648,198.0167" />
-        <path
-           id="path5717"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 297.648,198.0167 C 297.648,197.4447 298.136,196.9897 298.736,196.9897 C 299.339,196.9897 299.823,197.4447 299.823,198.0167 C 299.823,198.5877 299.339,199.0457 298.736,199.0457 C 298.136,199.0457 297.648,198.5877 297.648,198.0167 z " />
-        <path
-           id="path5719"
-           style="font-size:12px;fill:#ffffff"
-           d="M 299.137,195.3787 C 299.137,194.8107 299.622,194.3517 300.225,194.3517 C 300.824,194.3517 301.312,194.8107 301.312,195.3787 C 301.312,195.9537 300.824,196.4117 300.225,196.4117 C 299.622,196.4117 299.137,195.9537 299.137,195.3787" />
-        <path
-           id="path5721"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 299.137,195.3787 C 299.137,194.8107 299.622,194.3517 300.225,194.3517 C 300.824,194.3517 301.312,194.8107 301.312,195.3787 C 301.312,195.9537 300.824,196.4117 300.225,196.4117 C 299.622,196.4117 299.137,195.9537 299.137,195.3787 z " />
-        <path
-           id="path5723"
-           style="font-size:12px;fill:#ffffff"
-           d="M 300.127,192.3247 C 300.127,191.7567 300.616,191.2947 301.22,191.2947 C 301.819,191.2947 302.307,191.7567 302.307,192.3247 C 302.307,192.8957 301.819,193.3577 301.22,193.3577 C 300.616,193.3577 300.127,192.8957 300.127,192.3247" />
-        <path
-           id="path5725"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 300.127,192.3247 C 300.127,191.7567 300.616,191.2947 301.22,191.2947 C 301.819,191.2947 302.307,191.7567 302.307,192.3247 C 302.307,192.8957 301.819,193.3577 301.22,193.3577 C 300.616,193.3577 300.127,192.8957 300.127,192.3247 z " />
-        <path
-           id="path5727"
-           style="font-size:12px;fill:#ffffff"
-           d="M 300.255,189.0477 C 300.255,188.4767 300.742,188.0187 301.341,188.0187 C 301.941,188.0187 302.429,188.4767 302.429,189.0477 C 302.429,189.6197 301.941,190.0777 301.341,190.0777 C 300.742,190.0777 300.255,189.6197 300.255,189.0477" />
-        <path
-           id="path5729"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 300.255,189.0477 C 300.255,188.4767 300.742,188.0187 301.341,188.0187 C 301.941,188.0187 302.429,188.4767 302.429,189.0477 C 302.429,189.6197 301.941,190.0777 301.341,190.0777 C 300.742,190.0777 300.255,189.6197 300.255,189.0477 z " />
-        <path
-           id="path5731"
-           style="font-size:12px;fill:#ffffff"
-           d="M 299.447,185.8217 C 299.447,185.2537 299.935,184.7947 300.533,184.7947 C 301.137,184.7947 301.625,185.2537 301.625,185.8217 C 301.625,186.3957 301.137,186.8547 300.533,186.8547 C 299.935,186.8547 299.447,186.3957 299.447,185.8217" />
-        <path
-           id="path5733"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 299.447,185.8217 C 299.447,185.2537 299.935,184.7947 300.533,184.7947 C 301.137,184.7947 301.625,185.2537 301.625,185.8217 C 301.625,186.3957 301.137,186.8547 300.533,186.8547 C 299.935,186.8547 299.447,186.3957 299.447,185.8217 z " />
-        <path
-           id="path5735"
-           style="font-size:12px;fill:#ffffff"
-           d="M 297.771,182.8937 C 297.771,182.3227 298.259,181.8647 298.859,181.8647 C 299.462,181.8647 299.948,182.3227 299.948,182.8937 C 299.948,183.4657 299.462,183.9277 298.859,183.9277 C 298.259,183.9277 297.771,183.4657 297.771,182.8937" />
-        <path
-           id="path5737"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 297.771,182.8937 C 297.771,182.3227 298.259,181.8647 298.859,181.8647 C 299.462,181.8647 299.948,182.3227 299.948,182.8937 C 299.948,183.4657 299.462,183.9277 298.859,183.9277 C 298.259,183.9277 297.771,183.4657 297.771,182.8937 z " />
-        <path
-           id="path5739"
-           style="font-size:12px;fill:#ffffff"
-           d="M 295.537,180.4887 C 295.537,179.9177 296.024,179.4557 296.624,179.4557 C 297.228,179.4557 297.715,179.9177 297.715,180.4887 C 297.715,181.0567 297.228,181.5187 296.624,181.5187 C 296.024,181.5187 295.537,181.0567 295.537,180.4887" />
-        <path
-           id="path5741"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 295.537,180.4887 C 295.537,179.9177 296.024,179.4557 296.624,179.4557 C 297.228,179.4557 297.715,179.9177 297.715,180.4887 C 297.715,181.0567 297.228,181.5187 296.624,181.5187 C 296.024,181.5187 295.537,181.0567 295.537,180.4887 z " />
-        <path
-           id="path5743"
-           style="font-size:12px;fill:#ffffff"
-           d="M 292.941,178.4897 C 292.941,177.9177 293.429,177.4557 294.033,177.4557 C 294.632,177.4557 295.12,177.9177 295.12,178.4897 C 295.12,179.0567 294.632,179.5187 294.033,179.5187 C 293.429,179.5187 292.941,179.0567 292.941,178.4897" />
-        <path
-           id="path5745"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 292.941,178.4897 C 292.941,177.9177 293.429,177.4557 294.033,177.4557 C 294.632,177.4557 295.12,177.9177 295.12,178.4897 C 295.12,179.0567 294.632,179.5187 294.033,179.5187 C 293.429,179.5187 292.941,179.0567 292.941,178.4897 z " />
-        <path
-           id="path5747"
-           style="font-size:12px;fill:#ffffff"
-           d="M 289.84,176.8527 C 289.84,176.2817 290.327,175.8267 290.927,175.8267 C 291.53,175.8267 292.018,176.2817 292.018,176.8527 C 292.018,177.4247 291.53,177.8867 290.927,177.8867 C 290.327,177.8867 289.84,177.4247 289.84,176.8527" />
-        <path
-           id="path5749"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 289.84,176.8527 C 289.84,176.2817 290.327,175.8267 290.927,175.8267 C 291.53,175.8267 292.018,176.2817 292.018,176.8527 C 292.018,177.4247 291.53,177.8867 290.927,177.8867 C 290.327,177.8867 289.84,177.4247 289.84,176.8527 z " />
-        <path
-           id="path5751"
-           style="font-size:12px;fill:#ffffff"
-           d="M 286.622,175.6857 C 286.622,175.1177 287.11,174.6557 287.713,174.6557 C 288.312,174.6557 288.801,175.1177 288.801,175.6857 C 288.801,176.2567 288.312,176.7187 287.713,176.7187 C 287.11,176.7187 286.622,176.2567 286.622,175.6857" />
-        <path
-           id="path5753"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 286.622,175.6857 C 286.622,175.1177 287.11,174.6557 287.713,174.6557 C 288.312,174.6557 288.801,175.1177 288.801,175.6857 C 288.801,176.2567 288.312,176.7187 287.713,176.7187 C 287.11,176.7187 286.622,176.2567 286.622,175.6857 z " />
-        <path
-           id="path5755"
-           style="font-size:12px;fill:#ffffff"
-           d="M 283.025,175.0437 C 283.025,174.4757 283.512,174.0107 284.112,174.0107 C 284.716,174.0107 285.202,174.4757 285.202,175.0437 C 285.202,175.6117 284.716,176.0737 284.112,176.0737 C 283.512,176.0737 283.025,175.6117 283.025,175.0437" />
-        <path
-           id="path5757"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 283.025,175.0437 C 283.025,174.4757 283.512,174.0107 284.112,174.0107 C 284.716,174.0107 285.202,174.4757 285.202,175.0437 C 285.202,175.6117 284.716,176.0737 284.112,176.0737 C 283.512,176.0737 283.025,175.6117 283.025,175.0437 z " />
-        <path
-           id="path5759"
-           style="font-size:12px;fill:#ffffff"
-           d="M 279.61,174.8637 C 279.61,174.2957 280.098,173.8377 280.701,173.8377 C 281.301,173.8377 281.789,174.2957 281.789,174.8637 C 281.789,175.4357 281.301,175.8977 280.701,175.8977 C 280.098,175.8977 279.61,175.4357 279.61,174.8637" />
-        <path
-           id="path5761"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 279.61,174.8637 C 279.61,174.2957 280.098,173.8377 280.701,173.8377 C 281.301,173.8377 281.789,174.2957 281.789,174.8637 C 281.789,175.4357 281.301,175.8977 280.701,175.8977 C 280.098,175.8977 279.61,175.4357 279.61,174.8637 z " />
-        <path
-           id="path5763"
-           style="font-size:12px;fill:#ffffff"
-           d="M 276.258,174.9807 C 276.258,174.4127 276.747,173.9507 277.349,173.9507 C 277.953,173.9507 278.437,174.4127 278.437,174.9807 C 278.437,175.5517 277.953,176.0137 277.349,176.0137 C 276.747,176.0137 276.258,175.5517 276.258,174.9807" />
-        <path
-           id="path5765"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 276.258,174.9807 C 276.258,174.4127 276.747,173.9507 277.349,173.9507 C 277.953,173.9507 278.437,174.4127 278.437,174.9807 C 278.437,175.5517 277.953,176.0137 277.349,176.0137 C 276.747,176.0137 276.258,175.5517 276.258,174.9807 z " />
-        <path
-           id="path5767"
-           style="font-size:12px;fill:#ffffff"
-           d="M 272.911,174.9807 C 272.911,174.4127 273.398,173.9507 273.998,173.9507 C 274.597,173.9507 275.085,174.4127 275.085,174.9807 C 275.085,175.5517 274.597,176.0137 273.998,176.0137 C 273.398,176.0137 272.911,175.5517 272.911,174.9807" />
-        <path
-           id="path5769"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 272.911,174.9807 C 272.911,174.4127 273.398,173.9507 273.998,173.9507 C 274.597,173.9507 275.085,174.4127 275.085,174.9807 C 275.085,175.5517 274.597,176.0137 273.998,176.0137 C 273.398,176.0137 272.911,175.5517 272.911,174.9807 z " />
-        <path
-           id="path5771"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 274.587,177.8547 C 274.587,177.2837 275.075,176.8217 275.674,176.8217 C 276.277,176.8217 276.761,177.2837 276.761,177.8547 C 276.761,178.4227 276.277,178.8877 275.674,178.8877 C 275.075,178.8877 274.587,178.4227 274.587,177.8547" />
-        <path
-           id="path5773"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 275.268,181.0287 C 275.268,180.4577 275.756,179.9947 276.356,179.9947 C 276.959,179.9947 277.447,180.4577 277.447,181.0287 C 277.447,181.5927 276.959,182.0547 276.356,182.0547 C 275.756,182.0547 275.268,181.5927 275.268,181.0287" />
-        <path
-           id="path5775"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 275.391,184.1917 C 275.391,183.6167 275.879,183.1587 276.482,183.1587 C 277.082,183.1587 277.568,183.6167 277.568,184.1917 C 277.568,184.7597 277.082,185.2217 276.482,185.2217 C 275.879,185.2217 275.391,184.7597 275.391,184.1917" />
-        <path
-           id="path5777"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 274.4,187.0697 C 274.4,186.5017 274.888,186.0367 275.487,186.0367 C 276.091,186.0367 276.575,186.5017 276.575,187.0697 C 276.575,187.6407 276.091,188.0997 275.487,188.0997 C 274.888,188.0997 274.4,187.6407 274.4,187.0697" />
-        <path
-           id="path5779"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 272.549,189.7147 C 272.549,189.1467 273.038,188.6817 273.637,188.6817 C 274.239,188.6817 274.724,189.1467 274.724,189.7147 C 274.724,190.2827 274.239,190.7447 273.637,190.7447 C 273.038,190.7447 272.549,190.2827 272.549,189.7147" />
-        <path
-           id="path5781"
-           style="font-size:12px;fill:#ffffff"
-           d="M 270.375,172.9847 C 270.375,172.4167 270.863,171.9577 271.466,171.9577 C 272.066,171.9577 272.553,172.4167 272.553,172.9847 C 272.553,173.5557 272.066,174.0177 271.466,174.0177 C 270.863,174.0177 270.375,173.5557 270.375,172.9847" />
-        <path
-           id="path5783"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 270.375,172.9847 C 270.375,172.4167 270.863,171.9577 271.466,171.9577 C 272.066,171.9577 272.553,172.4167 272.553,172.9847 C 272.553,173.5557 272.066,174.0177 271.466,174.0177 C 270.863,174.0177 270.375,173.5557 270.375,172.9847 z " />
-        <path
-           id="path5785"
-           style="font-size:12px;fill:#ffffff"
-           d="M 267.399,171.3407 C 267.399,170.7727 267.884,170.3077 268.487,170.3077 C 269.087,170.3077 269.573,170.7727 269.573,171.3407 C 269.573,171.9087 269.087,172.3707 268.487,172.3707 C 267.884,172.3707 267.399,171.9087 267.399,171.3407" />
-        <path
-           id="path5787"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 267.399,171.3407 C 267.399,170.7727 267.884,170.3077 268.487,170.3077 C 269.087,170.3077 269.573,170.7727 269.573,171.3407 C 269.573,171.9087 269.087,172.3707 268.487,172.3707 C 267.884,172.3707 267.399,171.9087 267.399,171.3407 z " />
-        <path
-           id="path5789"
-           style="font-size:12px;fill:#ffffff"
-           d="M 264.119,170.3497 C 264.119,169.7817 264.607,169.3237 265.209,169.3237 C 265.809,169.3237 266.297,169.7817 266.297,170.3497 C 266.297,170.9207 265.809,171.3837 265.209,171.3837 C 264.607,171.3837 264.119,170.9207 264.119,170.3497" />
-        <path
-           id="path5791"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 264.119,170.3497 C 264.119,169.7817 264.607,169.3237 265.209,169.3237 C 265.809,169.3237 266.297,169.7817 266.297,170.3497 C 266.297,170.9207 265.809,171.3837 265.209,171.3837 C 264.607,171.3837 264.119,170.9207 264.119,170.3497 z " />
-        <path
-           id="path5793"
-           style="font-size:12px;fill:#ffffff"
-           d="M 260.708,169.7647 C 260.708,169.1967 261.196,168.7347 261.795,168.7347 C 262.398,168.7347 262.883,169.1967 262.883,169.7647 C 262.883,170.3317 262.398,170.7947 261.795,170.7947 C 261.196,170.7947 260.708,170.3317 260.708,169.7647" />
-        <path
-           id="path5795"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 260.708,169.7647 C 260.708,169.1967 261.196,168.7347 261.795,168.7347 C 262.398,168.7347 262.883,169.1967 262.883,169.7647 C 262.883,170.3317 262.398,170.7947 261.795,170.7947 C 261.196,170.7947 260.708,170.3317 260.708,169.7647 z " />
-        <path
-           id="path5797"
-           style="font-size:12px;fill:#ffffff"
-           d="M 257.368,169.8207 C 257.368,169.2527 257.855,168.7877 258.455,168.7877 C 259.058,168.7877 259.546,169.2527 259.546,169.8207 C 259.546,170.3927 259.058,170.8507 258.455,170.8507 C 257.855,170.8507 257.368,170.3927 257.368,169.8207" />
-        <path
-           id="path5799"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 257.368,169.8207 C 257.368,169.2527 257.855,168.7877 258.455,168.7877 C 259.058,168.7877 259.546,169.2527 259.546,169.8207 C 259.546,170.3927 259.058,170.8507 258.455,170.8507 C 257.855,170.8507 257.368,170.3927 257.368,169.8207 z " />
-        <path
-           id="path5801"
-           style="font-size:12px;fill:#ffffff"
-           d="M 253.893,170.4067 C 253.893,169.8387 254.381,169.3797 254.981,169.3797 C 255.584,169.3797 256.072,169.8387 256.072,170.4067 C 256.072,170.9807 255.584,171.4397 254.981,171.4397 C 254.381,171.4397 253.893,170.9807 253.893,170.4067" />
-        <path
-           id="path5803"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 253.893,170.4067 C 253.893,169.8387 254.381,169.3797 254.981,169.3797 C 255.584,169.3797 256.072,169.8387 256.072,170.4067 C 256.072,170.9807 255.584,171.4397 254.981,171.4397 C 254.381,171.4397 253.893,170.9807 253.893,170.4067 z " />
-        <path
-           id="path5805"
-           style="font-size:12px;fill:#ffffff"
-           d="M 250.676,171.5177 C 250.676,170.9457 251.164,170.4837 251.763,170.4837 C 252.366,170.4837 252.854,170.9457 252.854,171.5177 C 252.854,172.0847 252.366,172.5507 251.763,172.5507 C 251.164,172.5507 250.676,172.0847 250.676,171.5177" />
-        <path
-           id="path5807"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 250.676,171.5177 C 250.676,170.9457 251.164,170.4837 251.763,170.4837 C 252.366,170.4837 252.854,170.9457 252.854,171.5177 C 252.854,172.0847 252.366,172.5507 251.763,172.5507 C 251.164,172.5507 250.676,172.0847 250.676,171.5177 z " />
-        <path
-           id="path5809"
-           style="font-size:12px;fill:#ffffff"
-           d="M 196.185,198.0167 C 196.185,197.4447 196.673,196.9897 197.272,196.9897 C 197.876,196.9897 198.36,197.4447 198.36,198.0167 C 198.36,198.5877 197.876,199.0457 197.272,199.0457 C 196.673,199.0457 196.185,198.5877 196.185,198.0167" />
-        <path
-           id="path5811"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 196.185,198.0167 C 196.185,197.4447 196.673,196.9897 197.272,196.9897 C 197.876,196.9897 198.36,197.4447 198.36,198.0167 C 198.36,198.5877 197.876,199.0457 197.272,199.0457 C 196.673,199.0457 196.185,198.5877 196.185,198.0167 z " />
-        <path
-           id="path5813"
-           style="font-size:12px;fill:#ffffff"
-           d="M 194.695,195.3787 C 194.695,194.8107 195.183,194.3517 195.783,194.3517 C 196.386,194.3517 196.874,194.8107 196.874,195.3787 C 196.874,195.9537 196.386,196.4117 195.783,196.4117 C 195.183,196.4117 194.695,195.9537 194.695,195.3787" />
-        <path
-           id="path5815"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 194.695,195.3787 C 194.695,194.8107 195.183,194.3517 195.783,194.3517 C 196.386,194.3517 196.874,194.8107 196.874,195.3787 C 196.874,195.9537 196.386,196.4117 195.783,196.4117 C 195.183,196.4117 194.695,195.9537 194.695,195.3787 z " />
-        <path
-           id="path5817"
-           style="font-size:12px;fill:#ffffff"
-           d="M 193.701,192.3247 C 193.701,191.7567 194.189,191.2947 194.792,191.2947 C 195.392,191.2947 195.88,191.7567 195.88,192.3247 C 195.88,192.8957 195.392,193.3577 194.792,193.3577 C 194.189,193.3577 193.701,192.8957 193.701,192.3247" />
-        <path
-           id="path5819"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 193.701,192.3247 C 193.701,191.7567 194.189,191.2947 194.792,191.2947 C 195.392,191.2947 195.88,191.7567 195.88,192.3247 C 195.88,192.8957 195.392,193.3577 194.792,193.3577 C 194.189,193.3577 193.701,192.8957 193.701,192.3247 z " />
-        <path
-           id="path5821"
-           style="font-size:12px;fill:#ffffff"
-           d="M 193.578,189.0477 C 193.578,188.4767 194.066,188.0187 194.666,188.0187 C 195.269,188.0187 195.757,188.4767 195.757,189.0477 C 195.757,189.6197 195.269,190.0777 194.666,190.0777 C 194.066,190.0777 193.578,189.6197 193.578,189.0477" />
-        <path
-           id="path5823"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 193.578,189.0477 C 193.578,188.4767 194.066,188.0187 194.666,188.0187 C 195.269,188.0187 195.757,188.4767 195.757,189.0477 C 195.757,189.6197 195.269,190.0777 194.666,190.0777 C 194.066,190.0777 193.578,189.6197 193.578,189.0477 z " />
-        <path
-           id="path5825"
-           style="font-size:12px;fill:#ffffff"
-           d="M 194.386,185.8217 C 194.386,185.2537 194.874,184.7947 195.473,184.7947 C 196.073,184.7947 196.561,185.2537 196.561,185.8217 C 196.561,186.3957 196.073,186.8547 195.473,186.8547 C 194.874,186.8547 194.386,186.3957 194.386,185.8217" />
-        <path
-           id="path5827"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 194.386,185.8217 C 194.386,185.2537 194.874,184.7947 195.473,184.7947 C 196.073,184.7947 196.561,185.2537 196.561,185.8217 C 196.561,186.3957 196.073,186.8547 195.473,186.8547 C 194.874,186.8547 194.386,186.3957 194.386,185.8217 z " />
-        <path
-           id="path5829"
-           style="font-size:12px;fill:#ffffff"
-           d="M 196.058,182.8937 C 196.058,182.3227 196.546,181.8647 197.15,181.8647 C 197.749,181.8647 198.237,182.3227 198.237,182.8937 C 198.237,183.4657 197.749,183.9277 197.15,183.9277 C 196.546,183.9277 196.058,183.4657 196.058,182.8937" />
-        <path
-           id="path5831"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 196.058,182.8937 C 196.058,182.3227 196.546,181.8647 197.15,181.8647 C 197.749,181.8647 198.237,182.3227 198.237,182.8937 C 198.237,183.4657 197.749,183.9277 197.15,183.9277 C 196.546,183.9277 196.058,183.4657 196.058,182.8937 z " />
-        <path
-           id="path5833"
-           style="font-size:12px;fill:#ffffff"
-           d="M 198.293,180.4887 C 198.293,179.9177 198.781,179.4557 199.384,179.4557 C 199.983,179.4557 200.471,179.9177 200.471,180.4887 C 200.471,181.0567 199.983,181.5187 199.384,181.5187 C 198.781,181.5187 198.293,181.0567 198.293,180.4887" />
-        <path
-           id="path5835"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 198.293,180.4887 C 198.293,179.9177 198.781,179.4557 199.384,179.4557 C 199.983,179.4557 200.471,179.9177 200.471,180.4887 C 200.471,181.0567 199.983,181.5187 199.384,181.5187 C 198.781,181.5187 198.293,181.0567 198.293,180.4887 z " />
-        <path
-           id="path5837"
-           style="font-size:12px;fill:#ffffff"
-           d="M 200.888,178.4897 C 200.888,177.9177 201.376,177.4557 201.979,177.4557 C 202.579,177.4557 203.067,177.9177 203.067,178.4897 C 203.067,179.0567 202.579,179.5187 201.979,179.5187 C 201.376,179.5187 200.888,179.0567 200.888,178.4897" />
-        <path
-           id="path5839"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 200.888,178.4897 C 200.888,177.9177 201.376,177.4557 201.979,177.4557 C 202.579,177.4557 203.067,177.9177 203.067,178.4897 C 203.067,179.0567 202.579,179.5187 201.979,179.5187 C 201.376,179.5187 200.888,179.0567 200.888,178.4897 z " />
-        <path
-           id="path5841"
-           style="font-size:12px;fill:#ffffff"
-           d="M 203.99,176.8527 C 203.99,176.2817 204.478,175.8267 205.081,175.8267 C 205.681,175.8267 206.169,176.2817 206.169,176.8527 C 206.169,177.4247 205.681,177.8867 205.081,177.8867 C 204.478,177.8867 203.99,177.4247 203.99,176.8527" />
-        <path
-           id="path5843"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 203.99,176.8527 C 203.99,176.2817 204.478,175.8267 205.081,175.8267 C 205.681,175.8267 206.169,176.2817 206.169,176.8527 C 206.169,177.4247 205.681,177.8867 205.081,177.8867 C 204.478,177.8867 203.99,177.4247 203.99,176.8527 z " />
-        <path
-           id="path5845"
-           style="font-size:12px;fill:#ffffff"
-           d="M 207.208,175.6857 C 207.208,175.1177 207.695,174.6557 208.295,174.6557 C 208.898,174.6557 209.386,175.1177 209.386,175.6857 C 209.386,176.2567 208.898,176.7187 208.295,176.7187 C 207.695,176.7187 207.208,176.2567 207.208,175.6857" />
-        <path
-           id="path5847"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 207.208,175.6857 C 207.208,175.1177 207.695,174.6557 208.295,174.6557 C 208.898,174.6557 209.386,175.1177 209.386,175.6857 C 209.386,176.2567 208.898,176.7187 208.295,176.7187 C 207.695,176.7187 207.208,176.2567 207.208,175.6857 z " />
-        <path
-           id="path5849"
-           style="font-size:12px;fill:#ffffff"
-           d="M 210.809,175.0437 C 210.809,174.4757 211.296,174.0107 211.896,174.0107 C 212.495,174.0107 212.983,174.4757 212.983,175.0437 C 212.983,175.6117 212.495,176.0737 211.896,176.0737 C 211.296,176.0737 210.809,175.6117 210.809,175.0437" />
-        <path
-           id="path5851"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 210.809,175.0437 C 210.809,174.4757 211.296,174.0107 211.896,174.0107 C 212.495,174.0107 212.983,174.4757 212.983,175.0437 C 212.983,175.6117 212.495,176.0737 211.896,176.0737 C 211.296,176.0737 210.809,175.6117 210.809,175.0437 z " />
-        <path
-           id="path5853"
-           style="font-size:12px;fill:#ffffff"
-           d="M 214.22,174.8637 C 214.22,174.2957 214.707,173.8377 215.311,173.8377 C 215.91,173.8377 216.398,174.2957 216.398,174.8637 C 216.398,175.4357 215.91,175.8977 215.311,175.8977 C 214.707,175.8977 214.22,175.4357 214.22,174.8637" />
-        <path
-           id="path5855"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 214.22,174.8637 C 214.22,174.2957 214.707,173.8377 215.311,173.8377 C 215.91,173.8377 216.398,174.2957 216.398,174.8637 C 216.398,175.4357 215.91,175.8977 215.311,175.8977 C 214.707,175.8977 214.22,175.4357 214.22,174.8637 z " />
-        <path
-           id="path5857"
-           style="font-size:12px;fill:#ffffff"
-           d="M 217.57,174.9807 C 217.57,174.4127 218.059,173.9507 218.658,173.9507 C 219.262,173.9507 219.749,174.4127 219.749,174.9807 C 219.749,175.5517 219.262,176.0137 218.658,176.0137 C 218.059,176.0137 217.57,175.5517 217.57,174.9807" />
-        <path
-           id="path5859"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 217.57,174.9807 C 217.57,174.4127 218.059,173.9507 218.658,173.9507 C 219.262,173.9507 219.749,174.4127 219.749,174.9807 C 219.749,175.5517 219.262,176.0137 218.658,176.0137 C 218.059,176.0137 217.57,175.5517 217.57,174.9807 z " />
-        <path
-           id="path5861"
-           style="font-size:12px;fill:#ffffff"
-           d="M 220.922,174.9807 C 220.922,174.4127 221.41,173.9507 222.01,173.9507 C 222.613,173.9507 223.101,174.4127 223.101,174.9807 C 223.101,175.5517 222.613,176.0137 222.01,176.0137 C 221.41,176.0137 220.922,175.5517 220.922,174.9807" />
-        <path
-           id="path5863"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 220.922,174.9807 C 220.922,174.4127 221.41,173.9507 222.01,173.9507 C 222.613,173.9507 223.101,174.4127 223.101,174.9807 C 223.101,175.5517 222.613,176.0137 222.01,176.0137 C 221.41,176.0137 220.922,175.5517 220.922,174.9807 z " />
-        <path
-           id="path5865"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 219.247,177.8547 C 219.247,177.2837 219.734,176.8217 220.334,176.8217 C 220.937,176.8217 221.425,177.2837 221.425,177.8547 C 221.425,178.4227 220.937,178.8877 220.334,178.8877 C 219.734,178.8877 219.247,178.4227 219.247,177.8547" />
-        <path
-           id="path5867"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 218.565,181.0287 C 218.565,180.4577 219.049,179.9947 219.653,179.9947 C 220.252,179.9947 220.74,180.4577 220.74,181.0287 C 220.74,181.5927 220.252,182.0547 219.653,182.0547 C 219.049,182.0547 218.565,181.5927 218.565,181.0287" />
-        <path
-           id="path5869"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 218.439,184.1917 C 218.439,183.6167 218.927,183.1587 219.53,183.1587 C 220.129,183.1587 220.617,183.6167 220.617,184.1917 C 220.617,184.7597 220.129,185.2217 219.53,185.2217 C 218.927,185.2217 218.439,184.7597 218.439,184.1917" />
-        <path
-           id="path5871"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 219.433,187.0697 C 219.433,186.5017 219.921,186.0367 220.52,186.0367 C 221.124,186.0367 221.611,186.5017 221.611,187.0697 C 221.611,187.6407 221.124,188.0997 220.52,188.0997 C 219.921,188.0997 219.433,187.6407 219.433,187.0697" />
-        <path
-           id="path5873"
-           style="font-size:12px;fill:#ffffff;stroke:#000000;stroke-width:0.38800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="M 221.283,189.7147 C 221.283,189.1467 221.772,188.6817 222.37,188.6817 C 222.974,188.6817 223.462,189.1467 223.462,189.7147 C 223.462,190.2827 222.974,190.7447 222.37,190.7447 C 221.772,190.7447 221.283,190.2827 221.283,189.7147" />
-        <path
-           id="path5875"
-           style="font-size:12px;fill:#ffffff"
-           d="M 223.455,172.9847 C 223.455,172.4167 223.943,171.9577 224.542,171.9577 C 225.145,171.9577 225.633,172.4167 225.633,172.9847 C 225.633,173.5557 225.145,174.0177 224.542,174.0177 C 223.943,174.0177 223.455,173.5557 223.455,172.9847" />
-        <path
-           id="path5877"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 223.455,172.9847 C 223.455,172.4167 223.943,171.9577 224.542,171.9577 C 225.145,171.9577 225.633,172.4167 225.633,172.9847 C 225.633,173.5557 225.145,174.0177 224.542,174.0177 C 223.943,174.0177 223.455,173.5557 223.455,172.9847 z " />
-        <path
-           id="path5879"
-           style="font-size:12px;fill:#ffffff"
-           d="M 226.434,171.3407 C 226.434,170.7727 226.922,170.3077 227.521,170.3077 C 228.124,170.3077 228.612,170.7727 228.612,171.3407 C 228.612,171.9087 228.124,172.3707 227.521,172.3707 C 226.922,172.3707 226.434,171.9087 226.434,171.3407" />
-        <path
-           id="path5881"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 226.434,171.3407 C 226.434,170.7727 226.922,170.3077 227.521,170.3077 C 228.124,170.3077 228.612,170.7727 228.612,171.3407 C 228.612,171.9087 228.124,172.3707 227.521,172.3707 C 226.922,172.3707 226.434,171.9087 226.434,171.3407 z " />
-        <path
-           id="path5883"
-           style="font-size:12px;fill:#ffffff"
-           d="M 229.71,170.3497 C 229.71,169.7817 230.199,169.3237 230.801,169.3237 C 231.401,169.3237 231.889,169.7817 231.889,170.3497 C 231.889,170.9207 231.401,171.3837 230.801,171.3837 C 230.199,171.3837 229.71,170.9207 229.71,170.3497" />
-        <path
-           id="path5885"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 229.71,170.3497 C 229.71,169.7817 230.199,169.3237 230.801,169.3237 C 231.401,169.3237 231.889,169.7817 231.889,170.3497 C 231.889,170.9207 231.401,171.3837 230.801,171.3837 C 230.199,171.3837 229.71,170.9207 229.71,170.3497 z " />
-        <path
-           id="path5887"
-           style="font-size:12px;fill:#ffffff"
-           d="M 233.124,169.7647 C 233.124,169.1967 233.613,168.7347 234.212,168.7347 C 234.816,168.7347 235.304,169.1967 235.304,169.7647 C 235.304,170.3317 234.816,170.7947 234.212,170.7947 C 233.613,170.7947 233.124,170.3317 233.124,169.7647" />
-        <path
-           id="path5889"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 233.124,169.7647 C 233.124,169.1967 233.613,168.7347 234.212,168.7347 C 234.816,168.7347 235.304,169.1967 235.304,169.7647 C 235.304,170.3317 234.816,170.7947 234.212,170.7947 C 233.613,170.7947 233.124,170.3317 233.124,169.7647 z " />
-        <path
-           id="path5891"
-           style="font-size:12px;fill:#ffffff"
-           d="M 236.466,169.8207 C 236.466,169.2527 236.949,168.7877 237.553,168.7877 C 238.152,168.7877 238.64,169.2527 238.64,169.8207 C 238.64,170.3927 238.152,170.8507 237.553,170.8507 C 236.949,170.8507 236.466,170.3927 236.466,169.8207" />
-        <path
-           id="path5893"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 236.466,169.8207 C 236.466,169.2527 236.949,168.7877 237.553,168.7877 C 238.152,168.7877 238.64,169.2527 238.64,169.8207 C 238.64,170.3927 238.152,170.8507 237.553,170.8507 C 236.949,170.8507 236.466,170.3927 236.466,169.8207 z " />
-        <path
-           id="path5895"
-           style="font-size:12px;fill:#ffffff"
-           d="M 239.94,170.4067 C 239.94,169.8387 240.428,169.3797 241.027,169.3797 C 241.631,169.3797 242.115,169.8387 242.115,170.4067 C 242.115,170.9807 241.631,171.4397 241.027,171.4397 C 240.428,171.4397 239.94,170.9807 239.94,170.4067" />
-        <path
-           id="path5897"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 239.94,170.4067 C 239.94,169.8387 240.428,169.3797 241.027,169.3797 C 241.631,169.3797 242.115,169.8387 242.115,170.4067 C 242.115,170.9807 241.631,171.4397 241.027,171.4397 C 240.428,171.4397 239.94,170.9807 239.94,170.4067 z " />
-        <path
-           id="path5899"
-           style="font-size:12px;fill:#ffffff"
-           d="M 243.154,171.5177 C 243.154,170.9457 243.641,170.4837 244.244,170.4837 C 244.844,170.4837 245.332,170.9457 245.332,171.5177 C 245.332,172.0847 244.844,172.5507 244.244,172.5507 C 243.641,172.5507 243.154,172.0847 243.154,171.5177" />
-        <path
-           id="path5901"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.387757"
-           d="M 243.154,171.5177 C 243.154,170.9457 243.641,170.4837 244.244,170.4837 C 244.844,170.4837 245.332,170.9457 245.332,171.5177 C 245.332,172.0847 244.844,172.5507 244.244,172.5507 C 243.641,172.5507 243.154,172.0847 243.154,171.5177 z " />
-        <g
-           id="g4509"
-           transform="matrix(0.229488,0,0,0.229488,126.7856,198.5852)">
-          <path
-             d="M 386.79388,169.49609 L 382.79388,169.49609 L 382.79388,165.49609 L 375.79388,165.49609 L 375.79388,181.49609 L 382.79388,181.49609 L 382.79388,192.49609 L 367.79388,192.49609 L 367.79388,224.49609 L 375.79388,224.49609 L 375.79388,288.49609 L 359.79388,288.49609 L 359.79388,321.49609 L 482.79388,321.49609 L 482.79388,288.49609 L 466.79388,288.49609 L 466.79388,224.49609 L 474.79388,224.49609 L 474.79388,192.49609 L 459.79388,192.49609 L 459.79388,181.49609 L 466.79388,181.49609 L 466.79388,165.49609 L 459.79388,165.49609 L 459.79388,169.49609 L 455.79388,169.49609 L 455.79388,165.49609 L 448.79388,165.49609 L 448.79388,169.49609 L 443.79388,169.49609 L 443.79388,165.49609 L 436.79388,165.49609 L 436.79388,181.49609 L 443.79388,181.49609 L 443.79388,192.49609 L 428.79388,192.49609 L 428.79388,157.49609 L 436.79388,157.49609 L 436.79388,141.49609 L 428.79388,141.49609 L 428.79388,145.49609 L 424.79388,145.49609 L 424.79388,141.49609 L 417.79388,141.49609 L 417.79388,145.49609 L 413.79388,145.49609 L 413.79388,141.49609 L 405.79388,141.49609 L 405.79388,157.49609 L 413.79388,157.49609 L 413.79388,192.49609 L 398.79388,192.49609 L 398.79388,181.49609 L 405.79388,181.49609 L 405.79388,165.49609 L 398.79388,165.49609 L 398.79388,169.49609 L 394.79388,169.49609 L 394.79388,165.49609 L 386.79388,165.49609 L 386.79388,169.49609 z M 359.794,321.4961 L 482.794,321.4961 M 359.794,313.4961 L 482.794,313.4961 M 359.794,305.4961 L 482.794,305.4961 M 359.794,297.4961 L 482.794,297.4961 M 359.794,288.4961 L 482.794,288.4961 M 375.794,281.4961 L 466.794,281.4961 M 375.794,273.4961 L 466.794,273.4961 M 375.794,264.4961 L 466.794,264.4961 M 375.794,256.4961 L 466.794,256.4961 M 375.794,248.4961 L 466.794,248.4961 M 375.794,240.4961 L 466.794,240.4961 M 375.794,232.4961 L 466.794,232.4961 M 367.794,224.4961 L 474.794,224.4961 M 367.794,216.4961 L 474.794,216.4961 M 367.794,208.4961 L 474.794,208.4961 M 367.794,200.4961 L 474.794,200.4961 M 382.794,192.4961 L 459.794,192.4961 M 413.794,184.4961 L 428.794,184.4961 M 413.794,176.4961 L 428.794,176.4961 M 413.794,168.4961 L 428.794,168.4961 M 413.794,160.4961 L 428.794,160.4961 M 405.794,150.4961 L 436.794,150.4961 M 382.794,184.4961 L 398.794,184.4961 M 375.794,174.4961 L 405.794,174.4961 M 375.794,321.4961 L 375.794,313.4961 M 375.794,305.4961 L 375.794,297.4961 M 367.794,305.4961 L 367.794,313.4961 M 382.794,313.4961 L 382.794,305.4961 M 390.794,321.4961 L 390.794,313.4961 M 390.794,305.4961 L 390.794,297.4961 M 390.794,288.4961 L 390.794,281.4961 M 390.794,273.4961 L 390.794,264.4961 M 382.794,297.4961 L 382.794,288.4961 M 367.794,297.4961 L 367.794,288.4961 M 398.794,288.4961 L 398.794,297.4961 M 405.794,288.4961 L 405.794,281.4961 M 382.794,273.4961 L 382.794,281.4961 M 398.794,273.4961 L 398.794,281.4961 M 413.794,273.4961 L 413.794,281.4961 M 405.794,273.4961 L 405.794,264.4961 M 413.794,256.4961 L 413.794,264.4961 M 413.794,240.4961 L 413.794,248.4961 M 405.794,232.4961 L 405.794,240.4961 M 413.794,224.4961 L 413.794,232.4961 M 398.794,224.4961 L 398.794,232.4961 M 382.794,224.4961 L 382.794,232.4961 M 375.794,216.4961 L 375.794,224.4961 M 390.794,216.4961 L 390.794,224.4961 M 405.794,216.4961 L 405.794,224.4961 M 413.794,208.4961 L 413.794,216.4961 M 398.794,208.4961 L 398.794,216.4961 M 382.794,208.4961 L 382.794,216.4961 M 375.794,200.4961 L 375.794,208.4961 M 405.794,200.4961 L 405.794,208.4961 M 390.794,184.4961 L 390.794,192.4961 M 459.794,184.4961 L 443.794,184.4961 M 466.794,174.4961 L 436.794,174.4961 M 466.794,321.4961 L 466.794,313.4961 M 466.794,305.4961 L 466.794,297.4961 M 474.794,305.4961 L 474.794,313.4961 M 459.794,313.4961 L 459.794,305.4961 M 451.794,321.4961 L 451.794,313.4961 M 451.794,305.4961 L 451.794,297.4961 M 451.794,288.4961 L 451.794,281.4961 M 451.794,273.4961 L 451.794,264.4961 M 459.794,297.4961 L 459.794,288.4961 M 474.794,297.4961 L 474.794,288.4961 M 443.794,288.4961 L 443.794,297.4961 M 436.794,288.4961 L 436.794,281.4961 M 459.794,273.4961 L 459.794,281.4961 M 443.794,273.4961 L 443.794,281.4961 M 428.794,273.4961 L 428.794,281.4961 M 436.794,273.4961 L 436.794,264.4961 M 428.794,256.4961 L 428.794,264.4961 M 428.794,240.4961 L 428.794,248.4961 M 436.794,232.4961 L 436.794,240.4961 M 428.794,224.4961 L 428.794,232.4961 M 443.794,224.4961 L 443.794,232.4961 M 459.794,224.4961 L 459.794,232.4961 M 466.794,216.4961 L 466.794,224.4961 M 451.794,216.4961 L 451.794,224.4961 M 436.794,216.4961 L 436.794,224.4961 M 428.794,208.4961 L 428.794,216.4961 M 443.794,208.4961 L 443.794,216.4961 M 459.794,208.4961 L 459.794,216.4961 M 466.794,200.4961 L 466.794,208.4961 M 436.794,200.4961 L 436.794,208.4961 M 451.794,184.4961 L 451.794,192.4961 M 420.794,273.4961 L 420.794,264.4961 M 420.794,240.4961 L 420.794,232.4961 M 420.794,256.4961 L 420.794,248.4961 M 420.794,224.4961 L 420.794,216.4961 M 420.794,208.4961 L 420.794,200.4961 M 420.794,184.4961 L 420.794,176.4961 M 420.794,168.4961 L 420.794,160.4961 M 382.794,181.4961 L 398.794,181.4961 M 413.794,157.4961 L 428.794,157.4961 M 443.794,181.4961 L 459.794,181.4961"
-             style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4"
-             id="21426304" />
-          <g
-             transform="translate(1020.794,139.4961)"
-             id="g2601"
-             style="fill:#c8b100;fill-opacity:1;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none">
-            <path
-               d="M -579,182 C -579,172 -579,165 -579,161 C -579,157 -581,145 -600,145 C -618,145 -620,157 -620,161 C -620,165 -620,172 -620,182 L -579,182 z "
-               class="fil0 str0"
-               id="21495296"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-            <path
-               d="M -613,162 L -623,161 C -623,157 -622,151 -619,149 L -610,156 C -611,157 -613,160 -613,162 z "
-               class="fil0 str0"
-               id="21495208"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-            <path
-               d="M -586,162 L -576,161 C -576,157 -577,151 -580,149 L -589,156 C -588,157 -586,160 -586,162 z "
-               class="fil0 str0"
-               id="21495120"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-            <path
-               d="M -596,152 L -591,143 C -593,142 -597,141 -600,141 C -602,141 -606,142 -608,143 L -603,152 C -601,152 -598,152 -596,152 z "
-               class="fil0 str0"
-               id="21495032"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-            <path
-               d="M -615,127 C -615,127 -615,111 -615,105 C -615,99 -619,94 -626,94 C -633,94 -637,99 -637,105 C -637,111 -637,127 -637,127 L -615,127 z "
-               class="fil0 str0"
-               id="21575552"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-            <path
-               d="M -584,127 C -584,127 -584,111 -584,105 C -584,99 -580,94 -573,94 C -566,94 -562,99 -562,105 C -562,111 -562,127 -562,127 L -584,127 z "
-               class="fil0 str0"
-               id="21575464"
-               style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-          </g>
-          <path
-             d="M 428.794,212.4961 L 430.794,192.4961 L 411.794,192.4961 L 412.794,212.4961 L 428.794,212.4961 z "
-             class="fil0 str0"
-             id="21575376"
-             style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-          <path
-             d="M 443.794,212.4961 L 441.794,192.4961 L 461.794,192.4961 L 459.794,212.4961 L 443.794,212.4961 z "
-             class="fil0 str0"
-             id="21575288"
-             style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-          <path
-             d="M 398.794,212.4961 L 399.794,192.4961 L 380.794,192.4961 L 382.794,212.4961 L 398.794,212.4961 z "
-             class="fil0 str0"
-             id="21575200"
-             style="fill:#c8b100;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
-          <g
-             style="stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
-             transform="translate(1020.794,139.4961)"
-             id="g2612">
-            <path
-               style="fill:#0039f0;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
-               id="21575024"
-               class="fil2"
-               d="M -586,182 C -586,174 -586,167 -586,164 C -586,161 -588,152 -600,152 C -611,152 -613,161 -613,164 C -613,167 -613,174 -613,182 L -586,182 z " />
-            <path
-               style="fill:#0039f0;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
-               id="21574936"
-               class="fil2"
-               d="M -617,125 C -617,125 -617,111 -617,106 C -617,101 -620,96 -626,96 C -632,96 -635,101 -635,106 C -635,111 -635,125 -635,125 L -617,125 z " />
-            <path
-               style="fill:#0039f0;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
-               id="21574848"
-               class="fil2"
-               d="M -582,125 C -582,125 -582,111 -582,106 C -582,101 -579,96 -573,96 C -567,96 -564,101 -564,106 C -564,111 -564,125 -564,125 L -582,125 z " />
-          </g>
-        </g>
-        <path
-           id="path5911"
-           style="font-size:12px;fill:#AD1519;fill-opacity:1"
-           d="M 232.269,279.7847 C 232.269,269.7517 239.497,261.6187 248.412,261.6187 C 257.33,261.6187 264.558,269.7517 264.558,279.7847 C 264.558,289.8177 257.33,297.9507 248.412,297.9507 C 239.497,297.9507 232.269,289.8177 232.269,279.7847" />
-        <path
-           id="path5913"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.60156602"
-           d="M 232.269,279.7847 C 232.269,269.7517 239.497,261.6187 248.412,261.6187 C 257.33,261.6187 264.558,269.7517 264.558,279.7847 C 264.558,289.8177 257.33,297.9507 248.412,297.9507 C 239.497,297.9507 232.269,289.8177 232.269,279.7847 z " />
-        <path
-           id="path5915"
-           style="font-size:12px;fill:#005bbf;fill-opacity:0.94117647"
-           d="M 237.058,279.7497 C 237.058,272.3927 242.141,266.4297 248.419,266.4297 C 254.693,266.4297 259.777,272.3927 259.777,279.7497 C 259.777,287.1097 254.693,293.0767 248.419,293.0767 C 242.141,293.0767 237.058,287.1097 237.058,279.7497" />
-        <path
-           id="path5917"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.60156602"
-           d="M 237.058,279.7497 C 237.058,272.3927 242.141,266.4297 248.419,266.4297 C 254.693,266.4297 259.777,272.3927 259.777,279.7497 C 259.777,287.1097 254.693,293.0767 248.419,293.0767 C 242.141,293.0767 237.058,287.1097 237.058,279.7497 z " />
-        <path
-           id="path5919"
-           style="font-size:12px;fill:#c8b100"
-           d="M 243.053,270.5797 C 243.053,270.5797 241.704,272.0577 241.704,273.4257 C 241.704,274.8017 242.274,275.9437 242.274,275.9437 C 242.07,275.4007 241.519,275.0097 240.871,275.0097 C 240.052,275.0097 239.385,275.6377 239.385,276.4167 C 239.385,276.6427 239.523,276.9947 239.627,277.1887 L 240.111,278.1657 C 240.271,277.8057 240.648,277.6047 241.087,277.6047 C 241.674,277.6047 242.152,278.0527 242.152,278.6107 C 242.152,278.6947 242.141,278.7797 242.119,278.8567 L 240.908,278.8607 L 240.908,279.8907 L 241.988,279.8907 L 241.184,281.4847 L 242.249,281.0687 L 243.053,281.9747 L 243.887,281.0687 L 244.949,281.4847 L 244.148,279.8907 L 245.228,279.8907 L 245.228,278.8607 L 244.014,278.8567 C 243.992,278.7797 243.988,278.6947 243.988,278.6107 C 243.988,278.0527 244.457,277.6047 245.045,277.6047 C 245.484,277.6047 245.861,277.8057 246.024,278.1657 L 246.504,277.1887 C 246.609,276.9947 246.747,276.6427 246.747,276.4167 C 246.747,275.6377 246.084,275.0097 245.261,275.0097 C 244.613,275.0097 244.066,275.4007 243.861,275.9437 C 243.861,275.9437 244.427,274.8017 244.427,273.4257 C 244.427,272.0577 243.05,270.5797 243.05,270.5797" />
-        <path
-           id="path5921"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299;stroke-linejoin:round"
-           d="M 243.053,270.5797 C 243.053,270.5797 241.704,272.0577 241.704,273.4257 C 241.704,274.8017 242.274,275.9437 242.274,275.9437 C 242.07,275.4007 241.519,275.0097 240.871,275.0097 C 240.052,275.0097 239.385,275.6377 239.385,276.4167 C 239.385,276.6427 239.523,276.9947 239.627,277.1887 L 240.111,278.1657 C 240.271,277.8057 240.648,277.6047 241.087,277.6047 C 241.674,277.6047 242.152,278.0527 242.152,278.6107 C 242.152,278.6947 242.141,278.7797 242.119,278.8567 L 240.908,278.8607 L 240.908,279.8907 L 241.988,279.8907 L 241.184,281.4847 L 242.249,281.0687 L 243.053,281.9747 L 243.887,281.0687 L 244.949,281.4847 L 244.148,279.8907 L 245.228,279.8907 L 245.228,278.8607 L 244.014,278.8567 C 243.992,278.7797 243.988,278.6947 243.988,278.6107 C 243.988,278.0527 244.457,277.6047 245.045,277.6047 C 245.484,277.6047 245.861,277.8057 246.024,278.1657 L 246.504,277.1887 C 246.609,276.9947 246.747,276.6427 246.747,276.4167 C 246.747,275.6377 246.084,275.0097 245.261,275.0097 C 244.613,275.0097 244.066,275.4007 243.861,275.9437 C 243.861,275.9437 244.427,274.8017 244.427,273.4257 C 244.427,272.0577 243.05,270.5797 243.05,270.5797 L 243.053,270.5797 z " />
-        <path
-           id="path5923"
-           style="font-size:12px;fill:#c8b100"
-           d="M 240.908,279.8907 L 245.231,279.8907 L 245.231,278.8607 L 240.908,278.8607 L 240.908,279.8907 z " />
-        <path
-           id="path5925"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299"
-           d="M 240.908,279.8907 L 245.231,279.8907 L 245.231,278.8607 L 240.908,278.8607 L 240.908,279.8907 z " />
-        <path
-           id="path5927"
-           style="font-size:12px;fill:#c8b100"
-           d="M 253.61,270.5797 C 253.61,270.5797 252.262,272.0577 252.262,273.4257 C 252.262,274.8017 252.828,275.9437 252.828,275.9437 C 252.627,275.4007 252.076,275.0097 251.428,275.0097 C 250.605,275.0097 249.942,275.6377 249.942,276.4167 C 249.942,276.6427 250.08,276.9947 250.184,277.1887 L 250.664,278.1657 C 250.829,277.8057 251.205,277.6047 251.644,277.6047 C 252.232,277.6047 252.705,278.0527 252.705,278.6107 C 252.705,278.6947 252.698,278.7797 252.676,278.8567 L 251.465,278.8607 L 251.465,279.8907 L 252.545,279.8907 L 251.741,281.4847 L 252.802,281.0687 L 253.61,281.9747 L 254.441,281.0687 L 255.506,281.4847 L 254.701,279.8907 L 255.781,279.8907 L 255.781,278.8607 L 254.571,278.8567 C 254.548,278.7797 254.541,278.6947 254.541,278.6107 C 254.541,278.0527 255.014,277.6047 255.603,277.6047 C 256.042,277.6047 256.418,277.8057 256.578,278.1657 L 257.062,277.1887 C 257.167,276.9947 257.303,276.6427 257.303,276.4167 C 257.303,275.6377 256.638,275.0097 255.818,275.0097 C 255.171,275.0097 254.618,275.4007 254.415,275.9437 C 254.415,275.9437 254.984,274.8017 254.984,273.4257 C 254.984,272.0577 253.607,270.5797 253.607,270.5797" />
-        <path
-           id="path5929"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299;stroke-linejoin:round"
-           d="M 253.61,270.5797 C 253.61,270.5797 252.262,272.0577 252.262,273.4257 C 252.262,274.8017 252.828,275.9437 252.828,275.9437 C 252.627,275.4007 252.076,275.0097 251.428,275.0097 C 250.605,275.0097 249.942,275.6377 249.942,276.4167 C 249.942,276.6427 250.08,276.9947 250.184,277.1887 L 250.664,278.1657 C 250.829,277.8057 251.205,277.6047 251.644,277.6047 C 252.232,277.6047 252.705,278.0527 252.705,278.6107 C 252.705,278.6947 252.698,278.7797 252.676,278.8567 L 251.465,278.8607 L 251.465,279.8907 L 252.545,279.8907 L 251.741,281.4847 L 252.802,281.0687 L 253.61,281.9747 L 254.441,281.0687 L 255.506,281.4847 L 254.701,279.8907 L 255.781,279.8907 L 255.781,278.8607 L 254.571,278.8567 C 254.548,278.7797 254.541,278.6947 254.541,278.6107 C 254.541,278.0527 255.014,277.6047 255.603,277.6047 C 256.042,277.6047 256.418,277.8057 256.578,278.1657 L 257.062,277.1887 C 257.167,276.9947 257.303,276.6427 257.303,276.4167 C 257.303,275.6377 256.638,275.0097 255.818,275.0097 C 255.171,275.0097 254.618,275.4007 254.415,275.9437 C 254.415,275.9437 254.984,274.8017 254.984,273.4257 C 254.984,272.0577 253.607,270.5797 253.607,270.5797 L 253.61,270.5797 z " />
-        <path
-           id="path5931"
-           style="font-size:12px;fill:#c8b100"
-           d="M 251.465,279.8907 L 255.785,279.8907 L 255.785,278.8607 L 251.465,278.8607 L 251.465,279.8907 z " />
-        <path
-           id="path5933"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299"
-           d="M 251.465,279.8907 L 255.785,279.8907 L 255.785,278.8607 L 251.465,278.8607 L 251.465,279.8907 z " />
-        <path
-           id="path5935"
-           style="font-size:12px;fill:#c8b100"
-           d="M 248.33,279.6607 C 248.33,279.6607 246.982,281.1387 246.982,282.5107 C 246.982,283.8827 247.552,285.0247 247.552,285.0247 C 247.347,284.4817 246.799,284.0907 246.148,284.0907 C 245.329,284.0907 244.662,284.7187 244.662,285.4977 C 244.662,285.7267 244.8,286.0757 244.904,286.2697 L 245.388,287.2467 C 245.552,286.8867 245.924,286.6827 246.363,286.6827 C 246.952,286.6827 247.429,287.1337 247.429,287.6917 C 247.429,287.7797 247.418,287.8637 247.395,287.9417 L 246.185,287.9447 L 246.185,288.9747 L 247.269,288.9747 L 246.464,290.5687 L 247.526,290.1497 L 248.33,291.0557 L 249.164,290.1497 L 250.229,290.5687 L 249.421,288.9747 L 250.504,288.9747 L 250.504,287.9447 L 249.294,287.9417 C 249.272,287.8637 249.264,287.7797 249.264,287.6917 C 249.264,287.1337 249.738,286.6827 250.326,286.6827 C 250.764,286.6827 251.137,286.8867 251.302,287.2467 L 251.786,286.2697 C 251.889,286.0757 252.028,285.7267 252.028,285.4977 C 252.028,284.7187 251.361,284.0907 250.542,284.0907 C 249.894,284.0907 249.347,284.4817 249.138,285.0247 C 249.138,285.0247 249.708,283.8827 249.708,282.5107 C 249.708,281.1387 248.326,279.6607 248.326,279.6607" />
-        <path
-           id="path5937"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299;stroke-linejoin:round"
-           d="M 248.33,279.6607 C 248.33,279.6607 246.982,281.1387 246.982,282.5107 C 246.982,283.8827 247.552,285.0247 247.552,285.0247 C 247.347,284.4817 246.799,284.0907 246.148,284.0907 C 245.329,284.0907 244.662,284.7187 244.662,285.4977 C 244.662,285.7267 244.8,286.0757 244.904,286.2697 L 245.388,287.2467 C 245.552,286.8867 245.924,286.6827 246.363,286.6827 C 246.952,286.6827 247.429,287.1337 247.429,287.6917 C 247.429,287.7797 247.418,287.8637 247.395,287.9417 L 246.185,287.9447 L 246.185,288.9747 L 247.269,288.9747 L 246.464,290.5687 L 247.526,290.1497 L 248.33,291.0557 L 249.164,290.1497 L 250.229,290.5687 L 249.421,288.9747 L 250.504,288.9747 L 250.504,287.9447 L 249.294,287.9417 C 249.272,287.8637 249.264,287.7797 249.264,287.6917 C 249.264,287.1337 249.738,286.6827 250.326,286.6827 C 250.764,286.6827 251.137,286.8867 251.302,287.2467 L 251.786,286.2697 C 251.889,286.0757 252.028,285.7267 252.028,285.4977 C 252.028,284.7187 251.361,284.0907 250.542,284.0907 C 249.894,284.0907 249.347,284.4817 249.138,285.0247 C 249.138,285.0247 249.708,283.8827 249.708,282.5107 C 249.708,281.1387 248.326,279.6607 248.326,279.6607 L 248.33,279.6607 z " />
-        <path
-           id="path5939"
-           style="font-size:12px;fill:#c8b100"
-           d="M 246.185,288.9747 L 250.508,288.9747 L 250.508,287.9447 L 246.185,287.9447 L 246.185,288.9747 z " />
-        <path
-           id="path5941"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.33702299"
-           d="M 246.185,288.9747 L 250.508,288.9747 L 250.508,287.9447 L 246.185,287.9447 L 246.185,288.9747 z " />
-        <path
-           id="path5943"
-           style="font-size:12px;fill:#c8b100"
-           d="M 280.642,231.8157 L 280.355,231.8367 C 280.342,231.8717 280.213,232.0767 280.091,232.1897 C 279.837,232.4327 279.454,232.4607 279.238,232.2567 C 279.133,232.1507 279.081,232.0027 279.1,231.8507 C 278.932,231.9357 278.757,231.9357 278.593,231.8437 C 278.336,231.6957 278.272,231.3427 278.459,231.0497 C 278.489,230.9937 278.519,230.9197 278.564,230.8777 L 278.545,230.5567 L 278.198,230.6377 L 278.098,230.8277 C 277.882,231.0717 277.562,231.1347 277.402,230.9907 C 277.324,230.9237 277.267,230.7367 277.272,230.7297 C 277.275,230.7367 277.189,230.8137 277.1,230.8347 C 276.568,230.9657 276.356,229.7947 276.344,229.4917 L 276.169,229.7387 C 276.169,229.7387 276.326,230.4397 276.247,231.0327 C 276.169,231.6247 275.96,232.2177 275.96,232.2177 C 276.702,232.4077 277.812,233.0107 278.913,233.8607 C 280.016,234.7037 280.883,235.6207 281.241,236.2627 C 281.241,236.2627 281.811,235.9447 282.41,235.7547 C 283.003,235.5607 283.758,235.5567 283.758,235.5567 L 283.973,235.3457 C 283.657,235.3917 282.403,235.4447 282.428,234.9187 C 282.433,234.8347 282.496,234.7427 282.507,234.7427 C 282.5,234.7497 282.299,234.7317 282.209,234.6757 C 282.027,234.5557 282.031,234.2487 282.232,233.9947 L 282.407,233.8677 L 282.418,233.5297 L 282.082,233.5757 C 282.052,233.6177 281.975,233.6667 281.93,233.7097 C 281.666,233.9387 281.286,233.9557 281.077,233.7407 C 280.951,233.6177 280.912,233.4517 280.966,233.2787 C 280.813,233.3247 280.653,233.3107 280.518,233.2327 C 280.262,233.0777 280.213,232.7147 280.411,232.4327 C 280.503,232.2947 280.686,232.1327 280.718,232.1157 L 280.649,231.8187" />
-        <path
-           id="path5945"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 280.642,231.8157 L 280.355,231.8367 C 280.342,231.8717 280.213,232.0767 280.091,232.1897 C 279.837,232.4327 279.454,232.4607 279.238,232.2567 C 279.133,232.1507 279.081,232.0027 279.1,231.8507 C 278.932,231.9357 278.757,231.9357 278.593,231.8437 C 278.336,231.6957 278.272,231.3427 278.459,231.0497 C 278.489,230.9937 278.519,230.9197 278.564,230.8777 L 278.545,230.5567 L 278.198,230.6377 L 278.098,230.8277 C 277.882,231.0717 277.562,231.1347 277.402,230.9907 C 277.324,230.9237 277.267,230.7367 277.272,230.7297 C 277.275,230.7367 277.189,230.8137 277.1,230.8347 C 276.568,230.9657 276.356,229.7947 276.344,229.4917 L 276.169,229.7387 C 276.169,229.7387 276.326,230.4397 276.247,231.0327 C 276.169,231.6247 275.96,232.2177 275.96,232.2177 C 276.702,232.4077 277.812,233.0107 278.913,233.8607 C 280.016,234.7037 280.883,235.6207 281.241,236.2627 C 281.241,236.2627 281.811,235.9447 282.41,235.7547 C 283.003,235.5607 283.758,235.5567 283.758,235.5567 L 283.973,235.3457 C 283.657,235.3917 282.403,235.4447 282.428,234.9187 C 282.433,234.8347 282.496,234.7427 282.507,234.7427 C 282.5,234.7497 282.299,234.7317 282.209,234.6757 C 282.027,234.5557 282.031,234.2487 282.232,233.9947 L 282.407,233.8677 L 282.418,233.5297 L 282.082,233.5757 C 282.052,233.6177 281.975,233.6667 281.93,233.7097 C 281.666,233.9387 281.286,233.9557 281.077,233.7407 C 280.951,233.6177 280.912,233.4517 280.966,233.2787 C 280.813,233.3247 280.653,233.3107 280.518,233.2327 C 280.262,233.0777 280.213,232.7147 280.411,232.4327 C 280.503,232.2947 280.686,232.1327 280.718,232.1157 L 280.649,231.8187 L 280.642,231.8157 z " />
-        <path
-           id="path5947"
-           style="font-size:12px"
-           d="M 278.407,232.4997 C 278.456,232.4397 278.56,232.4427 278.638,232.5027 C 278.716,232.5627 278.738,232.6587 278.69,232.7147 C 278.642,232.7707 278.541,232.7707 278.459,232.7077 C 278.385,232.6517 278.359,232.5557 278.407,232.4997" />
-        <path
-           id="path5949"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 278.407,232.4997 C 278.456,232.4397 278.56,232.4427 278.638,232.5027 C 278.716,232.5627 278.738,232.6587 278.69,232.7147 C 278.642,232.7707 278.541,232.7707 278.459,232.7077 C 278.385,232.6517 278.359,232.5557 278.407,232.4997 z " />
-        <path
-           id="path5951"
-           style="font-size:12px"
-           d="M 279.349,233.2927 L 279.025,233.0427 C 278.966,232.9967 278.947,232.9227 278.985,232.8807 C 279.022,232.8417 279.1,232.8417 279.16,232.8837 L 279.483,233.1377 L 279.815,233.3887 C 279.871,233.4307 279.892,233.5047 279.856,233.5507 C 279.815,233.5897 279.737,233.5857 279.677,233.5437 L 279.349,233.2927" />
-        <path
-           id="path5953"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 279.349,233.2927 L 279.025,233.0427 C 278.966,232.9967 278.947,232.9227 278.985,232.8807 C 279.022,232.8417 279.1,232.8417 279.16,232.8837 L 279.483,233.1377 L 279.815,233.3887 C 279.871,233.4307 279.892,233.5047 279.856,233.5507 C 279.815,233.5897 279.737,233.5857 279.677,233.5437 L 279.349,233.2927" />
-        <path
-           id="path5955"
-           style="font-size:12px"
-           d="M 277.618,232.1077 L 277.361,231.9567 C 277.297,231.9177 277.264,231.8437 277.294,231.7947 C 277.32,231.7417 277.398,231.7347 277.461,231.7727 L 277.717,231.9247 L 277.979,232.0767 C 278.042,232.1117 278.072,232.1857 278.046,232.2387 C 278.016,232.2847 277.942,232.2947 277.875,232.2567 L 277.618,232.1077" />
-        <path
-           id="path5957"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 277.618,232.1077 L 277.361,231.9567 C 277.297,231.9177 277.264,231.8437 277.294,231.7947 C 277.32,231.7417 277.398,231.7347 277.461,231.7727 L 277.717,231.9247 L 277.979,232.0767 C 278.042,232.1117 278.072,232.1857 278.046,232.2387 C 278.016,232.2847 277.942,232.2947 277.875,232.2567 L 277.618,232.1077" />
-        <path
-           id="path5959"
-           style="font-size:12px"
-           d="M 276.593,231.3997 C 276.642,231.3467 276.747,231.3467 276.825,231.4067 C 276.903,231.4667 276.925,231.5617 276.877,231.6177 C 276.828,231.6747 276.724,231.6707 276.646,231.6147 C 276.568,231.5507 276.545,231.4597 276.593,231.3997" />
-        <path
-           id="path5961"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 276.593,231.3997 C 276.642,231.3467 276.747,231.3467 276.825,231.4067 C 276.903,231.4667 276.925,231.5617 276.877,231.6177 C 276.828,231.6747 276.724,231.6707 276.646,231.6147 C 276.568,231.5507 276.545,231.4597 276.593,231.3997 z " />
-        <path
-           id="path5963"
-           style="font-size:12px"
-           d="M 280.392,234.0197 C 280.441,233.9627 280.417,233.8717 280.34,233.8077 C 280.262,233.7477 280.158,233.7447 280.109,233.8047 C 280.061,233.8607 280.083,233.9557 280.161,234.0157 C 280.238,234.0757 280.342,234.0757 280.392,234.0197" />
-        <path
-           id="path5965"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 280.392,234.0197 C 280.441,233.9627 280.417,233.8717 280.34,233.8077 C 280.262,233.7477 280.158,233.7447 280.109,233.8047 C 280.061,233.8607 280.083,233.9557 280.161,234.0157 C 280.238,234.0757 280.342,234.0757 280.392,234.0197 z " />
-        <path
-           id="path5967"
-           style="font-size:12px"
-           d="M 280.962,234.6717 L 281.174,234.8767 C 281.226,234.9257 281.308,234.9437 281.353,234.9047 C 281.398,234.8697 281.392,234.7987 281.342,234.7497 L 281.133,234.5417 L 280.917,234.3297 C 280.865,234.2807 280.783,234.2667 280.738,234.3057 C 280.69,234.3367 280.697,234.4147 280.753,234.4637 L 280.962,234.6717" />
-        <path
-           id="path5969"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 280.962,234.6717 L 281.174,234.8767 C 281.226,234.9257 281.308,234.9437 281.353,234.9047 C 281.398,234.8697 281.392,234.7987 281.342,234.7497 L 281.133,234.5417 L 280.917,234.3297 C 280.865,234.2807 280.783,234.2667 280.738,234.3057 C 280.69,234.3367 280.697,234.4147 280.753,234.4637 L 280.962,234.6717" />
-        <path
-           id="path5971"
-           style="font-size:12px"
-           d="M 281.903,235.4757 C 281.952,235.4157 281.93,235.3247 281.852,235.2607 C 281.774,235.2007 281.669,235.1977 281.621,235.2577 C 281.572,235.3177 281.595,235.4087 281.673,235.4727 C 281.751,235.5287 281.856,235.5327 281.903,235.4757" />
-        <path
-           id="path5973"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0507345"
-           d="M 281.903,235.4757 C 281.952,235.4157 281.93,235.3247 281.852,235.2607 C 281.774,235.2007 281.669,235.1977 281.621,235.2577 C 281.572,235.3177 281.595,235.4087 281.673,235.4727 C 281.751,235.5287 281.856,235.5327 281.903,235.4757 z " />
-        <path
-           id="path5975"
-           style="font-size:12px;fill:#c8b100"
-           d="M 279.173,229.4807 L 278.586,229.4987 L 278.471,230.3627 L 278.534,230.4997 L 278.687,230.4897 L 279.439,229.9847 L 279.173,229.4807" />
-        <path
-           id="path5977"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 279.173,229.4807 L 278.586,229.4987 L 278.471,230.3627 L 278.534,230.4997 L 278.687,230.4897 L 279.439,229.9847 L 279.173,229.4807" />
-        <path
-           id="path5979"
-           style="font-size:12px;fill:#c8b100"
-           d="M 277.581,229.9607 L 277.565,230.4997 L 278.478,230.6127 L 278.62,230.5527 L 278.608,230.4047 L 278.076,229.6957 L 277.581,229.9607" />
-        <path
-           id="path5981"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 277.581,229.9607 L 277.565,230.4997 L 278.478,230.6127 L 278.62,230.5527 L 278.608,230.4047 L 278.076,229.6957 L 277.581,229.9607" />
-        <path
-           id="path5983"
-           style="font-size:12px;fill:#c8b100"
-           d="M 279.468,231.0357 L 278.981,231.3077 L 278.448,230.5957 L 278.437,230.4507 L 278.579,230.3907 L 279.495,230.4997 L 279.468,231.0357" />
-        <path
-           id="path5985"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 279.468,231.0357 L 278.981,231.3077 L 278.448,230.5957 L 278.437,230.4507 L 278.579,230.3907 L 279.495,230.4997 L 279.468,231.0357" />
-        <path
-           id="path5987"
-           style="font-size:12px;fill:#c8b100"
-           d="M 278.287,230.3697 C 278.37,230.2387 278.545,230.1967 278.678,230.2777 C 278.812,230.3517 278.857,230.5177 278.776,230.6447 C 278.693,230.7747 278.519,230.8137 278.385,230.7397 C 278.251,230.6627 278.206,230.4967 278.287,230.3697" />
-        <path
-           id="path5989"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 278.287,230.3697 C 278.37,230.2387 278.545,230.1967 278.678,230.2777 C 278.812,230.3517 278.857,230.5177 278.776,230.6447 C 278.693,230.7747 278.519,230.8137 278.385,230.7397 C 278.251,230.6627 278.206,230.4967 278.287,230.3697 z " />
-        <path
-           id="path5991"
-           style="font-size:12px;fill:#c8b100"
-           d="M 276.151,229.4777 C 276.136,229.4807 276.023,229.0227 275.897,228.7687 C 275.812,228.5847 275.51,228.3457 275.51,228.3457 C 275.54,228.2887 275.92,228.1517 276.374,228.4367 C 276.742,228.7407 276.344,229.2977 276.344,229.2977 C 276.344,229.2977 276.247,229.4317 276.154,229.4777" />
-        <path
-           id="path5993"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 276.151,229.4777 C 276.136,229.4807 276.023,229.0227 275.897,228.7687 C 275.812,228.5847 275.51,228.3457 275.51,228.3457 C 275.54,228.2887 275.92,228.1517 276.374,228.4367 C 276.742,228.7407 276.344,229.2977 276.344,229.2977 C 276.344,229.2977 276.247,229.4317 276.154,229.4777 L 276.151,229.4777 z " />
-        <path
-           id="path5995"
-           style="font-size:12px;fill:#c8b100"
-           d="M 277.177,229.7877 L 276.761,230.1477 L 276.083,229.5587 L 276.142,229.4737 L 276.166,229.3287 L 277.085,229.2617 L 277.177,229.7877" />
-        <path
-           id="path5997"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 277.177,229.7877 L 276.761,230.1477 L 276.083,229.5587 L 276.142,229.4737 L 276.166,229.3287 L 277.085,229.2617 L 277.177,229.7877" />
-        <path
-           id="path5999"
-           style="font-size:12px;fill:#c8b100"
-           d="M 276.028,229.4207 C 276.08,229.2727 276.21,229.1847 276.314,229.2167 C 276.418,229.2547 276.46,229.3997 276.411,229.5447 C 276.359,229.6927 276.229,229.7767 276.125,229.7487 C 276.016,229.7097 275.976,229.5657 276.028,229.4207" />
-        <path
-           id="path6001"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 276.028,229.4207 C 276.08,229.2727 276.21,229.1847 276.314,229.2167 C 276.418,229.2547 276.46,229.3997 276.411,229.5447 C 276.359,229.6927 276.229,229.7767 276.125,229.7487 C 276.016,229.7097 275.976,229.5657 276.028,229.4207 z " />
-        <path
-           id="path6003"
-           style="font-size:12px;fill:#c8b100"
-           d="M 281.423,230.8877 L 280.838,230.8247 L 280.593,231.6677 L 280.638,231.8117 L 280.791,231.8157 L 281.61,231.4167 L 281.423,230.8877" />
-        <path
-           id="path6005"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 281.423,230.8877 L 280.838,230.8247 L 280.593,231.6677 L 280.638,231.8117 L 280.791,231.8157 L 281.61,231.4167 L 281.423,230.8877" />
-        <path
-           id="path6007"
-           style="font-size:12px;fill:#c8b100"
-           d="M 279.773,231.1487 L 279.681,231.6817 L 280.567,231.9137 L 280.716,231.8717 L 280.727,231.7277 L 280.306,230.9477 L 279.773,231.1487" />
-        <path
-           id="path6009"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 279.773,231.1487 L 279.681,231.6817 L 280.567,231.9137 L 280.716,231.8717 L 280.727,231.7277 L 280.306,230.9477 L 279.773,231.1487" />
-        <path
-           id="path6011"
-           style="font-size:12px;fill:#c8b100"
-           d="M 281.487,232.4607 L 280.962,232.6687 L 280.541,231.8927 L 280.552,231.7447 L 280.701,231.7057 L 281.587,231.9387 L 281.487,232.4607" />
-        <path
-           id="path6013"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 281.487,232.4607 L 280.962,232.6687 L 280.541,231.8927 L 280.552,231.7447 L 280.701,231.7057 L 281.587,231.9387 L 281.487,232.4607" />
-        <path
-           id="path6015"
-           style="font-size:12px;fill:#c8b100"
-           d="M 280.414,231.6497 C 280.511,231.5297 280.694,231.5197 280.813,231.6107 C 280.936,231.7027 280.954,231.8717 280.858,231.9887 C 280.757,232.1047 280.578,232.1187 280.455,232.0267 C 280.336,231.9357 280.313,231.7657 280.414,231.6497" />
-        <path
-           id="path6017"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 280.414,231.6497 C 280.511,231.5297 280.694,231.5197 280.813,231.6107 C 280.936,231.7027 280.954,231.8717 280.858,231.9887 C 280.757,232.1047 280.578,232.1187 280.455,232.0267 C 280.336,231.9357 280.313,231.7657 280.414,231.6497 z " />
-        <path
-           id="path6019"
-           style="font-size:12px;fill:#c8b100"
-           d="M 283.386,232.7117 L 283.493,233.2647 L 282.626,233.5537 L 282.473,233.5227 L 282.455,233.3777 L 282.816,232.5767 L 283.386,232.7117" />
-        <path
-           id="path6021"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 283.386,232.7117 L 283.493,233.2647 L 282.626,233.5537 L 282.473,233.5227 L 282.455,233.3777 L 282.816,232.5767 L 283.386,232.7117" />
-        <path
-           id="path6023"
-           style="font-size:12px;fill:#c8b100"
-           d="M 283.23,234.2947 L 282.675,234.4177 L 282.368,233.5927 L 282.403,233.4517 L 282.556,233.4307 L 283.401,233.7767 L 283.23,234.2947" />
-        <path
-           id="path6025"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 283.23,234.2947 L 282.675,234.4177 L 282.368,233.5927 L 282.403,233.4517 L 282.556,233.4307 L 283.401,233.7767 L 283.23,234.2947" />
-        <path
-           id="path6027"
-           style="font-size:12px;fill:#c8b100"
-           d="M 281.725,232.7637 L 281.546,233.2757 L 282.392,233.6177 L 282.547,233.5967 L 282.577,233.4557 L 282.276,232.6337 L 281.725,232.7637" />
-        <path
-           id="path6029"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 281.725,232.7637 L 281.546,233.2757 L 282.392,233.6177 L 282.547,233.5967 L 282.577,233.4557 L 282.276,232.6337 L 281.725,232.7637" />
-        <path
-           id="path6031"
-           style="font-size:12px;fill:#c8b100"
-           d="M 282.66,233.7237 C 282.775,233.6177 282.779,233.4487 282.675,233.3387 C 282.567,233.2327 282.383,233.2257 282.269,233.3247 C 282.157,233.4307 282.15,233.5967 282.258,233.7097 C 282.362,233.8187 282.545,233.8217 282.66,233.7237" />
-        <path
-           id="path6033"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 282.66,233.7237 C 282.775,233.6177 282.779,233.4487 282.675,233.3387 C 282.567,233.2327 282.383,233.2257 282.269,233.3247 C 282.157,233.4307 282.15,233.5967 282.258,233.7097 C 282.362,233.8187 282.545,233.8217 282.66,233.7237 z " />
-        <path
-           id="path6035"
-           style="font-size:12px;fill:#c8b100"
-           d="M 284.026,235.5147 C 284.023,235.5287 284.522,235.5397 284.809,235.6027 C 285.013,235.6457 285.33,235.8747 285.33,235.8747 C 285.386,235.8327 285.442,235.4547 285.051,235.0917 C 284.66,234.8127 284.171,235.3037 284.171,235.3037 C 284.171,235.3037 284.053,235.4197 284.026,235.5147" />
-        <path
-           id="path6037"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 284.026,235.5147 C 284.023,235.5287 284.522,235.5397 284.809,235.6027 C 285.013,235.6457 285.33,235.8747 285.33,235.8747 C 285.386,235.8327 285.442,235.4547 285.051,235.0917 C 284.66,234.8127 284.171,235.3037 284.171,235.3037 C 284.171,235.3037 284.053,235.4197 284.026,235.5147 z " />
-        <path
-           id="path6039"
-           style="font-size:12px;fill:#c8b100"
-           d="M 283.49,234.6257 L 283.204,235.0877 L 283.956,235.5957 L 284.048,235.5147 L 284.171,235.4727 L 284.056,234.6047 L 283.49,234.6257" />
-        <path
-           id="path6041"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 283.49,234.6257 L 283.204,235.0877 L 283.956,235.5957 L 284.048,235.5147 L 284.171,235.4727 L 284.056,234.6047 L 283.49,234.6257" />
-        <path
-           id="path6043"
-           style="font-size:12px;fill:#c8b100"
-           d="M 284.108,235.6167 C 284.246,235.5397 284.313,235.3987 284.257,235.3107 C 284.197,235.2187 284.038,235.2077 283.9,235.2857 C 283.762,235.3667 283.695,235.5007 283.755,235.5957 C 283.81,235.6837 283.97,235.6947 284.108,235.6167" />
-        <path
-           id="path6045"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.257296"
-           d="M 284.108,235.6167 C 284.246,235.5397 284.313,235.3987 284.257,235.3107 C 284.197,235.2187 284.038,235.2077 283.9,235.2857 C 283.762,235.3667 283.695,235.5007 283.755,235.5957 C 283.81,235.6837 283.97,235.6947 284.108,235.6167 z " />
-        <path
-           id="path6047"
-           style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.29716"
-           d="M 323.596,212.8847 L 323.596,213.4597 L 321.079,213.4597 L 321.079,212.8847 L 322.01,212.8847 L 322.01,211.5867 L 321.395,211.5867 L 321.395,211.0087 L 322.01,211.0087 L 322.01,210.4407 L 322.617,210.4407 L 322.617,211.0087 L 323.223,211.0087 L 323.223,211.5867 L 322.617,211.5867 L 322.617,212.8847 L 323.596,212.8847" />
-        <g
-           id="g6049"
-           transform="matrix(0.193008,0,0,0.19301,136.6066,180.9953)">
-          <path
-             id="path6051"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0930125"
-             d="M 193.384,229.571 L 193.384,223.049" />
-          <path
-             id="path6053"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.136935"
-             d="M 191.612,229.571 L 191.612,223.049" />
-          <path
-             id="path6055"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.183442"
-             d="M 189.94,229.571 L 189.94,223.049" />
-          <path
-             id="path6057"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.229949"
-             d="M 188.282,229.571 L 188.282,223.049" />
-          <path
-             id="path6059"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.27645499"
-             d="M 186.805,229.571 L 186.805,223.049" />
-          <path
-             id="path6061"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.322961"
-             d="M 183.987,229.22 L 183.948,223.283 M 185.323,229.298 L 185.323,223.088" />
-          <path
-             id="path6063"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.36688399"
-             d="M 181.386,228.953 L 181.386,223.483 M 182.704,229.109 L 182.665,223.288" />
-          <path
-             id="path6065"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.41339099"
-             d="M 177.897,228.64 L 177.897,223.835 M 179.042,228.718 L 179.042,223.679 M 180.221,228.875 L 180.221,223.639" />
-          <path
-             id="path6067"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.45989701"
-             d="M 176.673,228.601 L 176.673,223.952" />
-          <path
-             id="path6069"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.50640303"
-             d="M 175.533,228.367 L 175.533,224.03" />
-          <path
-             id="path6071"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.55290997"
-             d="M 174.31,228.249 L 174.31,224.225" />
-          <path
-             id="path6073"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.59683299"
-             d="M 171.806,227.898 L 171.767,224.694 M 173.089,228.054 L 173.089,224.46" />
-          <path
-             id="path6075"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.63042098"
-             d="M 170.522,227.625 L 170.522,224.811" />
-          <path
-             id="path6077"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.67692697"
-             d="M 169.347,227.396 L 169.347,225.054" />
-          <path
-             id="path6079"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.72084999"
-             d="M 168.064,227.084 L 168.064,225.249" />
-          <path
-             id="path6081"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.76477599"
-             d="M 166.745,226.928 L 166.745,225.561" />
-          <path
-             id="path6083"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.90170801"
-             d="M 165.349,226.616 L 165.349,225.952" />
-          <path
-             id="path6085"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0465064"
-             d="M 200.432,229.22 L 200.432,223.244 M 197.431,229.415 L 197.47,223.088 M 195.244,229.493 L 195.244,223.049" />
-        </g>
-        <g
-           id="g6087"
-           transform="matrix(0.193008,0,0,0.19301,284.917,181.0165)">
-          <path
-             id="path6089"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0930125"
-             d="M 193.384,229.571 L 193.384,223.049" />
-          <path
-             id="path6091"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.136935"
-             d="M 191.612,229.571 L 191.612,223.049" />
-          <path
-             id="path6093"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.183442"
-             d="M 189.94,229.571 L 189.94,223.049" />
-          <path
-             id="path6095"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.229949"
-             d="M 188.282,229.571 L 188.282,223.049" />
-          <path
-             id="path6097"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.27645499"
-             d="M 186.805,229.571 L 186.805,223.049" />
-          <path
-             id="path6099"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.322961"
-             d="M 183.987,229.22 L 183.948,223.283 M 185.323,229.298 L 185.323,223.088" />
-          <path
-             id="path6101"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.36688399"
-             d="M 181.386,228.953 L 181.386,223.483 M 182.704,229.109 L 182.665,223.288" />
-          <path
-             id="path6103"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.41339099"
-             d="M 177.897,228.64 L 177.897,223.835 M 179.042,228.718 L 179.042,223.679 M 180.221,228.875 L 180.221,223.639" />
-          <path
-             id="path6105"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.45989701"
-             d="M 176.673,228.601 L 176.673,223.952" />
-          <path
-             id="path6107"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.50640303"
-             d="M 175.533,228.367 L 175.533,224.03" />
-          <path
-             id="path6109"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.55290997"
-             d="M 174.31,228.249 L 174.31,224.225" />
-          <path
-             id="path6111"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.59683299"
-             d="M 171.806,227.898 L 171.767,224.694 M 173.089,228.054 L 173.089,224.46" />
-          <path
-             id="path6113"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.63042098"
-             d="M 170.522,227.625 L 170.522,224.811" />
-          <path
-             id="path6115"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.67692697"
-             d="M 169.347,227.396 L 169.347,225.054" />
-          <path
-             id="path6117"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.72084999"
-             d="M 168.064,227.084 L 168.064,225.249" />
-          <path
-             id="path6119"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.76477599"
-             d="M 166.745,226.928 L 166.745,225.561" />
-          <path
-             id="path6121"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.90170801"
-             d="M 165.349,226.616 L 165.349,225.952" />
-          <path
-             id="path6123"
-             style="font-size:12px;fill:none;stroke:#000000;stroke-width:0.0465064"
-             d="M 200.432,229.22 L 200.432,223.244 M 197.431,229.415 L 197.47,223.088 M 195.244,229.493 L 195.244,223.049" />
-        </g>
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2438">
-        <g
-           id="g2440" />
-        <g
-           id="g2442" />
-        <g
-           id="g2444" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2446" />
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2448" />
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2450">
-        <g
-           id="g2452" />
-        <g
-           id="g2454" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2456">
-        <g
-           id="g2458" />
-        <g
-           id="g2460" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2462" />
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2464">
-        <g
-           id="g2466" />
-        <g
-           id="g2468" />
-        <g
-           id="g2470" />
-        <g
-           id="g2472" />
-        <g
-           id="g2474">
-          <g
-             id="g2476" />
-        </g>
-        <g
-           id="g2478" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2480">
-        <g
-           id="g2482" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2484">
-        <g
-           id="g2486" />
-        <g
-           id="g2488" />
-        <g
-           id="g2490" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2492">
-        <g
-           id="g2494" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2617">
-        <g
-           id="g2619" />
-        <g
-           id="g2621" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2623">
-        <g
-           id="g2625">
-          <g
-             id="g2627" />
-          <g
-             id="g2629" />
-          <g
-             id="g2631" />
-        </g>
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2633">
-        <g
-           id="g2635" />
-        <g
-           id="g2637" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2639">
-        <g
-           id="g2641" />
-        <g
-           id="g2643" />
-      </g>
-      <g
-         transform="matrix(1.006896,0,0,1.006896,1069.399,153.8578)"
-         id="g2645">
-        <g
-           id="g2647" />
-        <g
-           id="g2649" />
-        <g
-           id="g2651" />
-        <g
-           id="g2653" />
-        <g
-           id="g2655">
-          <g
-             id="g2657" />
-        </g>
-        <g
-           id="g2659" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/trunk/src/modules/languageselector/resources/images/fr.svg b/trunk/src/modules/languageselector/resources/images/fr.svg
deleted file mode 100644
index 39055d7..0000000
--- a/trunk/src/modules/languageselector/resources/images/fr.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="900"
-   height="600"
-   id="Flag of France">
-  <rect
-     width="900"
-     height="600"
-     x="0"
-     y="0"
-     style="fill:#0c1c8c;fill-opacity:1"
-     id="blue stripe" />
-  <rect
-     width="600"
-     height="600"
-     x="300"
-     y="0"
-     style="fill:#ffffff"
-     id="white stripe" />
-  <rect
-     width="300"
-     height="600"
-     x="600"
-     y="0"
-     style="fill:#ef2b2d;fill-opacity:1"
-     id="red stripe" />
-</svg>
diff --git a/trunk/src/modules/languageselector/resources/images/he.svg b/trunk/src/modules/languageselector/resources/images/he.svg
deleted file mode 100644
index 3eb9ab9..0000000
--- a/trunk/src/modules/languageselector/resources/images/he.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- flag of israel using dimensions from http://www.vexilla-mundi.com/israel.htm -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
-     version="1.0" width="440" height="320">
- <rect width="440" height="320" style="fill:#ffffff" id="background"/>
- <rect width="440" height="50" y="30"  style="fill:#0471CB"/>
- <rect width="440" height="50" y="240" style="fill:#0471CB"/>
-
- <g id="star" transform="translate(220, 160)">
-   <!-- hieght of the triangle: (138-(11*2))/2 * 3/2 = 87
-        width  of the triangle: sqrt(87*87*4/3) = 100.45894683899488 -->
-   <polygon id="triangle" points="0,-58 -50.229473419497438,29 50.229473419497438,29"
-            style="stroke:#0471CB; stroke-width:11; fill-opacity:0"/>
-   <use transform="rotate(180)" xlink:href="#triangle"/>
- </g>
-</svg>
\ No newline at end of file
diff --git a/trunk/src/modules/languageselector/sitemap.xmap b/trunk/src/modules/languageselector/sitemap.xmap
deleted file mode 100644
index 5692e87..0000000
--- a/trunk/src/modules/languageselector/sitemap.xmap
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:components>
-
-    <map:serializers>
-      <map:serializer name="svg2png"
-        src="org.apache.cocoon.serialization.SVGSerializer"
-        mime-type="image/png"
-        logger="sitemap.serializer.svg2png"
-      />
-    </map:serializers>
-
-  </map:components>
-
-
-  <map:pipelines>
-  
-    <map:pipeline>
-      
-    <!-- {1} determines the presentation of the language list. it can be either of
-           "abbr": show 2-letter ISO language codes [default]
-           "long": show full language names (must be provided by i18n catalogue)
-           "none": do not show anything (only makes sense with {2}, see below)
-         {2} controls the presentation of language flag symbols. it can be either of
-           "none": do not show flag symbols [default]
-           <n>: show flags with height of n pixels.
-    -->
-    <map:match pattern="text-*/flagsize-*">
-      <map:generate src="context://lenya/content/util/empty.xml"/>
-      <map:transform src="fallback://lenya/modules/languageselector/xslt/languageselector.xsl">
-        <map:parameter name="currentLanguage" value="{page-envelope:document-language}"/>
-        <map:parameter name="publication-languages-csv" value="{page-envelope:publication-languages-csv}"/>
-        <map:parameter name="document-languages-csv" value="{page-envelope:document-languages-csv}"/>
-        <map:parameter name="text" value="{1}"/>
-        <map:parameter name="flagsize" value="{2}"/>
-        <map:parameter name="context" value=""/>
-      </map:transform>
-      <map:transform type="i18n">
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>
-      <map:serialize type="xml"/>
-    </map:match>
-   
-    </map:pipeline>
-  
-    <map:pipeline>
-      <map:parameter name="expires" value="access plus 2 hours"/>
-      
-    <!-- flag-<language-code>-<height in pixels>.png -->
-    <map:match pattern="flag-*-*.png">
-      <map:select type="resource-exists">
-        <map:when test="resources/images/{1}.svg">
-          <map:generate src="fallback://lenya/modules/languageselector/resources/images/{1}.svg"/>
-        </map:when>
-        <map:otherwise>
-           <map:generate src="fallback://lenya/modules/languageselector/resources/images/default.svg"/>
-        </map:otherwise>
-      </map:select>
-      <map:transform src="xslt/resizesvg.xsl">
-        <parameter name="height" value="{2}"/>
-      </map:transform>
-      <map:transform src="xslt/stylesvg.xsl"/>
-      <map:serialize type="svg2png"/>
-    </map:match>
-
-    <!-- currently only for debugging purposes -->
-    <map:match pattern="resources/images/*.svg">
-      <map:read src="resources/images/{1}.svg"/>
-    </map:match>
-
-    </map:pipeline>
-
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/languageselector/xslt/languageselector.xsl b/trunk/src/modules/languageselector/xslt/languageselector.xsl
deleted file mode 100644
index fd4a4dd..0000000
--- a/trunk/src/modules/languageselector/xslt/languageselector.xsl
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  exclude-result-prefixes="xhtml"
-  >
-
-  <xsl:param name="currentLanguage"/>
-  <xsl:param name="publication-languages-csv"/>
-  <xsl:param name="document-languages-csv"/>
-  <xsl:param name="text"/>
-  <xsl:param name="flagsize"/>
-  <xsl:param name="context"/>
-
-  <xsl:template match="/">
-    <div id="languageselector">
-      <ul>
-        <xsl:call-template name="enumLangs">
-          <xsl:with-param name="list" select="$publication-languages-csv"/>
-        </xsl:call-template>
-      </ul>
-    </div>
-  </xsl:template>
-
-  <!-- parse a comma-separated list of languages and call handleLanguage for each language found. -->
-  <xsl:template name="enumLangs">
-    <xsl:param name="list"/>
-
-    <!-- get the first item in the list: -->
-    <xsl:variable name="head">
-      <xsl:choose>
-        <!-- all but last item: -->
-        <xsl:when test="substring-before($list, ',')">
-          <xsl:value-of select="substring-before($list, ',')"/>
-        </xsl:when>
-        <!-- last item: -->
-        <xsl:when test="$list">
-          <xsl:value-of select="$list"/>
-        </xsl:when>
-        <xsl:otherwise/>
-      </xsl:choose>
-    </xsl:variable>
-
-    <!-- get the rest of the list: -->
-    <xsl:variable name="tail">
-      <xsl:value-of select="substring-after($list, ',')"/>
-    </xsl:variable>
-
-    <!-- handle the first item in the list: -->
-    <xsl:if test="$head">
-      <xsl:call-template name="handleLanguage">
-        <xsl:with-param name="lang" select="$head"/>
-      </xsl:call-template>
-    </xsl:if>
-
-    <!-- if there are more items in the list, handle them recursively: -->
-    <xsl:if test="$tail">
-      <xsl:call-template name="enumLangs">
-        <xsl:with-param name="list" select="$tail"/>
-      </xsl:call-template>
-    </xsl:if>
-  </xsl:template>
-
-  <xsl:template name="handleLanguage">
-    <xsl:param name="lang"/>
-    <li>
-      <xsl:choose>
-  
-        <xsl:when test="$lang = $currentLanguage">
-          <a class="lenya-language-isCurrent" 
-             i18n:attr="title"
-             title="{$lang}-isCurrent"
-          >
-            <xsl:call-template name="text">
-              <xsl:with-param name="lang" select="$lang"/>
-            </xsl:call-template>
-            <xsl:call-template name="flag">
-              <xsl:with-param name="lang" select="$lang"/>
-              <xsl:with-param name="flagsize" select="$flagsize"/>
-            </xsl:call-template>
-          </a>
-        </xsl:when>
-  
-        <!-- this test is a little sloppy and can lead to spurious substring matches if 
-             both two and three letter language codes (ISO 639-2) are being used. -->
-    
-        <xsl:when test="contains($document-languages-csv, $lang)">
-          <!-- aren't these new lenya-document links lovely? relative links to languages! -->
-          <a class="lenya-language-isAvailable" 
-             i18n:attr="title"
-             title="{$lang}-isAvailable"
-             href="lenya-document:,lang={$lang}"
-          >
-            <xsl:call-template name="text">
-              <xsl:with-param name="lang" select="$lang"/>
-            </xsl:call-template>
-            <xsl:call-template name="flag">
-              <xsl:with-param name="lang" select="$lang"/>
-              <xsl:with-param name="flagsize" select="$flagsize"/>
-            </xsl:call-template>
-          </a>
-        </xsl:when>
-  
-        <xsl:otherwise>
-          <a class="lenya-language-isUnavailable"
-             i18n:attr="title"
-             title="{$lang}-isUnavailable"
-          >
-            <xsl:call-template name="text">
-              <xsl:with-param name="lang" select="$lang"/>
-            </xsl:call-template>
-            <xsl:call-template name="flag">
-              <xsl:with-param name="lang" select="$lang"/>
-              <xsl:with-param name="flagsize" select="$flagsize"/>
-            </xsl:call-template>
-          </a>
-        </xsl:otherwise>
-  
-      </xsl:choose>
-    </li>
-  </xsl:template>
-
-  <xsl:template name="text">
-    <xsl:param name="lang"/>
-    <xsl:choose>
-      <xsl:when test="$text = 'abbr'">
-        <xsl:value-of select="$lang"/>
-      </xsl:when>
-      <xsl:when test="$text = 'long'">
-        <i18n:text><xsl:value-of select="$lang"/></i18n:text>
-      </xsl:when>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template name="flag">
-    <xsl:param name="lang"/>
-    <xsl:param name="flagsize"/>
-    <xsl:choose>
-      <xsl:when test="$flagsize = 'none'"/>
-      <xsl:when test="number($flagsize) &gt; 0">
-        <img src="{$context}/modules/languageselector/flag-{$lang}-{$flagsize}.png" alt="{$lang}"/>
-      </xsl:when>
-    </xsl:choose>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/languageselector/xslt/resizesvg.xsl b/trunk/src/modules/languageselector/xslt/resizesvg.xsl
deleted file mode 100644
index cf9f227..0000000
--- a/trunk/src/modules/languageselector/xslt/resizesvg.xsl
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns="http://www.w3.org/2000/svg"
-  exclude-result-prefixes="svg"
->
-
-  <xsl:param name="height"/>
-
-  <!-- prevent users from causing memory overflows: -->
-  <xsl:variable name="maxHeight" select="1024"/>
-  
-  <!-- the width:height-ratio -->
-  <xsl:variable name="ratio" select="1.5"/>
-  
-  <!-- 
-     scales an svg to height $height.
-     this is done by surrounding the image with a new <svg/> element with the desired height and 
-     proportional width, and a viewBox whose dimensions are taken from the original image.
-  -->  
-  <xsl:template match="/svg:svg">
-    <xsl:choose>
-      <xsl:when test="number($height) &gt; 0 and number($height) &lt;= $maxHeight">
-        <svg:svg viewBox="0 0 {@width} {@height}" width="{$height * $ratio}" height="{$height}"
-          preserveAspectRatio="none">
-          <xsl:copy>
-            <xsl:apply-templates select="@*|node()"/>
-          </xsl:copy> 
-        </svg:svg>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:message terminate="yes">
-          Wow. You requested an image height of <xsl:value-of select="$height"/>. No way José. Go DoS someone else.
-        </xsl:message>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template match="@*|node()" name="identity">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <!-- batik seems to choke on comment elements. workaround: -->
-  <xsl:template match="svg:comment"/>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/languageselector/xslt/stylesvg.xsl b/trunk/src/modules/languageselector/xslt/stylesvg.xsl
deleted file mode 100644
index 913d9b9..0000000
--- a/trunk/src/modules/languageselector/xslt/stylesvg.xsl
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns="http://www.w3.org/2000/svg"
-  exclude-result-prefixes="svg"
->
-
-  <!-- 
-     Adds a border and a gradient to the image.
-  -->  
-  <xsl:template match="/svg:svg">
-    
-    <!-- translating to pixels -->
-    <xsl:variable name="width" select="ceiling(@width)"/>
-    <xsl:variable name="height" select="ceiling(@height)"/>
-    
-    <svg:svg width="{$width + 2}" height="{$height + 2}">
-      <defs>
-        <linearGradient id="light" x1="0%" y1="0%" x2="0%" y2="100%">
-          <stop offset="0%" style="stop-color: #FFFFFF; stop-opacity: 1"/>
-          <stop offset="40%" style="stop-color: #FFFFFF; stop-opacity: 0"/>
-          <stop offset="60%" style="stop-color: #000000; stop-opacity: 0"/>
-          <stop offset="100%" style="stop-color: #000000; stop-opacity: 1"/>
-        </linearGradient>
-      </defs>
-      
-      <rect x="0" y="0" width="{$width + 2}" height="{$height + 2}" style="fill: #000000;"/>
-      
-      <svg:svg x="1" y="1" width="{$width}" height="{$height}"
-        viewBox="{@viewBox}" preserveAspectRatio="none">
-        <xsl:apply-templates select="node()"/>
-      </svg:svg>
-      <rect x="1" y="1" width="{$width}" height="{$height}" style="fill: url(#light); opacity: 0.5"/>
-    </svg:svg>
-  </xsl:template>
-
-  <xsl:template match="@*|node()" name="identity">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <!-- batik seems to choke on comment elements. workaround: -->
-  <xsl:template match="svg:comment"/>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/lenyadoc/config/cocoon-xconf/sourcefactory.xconf b/trunk/src/modules/lenyadoc/config/cocoon-xconf/sourcefactory.xconf
deleted file mode 100644
index cd377cf..0000000
--- a/trunk/src/modules/lenyadoc/config/cocoon-xconf/sourcefactory.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'lenyadoc']">
-
-  <component-instance logger="" name="lenyadoc"
-    class="org.apache.lenya.cms.cocoon.source.LenyaDocSourceFactory"/>
-  
-</xconf>
diff --git a/trunk/src/modules/lenyadoc/config/module.xml b/trunk/src/modules/lenyadoc/config/module.xml
deleted file mode 100644
index aadc024..0000000
--- a/trunk/src/modules/lenyadoc/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.lenyadoc</lenya:id>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>lenyadoc</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>lenyadoc:// protocol</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/lenyadoc/java/src/org/apache/lenya/cms/cocoon/source/LenyaDocSourceFactory.java b/trunk/src/modules/lenyadoc/java/src/org/apache/lenya/cms/cocoon/source/LenyaDocSourceFactory.java
deleted file mode 100644
index 03022e1..0000000
--- a/trunk/src/modules/lenyadoc/java/src/org/apache/lenya/cms/cocoon/source/LenyaDocSourceFactory.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.source;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Map;
-
-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.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceException;
-import org.apache.excalibur.source.SourceFactory;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * A factory for the "lenyadoc" scheme (virtual protocol), which is used to resolve any
- * src="lenyadoc:<...>" attributes in sitemaps.
- * 
- * <code>lenyadoc://<publication>/<area>/<language>/<uuid></code>
- * <code>lenyadoc:/<language>/<uuid></code>
- * 
- * If we want to request the meta data for a document
- * instead of the document itself, we need to use
- * 
- * <code>lenyadoc:meta:/<language>/<uuid></code>
- * <code>lenyadoc:meta://<publication>/<area>/<language>/<uuid></code>
- * 
- * @version $Id:$
- */
-public class LenyaDocSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
-        Contextualizable, Serviceable, Configurable {
-
-    protected static final String SCHEME = "lenyadoc";
-
-    private Context context;
-    private ServiceManager manager;
-
-    /**
-     * Used for resolving the object model.
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
-     */
-    public Source getSource(String location, Map parameters) throws MalformedURLException,
-            IOException, SourceException {
-        String scheme = null;
-        String area = null;
-        String language = null;
-        String uuid = null;
-        Publication pub;
-
-        // Parse the url
-        int start = 0;
-        int end;
-
-        // Scheme
-        end = location.indexOf(':', start);
-        if (end == -1) {
-            throw new MalformedURLException("Malformed lenyadoc: URI: can not find scheme part ["
-                    + location + "]");
-        }
-        scheme = location.substring(start, end);
-        if (!SCHEME.equals(scheme)) {
-            throw new MalformedURLException("Malformed lenyadoc: URI: unknown scheme [" + location
-                    + "]");
-        }
-
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-
-        start = end + 1;
-        
-        // Absolute vs. relative
-        if (location.startsWith("//", start)) {
-            // Absolute: get publication id
-            start += 2;
-            end = location.indexOf('/', start);
-            if (end == -1) {
-                throw new MalformedURLException("Malformed lenyadoc: URI: publication part not found ["
-                        + location + "]");
-            }
-            String publicationId = location.substring(start, end);
-            try {
-                pub = factory.getPublication(publicationId);
-            } catch (PublicationException e) {
-                throw new MalformedURLException("Malformed lenyadoc: Publication [" + publicationId
-                        + "] does not exist or could not be initialized");
-            }
-            if (pub == null || !pub.exists()) {
-                throw new SourceException("The publication [" + publicationId + "] does not exist!");
-            }
-
-            // Area
-            start = end + 1;
-            end = location.indexOf('/', start);
-            if (end == -1) {
-                throw new MalformedURLException("Malformed lenyadoc: URI: cannot find area ["
-                        + location + "]");
-            }
-            area = location.substring(start, end);
-
-        } else if (location.startsWith("/", start)) {
-            end += 1;
-            // Relative: get publication id and area from page envelope
-            try {
-                pub = PublicationUtil.getPublication(this.manager, objectModel);
-            } catch (PublicationException e) {
-                throw new SourceException("Error getting publication id / area from page envelope ["
-                        + location + "]");
-            }
-            if (pub != null && pub.exists()) {
-                String url = ServletHelper.getWebappURI(request);
-                area = new URLInformation(url).getArea();
-            } else {
-                throw new SourceException("Error getting publication id / area from page envelope ["
-                        + location + "]");
-            }
-        } else {
-            throw new MalformedURLException("Malformed lenyadoc: URI [" + location + "]");
-        }
-
-        // Language
-        start = end + 1;
-        end = location.indexOf('/', start);
-        if (end == -1) {
-            throw new MalformedURLException("Malformed lenyadoc: URI: cannot find language ["
-                    + location + "]");
-        }
-        language = location.substring(start, end);
-
-        // UUID
-        start = end + 1;
-        uuid = location.substring(start);
-
-        Session session;
-        try {
-            session = RepositoryUtil.getSession(this.manager, request);
-        } catch (RepositoryException e1) {
-            throw new RuntimeException(e1);
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Creating repository source for URI [" + location + "]");
-        }
-        Document document;
-        try {
-            document = factory.get(pub, area, uuid, language);
-        } catch (DocumentBuildException e) {
-            throw new MalformedURLException("Malformed lenyadoc: Document [" + uuid + ":"
-                    + language + "] could not be created.");
-        }
-
-        String lenyaURL = document.getSourceURI();
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Mapping 'lenyadoc:' URL [" + location + "] to 'lenya:' URL ["
-                    + lenyaURL + "]");
-            getLogger().debug("Creating repository source for URI [" + lenyaURL + "]");
-        }
-
-        return new RepositorySource(manager, lenyaURL, session, getLogger());
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
-     */
-    public void release(Source source) {
-        // Source will be released by delegated source factory.
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules/linkcheck/config/cocoon-xconf/usecase-getLinks.xconf b/trunk/src/modules/linkcheck/config/cocoon-xconf/usecase-getLinks.xconf
deleted file mode 100644
index 37c9888..0000000
--- a/trunk/src/modules/linkcheck/config/cocoon-xconf/usecase-getLinks.xconf
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'linkcheck.getLinks']">
-
-    <component-instance name="linkcheck.getLinks" logger="lenya.linkcheck" class="org.apache.lenya.cms.usecase.DummyUsecase">
-      <view uri="modules/linkcheck/usecases/linkcheck/getLinks.jx"/>
-    </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/linkcheck/config/module.xml b/trunk/src/modules/linkcheck/config/module.xml
deleted file mode 100644
index 9e3bca0..0000000
--- a/trunk/src/modules/linkcheck/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.linkcheck</lenya:id>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>Link Checker</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>Link Checker</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/linkcheck/java/src/org/apache/lenya/cms/cocoon/generation/LinkStatusGenerator.java b/trunk/src/modules/linkcheck/java/src/org/apache/lenya/cms/cocoon/generation/LinkStatusGenerator.java
deleted file mode 100644
index b70d90b..0000000
--- a/trunk/src/modules/linkcheck/java/src/org/apache/lenya/cms/cocoon/generation/LinkStatusGenerator.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.cms.cocoon.generation;
-
-import org.apache.cocoon.generation.ServiceableGenerator;
-import org.apache.avalon.excalibur.pool.Recyclable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.Constants;
-import org.apache.commons.lang.StringUtils;
-import org.apache.excalibur.source.Source;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.regexp.RE;
-import org.apache.regexp.RESyntaxException;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URLConnection;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Map;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-
-/**
- *Generates a list of links that are reachable from the src and their status.
- *
- * <pre>
- *  &lt;map:generator name="linkStatus" src="org.apache.lenya.cms.cocoon.generation.LinkStatusGenerator"/&gt;
- *
- *   &lt;map:generate type="linkStatus" src="/{pubid}/{area}/{doc-id}.html"&gt;
- *      &lt;map:parameter name="depth" value="1"/&gt;
- *   &lt;/map:generate&gt;
- * </pre>
-**/
-
-public class LinkStatusGenerator extends ServiceableGenerator
-                                 implements Recyclable, Configurable {
-
-    /** The URI of the namespace of this generator. */
-    protected static final String URI =
-            "http://apache.org/cocoon/linkstatus/2.0";
-
-    /** The namespace prefix for this namespace. */
-    protected static final String PREFIX = "linkstatus";
-
-    /* Node and attribute names */
-    protected static final String TOP_NODE_NAME = "linkstatus";
-    protected static final String LINK_NODE_NAME = "link";
-
-    protected static final String HREF_ATTR_NAME = "href";
-    protected static final String REFERRER_ATTR_NAME = "referrer";
-    protected static final String CONTENT_ATTR_NAME = "content";
-    protected static final String STATUS_ATTR_NAME = "status";
-    protected static final String MESSAGE_ATTR_NAME = "message";
-
-    protected AttributesImpl attributes;
-
-    /**
-     * Config element name specifying expected link content-typ.
-     * <p>
-     *   Its value is <code>link-content-type</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String LINK_CONTENT_TYPE_CONFIG = "link-content-type";
-
-    /**
-     * Default value of <code>link-content-type</code> configuration value.
-     * <p>
-     *   Its value is <code>application/x-cocoon-links</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final String LINK_CONTENT_TYPE_DEFAULT = "application/x-cocoon-links";
-
-    /**
-     * Config element name specifying query-string appendend for requesting links
-     * of an URL.
-     * <p>
-     *  Its value is <code>link-view-query</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String LINK_VIEW_QUERY_CONFIG = "link-view-query";
-    /**
-     * Default value of <code>link-view-query</code> configuration value.
-     * <p>
-     *   Its value is <code>?cocoon-view=links</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String LINK_VIEW_QUERY_DEFAULT = "cocoon-view=links";
-
-    /**
-     * Config element name specifying excluding regular expression pattern.
-     * <p>
-     *  Its value is <code>exclude</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String EXCLUDE_CONFIG = "exclude";
-
-    /**
-     * Config element name specifying including regular expression pattern.
-     * <p>
-     *  Its value is <code>include</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String INCLUDE_CONFIG = "include";
-
-    /**
-     * Config element name specifying http header value for user-Agent.
-     * <p>
-     *  Its value is <code>user-agent</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String USER_AGENT_CONFIG = "user-agent";
-    /**
-     * Default value of <code>user-agent</code> configuration value.
-     *
-     * @see org.apache.cocoon.Constants#COMPLETE_NAME
-     * @since
-     */
-    public final static String USER_AGENT_DEFAULT = Constants.COMPLETE_NAME;
-
-    /**
-     * Config element name specifying http header value for accept.
-     * <p>
-     *  Its value is <code>accept</code>.
-     * </p>
-     *
-     * @since
-     */
-    public final static String ACCEPT_CONFIG = "accept";
-    /**
-     * Default value of <code>accept</code> configuration value.
-     * <p>
-     *   Its value is <code>* / *</code>
-     * </p>
-     *
-     * @since
-     */
-    public final static String ACCEPT_DEFAULT = "*/*";
-
-    private String linkViewQuery = LINK_VIEW_QUERY_DEFAULT;
-    private String linkContentType = LINK_CONTENT_TYPE_DEFAULT;
-    private HashSet excludeCrawlingURL;
-    private HashSet includeCrawlingURL;
-
-    private HashSet crawled;
-    private HashSet linksToProcess;
-    
-    /** The depth parameter determines how deep the EnhancedLinkStatusGenerator should delve. */
-    protected int depth = 1;
-    
-    protected Source inputSource;
-    String src;
-    private DocumentFactory identityMap;
-
-    /**
-     * Stores links to process and the referrer links
-     */
-    private static class Link {
-        private String uri;
-        private String referrer;
-        private int linkDepth;
-
-        public Link(String uri, String referrer, int linkDepth) {
-            this.uri = uri;
-            this.referrer = referrer;
-            this.linkDepth = linkDepth;
-        }
-
-        public String getURI() {
-            return uri;
-        }
-
-        public String getReferrer() {
-            return referrer;
-        }
-        
-        public int getDepth() {
-            return linkDepth;
-        }
-
-        public boolean equals(Link l) {
-            return uri.equals(l.getURI());
-        }
-    }
-
-    /**
-     * Configure the crawler component.
-     * <p>
-     *  Configure can specify which URI to include, and which URI to exclude
-     *  from crawling. You specify the patterns as regular expressions.
-     * </p>
-     * <p>
-     *  Morover you can configure
-     *  the required content-type of crawling request, and the
-     *  query-string appended to each crawling request.
-     * </p>
-     * <pre><tt>
-     * &lt;include&gt;.*\.html?&lt;/include&gt; or &lt;include&gt;.*\.html?, .*\.xsp&lt;/include&gt;
-     * &lt;exclude&gt;.*\.gif&lt;/exclude&gt; or &lt;exclude&gt;.*\.gif, .*\.jpe?g&lt;/exclude&gt;
-     * &lt;link-content-type&gt; application/x-cocoon-links &lt;/link-content-type&gt;
-     * &lt;link-view-query&gt; ?cocoon-view=links &lt;/link-view-query&gt;
-     * &lt;user-agent&gt; Cocoon &lt;/user-agent&gt;
-     * &lt;accept&gt; text/xml &lt;/accept&gt;
-     * </tt></pre>
-     *
-     * @param  configuration               XML configuration of this avalon component.
-     * @exception  ConfigurationException  is throwing if configuration is invalid.
-     * @since
-     */
-    public void configure(Configuration configuration)
-            throws ConfigurationException {
-
-        Configuration[] children;
-        children = configuration.getChildren(INCLUDE_CONFIG);
-        if (children.length > 0) {
-            includeCrawlingURL = new HashSet();
-            for (int i = 0; i < children.length; i++) {
-                String pattern = children[i].getValue();
-                try {
-                    String params[] = StringUtils.split(pattern, ", ");
-                    for (int index = 0; index < params.length; index++) {
-                        String tokenized_pattern = params[index];
-                        this.includeCrawlingURL.add(new RE(tokenized_pattern));
-                    }
-                } catch (RESyntaxException rese) {
-                    getLogger().error("Cannot create including regular-expression for " +
-                            pattern, rese);
-                }
-            }
-        }
-
-        children = configuration.getChildren(EXCLUDE_CONFIG);
-        if (children.length > 0) {
-            excludeCrawlingURL = new HashSet();
-            for (int i = 0; i < children.length; i++) {
-                String pattern = children[i].getValue();
-                try {
-                    String params[] = StringUtils.split(pattern, ", ");
-                    for (int index = 0; index < params.length; index++) {
-                        String tokenized_pattern = params[index];
-                        this.excludeCrawlingURL.add(new RE(tokenized_pattern));
-                    }
-                } catch (RESyntaxException rese) {
-                    getLogger().error("Cannot create excluding regular-expression for " +
-                            pattern, rese);
-                }
-            }
-        } else {
-            excludeCrawlingURL = new HashSet();
-            setDefaultExcludeFromCrawling();
-        }
-
-        Configuration child;
-        String value;
-        child = configuration.getChild(LINK_CONTENT_TYPE_CONFIG, false);
-        if (child != null) {
-            value = child.getValue();
-            if (value != null && value.length() > 0) {
-                this.linkContentType = value.trim();
-            }
-        }
-        child = configuration.getChild(LINK_VIEW_QUERY_CONFIG, false);
-        if (child != null) {
-            value = child.getValue();
-            if (value != null && value.length() > 0) {
-                this.linkViewQuery = value.trim();
-            }
-        }
-    }
-
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
-    throws ProcessingException, SAXException, IOException {
-        
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session;
-        try {
-            session = RepositoryUtil.getSession(this.manager, request);
-        } catch (RepositoryException e) {
-            throw new ProcessingException(e);
-        }
-        this.identityMap = DocumentUtil.createDocumentFactory(this.manager, session);
-
-        super.setup(resolver, objectModel, src, par);
-        this.src = src;
-        this.depth = par.getParameterAsInteger("depth", 1);
-        
-        /* Create a reusable attributes for creating nodes */
-        this.attributes = new AttributesImpl();
-    }
-
-    /**
-     * Generate XML data.
-     *
-     * @throws  SAXException
-     *      if an error occurs while outputting the document
-     * @throws  ProcessingException
-     *      if the requsted URI wasn't found
-     */
-    public void generate()
-    throws SAXException, ProcessingException {
-           
-        crawled = new HashSet();
-        linksToProcess = new HashSet();
-
-        //this first node should be handled as a cocoon source
-        String root = this.src;
-        URL tempurl = null;
-        linksToProcess.add(new Link(root, "", 0));
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("crawl URL " + root);
-        }
-
-        this.contentHandler.startDocument();
-        this.contentHandler.startPrefixMapping(PREFIX, URI);
-
-        attributes.clear();
-        super.contentHandler.startElement(URI, TOP_NODE_NAME, PREFIX + ':' + TOP_NODE_NAME, attributes);
-
-        while (linksToProcess.size() > 0) {
-            Iterator i = linksToProcess.iterator();
-
-            if (i.hasNext()) {
-                // fetch a URL
-                Link link = (Link) i.next();
-                String uri = link.getURI();
-                int referrerDepth = link.getDepth();
-                // remove it from the to-do list
-                linksToProcess.remove(link);
-                String new_url_link = processURL(uri, link.getReferrer(), referrerDepth);
-
-                // calc all links from this url
-                if (new_url_link != null && referrerDepth < this.depth) {
-
-                    List url_links = getLinksFromConnection(new_url_link, uri, referrerDepth);
-                    if (url_links != null) {
-                        // add links of this url to the to-do list
-                        linksToProcess.addAll(url_links);
-                    }
-                }
-            }
-        }
-
-        super.contentHandler.endElement(URI, TOP_NODE_NAME, PREFIX + ':' + TOP_NODE_NAME);
-        this.contentHandler.endPrefixMapping(PREFIX);
-        this.contentHandler.endDocument();
-    }
-    
-    /**
-     * Default exclude patterns.
-     * <p>
-     *   By default URLs matching following patterns are excluded:
-     * </p>
-     * <ul>
-     *   <li>.*\\.gif(\\?.*)?$ - exclude gif images</li>
-     *   <li>.*\\.png(\\?.*)?$ - exclude png images</li>
-     *   <li>.*\\.jpe?g(\\?.*)?$ - exclude jpeg images</li>
-     *   <li>.*\\.js(\\?.*)?$ - exclude javascript </li>
-     *   <li>.*\\.css(\\?.*)?$ - exclude cascaded stylesheets</li>
-     * </ul>
-     *
-     * @since
-     */
-    private void setDefaultExcludeFromCrawling() {
-        String[] EXCLUDE_FROM_CRAWLING_DEFAULT = {
-            ".*\\.gif(\\?.*)?$",
-            ".*\\.png(\\?.*)?$",
-            ".*\\.jpe?g(\\?.*)?$",
-            ".*\\.js(\\?.*)?$",
-            ".*\\.css(\\?.*)?$",
-            ".*\\?.*",".*\\@.*"
-        };
-
-        for (int i = 0; i < EXCLUDE_FROM_CRAWLING_DEFAULT.length; i++) {
-            String pattern = EXCLUDE_FROM_CRAWLING_DEFAULT[i];
-            try {
-                excludeCrawlingURL.add(new RE(pattern));
-            } catch (RESyntaxException rese) {
-                getLogger().error("Cannot create excluding regular-expression for " +
-                        pattern, rese);
-            }
-        }
-    }
-
-
-    /**
-     * Retrieve a list of links of a url
-     *
-     * @param url_link_string url for requesting links, it is assumed that
-     *   url_link_string queries the cocoon view links, ie of the form
-     *   <code>http://host/foo/bar?cocoon-view=links</code>
-     * @param url_of_referrer base url of which links are requested, ie of the form
-     *   <code>http://host/foo/bar</code>
-     * @return List of links from url_of_referrer, as result of requesting url
-     *   url_link_string
-     */
-    protected List getLinksFromConnection(String url_link_string, String url_of_referrer, int referrerDepth) {
-        List url_links = null;
-        BufferedReader br = null;
-        try {
-
-                url_links = new ArrayList();
-                url_link_string = "cocoon:/" + url_link_string;
-
-                inputSource = super.resolver.resolveURI(url_link_string);
-                InputStream is = inputSource.getInputStream();
-                br = new BufferedReader(new InputStreamReader(is));
-
-                // content is supposed to be a list of links,
-                // relative to current URL
-                String line;
-                String referrer = url_of_referrer;
-
-                while ((line = br.readLine()) != null) {
-                    String new_url = line;
-                    boolean add_url = true;
-                    // don't add new_url twice
-                    if (add_url) {
-                        add_url &= !url_links.contains(new_url);
-                    }
-
-                    // don't add new_url if it has been crawled already
-                    if (add_url) {
-                        add_url &= !crawled.contains(new_url);
-                    }
-
-                    Link new_link = new Link(line, referrer, referrerDepth+1);
-                    if (add_url) {
-                        add_url &= !linksToProcess.contains(new_link);
-                    }
-
-                    // don't add if is not matched by existing include definition
-                    if (add_url) {
-                        add_url &= isIncludedURL(new_url);
-                    }
-                    
-                    //don't add id matched by existing exclude definition
-                    if (add_url) {
-                        add_url &= !(isExcludedURL(new_url));
-                    }
-
-                    if (add_url) {
-                        if (getLogger().isDebugEnabled()) {
-                            getLogger().debug("Add URL: " + new_url);
-                        }
-                        url_links.add(new_link);
-                    }
-                }
-                // now we have a list of URL which should be examined
-          
-        } catch (IOException ioe) {
-            getLogger().warn("Problems get links of " + url_link_string, ioe);
-        } finally {
-            // explictly close the stream
-            if (br != null) {
-                try {
-                    br.close();
-                    br = null;
-                } catch (IOException ignored) {
-                }
-            }
-        }
-        return url_links;
-    }
-
-    /**
-     * Generate xml attributes of a url, calculate url for retrieving links
-     *
-     * @param url to process
-     * @param referrer of the url
-     * @return String url for retrieving links, or null if url is an excluded-url,
-     *   and not an included-url.
-     */
-    protected String processURL(String uri, String referrer, int referrerDepth) throws SAXException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("getLinks URL " + uri);
-        }
-
-        String result = null;
-
-        // don't try to investigate a url which has been crawled already
-        if (crawled.contains(uri)) {
-            return null;
-        }
-        
-        //TODO: need to respect robots.txt
-
-        // mark it as crawled
-        crawled.add(uri);
-
-        attributes.clear();
-        attributes.addAttribute("", HREF_ATTR_NAME,
-                HREF_ATTR_NAME, "CDATA", uri);
-        attributes.addAttribute("", REFERRER_ATTR_NAME,
-                REFERRER_ATTR_NAME, "CDATA", referrer);
-
-        // Output url, referrer, content-type, status, message for traversable url's
-        HttpURLConnection h = null;
-        URL url = null;
-        String newURL = null;
-        try {
-            String content_type = "text/html";
-            String responseMessage = "not found";
-            int responseCode = 404;
-            if (uri.startsWith("http://")) {
-                url = new URL(uri);
-                URLConnection links_url_connection = url.openConnection();
-                h = (HttpURLConnection) links_url_connection;
-                h.setRequestMethod("HEAD");  //lets be kind to external sites
-                content_type = links_url_connection.getContentType();
-                responseMessage = h.getResponseMessage();
-                responseCode = h.getResponseCode();
-            } else {
-                String tempURI = uri;
-                if (!(uri.startsWith("/"))) {
-                    String contextURI = referrer.substring(0,referrer.lastIndexOf("/")+1);
-                    tempURI = contextURI + uri;
-                }
-                
-                //see if the document exists
-                if (this.identityMap.isDocument(tempURI)) {
-                    content_type = "text/html";
-                    responseMessage = "ok";
-                    responseCode = 200;
-                    newURL = tempURI;
-                } else {
-                    //see if the resource exists
-                }
-            }
-
-            attributes.addAttribute("", CONTENT_ATTR_NAME,
-                    CONTENT_ATTR_NAME, "CDATA",
-                    content_type);
-
-            attributes.addAttribute("", MESSAGE_ATTR_NAME,
-                    MESSAGE_ATTR_NAME, "CDATA",
-                    responseMessage);
-
-            attributes.addAttribute("", STATUS_ATTR_NAME,
-                    STATUS_ATTR_NAME, "CDATA",
-                    String.valueOf(responseCode));
-        } catch (IOException ioe) {
-            attributes.addAttribute("", MESSAGE_ATTR_NAME,
-                    MESSAGE_ATTR_NAME, "CDATA",
-                    ioe.getMessage());
-        } catch (final Exception e1) {
-            attributes.addAttribute("", MESSAGE_ATTR_NAME,
-                    MESSAGE_ATTR_NAME, "CDATA",
-                    e1.getMessage());
-        } finally {
-            if (h != null) {
-                h.disconnect();
-            }
-        }
-
-        // don't try to get links of a url which is excluded from crawling
-        // try to get links of a url which is included for crawling
-        if (!isExcludedURL(uri) && isIncludedURL(uri)) {
-            // add prefix and query to get data from the linkserializer.
-            if(newURL != null) {
-                if (newURL.indexOf("?") > -1) {
-                    newURL = newURL.substring(0,newURL.indexOf("?")) + linkViewQuery;
-                } else {
-                    newURL = newURL + "?" + linkViewQuery;
-                }
-            }
-        }
-
-        //linkrewriter transformer takes care of internal links
-        if (uri.startsWith("http://")) {
-          super.contentHandler.startElement(URI, LINK_NODE_NAME, PREFIX + ':' + LINK_NODE_NAME, attributes);
-          super.contentHandler.endElement(URI, LINK_NODE_NAME, PREFIX + ':' + LINK_NODE_NAME);
-        }
-          
-        return newURL;
-    }
-    
-    /**
-     * check if URL is a candidate for indexing
-     *
-     * @param  url  Description of Parameter
-     * @return      The excludedURL value
-     * @since
-     */
-    private boolean isExcludedURL(String url) {
-        // by default include URL for crawling
-        if (excludeCrawlingURL == null) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("exclude no URL " + url);
-            }
-            return false;
-        }
-
-        final String s = url;
-        Iterator i = excludeCrawlingURL.iterator();
-        while (i.hasNext()) {
-            RE pattern = (RE) i.next();
-            if (pattern.match(s)) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("exclude URL " + url);
-                }
-                return true;
-            }
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("exclude not URL " + url);
-        }
-        return false;
-    }
-
-
-    /**
-     * check if URL is a candidate for indexing
-     *
-     * @param  url  Description of Parameter
-     * @return      The includedURL value
-     * @since
-     */
-    private boolean isIncludedURL(String url) {
-        // by default include URL for crawling
-        if (includeCrawlingURL == null) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("include all URL " + url);
-            }
-            return true;
-        }
-
-        final String s = url;
-        Iterator i = includeCrawlingURL.iterator();
-        while (i.hasNext()) {
-            RE pattern = (RE) i.next();
-            if (pattern.match(s)) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("include URL " + url);
-                }
-                return true;
-            }
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("include not URL " + url);
-        }
-        return false;
-    }
-
-    public void recycle() {
-        if (null != this.inputSource) {
-            super.resolver.release(this.inputSource);
-            this.inputSource = null;
-        }
-        this.manager.release(super.resolver);
-        super.resolver = null;
-        this.manager = null;
-        this.attributes = null;
-        super.recycle();
-    }
-}
diff --git a/trunk/src/modules/linkcheck/resources/linkreporter.js b/trunk/src/modules/linkcheck/resources/linkreporter.js
deleted file mode 100644
index a1d36e5..0000000
--- a/trunk/src/modules/linkcheck/resources/linkreporter.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-var req;
-
-function processReqChange() {
-    // only if req shows "loaded"
-    if (req.readyState == 4) {
-        // only if "OK"
-        if (req.status == 200) {
-            // ...processing statements go here...
-            //parse link report for broken links
-            var rptLinks = req.responseXML.getElementsByTagName("link");
-            var brokenLinks = new Array(rptLinks.length);
-            brokenCount=0;
-            for(var i = 0; i < rptLinks.length; i++) {  // Loop through the returned links
-                if (rptLinks[i].hasAttribute("status") && rptLinks[i].getAttribute("status") == "404") {
-                    brokenLinks[brokenCount++] = rptLinks[i].getAttribute("href");
-                }
-            } 
-            if (brokenCount > 0) {
-                //get link elements from dom
-                var links = document.getElementById("page").getElementsByTagName("a");
-                for (var i = 0; i < links.length; i++) {  // Loop through the links in the doc
-                    //for each link, check to see if it is in broken list
-                    for (var j = 0; j < brokenLinks.length; j++) {
-                        if (brokenLinks[j] == links[i]) {
-                            //if it is, give it class attribute with value "brokenlink"
-                            links[i].setAttribute("class", "brokenlink")
-                        }
-                    }
-                }
-            }
-        } else {
-            alert("There was a problem retrieving the XML data:\n" +
-                req.statusText);
-        }
-    }
-}
-
-function loadXMLDoc(url) {
-	req = false;
-    // branch for native XMLHttpRequest object
-    if(window.XMLHttpRequest) {
-    	try {
-			req = new XMLHttpRequest();
-        } catch(e) {
-			req = false;
-        }
-    // branch for IE/Windows ActiveX version
-    } else if(window.ActiveXObject) {
-       	try {
-        	req = new ActiveXObject("Msxml2.XMLHTTP");
-      	} catch(e) {
-        	try {
-          		req = new ActiveXObject("Microsoft.XMLHTTP");
-        	} catch(e) {
-          		req = false;
-        	}
-		}
-    }
-	if(req) {
-		req.onreadystatechange = processReqChange;
-		req.open("GET", url, true);
-		req.send("");
-	}
-}
-
-reportlinks = function() {
-  //get link report
-  loadXMLDoc("?lenya.usecase=linkcheck.getLinks&asXML=true");
-}
-
-//  assign reportlinks function to onload
-
-function addOnLoad(newFunction) { 
-    var oldOnload = window.onload; 
-    if (typeof window.onload != 'function') { 
-      window.onload = newFunction; 
-    } else { 
-      window.onload = function() { oldOnload(); newFunction(); } 
-    } 
-} 
-
-addOnLoad(reportlinks); 
\ No newline at end of file
diff --git a/trunk/src/modules/linkcheck/sitemap.xmap b/trunk/src/modules/linkcheck/sitemap.xmap
deleted file mode 100644
index ab33525..0000000
--- a/trunk/src/modules/linkcheck/sitemap.xmap
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- 
-  This sitemap handles the creation of link reports
--->
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:components>
-    <map:generators default="file">
-      <map:generator name="linkStatus" src="org.apache.lenya.cms.cocoon.generation.LinkStatusGenerator">
-      </map:generator>
-    </map:generators>
-    
-    <map:selectors default="browser">
-      <map:selector logger="sitemap.selector.lastmod" name="last-mod" src="org.apache.lenya.cms.cocoon.selection.LastModSourceSelector"/>
-    </map:selectors>
-  </map:components>
-  
-	<!-- =========================== Pipelines ================================ -->
-	
-  <map:pipelines>
-	  
-    <map:pipeline type="noncaching">
-      <map:match pattern="getLinks.xml">
-         <map:select type="last-mod">
-            <map:parameter name="compare-to" value="lenya://lenya/pubs/{page-envelope:publication-id}/content/{page-envelope:area}/{page-envelope:document-path}"/>
-            <!-- Read from cache -->
-            <!-- If configured within Apache then mod_lenya will nevertheless read from cache -->
-            <map:when test="context://lenya/pubs/{page-envelope:publication-id}/work/cache/{page-envelope:area}/{page-envelope:document-uuid}.linkreport">
-                <map:generate src="context://lenya/pubs/{page-envelope:publication-id}/work/cache/{page-envelope:area}/{page-envelope:document-uuid}.linkreport" mime-type="text/xml; charset=utf-8"/>
-                <map:serialize type="xml"/>
-            </map:when>
-            <!-- Write to cache and serialize -->
-            <map:otherwise>  
-              <map:generate type="linkStatus" src="/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}.html">
-                <map:parameter name="depth" value="1"/>
-              </map:generate>
-              <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-              <map:transform src="fallback://lenya/xslt/authoring/edit/addSourceTags.xsl">
-                <map:parameter name="source" value="context://lenya/pubs/{page-envelope:publication-id}/work/cache/{page-envelope:area}/{page-envelope:document-uuid}.linkreport"/>
-              </map:transform>
-              <map:transform type="write-source">
-                <map:parameter name="serializer" value="xml"/>
-              </map:transform>
-              <map:transform src="fallback://lenya/xslt/authoring/edit/removeSourceTags.xsl"/>
-              <map:serialize type="xml"/>
-            </map:otherwise>
-          </map:select>
-      </map:match>
-      
-    </map:pipeline>
-    
-	</map:pipelines>
-	
-</map:sitemap>
diff --git a/trunk/src/modules/linkcheck/usecases/linkcheck/getLinks.jx b/trunk/src/modules/linkcheck/usecases/linkcheck/getLinks.jx
deleted file mode 100644
index 87e4118..0000000
--- a/trunk/src/modules/linkcheck/usecases/linkcheck/getLinks.jx
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<cinclude:includexml xmlns:cinclude="http://apache.org/cocoon/include/1.0">

-  <cinclude:src>cocoon://modules/linkcheck/getLinks.xml</cinclude:src>

-</cinclude:includexml>

diff --git a/trunk/src/modules/links/config/cocoon-xconf/resource-type-links.xconf b/trunk/src/modules/links/config/cocoon-xconf/resource-type-links.xconf
deleted file mode 100644
index 28181cb..0000000
--- a/trunk/src/modules/links/config/cocoon-xconf/resource-type-links.xconf
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'links']">
-
-  <component-instance name="links"
-                      logger="lenya.resourcetypes.links"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-      namespace="http://relaxng.org/ns/structure/0.9"
-      uri="fallback://lenya/modules/links/resources/schema/links.rng"
-    />
-    <sample 
-      mime-type="application/xml" 
-      uri="fallback://lenya/modules/links/samples/links.xml"
-    />
-    <format name="xhtml" uri="cocoon://modules/links/xhtml.xml"/>
-    <format name="luceneIndex" uri="cocoon://modules/xhtml/lucene-index"/>
-    <format name="webdavGET" uri="cocoon://modules/xhtml/davget.xml"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/links/config/menu.xsp b/trunk/src/modules/links/config/menu.xsp
deleted file mode 100644
index c2c6c68..0000000
--- a/trunk/src/modules/links/config/menu.xsp
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="sitemanagement.create" href="?doctype=links">
-            <i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-links</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            try {
-                Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-                if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                    String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                    if ("links".equals(doctype)) {
-                        <block areas="authoring">
-                          <item wf:event="edit" uc:usecase="editors.oneform" href="?"><i18n:text>With one Form</i18n:text></item>
-                        </block>
-                    }
-                }
-            }
-            catch (Exception e) {
-                throw new ProcessingException("Error during menu generation: ", e);
-            }
-          </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/links/config/module.xml b/trunk/src/modules/links/config/module.xml
deleted file mode 100644
index b8d9c60..0000000
--- a/trunk/src/modules/links/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.links</lenya:id>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>Links</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>Link list resource type</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/links/menus.xmap b/trunk/src/modules/links/menus.xmap
deleted file mode 100644
index a55db31..0000000
--- a/trunk/src/modules/links/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/links/resources/i18n/cmsui.xml b/trunk/src/modules/links/resources/i18n/cmsui.xml
deleted file mode 100644
index 73aa396..0000000
--- a/trunk/src/modules/links/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-links">Links</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/links/resources/i18n/cmsui_de.xml b/trunk/src/modules/links/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 6c77f46..0000000
--- a/trunk/src/modules/links/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-links">Links</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/links/resources/schema/links.rng b/trunk/src/modules/links/resources/schema/links.rng
deleted file mode 100644
index 2d03eb9..0000000
--- a/trunk/src/modules/links/resources/schema/links.rng
+++ /dev/null
@@ -1,16 +0,0 @@
-<element name="links" ns="http://apache.org/lenya/pubs/default/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
-
-  <optional>
-    <element name="title">
-      <text/>
-    </element>
-  </optional>
-
-  <zeroOrMore>
-    <element name="link">
-      <attribute name="href"/>
-      <text/>
-    </element>
-  </zeroOrMore>
-
-</element>
diff --git a/trunk/src/modules/links/samples/links.xml b/trunk/src/modules/links/samples/links.xml
deleted file mode 100644
index 70908e5..0000000
--- a/trunk/src/modules/links/samples/links.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-
-<links xmlns="http://apache.org/lenya/pubs/default/1.0">
-  <title>Links</title>
-  <link href="http://lenya.apache.org">Apache Lenya Website</link>
-  <link href="http://wiki.apache.org/lenya/">Apache Lenya Wiki</link>
-</links>
diff --git a/trunk/src/modules/links/sitemap.xmap b/trunk/src/modules/links/sitemap.xmap
deleted file mode 100644
index bd855aa..0000000
--- a/trunk/src/modules/links/sitemap.xmap
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{rendertype}" -->
-      <map:match pattern="*.xml">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/links/xslt/links2xhtml.xsl">
-          <map:parameter name="rendertype" value="{request-param:rendertype}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/links/xslt/links2xhtml.xsl b/trunk/src/modules/links/xslt/links2xhtml.xsl
deleted file mode 100644
index 98fe8d3..0000000
--- a/trunk/src/modules/links/xslt/links2xhtml.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:default="http://apache.org/lenya/pubs/default/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-
-  <!-- default parameter value -->
-  <xsl:param name="rendertype" select="''"/>
-
-  <xsl:template match="default:links">
-    <div id="body">
-      <h1><xsl:value-of select="default:title"/></h1>
-      <ul>
-        <xsl:apply-templates select="default:link"/>
-      </ul>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="default:link">
-    <li>
-      <a href="{@href}"><xsl:value-of select="."/></a>
-    </li>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/analyzer_manager.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/analyzer_manager.xconf
deleted file mode 100644
index 0d9c338..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/analyzer_manager.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/analyzer_manager[@logger = 'core.search.analyzer_manager']">
-
-	<analyzer_manager logger="core.search.analyzer_manager">
-		<analyzer id="standard" class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
-		<analyzer id="stopword_en" class="org.apache.cocoon.components.search.analyzer.ConfigurableStopwordAnalyzer" configfile="context://WEB-INF/analyzer/stopword/English_en.xml" checkupdate="true"/>
-		<analyzer id="stopword_fr" class="org.apache.cocoon.components.search.analyzer.ConfigurableStopwordAnalyzer" configfile="context://WEB-INF/analyzer/stopword/French_fr.xml" checkupdate="true"/>
-		<analyzer id="analyzer_research" class="org.apache.cocoon.components.search.analyzer.ConfigurablePerFieldAnalyzer" configfile="context://WEB-INF/analyzer/perfieldconf.xml" checkupdate="false"/>
-	</analyzer_manager>
-	
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/default_indexer.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/default_indexer.xconf
deleted file mode 100644
index 0aae054..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/default_indexer.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/default_indexer[@logger = 'core.search.default_indexer']">
-
-<!-- default indexer component -->	
-	<default_indexer logger="core.search.default_indexer">
-		<!-- number of lucene documents in the buffer -->
-		<buffersize>200</buffersize>
-	</default_indexer>
-	
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/index-path-module.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/index-path-module.xconf
deleted file mode 100644
index 2f203cd..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/index-path-module.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'index-path']">
-    <component-instance logger="core.modules.input.index-path" name="index-path"
-      class="org.apache.cocoon.components.modules.input.IndexPathModule">
-    </component-instance>
-  </xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/index-updater.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/index-updater.xconf
deleted file mode 100644
index 7d257df..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/index-updater.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/component[@role = 'org.apache.lenya.cms.lucene.IndexUpdater']">
-  <!-- if-prop="patch.webapp" -->
-  
-  <component logger="lucene.indexupdater"
-    role="org.apache.lenya.cms.lucene.IndexUpdater"
-    class="org.apache.lenya.cms.lucene.IndexUpdaterImpl"/>
-	
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/index_manager.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/index_manager.xconf
deleted file mode 100644
index d072c38..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/index_manager.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/index_manager[@logger = 'core.search.index_manager']">
-
-	<index_manager logger="core.search.index_manager">
-		
-		<indexer role="org.apache.cocoon.components.search.components.Indexer/default" />
-		
-	</index_manager>
-
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/parallel_indexer.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/parallel_indexer.xconf
deleted file mode 100644
index a4ecf57..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/parallel_indexer.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon"
-  unless="/cocoon/parallel_indexer[@logger = 'core.search.parallel_indexer']">
-
-<!-- parallel indexer component -->		
-	<parallel_indexer logger="core.search.parallel_indexer">
-		<!-- number of thread (normaly = number of CPUs) -->
-		<numthread>2</numthread>
-	</parallel_indexer>
-	
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-externalOpensearch.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/usecase-externalOpensearch.xconf
deleted file mode 100644
index 73f7d81..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-externalOpensearch.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'lucene.externalOpensearch']">
-
-    <component-instance name="lucene.externalOpensearch" logger="lenya.lucene" class="org.apache.lenya.cms.usecase.DummyUsecase">
-      <view uri="modules/lucene/usecases/lucene/externalOpensearch.jx"/>
-      <exit usecase="lucene.externalOpensearch"/>
-    </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.index.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.index.xconf
deleted file mode 100644
index 156e74b..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.index.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'lucene.index']">
-
-  <component-instance name="lucene.index"
-                      logger="lenya.usecases.lucene-org.apache.lenya.cms.lucene.IndexDocument"
-                      class="org.apache.lenya.cms.lucene.IndexDocument">
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.indexSite.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.indexSite.xconf
deleted file mode 100644
index e89e10d..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-lucene.indexSite.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'lucene.indexSite']">
-
-  <component-instance name="lucene.indexSite"
-                      logger="lenya.usecases.lucene-org.apache.lenya.cms.lucene.IndexSite"
-                      class="org.apache.lenya.cms.lucene.IndexSite">
-    <view uri="modules/lucene/usecases/indexSite.jx"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-opensearch.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/usecase-opensearch.xconf
deleted file mode 100644
index 073cf45..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-opensearch.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'lucene.opensearch']">
-
-    <component-instance name="lucene.opensearch" logger="lenya.lucene" class="org.apache.lenya.cms.usecase.DummyUsecase">
-      <view uri="modules/lucene/usecases/lucene/opensearch.jx"/>
-      <exit usecase="lucene.opensearch"/>
-    </component-instance>
-    
-</xconf>
diff --git a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-search.xconf b/trunk/src/modules/lucene/config/cocoon-xconf/usecase-search.xconf
deleted file mode 100644
index b9b5da9..0000000
--- a/trunk/src/modules/lucene/config/cocoon-xconf/usecase-search.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'lucene.search']">
-
-    <component-instance name="lucene.search" logger="lenya.lucene" class="org.apache.lenya.cms.usecase.DummyUsecase">
-      <view uri="modules/lucene/usecases/lucene/search.jx"/>
-      <exit usecase="lucene.search"/>
-    </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/lucene/config/menu.xsp b/trunk/src/modules/lucene/config/menu.xsp
deleted file mode 100644
index 03a0d12..0000000
--- a/trunk/src/modules/lucene/config/menu.xsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block admin="false">
-          <item uc:usecase="usecasedocument.create" href="?usecase=lucene.search"><i18n:text>New Search Page</i18n:text></item>
-          <item uc:usecase="lucene.indexSite" href=""><i18n:text>Re-Index Site</i18n:text></item>
-        </block>
-      </menu>
-    </menus>
-  </menu>
-  
-</xsp:page>
diff --git a/trunk/src/modules/lucene/config/module.xml b/trunk/src/modules/lucene/config/module.xml
deleted file mode 100644
index 9e5455d..0000000
--- a/trunk/src/modules/lucene/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.lucene</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Lucene Search Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Lucene Search Module in order to allow indexing and searching when content is being changed.</description>
-</module>
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/modules/input/IndexPathModule.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/modules/input/IndexPathModule.java
deleted file mode 100644
index 79697c9..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/modules/input/IndexPathModule.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.cocoon.components.modules.input;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.search.Index;
-import org.apache.cocoon.components.search.components.IndexManager;
-import org.apache.lucene.store.FSDirectory;
-
-/**
- * This module returns the directory path of a search index given by its id,
- * which normally is "pubid-area".
- */
-public class IndexPathModule extends AbstractInputModule implements Serviceable {
-
-    protected ServiceManager serviceManager;
-    
-    public void service(ServiceManager manager) throws ServiceException {
-        this.serviceManager = manager;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        String value = null;
-        
-        IndexManager indexManager = null;
-        try {
-            indexManager = (IndexManager) this.serviceManager.lookup(IndexManager.ROLE);
-            
-            Index index = indexManager.getIndex(name);
-            
-            if (index == null) {
-                throw new ConfigurationException("no search index with id [" + name + "] found.");
-            }
-            
-            value = ((FSDirectory)index.getDirectory()).getFile().getCanonicalPath();
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("resolved search index with id [" + name + "] to directory " + value);
-            }
-        } catch (Exception e) {
-            throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
-        } finally {
-            if (indexManager != null) {
-                this.serviceManager.release(indexManager);
-            }
-        }
-        return value;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Collections.EMPTY_SET.iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-
-        return objects;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/Index.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/Index.java
deleted file mode 100644
index 62d6e31..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/Index.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.search.components.AnalyzerManager;
-import org.apache.cocoon.components.search.components.Indexer;
-import org.apache.cocoon.components.search.fieldmodel.DateFieldDefinition;
-import org.apache.cocoon.components.search.fieldmodel.FieldDefinition;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-
-/**
- * Index Class
- * 
- * @author Nicolas Maisonneuve
- */
-public class Index {
-
-    /**
-     * default analyzer ID
-     */
-    private String defaultAnalyzer;
-
-    /**
-     * Index Structure definition
-     */
-    private IndexStructure structure;
-
-    /**
-     * Index ID
-     */
-    private String id;
-
-    /**
-     * Lucene Directory of the index
-     */
-    private Directory directory;
-
-    /**
-     * Number of try to access to the indexer
-     * 
-     */
-    private int numtries = 5;
-
-    /**
-     * is the indexer working (not released)
-     */
-    private boolean indexer_busy;
-    
-    /**
-     * Indexer Role name
-     */
-    private String indexer_role;
-
-    private ServiceManager manager;
-
-    /**
-     * Create a lucene document
-     * 
-     * @param uid
-     *            String the document uid
-     * @return Document a empty document
-     */
-    public Document createDocument(String uid) {
-        Document doc = new Document();
-        try {
-            doc.add(createField(Indexer.DOCUMENT_UID_FIELD, uid));
-        } catch (IndexException ex) {
-        }
-        return doc;
-    }
-
-    /**
-     * create a lucene field
-     * 
-     * @param fieldname
-     *            String fieldname (must existed in the index structure)
-     * @param value
-     *            String value
-     */
-    public Field createField(String fieldname, String value)
-            throws IndexException {
-        FieldDefinition f = structure.getFieldDef(fieldname);
-        if (f == null) {
-            throw new IndexException("Field with the name: " + fieldname
-                    + " doesn't exist");
-        }
-        return f.createLField(value);
-    }
-
-    /**
-     * create a lucene field for date value
-     * 
-     * @param fieldname
-     *            String fieldname (must existed in the index structure)
-     * @param value
-     *            String value
-     */
-    public Field createField(String fieldname, Date value)
-            throws IndexException {
-        DateFieldDefinition f = (DateFieldDefinition) structure
-                .getFieldDef(fieldname);
-        if (f == null) {
-            throw new IndexException("Field with the name: " + fieldname
-                    + " doesn't exist");
-        }
-        return f.createLField(value);
-    }
-    
-    /**
-     * get the indexer of the index
-     * 
-     * @throws IndexException
-     * @return Indexer
-     */
-    public synchronized Indexer getIndexer() throws IndexException {
-
-        long endTime = System.currentTimeMillis() + numtries * 1000;
-        // wait the end of the indexing
-        while (indexer_busy && System.currentTimeMillis() < endTime) {
-            try {
-                wait(1000);
-            } catch (InterruptedException ex) {
-            }
-        }
-
-        if (indexer_busy) {
-            throw new IndexException(
-                    "Timeout to access to the indexer (the indexer is indexing)");
-        }
-        AnalyzerManager analyzerM = null;
-        try {
-
-            indexer_busy = true;
-            Indexer indexer = (Indexer) this.manager.lookup(indexer_role);
-
-            // update maybe the analyzer
-            analyzerM = (AnalyzerManager) this.manager
-                    .lookup(AnalyzerManager.ROLE);
-
-            indexer.setAnalyzer(analyzerM.getAnalyzer(getDefaultAnalyzerID()));
-            indexer.setIndex(directory);
-
-            return indexer;
-        } catch (ServiceException ex1) {
-            throw new IndexException(ex1);
-        } catch (ConfigurationException ex2) {
-            throw new IndexException(ex2);
-        } finally {
-            if (analyzerM != null) {
-                manager.release(analyzerM);
-            }
-        }
-    }
-
-    /**
-     * Release the indexer
-     * 
-     * @param indexer
-     */
-    public synchronized void releaseIndexer(Indexer indexer) {
-        if (indexer != null) {
-            this.manager.release(indexer);
-            indexer_busy = false;
-        }
-        notifyAll();
-    }
-
-    /**
-     * get the index ID
-     * 
-     * @return the index ID
-     */
-    public String getID() {
-        return id;
-    }
-
-    /**
-     * Set the index ID
-     * 
-     * @param id
-     *            index ID
-     */
-    public void setID(String id) {
-        this.id = id;
-    }
-
-    /**
-     * get the default Analyzer
-     * 
-     * @return the id of the default analyzer
-     */
-    public String getDefaultAnalyzerID() {
-        return defaultAnalyzer;
-    }
-
-    /**
-     * set the default Analyzer
-     * 
-     * @param defaultAnalyzerID
-     *            the id of the default Analyzer
-     */
-    public void setDefaultAnalyzerID(String defaultAnalyzerID) {
-        this.defaultAnalyzer = defaultAnalyzerID;
-    }
-
-    /**
-     * Return the index Structure
-     * 
-     * @return the index Structure
-     */
-    public IndexStructure getStructure() {
-        return structure;
-    }
-
-    /**
-     * Set the index structure
-     * 
-     * @param structure
-     *            IndexStructure
-     */
-    public void setStructure(IndexStructure structure) {
-        this.structure = structure;
-    }
-
-    public void setManager(ServiceManager manager) {
-        this.manager = manager;
-    }
-
-    /**
-     * get the lucene directory
-     * 
-     * @return the lucene directory
-     */
-    public Directory getDirectory() {
-        return directory;
-    }
-
-    /**
-     * Set the lucene Directory
-     * 
-     * @param dir
-     *            lucene Directory
-     * @return success or not
-     * @throws IOException
-     */
-    public boolean setDirectory(Directory dir) throws IOException {
-        boolean locked = false;
-        this.directory = dir;
-
-        // if index is locked
-        if (IndexReader.isLocked(directory)) {
-            IndexReader.unlock(directory);
-            locked = true;
-        }
-
-        // create index if the index doesn't exist
-        if (!IndexReader.indexExists(directory)) {
-            (new IndexWriter(directory, null, true)).close();
-        }
-
-        return locked;
-
-    }
-
-    /**
-     * Set the index path directory
-     * 
-     * @param path
-     *            String
-     * @throws IOException
-     */
-    public boolean setDirectory(String path) throws IOException {
-        File fpath = new File(path);
-        Directory dir = FSDirectory.getDirectory(fpath, !fpath.exists());
-        return setDirectory(dir);
-    }
-
-    /**
-     * @param indexer The indexer to set.
-     */
-    public void setIndexer(String indexer) {
-        this.indexer_role = indexer;
-    }
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexException.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexException.java
deleted file mode 100644
index 9680561..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- *
- * You may obtain a copy of the License at
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIE
- * 0S OR CONDITIONS OF ANY KIND, either express or implied.
- * 0See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.components.search;
-
-/**
- * Index Exception class
- * 
- * @author Nicolas Maisonneuve
- */
-public class IndexException extends Exception {
-
-    private String message;
-
-    public IndexException(String mes) {
-        this(mes, null);
-    }
-
-    public IndexException(Exception ex) {
-        this("", ex);
-    }
-
-    /**
-     * Constructor
-     * 
-     * @param mes
-     *            message
-     * @param ex
-     *            initial exception
-     */
-    public IndexException(String mes, Exception ex) {
-
-        message = mes;
-        if (ex != null) {
-            initCause(ex);
-        }
-    }
-
-    public String getMessage() {
-        return "message: " + message;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexStructure.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexStructure.java
deleted file mode 100644
index bfa57a8..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/IndexStructure.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.cocoon.components.search.components.Indexer;
-import org.apache.cocoon.components.search.fieldmodel.FieldDefinition;
-
-/**
- * Index Definition class, contain all the index field definitions.
- * 
- * @author Nicolas Maisonneuve
- * 
- */
-public final class IndexStructure {
-
-    private Map fielddefs;
-
-    public IndexStructure() {
-        fielddefs = new HashMap();
-
-        // A index has always an UID field
-        FieldDefinition fielddef = FieldDefinition.create(
-                Indexer.DOCUMENT_UID_FIELD, FieldDefinition.KEYWORD);
-        fielddef.setStore(true);
-        this.addFieldDef(fielddef);
-
-    }
-
-    /**
-     * add a fieldDefiniition to the indexDefinition
-     * 
-     * @param fielddef
-     */
-    public void addFieldDef(FieldDefinition fielddef) {
-        if (fielddefs.containsKey(fielddef.name())) {
-            throw new IllegalArgumentException(" field with the name "
-                    + fielddef.name() + " is already used");
-        }
-        fielddefs.put(fielddef.name(), fielddef);
-    }
-
-    /**
-     * @return all fieldnames contained in the index
-     */
-    public final String[] getFieldNames() {
-        Set results = fielddefs.keySet();
-        return (String[]) results.toArray(new String[results.size()]);
-    }
-
-    /**
-     * return all fieldDefinitions
-     * 
-     * @return FieldDefinition[]
-     */
-    public final FieldDefinition[] getFieldDef() {
-        Collection results = fielddefs.values();
-        return (FieldDefinition[]) results.toArray(new FieldDefinition[results
-                .size()]);
-    }
-
-    /**
-     * Return the fieldDefinition associated to the name
-     * 
-     * @param fieldname
-     *            String the name of the fieldDefiniation
-     * @return FieldDefinition
-     */
-    public final FieldDefinition getFieldDef(String fieldname) {
-        return (FieldDefinition) fielddefs.get(fieldname);
-    }
-
-    /**
-     * check if this field exist
-     * 
-     * @param name
-     *            the field's name
-     * @return true if a field with this name exist
-     */
-    public final boolean hasField(String name) {
-        return fielddefs.containsKey(name.intern());
-    }
-
-    public String toString() {
-        StringBuffer result = new StringBuffer("DocumentFactory:");
-        Iterator iter = this.fielddefs.values().iterator();
-        while (iter.hasNext()) {
-            FieldDefinition item = (FieldDefinition) iter.next();
-            result.append("\n").append(item.toString());
-        }
-        return result.toString();
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableAnalyzer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableAnalyzer.java
deleted file mode 100644
index c6e96a7..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableAnalyzer.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.analyzer;
-
-import java.io.Reader;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.logger.LogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.cocoon.components.search.components.AnalyzerManager;
-import org.apache.cocoon.components.search.utils.SourceHelper;
-import org.apache.excalibur.source.Source;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.TokenStream;
-
-/**
- * Analyzer Wrapper to allow to configure a lucene analyzer with a XML file
- * 
- * @author Nicolas Maisonneuve
- */
-public abstract class ConfigurableAnalyzer extends Analyzer implements
-        LogEnabled {
-
-    /**
-     * the lucene analyzer
-     */
-    protected Analyzer analyzer;
-
-    /**
-     * a logger
-     */
-    protected Logger logger;
-
-    /**
-     * the analyzer manager component
-     */
-    protected AnalyzerManager analyzerM;
-
-    /**
-     * Check config file or not (to update the analyzer if the config file
-     * changes)
-     */
-    private boolean checkConfigFile = false;
-
-    /**
-     * Configuration file source
-     */
-    private Source configFile;
-
-    /**
-     * Configure this analyzer. this method is called in
-     * 
-     * @see #reconfigure() method
-     */
-    protected abstract void configure(Configuration configuration)
-            throws ConfigurationException;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.lucene.analysis.Analyzer#tokenStream(java.lang.String,
-     *      java.io.Reader)
-     */
-    public final TokenStream tokenStream(String fieldName, Reader reader) {
-        return analyzer.tokenStream(fieldName, reader);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
-     */
-    public void enableLogging(Logger log) {
-        logger = log;
-    }
-
-    /**
-     * Enable the check of the config file (to update the analyzer if the config
-     * file changes) when the method
-     * 
-     * @see org.apache.cocoon.component.search.components.AnalyzerManager#getAnalyzer(String)
-     *      is called
-     * @param check
-     *            true if we want that
-     */
-    public void setEnableCheckFile(boolean check) {
-        this.checkConfigFile = check;
-    }
-
-    /**
-     * is the checkFile property enable ?
-     */
-    public boolean enableCheckFile() {
-        return this.checkConfigFile;
-    }
-
-    /**
-     * reconfigure the analyzer if the config file has changed
-     * 
-     * @throws ConfigurationException
-     * @return boolean true if the analyzer is reconfigured (=file has changed)
-     *         else false
-     */
-    public boolean reconfigure() throws ConfigurationException {
-        if (!SourceHelper.checkSourceValidity(configFile)) {
-            logger.info("reconfiguration of " + this.getClass().getName()
-                    + " (the source " + configFile.getURI()
-                    + " has changed...)  ");
-            Configuration conf = SourceHelper.build(configFile);
-            configure(conf);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Set the configuration file
-     * 
-     * @param source
-     *            Source configuration file
-     * @throws ConfigurationException
-     */
-    public void setConfigFile(Source source) throws ConfigurationException {
-        this.configFile = source;
-        SourceHelper.registerSource(configFile);
-        configure(SourceHelper.build(configFile));
-    }
-
-    /**
-     * set the analyzerManager
-     * 
-     * @param analyzerM
-     *            AnalyzerManager
-     */
-    public void setAnalyerManager(AnalyzerManager analyzerM) {
-        this.analyzerM = analyzerM;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurablePerFieldAnalyzer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurablePerFieldAnalyzer.java
deleted file mode 100644
index 1c36d68..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurablePerFieldAnalyzer.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.analyzer;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
-
-/**
- * Configurable PerFieldAnalyzerWrapper. Allow one analyzer per field for
- * indexing a document (useful for multilanguage document)
- * 
- * (@link org.apache.lucene.analysis.PerFieldAnalyzerWrapper class)
- * 
- * 
- * A config file for this analyzer is:
- * 
- * <!-- if a lucene document containing a field not present in the "field" tags,
- * the defaultAnalyzer would be used --> <config defaultAnalyzer="analyzerEN">
- * <fields><!-- if a lucene document contains the field "summury" , the
- * analyzer "analyzerEN" would be used --> <field name="summury"
- * analyzer="analyzerEN"/> <field name="desc_fr" analyzer="analyzerFR"/> <field
- * name="desc_en" analyzer="analyzerEN"/> <field name="desc_de"
- * analyzer="analyzerDE"/> </fields> </config>
- * 
- * @author Nicolas Maisonneuve
- */
-public class ConfigurablePerFieldAnalyzer extends ConfigurableAnalyzer {
-
-    public static final String CONFIG_DEFAULTANALYZER_ATTRIBUTE = "defaultAnalyzer";
-
-    public static final String FIELDS_ELEMENT = "fields";
-
-    public static final String FIELD_ELEMENT = "field";
-
-    public static final String FIELD_NAME_ATTRIBUTE = "name";
-
-    public static final String FIELD_ANALYZERID_ATTRIBUTE = "analyzer";
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.analyzer.ConfigurableAnalyzer#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration)
-            throws ConfigurationException {
-
-        String analyzerid = configuration
-                .getAttribute(CONFIG_DEFAULTANALYZER_ATTRIBUTE);
-
-        Analyzer analyzer = analyzerM.getAnalyzer(analyzerid);
-        if (analyzer == null) {
-            throw new ConfigurationException("analyzer " + analyzerid
-                    + " doesn't exist");
-        }
-
-        PerFieldAnalyzerWrapper tmpanalyzer = new PerFieldAnalyzerWrapper(
-                analyzer);
-        Configuration[] conffield = configuration.getChild(FIELDS_ELEMENT)
-                .getChildren(FIELD_ELEMENT);
-
-        for (int i = 0; i < conffield.length; i++) {
-
-            String fieldname = conffield[i].getAttribute(FIELD_NAME_ATTRIBUTE);
-            analyzerid = conffield[i].getAttribute(FIELD_ANALYZERID_ATTRIBUTE);
-
-            if (fieldname == null || fieldname.equals("")) {
-                throw new ConfigurationException("element " + FIELD_ELEMENT
-                        + " must have the " + FIELD_NAME_ATTRIBUTE
-                        + " attribute");
-            }
-            if (analyzerid == null || analyzerid.equals("")) {
-                throw new ConfigurationException("element " + FIELD_ELEMENT
-                        + " must have the " + FIELD_ANALYZERID_ATTRIBUTE
-                        + " attribute");
-            }
-
-            analyzer = analyzerM.getAnalyzer(analyzerid);
-
-            if (analyzer == null) {
-                throw new ConfigurationException("analyzer " + analyzerid
-                        + " doesn't exist");
-            }
-            tmpanalyzer.addAnalyzer(fieldname, analyzer);
-        }
-        this.analyzer = tmpanalyzer;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableStopwordAnalyzer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableStopwordAnalyzer.java
deleted file mode 100644
index 95f5f67..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/analyzer/ConfigurableStopwordAnalyzer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.analyzer;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-
-/**
- * Configurable Stopword Analyzer
- * 
- * Config file:
- * 
- * <stopWords><stopWord>a </stopWord> <stopWord>the </stopWord> <stopWord>but
- * </stopWord> </stopWords>
- * 
- * @author Nicolas Maisonneuve
- */
-public class ConfigurableStopwordAnalyzer extends ConfigurableAnalyzer {
-
-    /** The element containing a stop word. */
-    private static final String STOP_WORD_ELEMENT = "stopword";
-
-    /**
-     * Configures the analyzer.(stop words)
-     */
-    public void configure(Configuration configuration)
-            throws ConfigurationException {
-        String[] words = stopTableBuilder(configuration);
-        logger.info("stop words number: " + words.length);
-        analyzer = new StandardAnalyzer(words);
-    }
-
-    /**
-     * Build Stop Table
-     * 
-     * @param conf
-     *            Configuration file (above the STOP_WORDS ELEMENT)
-     * @throws ConfigurationException
-     * @return String[] array with all excluded words
-     */
-    static public String[] stopTableBuilder(Configuration conf)
-            throws ConfigurationException {
-
-        Configuration[] cStops = conf.getChildren(STOP_WORD_ELEMENT);
-        if (cStops != null) {
-            final String[] words = new String[cStops.length];
-            for (int i = 0; i < cStops.length; i++) {
-                words[i] = cStops[i].getValue();
-            }
-            return words;
-        }
-
-        final String[] words = new String[0];
-        return words;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/AnalyzerManager.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/AnalyzerManager.java
deleted file mode 100644
index 8b637b0..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/AnalyzerManager.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.lucene.analysis.Analyzer;
-
-/**
- * Analyzer Manager Component
- * 
- * @author Maisonneuve Nicolas
- */
-
-public interface AnalyzerManager {
-
-    public static final String ROLE = AnalyzerManager.class.getName();
-
-    /**
-     * Return the analyzer
-     * 
-     * @param id
-     *            analyzer ID
-     * @return
-     * @see org.apache.lucene.analysis.Analyzer
-     */
-    public Analyzer getAnalyzer(String id) throws ConfigurationException;
-
-    /**
-     * Is this analyzer exist
-     * 
-     * @param id
-     *            String the analyzer id
-     * @return boolean
-     */
-    public boolean exist(String id);
-
-    /**
-     * Return all analyzer IDs
-     * 
-     * @return A array with all id's analyzer
-     */
-    public String[] getAnalyzersID();
-
-    /**
-     * Add a lucene analyser
-     * 
-     * @param id
-     *            the id of the analyzer
-     * @param analyzer
-     *            the analyzer to add
-     */
-    public void put(String id, Analyzer analyzer);
-
-    /**
-     * Remove a analyzer
-     * 
-     * @param id
-     *            the analyzer ID
-     */
-    public void remove(String id);
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/IndexManager.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/IndexManager.java
deleted file mode 100644
index 6a83137..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/IndexManager.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components;
-
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.search.Index;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.excalibur.source.Source;
-
-/**
- * Index Manager Class allow to register and access to a specific index
- * 
- * @author Maisonneuve Nicolas
- */
-public interface IndexManager {
-
-    public static final String ROLE = IndexManager.class.getName();
-
-    /**
-     * Return all indexes
-     * 
-     * @return Array of indexes
-     */
-    public Index[] getIndex() throws IndexException;
-
-    /**
-     * Return the index with the id
-     * 
-     * @param id
-     *            the index ID
-     * @return l'index, null if no found
-     */
-    public Index getIndex(String id) throws IndexException;
-
-    /**
-     * add a index in the indexmanager
-     * 
-     * @param index
-     */
-    public void addIndex(Index index);
-
-    /**
-     * remove a index
-     * 
-     * @param id
-     *            ID de l'index
-     */
-    public void remove(String id);
-
-    /**
-     * Check if the index exist
-     * 
-     * @param id
-     *            ID de l'index
-     * @return true if the index exist
-     */
-    public boolean contains(String id);
-    
-    /**
-     * Adds indexes from the given configuration file to the index manager.
-     * @param confSource
-     * @throws ConfigurationException
-     */
-    public void addIndexes(Source confSource) throws ConfigurationException;
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Indexer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Indexer.java
deleted file mode 100644
index 53b1dd1..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Indexer.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components;
-
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.store.Directory;
-
-public interface Indexer {
-
-    public static final String ROLE = Indexer.class.getName();
-
-    /**
-     * All lucene documents must have a unique identifier field
-     */
-    public static final String DOCUMENT_UID_FIELD = "uid";
-
-    /**
-     * Index document (update or add if {@link #clearIndex()} is called before)
-     * @param doc
-     *            Document
-     * @throws IndexException
-     */
-    public void index(Document doc) throws IndexException;
-
-    /**
-     * Delete document
-     * 
-     * @param uid
-     *            the uid of the document
-     * @return int the number of deleted documents
-     * @throws IndexException
-     */
-    public int del(String uid) throws IndexException;
-
-    /**
-     * Optimize the index
-     */
-    public void optimize() throws IndexException;
-
-    /**
-     * Set a lucene analyzer
-     * 
-     * @param analyzer
-     *            the analazer
-     */
-    public void setAnalyzer(Analyzer analyzer);
-
-    /**
-     * Get the lucene analyzer
-     */
-    public Analyzer getAnalyzer();
-
-    /**
-     * Set a merge factor value + set minMergeDocs=2*mergeFactor (see lucene
-     * docs)
-     * 
-     * @param value
-     *            the new merge factor
-     */
-    public void setMergeFactor(int value);
-
-    /**
-     * 
-     * @return the mergeFactor
-     */
-    public int getMergeFactor();
-
-    /**
-     * clear the index
-     */
-    public void clearIndex() throws IndexException;
-
-    /**
-     * Set the index directory
-     * 
-     * @param directory
-     *            the index directory
-     */
-    public void setIndex(Directory directory) throws IndexException;
-
-    public Directory getIndex() throws IndexException;
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Searcher.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Searcher.java
deleted file mode 100644
index 8810cc9..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/Searcher.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.apache.cocoon.components.search.components;
-
-import org.apache.cocoon.ProcessingException;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.store.Directory;
-
-/**
- * this Searcher Component allows: <br/> - searching in several indexes <br/> - sorting hits by a
- * specified field and order
- * 
- * @author Nicolas Maisonneuve
- */
-public interface Searcher {
-    /**
-     * The ROLE name of this avalon component.
-     * <p>
-     * Its value if the FQN of this interface, ie.
-     * <code>org.apache.cocoon.components.search.Searcher</code>.
-     * </p>
-     * 
-     * @since
-     */
-    String ROLE = Searcher.class.getName();
-
-    /**
-     * Add a lucene directory -- you can add several directories
-     * <p>
-     * The directory specifies the directory used for looking up the index. It defines the physical
-     * place of the index
-     * </p>
-     * 
-     * @param directory The new directory value
-     */
-    public void addDirectory(Directory directory);
-
-    /**
-     * Set the field by which the search results are to be sorted
-     * @param field the index field
-     * @param reverse reverse order or not
-     */
-    public void setSortField(String field, boolean reverse);
-
-    /**
-     * Search using a Lucene Query object, returning zero, or more hits.
-     * 
-     * @param query A lucene query
-     * @return Hits zero or more hits matching the query string
-     * @exception ProcessingException throwing due to processing errors while looking up the index
-     *                directory, parsing the query string, generating the hits.
-     */
-    public Hits search(Query query) throws ProcessingException;
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractIndexer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractIndexer.java
deleted file mode 100644
index b2b57c3..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractIndexer.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.IOException;
-
-import org.apache.avalon.excalibur.pool.Recyclable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.cocoon.components.search.components.Indexer;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.store.Directory;
-
-/**
- * Abstract Indexer
- * 
- * @author Nicolas Maisonneuve
- */
-public abstract class AbstractIndexer extends AbstractLogEnabled implements
-        Indexer, Recyclable {
-
-    /**
-     * the lucene Analyzer (see lucene doc)
-     */
-    protected Analyzer analyzer;
-
-    /**
-     * lucene Directory (see lucene doc)
-     */
-    protected Directory dir;
-
-    /**
-     * MergeFactor (see lucene doc)
-     */
-    protected int mergeFactor;
-
-    /**
-     * clear mode (if true the index will be cleared)
-     */
-    protected boolean clear_mode;
-
-    // runtime variables: lucene indexwriter and indexreader
-    protected IndexReader delete_reader;
-
-    protected IndexWriter add_writer;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#setMergeFactor(int)
-     */
-    public void setMergeFactor(int value) {
-        mergeFactor = value;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#getMergeFactor()
-     */
-    public int getMergeFactor() {
-        return mergeFactor;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#getIndex()
-     */
-    public Directory getIndex() {
-        return this.dir;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#setIndex(org.apache.lucene.store.Directory)
-     */
-    public void setIndex(Directory dir) throws IndexException {
-        if (dir == null) {
-            throw new IllegalArgumentException("set a null directory");
-        }
-        this.dir = dir;
-        clear_mode = false;
-        try {
-            IndexReader reader = IndexReader.open(dir);
-            reader.close();
-
-        } catch (IOException ioe) {
-            // couldn't open the index - so recreate it
-            if (getLogger().isWarnEnabled()) {
-                getLogger().warn("couldn't open the index - so recreate it");
-            }
-            this.clearIndex();
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#setAnalyzer(org.apache.lucene.analysis.Analyzer)
-     */
-    public void setAnalyzer(Analyzer analyzer) {
-        if (analyzer == null) {
-            throw new IllegalArgumentException("set a null analyzer");
-        }
-        this.analyzer = analyzer;
-
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug(
-                    "set the analyzer " + this.analyzer.getClass().getName());
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#getAnalyzer()
-     */
-    public Analyzer getAnalyzer() {
-        return analyzer;
-    }
-
-    protected abstract void updateDocument(Document doc) throws IndexException;
-
-    protected abstract void addDocument(Document doc) throws IndexException;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#index(org.apache.lucene.document.Document)
-     */
-    public void index(Document doc) throws IndexException {
-        if (this.clear_mode) {
-            // As we know the index is empty , we just add the document
-            addDocument(doc);
-        } else {
-            updateDocument(doc);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#del(java.lang.String)
-     */
-    public int del(String uid) throws IndexException {
-        switchToDEL_MODE();
-        return deleteDocument(delete_reader, uid);
-    }
-
-    /**
-     * Delete document
-     * 
-     * @param deleter
-     *            the lucene indexreader to delete document
-     * @param uid
-     *            the uid of the doucment to be deleted
-     * @return the number of deleted documents
-     * @throws IndexException
-     */
-    final protected int deleteDocument(IndexReader deleter, String uid)
-            throws IndexException {
-        int r = 0;
-        try {
-            r = deleter.delete(new Term(DOCUMENT_UID_FIELD, uid));
-        } catch (IOException ex) {
-            handleError("delete document (uid:" + uid + ") error", ex);
-        }
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug("document deleted (uid:" + uid + ")");
-        }
-        return r;
-    }
-
-    /**
-     * add document to the index
-     * 
-     * @param writer
-     *            the lucene indexwriter
-     * @param document
-     *            the document to be indexed
-     * @throws IndexException
-     */
-    final protected void addDocument(IndexWriter writer, Document document)
-            throws IndexException {
-        try {
-            writer.addDocument(document, analyzer);
-        } catch (IOException ex) {
-            handleError("add document  (uid:"
-                    + document.get(DOCUMENT_UID_FIELD) + ") error", ex);
-        }
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug(
-                    "document added (uid:" + document.get(DOCUMENT_UID_FIELD)
-                            + ")");
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#optimize()
-     */
-    public void optimize() throws IndexException {
-        // optimize index
-        try {
-            this.switchToADD_MODE(false);
-            add_writer.optimize();
-        } catch (IOException ex) {
-            throw new IndexException("optimization error", ex);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Indexer#clearIndex()
-     */
-    public void clearIndex() throws IndexException {
-        this.clear_mode = true;
-        this.switchToADD_MODE(true);
-    }
-
-    /**
-     * releasing resources
-     * 
-     * @throws IndexException
-     */
-    protected void release() throws IndexException {
-        this.closeWriter();
-        this.closeReader();
-        // set default value
-        dir = null;
-        analyzer = null;
-        mergeFactor = 10;
-    }
-
-    /**
-     * recylcle this object
-     */
-    public void recycle() {
-        try {
-            release();
-        } catch (IndexException ex) {
-            this.getLogger().error("recycle error", ex);
-        }
-    }
-
-    /**
-     * Switch to write mode (close read, open writer ) if it's not already done
-     * 
-     * @param clear
-     *            clear index
-     * @throws IndexException
-     */
-    final protected void switchToADD_MODE(boolean clear) throws IndexException {
-        if (add_writer == null) {
-            closeReader();
-            openIndexWriter(clear);
-        }
-    }
-
-    /**
-     * Switch to del mode (close writer, open reader ) if it's not already done
-     * 
-     * @throws IndexException
-     */
-    final protected void switchToDEL_MODE() throws IndexException {
-        if (delete_reader == null) {
-            closeWriter();
-            openIndexReader();
-        }
-    }
-
-    /**
-     * Open the index Writer
-     * 
-     * @param create
-     *            clear index or not
-     * @throws IndexException
-     */
-    final protected void openIndexWriter(boolean create) throws IndexException {
-
-        // now open writer
-        try {
-            add_writer = new IndexWriter(dir, analyzer, create);
-            // add_writer.setUseCompoundFile(true);
-        } catch (IOException e) {
-            throw new IndexException("open writer error", e);
-        }
-
-        if (mergeFactor > add_writer.mergeFactor) {
-            add_writer.minMergeDocs = mergeFactor * 2;
-            add_writer.mergeFactor = mergeFactor;
-        }
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("writer is opened");
-        }
-    }
-
-    /**
-     * Open Index Reader
-     * 
-     * @throws IndexException
-     */
-    final protected void openIndexReader() throws IndexException {
-        try {
-            this.delete_reader = IndexReader.open(dir);
-        } catch (IOException e) {
-            throw new IndexException("open reader error", e);
-        }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("reader is opened");
-        }
-
-    }
-
-    /**
-     * Close writer
-     * 
-     * @throws IndexException
-     */
-    final protected void closeWriter() throws IndexException {
-        if (add_writer != null) {
-            try {
-                add_writer.close();
-            } catch (IOException ex) {
-                throw new IndexException("close writer error", ex);
-            } finally {
-                add_writer = null;
-            }
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("writer is closed");
-            }
-        }
-    }
-
-    /**
-     * Close reader
-     * 
-     * @throws IndexException
-     */
-    final protected void closeReader() throws IndexException {
-        if (this.delete_reader != null) {
-            try {
-                delete_reader.close();
-            } catch (IOException ex) {
-                handleError("close reader error", ex);
-            } finally {
-                delete_reader = null;
-            }
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("reader is closed");
-            }
-        }
-    }
-
-    /**
-     * Handle error (close writer, reader,etc.. )
-     * 
-     * @param message
-     * @param exception
-     * @throws IndexException
-     */
-    private void handleError(String message, Exception exception)
-            throws IndexException {
-        try {
-            release();
-        } catch (IndexException e) {
-        }
-        throw new IndexException(message, exception);
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractSearcher.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractSearcher.java
deleted file mode 100644
index e361bad..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AbstractSearcher.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.excalibur.pool.Recyclable;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.components.search.components.Searcher;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
-import org.apache.lucene.store.Directory;
-
-/**
- * @author Nicolas Maisonneuve
- * 
- */
-abstract class AbstractSearcher extends AbstractLogEnabled implements Searcher,
-        Disposable, Recyclable {
-    /**
-     * Lucene Directory
-     */
-    protected List directories = new ArrayList();
-
-    /**
-     * Lucene SortField
-     */
-    protected SortField sortfield;
-
-    /**
-     * Lucene Searcher
-     */
-    protected org.apache.lucene.search.Searcher luceneSearcher;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Searcher#addDirectory(org.apache.lucene.store.Directory)
-     */
-    public void addDirectory(Directory directory) {
-        directories.add(directory);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Searcher#search(org.apache.lucene.search.Query)
-     */
-    public Hits search(Query query) throws ProcessingException {
-        try {
-            getLuceneSearcher();
-            
-            if (sortfield==null) {
-                return luceneSearcher.search(query);
-            }
-            else {
-                return luceneSearcher.search(query, new Sort(sortfield));
-            }
-        } catch (IOException e) {
-            throw new ProcessingException(e);
-        }
-
-    }
-
-    protected abstract void getLuceneSearcher()
-            throws IOException;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.Searcher#setSortField(java.lang.String,
-     *      boolean)
-     */
-    public void setSortField(String field, boolean reverse) {
-        sortfield = new SortField(field, reverse);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        recycle();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.excalibur.pool.Recyclable#recycle()
-     */
-    public void recycle() {
-        try {
-            directories.clear();
-            sortfield = null;
-            luceneSearcher.close();
-        } catch (IOException ex) {
-            this.getLogger().error("release error", ex);
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AnalyzerManagerImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AnalyzerManagerImpl.java
deleted file mode 100644
index fea7fba..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/AnalyzerManagerImpl.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-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.avalon.framework.logger.LogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.search.analyzer.ConfigurableAnalyzer;
-import org.apache.cocoon.components.search.components.AnalyzerManager;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lucene.analysis.Analyzer;
-
-/**
- * Implementation of the Analyzer Component
- * 
- * @author Maisonneuve Nicolas
- * @version 1.0
- */
-public class AnalyzerManagerImpl extends AbstractLogEnabled implements
-        AnalyzerManager, Serviceable, Configurable, ThreadSafe {
-
-    /**
-     * The analyzer element
-     */
-    public static final String ANALYZER_ELEMENT = "analyzer";
-
-    /**
-     * the id of the analyzer
-     */
-    public static final String ID_ATT = "id";
-
-    /**
-     * the analyzer class name
-     */
-    public static final String CLASSNAME_ATT = "class";
-
-    /**
-     * (optional) a file to configure the analyzer
-     */
-    public static final String CONFIG_ATT = "configfile";
-
-    /**
-     * Automatic update or not the analyzer when the config file changes
-     */
-    public static final String CONFIGCHECK_ATT = "checkupdate";
-
-    /**
-     * Map of all the analyzer (ID, analyzer class)
-     */
-    private Map analyzers = new HashMap();
-
-    private ServiceManager manager;
-
-    public boolean exist(String id) {
-        return this.analyzers.containsKey(id);
-    }
-
-    public void configure(Configuration configuration)
-            throws ConfigurationException {
-        Analyzer analyzer;
-        String key;
-        Source conffile = null;
-        boolean checkconfigfile = false;
-        SourceResolver resolver;
-
-        Configuration[] confAnalyzer = configuration
-                .getChildren(ANALYZER_ELEMENT);
-        if (confAnalyzer.length == 0) {
-            throw new ConfigurationException("tag " + ANALYZER_ELEMENT
-                    + " expected ");
-        }
-        try {
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-        } catch (ServiceException e) {
-            throw new ConfigurationException(" source resolver error", e);
-        }
-
-        for (int i = 0; i < confAnalyzer.length; i++) {
-
-            // KEY
-            key = confAnalyzer[i].getAttribute(ID_ATT);
-            if (key == null) {
-                throw new ConfigurationException("element " + ANALYZER_ELEMENT
-                        + " must have a " + ID_ATT + " attribute");
-            }
-
-            // CLASS
-            String classname = confAnalyzer[i].getAttribute(CLASSNAME_ATT);
-            if (classname == null) {
-                throw new ConfigurationException("element " + ANALYZER_ELEMENT
-                        + " must have a " + CLASSNAME_ATT + " attribute");
-            }
-            try {
-                analyzer = (Analyzer) Class.forName(classname).newInstance();
-            } catch (ClassNotFoundException ex) {
-                throw new ConfigurationException("analyzer class not found "
-                        + classname, ex);
-            } catch (Exception ex) {
-                throw new ConfigurationException("instanciation of " + key
-                        + " error", ex);
-            }
-
-            if (analyzer instanceof LogEnabled) {
-                this.setupLogger(analyzer);
-            }
-
-            if (analyzer instanceof ConfigurableAnalyzer) {
-                ConfigurableAnalyzer confanalyzer = ((ConfigurableAnalyzer) analyzer);
-
-                // CONFIGFILE
-                String conffilename = confAnalyzer[i].getAttribute(CONFIG_ATT);
-
-                if (conffilename == null || conffilename.equals("")) {
-                    throw new ConfigurationException("the analyzer " + key
-                            + " must have a " + CONFIG_ATT + " attribute");
-                }
-
-                try {
-                    conffile = resolver.resolveURI(conffilename);
-                } catch (Exception ex1) {
-                    throw new ConfigurationException(
-                            "Config file source error", ex1);
-                }
-
-                // CHECKUPDATE
-                checkconfigfile = confAnalyzer[i].getAttributeAsBoolean(
-                        CONFIGCHECK_ATT, false);
-
-                confanalyzer.setAnalyerManager(this);
-                confanalyzer.setConfigFile(conffile);
-                confanalyzer.setEnableCheckFile(checkconfigfile);
-            }
-            this.put(key, analyzer);
-        }
-
-        manager.release(resolver);
-        getLogger().info("AnalyzerManager configured.");
-
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.AnalyzerManager#put(java.lang.String,
-     *      org.apache.lucene.analysis.Analyzer)
-     */
-    public void put(String id, Analyzer analyzer) {
-        this.analyzers.put(id, analyzer);
-        this.getLogger().info(
-                "add analyzer id: " + id + " with class "
-                        + analyzer.getClass().getName());
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.AnalyzerManager#remove(java.lang.String)
-     */
-    public void remove(String id) {
-        this.analyzers.remove(id);
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug("remove analyzer id: " + id);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.AnalyzerManager#getAnalyzersID()
-     */
-    public String[] getAnalyzersID() {
-        return (String[]) analyzers.keySet().toArray(
-                new String[analyzers.size()]);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.AnalyzerManager#getAnalyzer(java.lang.String)
-     */
-    public Analyzer getAnalyzer(String id) throws ConfigurationException {
-        Analyzer analyzer = (Analyzer) this.analyzers.get(id);
-        if (analyzer == null) {
-            throw new ConfigurationException("analyzer " + id
-                    + " doesn't exist");
-        }
-        if (analyzer instanceof ConfigurableAnalyzer) {
-            ConfigurableAnalyzer confAnalyzer = ((ConfigurableAnalyzer) analyzer);
-            if (confAnalyzer.enableCheckFile()) {
-                confAnalyzer.reconfigure();
-            }
-        }
-        return analyzer;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultIndexerImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultIndexerImpl.java
deleted file mode 100644
index 4195b1e..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultIndexerImpl.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.lucene.document.Document;
-
-/**
- * 
- * @author Nicolas Maisonneuve
- */
-public class DefaultIndexerImpl extends AbstractIndexer implements Configurable {
-
-    /**
-     * Buffer size is element
-     */
-    static public final String DOCUMENT_BUFFERED_NUM_ELEMENT = "buffer_size";
-
-    /**
-     * the default size of the buffer
-     */
-    private int defaultMaxBufDocs = 100;
-
-    /**
-     * Buffer Size: the number of the maximum documents buffered, before to
-     * flush and index this documents (the buffer is used in the update mode)
-     */
-    private int bufferSize;
-
-    /**
-     * the buffer: the List where are stored the documents
-     */
-    private List buffer = new ArrayList();
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration conf) throws ConfigurationException {
-        defaultMaxBufDocs = conf.getChild(DOCUMENT_BUFFERED_NUM_ELEMENT)
-                .getValueAsInteger(100);
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug(
-                    "default max buffered documents: " + defaultMaxBufDocs);
-        }
-    }
-
-    /**
-     * Set the maximum number of buffered documents to avoid to open and close
-     * the IndexWriter a lot of times
-     * 
-     * @param value
-     *            int number (default 100)
-     */
-    public void setBufferSize(int value) {
-        bufferSize = value;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.impl.AbstractIndexer#release()
-     */
-    final protected void release() throws IndexException {
-        // flush the last documents to update
-        if (buffer.size() > 0) {
-            flushBufferedDocs();
-        }
-        bufferSize = defaultMaxBufDocs;
-        this.optimize();
-        super.release();
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.impl.AbstractIndexer#addDocument(org.apache.lucene.document.Document)
-     */
-    final protected void addDocument(Document doc) throws IndexException {
-        switchToADD_MODE(false);
-        addDocument(add_writer, doc);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.impl.AbstractIndexer#updateDocument(org.apache.lucene.document.Document)
-     */
-    final protected void updateDocument(Document doc) throws IndexException {
-        // first delete the old document
-        del(doc.get(DOCUMENT_UID_FIELD));
-
-        // then store in the index queue
-        buffer.add(doc);
-
-        // flush the queue if it's necessary
-        if (buffer.size() == bufferSize) {
-            flushBufferedDocs();
-        }
-    }
-
-    /**
-     * Index the list of documents to update
-     * 
-     * @throws IOException
-     */
-    private void flushBufferedDocs() throws IndexException {
-        this.switchToADD_MODE(false);
-        Iterator iter = buffer.iterator();
-        while (iter.hasNext()) {
-            addDocument(add_writer, (Document) iter.next());
-        }
-        buffer.clear();
-    }
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultSearcherImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultSearcherImpl.java
deleted file mode 100644
index 6feda7d..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/DefaultSearcherImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.IOException;
-
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.MultiSearcher;
-import org.apache.lucene.store.Directory;
-
-/**
- * use lucene MultiSearcher 
- * @author Nicolas Maisonneuve
- */
-public class DefaultSearcherImpl extends AbstractSearcher {
-
-    
-    protected void getLuceneSearcher() throws IOException {
-        if (directories.size() > 1) {
-                IndexSearcher[] searchers = new IndexSearcher[directories
-                        .size()];
-                for (int i = 0; i < searchers.length; i++) {
-                    searchers[i]= new IndexSearcher((Directory)(directories
-                        .get(i)));
-                }
-                luceneSearcher = new MultiSearcher(searchers);
-            } else {
-                luceneSearcher = new IndexSearcher((Directory) (directories
-                        .get(0)));
-            }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/IndexManagerImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/IndexManagerImpl.java
deleted file mode 100644
index 60873f1..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/IndexManagerImpl.java
+++ /dev/null
@@ -1,410 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.HashMap;
-import java.util.Map;
-
-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.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.search.Index;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.cocoon.components.search.IndexStructure;
-import org.apache.cocoon.components.search.components.AnalyzerManager;
-import org.apache.cocoon.components.search.components.IndexManager;
-import org.apache.cocoon.components.search.fieldmodel.DateFieldDefinition;
-import org.apache.cocoon.components.search.fieldmodel.FieldDefinition;
-import org.apache.cocoon.components.search.utils.SourceHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationManager;
-
-/**
- * Index Manager Component. Configure and Manage the differents indexes.
- * 
- * @author Maisonneuve Nicolas
- * @version 1.0
- */
-public class IndexManagerImpl extends AbstractLogEnabled implements IndexManager, Serviceable,
-        ThreadSafe, Configurable {
-
-    /**
-     * indexer element
-     */
-    public static final String INDEXER_ELEMENT = "indexer";
-
-    /**
-     * indexer element
-     */
-    public static final String INDEXER_ROLE_ATTRIBUTE = "role";
-
-    /**
-     * set of indexes
-     */
-    public static final String INDEXES_ELEMENT = "indexes";
-
-    /**
-     * Index declaration element
-     */
-    public static final String INDEX_ELEMENT = "index";
-
-    /**
-     * default analyzer of a index
-     */
-    public static final String INDEX_DEFAULTANALZER_ATTRIBUTE = "analyzer";
-
-    /**
-     * directory where the index is stored
-     */
-    public static final String INDEX_DIRECTORY_ATTRIBUTE = "directory";
-
-    /**
-     * Index Structure element
-     */
-    public static final String STRUCTURE_ELEMENT = "structure";
-
-    /**
-     * Field declaration element
-     */
-    public static final String FIELD_ELEMENT = "field";
-
-    /**
-     * field name
-     */
-    public static final String ID_ATTRIBUTE = "id";
-
-    /**
-     * type of the field: "text, "keyword", "date" (see
-     * 
-     * @see org.apache.cocoon.components.search.fieldmodel.FieldDefinition class)
-     */
-    public static final String TYPE_ATTRIBUTE = "type";
-
-    /**
-     * store information or not (true/false)
-     */
-    public static final String STORE_ATTRIBUTE = "storetext";
-
-    /**
-     * The date Format when the field type is a date
-     */
-    public static final String DATEFORMAT_ATTRIBUTE = "dateformat";
-
-    /**
-     * The name of the index configuration file.
-     */
-    public static final String INDEX_CONF_FILE = "search/lucene_index.xml";
-
-    /**
-     * check the config file each time the getIndex is called to update if necessary the
-     * configuration
-     */
-    // public static final String CHECK_ATTRIBUTE = "check";
-    /**
-     * Source of the index configuration file
-     */
-    // public static final String CONFIG_ATTRIBUTE = "config";
-    /**
-     * Check or not the configuration file (automatic update if the file is changed)
-     */
-    // private boolean check;
-    /**
-     * Index configuration file
-     */
-    // private Source configfile;
-    private ServiceManager manager;
-
-    private Map indexMap;
-
-    protected Map indexes() {
-        if(this.indexMap == null) {
-            this.indexMap = new HashMap();
-            loadIndexes();
-        }
-        return this.indexMap;
-    }
-
-    private String indexerRole = null;
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.IndexManager#contains(java.lang.String)
-     */
-    public boolean contains(String id) {
-        if (id != null) {
-            return this.indexes().get(id) != null;
-        }
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.IndexManager#getIndex(java.lang.String)
-     */
-    public Index getIndex(String id) throws IndexException {
-
-        if (id == null || id.equals("")) {
-            throw new IndexException(" index with no name was called");
-        }
-
-        Index index = (Index) this.indexes().get(id);
-        if (index == null) {
-            throw new IndexException("Index " + id + " doesn't exist. Check if configuration "
-                    + INDEX_CONF_FILE + " exists for this publication!");
-        }
-
-        return index;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.IndexManager#addIndex(org.apache.cocoon.components.search.Index)
-     */
-    public void addIndex(Index base) {
-        this.indexes().put(base.getID(), base);
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.cocoon.components.search.components.IndexManager#remove(java.lang.String)
-     */
-    public void remove(String id) {
-        this.indexes().remove(id);
-    }
-
-    protected void loadIndexes() {
-        // configure the index manager:
-
-        // now check all publications and add their indexes:
-        PublicationManager pubManager = null;
-        SourceResolver resolver = null;
-        Source confSource = null;
-        ContextUtility util = null;
-        try {
-            util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            Request request = util.getRequest();
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            pubManager = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
-            Publication[] publications = pubManager.getPublications(factory);
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            for (int i = 0; i < publications.length; i++) {
-                String uri = "context://" + Publication.PUBLICATION_PREFIX_URI + "/"
-                        + publications[i].getId() + "/" + Publication.CONFIGURATION_PATH + "/"
-                        + INDEX_CONF_FILE;
-                confSource = resolver.resolveURI(uri);
-                if (confSource.exists()) {
-                    addIndexes(confSource);
-                }
-            }
-        } catch (IOException e) {
-            throw new RuntimeException("Config file error", e);
-        } catch (ServiceException e) {
-            throw new RuntimeException("PublicationManager lookup error", e);
-        } finally {
-            if (pubManager != null) {
-                this.manager.release(pubManager);
-            }
-            if (resolver != null) {
-                if (confSource != null) {
-                    resolver.release(confSource);
-                }
-                this.manager.release(resolver);
-            }
-            if (util != null) {
-                this.manager.release(util);
-            }
-        }
-
-        getLogger().info("Search Engine - Index Manager configured.");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-        this.indexerRole = configuration.getChild(INDEXER_ELEMENT)
-                .getAttribute(INDEXER_ROLE_ATTRIBUTE);
-    }
-
-    /**
-     * Adds indexes from the given configuration file to the index manager.
-     * @param confSource
-     */
-    public void addIndexes(Source confSource) {
-        try {
-            Configuration indexConfiguration = SourceHelper.build(confSource);
-            addIndexes(indexConfiguration);
-        } catch (ConfigurationException e) {
-            throw new RuntimeException("Error with configuration file " + confSource.getURI(), e);
-        }
-    }
-
-    /**
-     * Adds indexes from the given configuration object to the index manager.
-     * @param configuration
-     * @throws ConfigurationException
-     */
-    private void addIndexes(Configuration configuration) throws ConfigurationException {
-        AnalyzerManager analyzerManager = null;
-        Configuration[] confs = configuration.getChildren(INDEX_ELEMENT);
-
-        if (confs.length == 0) {
-            throw new ConfigurationException("no index is defined !");
-        }
-        try {
-            analyzerManager = (AnalyzerManager) this.manager.lookup(AnalyzerManager.ROLE);
-
-            // configure each index
-            for (int i = 0; i < confs.length; i++) {
-                String id = confs[i].getAttribute(ID_ATTRIBUTE);
-                String analyzerid = confs[i].getAttribute(INDEX_DEFAULTANALZER_ATTRIBUTE);
-                String directory = confs[i].getAttribute(INDEX_DIRECTORY_ATTRIBUTE);
-                if (!analyzerManager.exist(analyzerid)) {
-                    throw new ConfigurationException("Analyzer " + analyzerid + " no found");
-                }
-
-                Configuration[] fields = confs[i].getChild(STRUCTURE_ELEMENT)
-                        .getChildren(FIELD_ELEMENT);
-
-                IndexStructure docdecl = new IndexStructure();
-                for (int j = 0; j < fields.length; j++) {
-
-                    FieldDefinition fielddecl;
-
-                    // field id attribute
-                    String id_field = fields[j].getAttribute(ID_ATTRIBUTE);
-
-                    // field type attribute
-                    String typeS = fields[j].getAttribute(TYPE_ATTRIBUTE, "");
-                    int type = FieldDefinition.stringTotype(typeS);
-                    try {
-                        fielddecl = FieldDefinition.create(id_field, type);
-                    } catch (IllegalArgumentException e) {
-                        throw new ConfigurationException("field " + id_field + " type " + typeS, e);
-                    }
-
-                    // field store attribute
-                    boolean store;
-                    if (fielddecl.getType() == FieldDefinition.TEXT) {
-                        store = fields[j].getAttributeAsBoolean(STORE_ATTRIBUTE, false);
-                    } else {
-                        store = fields[j].getAttributeAsBoolean(STORE_ATTRIBUTE, true);
-                    }
-                    fielddecl.setStore(store);
-
-                    // field dateformat attribute
-                    if (fielddecl.getType() == FieldDefinition.DATE) {
-                        String dateformat_field = fields[j].getAttribute(DATEFORMAT_ATTRIBUTE);
-                        ((DateFieldDefinition) fielddecl).setDateFormat(new SimpleDateFormat(dateformat_field));
-                    }
-
-                    this.getLogger().debug("field added: " + fielddecl);
-                    docdecl.addFieldDef(fielddecl);
-                }
-
-                Index index = new Index();
-                index.setID(id);
-                index.setIndexer(indexerRole);
-
-                // if the directory path is relative, prepend context path:
-                if (!directory.startsWith(File.separator)) {
-                    directory = getServletContextPath() + File.separator + directory;
-                }
-
-                if (index.setDirectory(directory)) {
-                    this.getLogger().warn("directory " + directory + " was locked ");
-                }
-                index.setDefaultAnalyzerID(analyzerid);
-                index.setStructure(docdecl);
-                index.setManager(manager);
-
-                this.addIndex(index);
-                this.getLogger()
-                        .info("add index  " + index.getID() + " for directory " + directory);
-            }
-        } catch (ServiceException e) {
-            throw new ConfigurationException("AnalyzerManager lookup error", e);
-        } catch (Exception e) {
-            throw new ConfigurationException(e.getMessage(), e);
-        } finally {
-            if (analyzerManager != null) {
-                this.manager.release(analyzerManager);
-            }
-        }
-    }
-
-    /**
-     * @return The servlet context path.
-     * @throws Exception if an error occurs.
-     */
-    public String getServletContextPath() throws Exception {
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI("context:///");
-            return SourceUtil.getFile(source).getCanonicalPath();
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.cocoon.components.search.components.IndexManager#getIndex()
-     */
-    public Index[] getIndex() {
-        return (Index[]) this.indexes().values().toArray(new Index[indexes().size()]);
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelIndexerImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelIndexerImpl.java
deleted file mode 100644
index b53bed5..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelIndexerImpl.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Stack;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
-
-/**
- * Parrallel Indexer Class
- * 
- * @author Nicolas Maisonneuve
- */
-
-public class ParallelIndexerImpl extends AbstractIndexer implements
-        Contextualizable {
-
-    // Parallel specific variables
-    private Stack queue;
-
-    private boolean releaseSession, first_writing;
-
-    /**
-     * Number of threads (number of writers)
-     */
-    private int numThread;
-
-    /**
-     * temp dir where are stored the temporared index
-     */
-    private File tempDir;
-
-    /**
-     * multi-thread writer
-     */
-    private WriterThread[] writers;
-
-    public ParallelIndexerImpl() {
-        super();
-        this.queue = new Stack();
-
-        /**
-         * @TODO see how many processor there are automatically
-         */
-        this.setNumThread(2);
-        first_writing = true;
-    }
-
-    /**
-     * Set the number of thread writer
-     * 
-     * @param num
-     *            the number of thread
-     */
-    public void setNumThread(int num) {
-        numThread = num;
-        writers = new WriterThread[num];
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        tempDir = (File) context.get(Constants.CONTEXT_WORK_DIR);
-    }
-
-    protected void release() throws IndexException {
-
-        // ok this is the end of indexation (information for the threads)
-        releaseSession = true;
-
-        // wait for the end of writer threads
-        boolean isindexing = true;
-        while (isindexing) {
-
-            // check if all the thread are died
-            isindexing = false;
-            for (int i = 0; i < writers.length; i++) {
-                isindexing |= writers[i].alive;
-            }
-
-            // no, so sleep
-            if (isindexing) {
-                try {
-                    Thread.sleep(50);
-                } catch (InterruptedException ex) {
-                    ex.printStackTrace();
-                }
-            } else {
-                break;
-            }
-        }
-
-        // merge index
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Merging....");
-        }
-        this.switchToADD_MODE(false);
-        Directory[] dirs = new Directory[numThread];
-        for (int i = 0; i < numThread; i++) {
-            dirs[i] = writers[i].dir;
-        }
-        try {
-            this.add_writer.addIndexes(dirs);
-        } catch (IOException ex1) {
-            throw new IndexException("merge error ", ex1);
-        }
-
-        releaseSession = false;
-        first_writing = true;
-        super.release();
-    }
-
-    final protected void addDocument(Document document) throws IndexException {
-        startThread();
-        // put the document in the queue
-        this.queue.add(document);
-    }
-
-    final protected void updateDocument(Document document)
-            throws IndexException {
-        del(document.get(DOCUMENT_UID_FIELD));
-        addDocument(document);
-    }
-
-    /**
-     * start the threads if it's not already done
-     * 
-     * @throws IndexException
-     */
-    private void startThread() throws IndexException {
-        if (first_writing) {
-            for (int i = 0; i < writers.length; i++) {
-                writers[i] = new WriterThread();
-                writers[i].start();
-            }
-            first_writing = false;
-        }
-    }
-
-    /**
-     * Writer Thread
-     */
-    final class WriterThread extends Thread {
-        boolean alive = true;
-
-        private IndexWriter mywriter;
-
-        Directory dir;
-
-        public void run() {
-            // create a temp directory to store a subindex
-            File file = new File(tempDir + File.separator + this.getName());
-            file.mkdirs();
-
-            // open a writer
-            try {
-                dir = FSDirectory.getDirectory(file, true);
-                mywriter = new IndexWriter(dir, analyzer, true);
-                mywriter.mergeFactor = mergeFactor;
-                mywriter.minMergeDocs = mergeFactor * 2;
-            } catch (IOException e) {
-                e.printStackTrace();
-                getLogger().error("Thread " + getName() + ": opening error", e);
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug(
-                        "WriterThread " + this.getName() + " is ready....");
-            }
-            while (alive) {
-                if (!queue.isEmpty()) {
-                    try {
-                        // add document
-                        Document doc = (Document) queue.pop();
-                        addDocument(mywriter, doc);
-                    } catch (IndexException ex) {
-                        ex.printStackTrace();
-                        getLogger().error(
-                                "Thread " + getName() + ": indexation error",
-                                ex);
-                    }
-                } else {
-                    // end session ?
-                    if (releaseSession) {
-
-                        // stop thread
-                        alive = false;
-
-                        // close writer
-                        try {
-                            mywriter.close();
-                        } catch (IOException ex) {
-                            ex.printStackTrace();
-                            getLogger()
-                                    .error(
-                                            "Thread " + getName()
-                                                    + ": close error", ex);
-                        }
-                    } else {
-                        // wait new documents
-                        try {
-                            Thread.sleep(20);
-                        } catch (InterruptedException e2) {
-                            getLogger()
-                                    .error(
-                                            "Thread " + getName()
-                                                    + ": sleep error", e2);
-                        }
-                    }
-                }
-
-            }
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug(
-                        "WriterThread " + getName() + " is stoping...");
-
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelSearcherImpl.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelSearcherImpl.java
deleted file mode 100644
index 066beee..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/components/impl/ParallelSearcherImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.components.impl;
-
-import java.io.IOException;
-
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.ParallelMultiSearcher;
-import org.apache.lucene.store.Directory;
-
-/**
- * use lucene ParallelMultiSearcher Class 
- * @author Nicolas Maisonneuve
- */
-public class ParallelSearcherImpl extends AbstractSearcher {
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.components.search.components.impl.AbstractSearcher#getLuceneSearcher()
-     */
-    protected void getLuceneSearcher() throws IOException {
-        if (directories.size() > 1) {
-                IndexSearcher[] searchers = new IndexSearcher[directories
-                        .size()];
-                for (int i = 0; i < searchers.length; i++) {
-                    searchers[i]= new IndexSearcher((Directory)(directories
-                        .get(i)));
-                }
-                luceneSearcher = new ParallelMultiSearcher(searchers);
-            } else {
-                luceneSearcher = new IndexSearcher((Directory) (directories
-                        .get(0)));
-            }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/DateFieldDefinition.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/DateFieldDefinition.java
deleted file mode 100644
index b78e3a6..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/DateFieldDefinition.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.fieldmodel;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.apache.lucene.document.DateField;
-import org.apache.lucene.document.Field;
-
-/**
- * Field Definition for Date type
- * 
- * @author Nicolas Maisonneuve
- */
-public class DateFieldDefinition extends FieldDefinition {
-
-    private SimpleDateFormat df;
-
-    /**
-     * @param name
-     *            name of the field
-     */
-    public DateFieldDefinition(String name) {
-        super(name, DATE);
-    }
-
-    /**
-     * Set the date format to parse string date in the
-     * 
-     * @see #createLField(String) method
-     * @param df
-     */
-    public void setDateFormat(SimpleDateFormat df) {
-        this.df = df;
-    }
-
-    /**
-     * @return the dateformat
-     */
-    public SimpleDateFormat getDateFormat() {
-        return df;
-    }
-
-    /**
-     * Create a Lucene Field
-     * 
-     * @param dateString
-     *            String date in string format
-     * @return A field.
-     * @see org.apache.lucene.document.Field
-     * 
-     */
-    public final Field createLField(String dateString)
-            throws IllegalArgumentException {
-        Date date = null;
-        try {
-            date = df.parse(dateString);
-        } catch (ParseException ex) {
-            throw new IllegalArgumentException(ex.getMessage());
-        }
-        return createLField(date);
-    }
-
-    /**
-     * Create Lucene Field
-     * 
-     * @param date
-     *            the date
-     * @return A field.
-     * @see org.apache.lucene.document.Field
-     * 
-     */
-    public final Field createLField(Date date) {
-        return new Field(name, DateField.dateToString(date), store, true, index);
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/FieldDefinition.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/FieldDefinition.java
deleted file mode 100644
index 23c87d8..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/FieldDefinition.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.fieldmodel;
-
-import org.apache.lucene.document.Field;
-
-/**
- * Field Definition class
- * 
- * @author Nicolas Maisonneuve
- * 
- */
-public abstract class FieldDefinition {
-    /**
-     * Text type
-     */
-    public static final int TEXT = 0;
-
-    /**
-     * Keyword type
-     */
-    public static final int KEYWORD = 1;
-
-    /**
-     * Date type
-     */
-    public static final int DATE = 2;
-
-    public static final String[] STRING_TYPE = { "text", "keyword", "date" };
-
-    /**
-     * Name of the field
-     */
-    protected String name;
-
-    /**
-     * type of the field (text, keyword, date)
-     */
-    protected int type;
-
-    /**
-     * Lucene Field specification
-     */
-    protected boolean store;
-
-    protected boolean index;
-
-    // futur lucene 1.9: protected Field.Store store;
-    // futur lucene 1.9: protected Field.Index index;
-
-    protected FieldDefinition(String name, String type)
-            throws IllegalArgumentException {
-        this(name, stringTotype(type));
-    }
-
-    protected FieldDefinition(String name, int type)
-            throws IllegalArgumentException {
-        this(name, type, false);
-    }
-
-    public static FieldDefinition create(String name, int type) {
-        FieldDefinition field = null;
-
-        if (name == null || name.trim().equals("")) {
-            throw new IllegalArgumentException("name cannot be empty");
-        }
-        switch (type) {
-        case TEXT:
-        case KEYWORD:
-            field = new StringFieldDefinition(name, type);
-            break;
-        case DATE:
-            field = new DateFieldDefinition(name);
-            break;
-        default:
-            throw new IllegalArgumentException("type not allowed");
-        }
-        return field;
-    }
-
-    /**
-     * 
-     * @param name
-     *            String field's name
-     * @param type
-     *            int indexation type
-     * @param store
-     *            boolean store value in the index
-     * @throws IllegalArgumentException
-     */
-    private FieldDefinition(String name, int type, boolean store)
-            throws IllegalArgumentException {
-
-        this.name = name.intern();
-        setType(type);
-        setStore(store);
-    }
-
-    public int hashCode() {
-        return name.hashCode() * this.type;
-    }
-
-    public void setStore(boolean store) {
-        // for futur lucene1.9
-        // this.store=(store)?Field.Store.YES:Field.Store.NO;
-        this.store = store;
-    }
-
-    public boolean getStore() {
-        // for futur lucene1.9 return this.store==Field.Store.YES;
-        return store;
-    }
-
-    public boolean equals(FieldDefinition fielddef) {
-        if (name.equals(fielddef.name()) && getType() == fielddef.getType()) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public boolean equals(Object object) {
-        if (object instanceof FieldDefinition) {
-            return equals((FieldDefinition) object);
-        } else {
-            return false;
-        }
-    }
-
-    public String name() {
-        return name;
-    }
-
-    /**
-     * Create Lucene Field
-     * 
-     * @param value
-     *            String value to store in the lucene field
-     * @return Field
-     */
-    public abstract Field createLField(String value);
-
-    public int getType() {
-        return type;
-    }
-
-    /**
-     * Set the type of the FieldDefinition (DATE,TEXT,KEYWORD)
-     * 
-     * @param type
-     *            int
-     * @throws IllegalArgumentException
-     */
-    private void setType(int type) throws IllegalArgumentException {
-        switch (type) {
-        case FieldDefinition.TEXT:
-            index = true;
-            break;
-        case FieldDefinition.DATE:
-            index = true;
-            break;
-        case FieldDefinition.KEYWORD:
-            index = false;
-            break;
-        default:
-            throw new IllegalArgumentException("type not allowed");
-        }
-        this.type = type;
-    }
-
-    public final String toString() {
-        StringBuffer b = new StringBuffer();
-        b.append("name: " + name);
-        b.append(", type: " + FieldDefinition.STRING_TYPE[type]);
-        b.append(", store: " + getStore());
-        return b.toString();
-    }
-
-    /**
-     * Convert String to type
-     * 
-     * @param typename
-     *            String
-     * @return int
-     */
-    static final public int stringTotype(String typename)
-            throws IllegalArgumentException {
-        for (int i = 0; i < STRING_TYPE.length; i++) {
-            if (typename.toLowerCase().equals(STRING_TYPE[i])) {
-                return i;
-            }
-        }
-        throw new IllegalArgumentException("type " + typename
-                + " is not allowed");
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/StringFieldDefinition.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/StringFieldDefinition.java
deleted file mode 100644
index 2500754..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/fieldmodel/StringFieldDefinition.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.fieldmodel;
-
-import org.apache.lucene.document.Field;
-
-/**
- * String Field Definition (used for Text and Keyword type)
- * 
- * @author Nicolas Maisonneuve
- */
-public final class StringFieldDefinition extends FieldDefinition {
-
-    public StringFieldDefinition(String name, int type) {
-        super(name, type);
-    }
-
-    /**
-     * Create a Lucene Field
-     * 
-     * @param value
-     *            value to index
-     * @return
-     * @see org.apache.lucene.document.Field
-     */
-    public final Field createLField(String value) {
-        return new Field(name, value, store, true, index);
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/lucene2.roles b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/lucene2.roles
deleted file mode 100644
index cf66590..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/lucene2.roles
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-<!-- $Id$ -->

-<role-list>

-

-    <!-- default indexer -->

-  <role name="org.apache.cocoon.components.search.components.Indexer/default" shorthand="default_indexer"

-default-class="org.apache.cocoon.components.search.components.impl.DefaultIndexerImpl"/>

-

-    <!-- parallel indexer -->

-  <role name="org.apache.cocoon.components.search.components.Indexer/parallel" shorthand="parallel_indexer"

-default-class="org.apache.cocoon.components.search.components.impl.ParallelIndexerImpl"/>

-

-	<!-- analyzer manager -->

-  <role name="org.apache.cocoon.components.search.components.AnalyzerManager" shorthand="analyzer_manager"

-default-class="org.apache.cocoon.components.search.components.impl.AnalyzerManagerImpl"/>

-

-	<!-- index manager -->

-  <role name="org.apache.cocoon.components.search.components.IndexManager" shorthand="index_manager"

-default-class="org.apache.cocoon.components.search.components.impl.IndexManagerImpl"/>

-

-</role-list>

diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/utils/SourceHelper.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/utils/SourceHelper.java
deleted file mode 100644
index 61b6795..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/components/search/utils/SourceHelper.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.components.search.utils;
-
-/**
- * Utility class
- * 
- * @author Maisonneuve Nicolas
- * 
- */
-import java.io.IOException;
-import java.util.HashMap;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceValidity;
-import org.xml.sax.SAXException;
-
-public class SourceHelper {
-
-    static final private HashMap sources = new HashMap();
-
-    static final private DefaultConfigurationBuilder confBuilder = new DefaultConfigurationBuilder();
-
-    static final public void registerSource(Source source) {
-        if (!sources.containsKey(source)) {
-            SourceValidity refValidity = source.getValidity();
-            sources.put(source, refValidity);
-        }
-    }
-
-    /**
-     * Check the validity of the source with the registered source
-     * 
-     * @return true if the source didn't changed
-     */
-    static final public boolean checkSourceValidity(Source source) {
-        SourceValidity newValidity = source.getValidity();
-        SourceValidity refValidity = (SourceValidity) sources.get(source);
-        return checkSourceValidity(newValidity, refValidity);
-    }
-
-    /**
-     * Compare two sources
-     * 
-     * @return true if the source didn't changed
-     */
-    static final public boolean checkSourceValidity(SourceValidity s1Validity,
-            SourceValidity s2Validity) {
-
-        int valid = s2Validity.isValid();
-        boolean isValid;
-        if (valid == 0) {
-            valid = s2Validity.isValid(s1Validity);
-            isValid = (valid == 1);
-        } else {
-            isValid = (valid == 1);
-        }
-        return isValid;
-    }
-
-    static final public Configuration build(Source source)
-            throws ConfigurationException {
-        try {
-            return confBuilder.build(source.getInputStream());
-        } catch (IOException ex) {
-            throw new ConfigurationException("File " + source.getURI(), ex);
-        } catch (SAXException ex) {
-            throw new ConfigurationException(
-                    "SAX Error in the configuration File", ex);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java
deleted file mode 100644
index 79943cf..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformer2.java
+++ /dev/null
@@ -1,653 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.excalibur.pool.Recyclable;
-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.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.components.search.Index;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.cocoon.components.search.components.AnalyzerManager;
-import org.apache.cocoon.components.search.components.IndexManager;
-import org.apache.cocoon.components.search.components.Indexer;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationUtil;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Another lucene index transformer.</br> allow
- * <ul>
- * <li>index function (update indexing or add indexing if clear attribute is
- * true)</li>
- * <li>lucene field boosting</li>
- * <li>delete function</li>
- * </ul>
- * 
- * <p>
- * This tranformer used several avalon components, but you can use them
- * separatly :
- * <ul>
- * <li>AnalyzerManager: you can setup a analyzer (configurable) in the
- * analyzer_manager tag in cocoon.xconf file</li>
- * <li>IndexManager: you can setup a index in a the /WEB-INF/index.xml (default
- * location , but you can specify the location in the IndexManager component
- * configuration in cocoon.xconf file)</li>
- * <li>Indexer (2 implementations: default (with update optimization) and
- * parallel implementation for multiple cpu)</li>
- * </p>
- * <p>
- * <strong>Example of input source: </strong>
- * </p>
- * <p>
- * <ul>
- * <li>to Index <br>
- * &lt;lucene:index xmlns:lucene=&quot;http://apache.org/cocoon/lucene/1.0&quot
- * <br/>indexid=&quot;myindex&quot; <br>
- * clear="true" (optinal attribute: clear index) <br/>merge-factor="100"&gt;
- * (optinal attribute: see lucene doc) <br>
- * <br/>&lt;lucene:document uid="http://myhost/myfile1.data"&gt; <br/>
- * &lt;lucene:field name="tile" &gt; sqdqsdq &lt;/lucene:field&gt; <br>
- * &lt;lucene:field name="description" &gt; a text bla bal blalael
- * balbal&lt;/lucene:field&gt; <br>
- * &lt;lucene:field name="date" &gt;10/12/2002&lt;/lucene:field&gt; <br/>
- * &lt;/lucene:document&gt; <br>
- * 
- * <p>
- * &lt;lucene:document uid="http://myhost/myfile2.data" &gt; <br>
- * &lt;lucene:field name="author" boost="2" &gt;Mr Author &lt;/lucene:field&gt;
- * <em>(boost the field for the search (see Lucene documentation))</em> <br/>
- * &lt;lucene:field name="langage" &gt;french&lt;/lucene:field&gt; <br>
- * &lt;/lucene:document&gt; <br>
- * &lt; /lucene:index&gt;
- * </p>
- * </li>
- * 
- * <li>To delete <br/>
- * <p>
- * &lt;lucene:delete indexid="myindex" &gt; <br>
- * &lt;lucene:document uid="http://myhost/myfile.data&quot; &gt; <br>
- * &lt;lucene:document uid="EODOED-EFE" <br>
- * &lt;/lucene:delete&gt;
- * </p>
- * 
- * <p>
- * <strong>Example of Output Source </strong>
- * </p>
- * <p>
- * &lt;page xmlns:lucene=&quot;http://apache.org/cocoon/lucene/1.0&quot;&gt;
- * <br>
- * &lt; lucene:index &gt; <br>
- * &lt;lucene:document uid="http://myhost/myfile1.data"/&gt; <br/>
- * &lt;lucene:document uid="http://myhost/myfile2.data"/&gt; <br/>
- * &lt;/lucene:index&gt;
- * </p>
- * <p>
- * &lt;lucene:delete &gt; &lt;lucene:document
- * uid="http://myhost/myfile1.data"/&gt; <br/>&lt;lucene:document
- * uid="EODOED-EFE"/&gt; <br/>&lt;/lucene:delete &gt;</br></li>
- * </ul>
- * 
- * @author Nicolas Maisonneuve
- */
-
-public class LuceneIndexTransformer2 extends AbstractTransformer implements Recyclable,
-        Serviceable, Configurable {
-
-    public static final String DIRECTORY_DEFAULT = "index";
-
-    public static final String LUCENE_URI = "http://apache.org/cocoon/lucene/1.0";
-
-    public static final String LUCENE_PREXIF = "lucene";
-
-    /**
-     * action element : index doc
-     */
-    public static final String LUCENE_INDEXING_ELEMENT = "index";
-
-    /**
-     * action element: delete doc
-     */
-    public static final String LUCENE_DELETING_ELEMENT = "delete";
-
-    /**
-     * index identity (see index definition file)
-     */
-    public static final String LUCENE_INDEXING_INDEXID_ATTRIBUTE = "indexid";
-
-    /**
-     * Optional attribute: Clear index: true/false (default: false)
-     */
-    public static final String LUCENE_INDEXING_CREATE_ATTRIBUTE = "clear";
-
-    /**
-     * Optional attribute: Analyzer identity: see analyzerManager Component
-     * (default: the analyer of the index declared in the index definition)
-     */
-    public static final String LUCENE_INDEXING_ANALYZER_ATTRIBUTE = "analyzer";
-
-    /**
-     * Optional attribute: MergeFactor number (default 10): improve the indexing
-     * speed for large indexing (see Lucene docs)
-     */
-    public static final String LUCENE_INDEXING_MERGE_FACTOR_ATTRIBUTE = "mergefactor";
-
-    /**
-     * Lucene document element
-     */
-    public static final String LUCENE_DOCUMENT_ELEMENT = "document";
-
-    /**
-     * Lucene document uid field
-     */
-    public static final String LUCENE_DOCUMENT_UID_ATTRIBUTE = "uid";
-
-    /**
-     * lucene field element
-     */
-    public static final String LUCENE_FIELD_ELEMENT = "field";
-
-    /**
-     * lucene field name
-     */
-    public static final String LUCENE_FIELD_NAME_ATTRIBUTE = "name";
-
-    /**
-     * Optional attribute: lucene field boost (see lucene docs)
-     */
-    public static final String LUCENE_FIELD_BOOST_ATTRIBUTE = "boost";
-
-    // The 6 states of the state machine
-    private int processing;
-
-    public static final int NO_PROCESSING = 0;
-
-    public static final int INDEX_PROCESS = 1;
-
-    public static final int IN_DOCUMENT_PROCESS = 2;
-
-    public static final int IN_FIELD_PROCESS = 4;
-
-    public static final int DELETE_PROCESS = 5;
-
-    public static final int DELETING_PROCESS = 6;
-
-    // Runtime variables
-    private int mergeFactor;
-
-    private AttributesImpl attrs = new AttributesImpl();
-
-    private Index index;
-
-    private Indexer indexer;
-
-    private ServiceManager manager;
-
-    private Document bodyDocument;
-
-    private String uid;
-
-    private String fieldname;
-
-    private float fieldboost;
-
-    private StringBuffer fieldvalue;
-
-    private Request request;
-
-    private String pubId;
-    private String area;
-    private String uuid;
-    private String language;
-
-    /**
-     * Setup the transformer.
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
-            throws ProcessingException, SAXException, IOException {
-        this.request = ObjectModelHelper.getRequest(objectModel);
-        try {
-            this.pubId = parameters.getParameter("publicationId");
-            this.area = parameters.getParameter("area");
-            this.uuid = parameters.getParameter("uuid");
-            this.language = parameters.getParameter("language");
-        } catch (ParameterException e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    public void recycle() {
-        this.index = null;
-        this.indexer = null;
-        this.processing = NO_PROCESSING;
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public void startDocument() throws SAXException {
-        super.startDocument();
-    }
-
-    public void endDocument() throws SAXException {
-        super.endDocument();
-    }
-
-    /**
-     * Begin the scope of a prefix-URI Namespace mapping.
-     * 
-     * @param prefix The Namespace prefix being declared.
-     * @param uri The Namespace URI the prefix is mapped to.
-     */
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-        if (processing == NO_PROCESSING) {
-            super.startPrefixMapping(prefix, uri);
-        }
-    }
-
-    /**
-     * End the scope of a prefix-URI mapping.
-     * 
-     * @param prefix The prefix that was being mapping.
-     */
-    public void endPrefixMapping(String prefix) throws SAXException {
-        if (processing == NO_PROCESSING) {
-            super.endPrefixMapping(prefix);
-        }
-    }
-
-    public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
-            throws SAXException {
-
-        // getLogger().debug("START processing: "+processing+" "+localName);
-
-        if (LUCENE_URI.equals(namespaceURI)) {
-            switch (processing) {
-
-            case NO_PROCESSING:
-
-                // index action
-                if (LUCENE_INDEXING_ELEMENT.equals(localName)) {
-                    this.initIndexer(atts);
-                    processing = INDEX_PROCESS;
-
-                    super.startElement(namespaceURI, localName, qName, attrs);
-                }
-                // delete action
-                else if (LUCENE_DELETING_ELEMENT.equals(localName)) {
-                    this.initIndexer(atts);
-                    processing = DELETE_PROCESS;
-                    super.startElement(namespaceURI, localName, qName, attrs);
-                } else {
-                    handleError("element " + localName + " unknown");
-                }
-                break;
-
-            case INDEX_PROCESS:
-
-                // new document to index
-                if (LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-
-                    uid = atts.getValue(LUCENE_DOCUMENT_UID_ATTRIBUTE);
-                    if (uid == null) {
-                        handleError("<" + LUCENE_PREXIF + ":" + LUCENE_DOCUMENT_ELEMENT
-                                + "> element must contain " + LUCENE_DOCUMENT_UID_ATTRIBUTE
-                                + " attribute");
-                    }
-                    bodyDocument = index.createDocument(uid);
-                    processing = IN_DOCUMENT_PROCESS;
-                } else {
-                    handleError("element " + localName + " is not allowed in  <" + LUCENE_PREXIF
-                            + ":" + LUCENE_DOCUMENT_ELEMENT + "> element");
-                }
-                break;
-
-            case DELETE_PROCESS:
-
-                if (LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-                    uid = atts.getValue(LUCENE_DOCUMENT_UID_ATTRIBUTE);
-                    if (uid == null) {
-                        handleError("<" + LUCENE_PREXIF + ":" + LUCENE_DOCUMENT_ELEMENT
-                                + "> element must contain " + LUCENE_DOCUMENT_UID_ATTRIBUTE
-                                + " attribute");
-                    }
-                    processing = DELETING_PROCESS;
-                } else {
-                    handleError("element " + localName + " is not a <lucene:document> element");
-                }
-                break;
-
-            case IN_DOCUMENT_PROCESS:
-                if (LUCENE_FIELD_ELEMENT.equals(localName)) {
-
-                    // set the field name
-                    this.fieldname = atts.getValue(LUCENE_FIELD_NAME_ATTRIBUTE);
-                    if (this.fieldname == null || this.fieldname.equals("")) {
-                        handleError("<lucene:field> element must contain name attribut");
-                    }
-
-                    // clear the text buffer
-                    this.fieldvalue = new StringBuffer();
-
-                    // set boost value
-                    String fieldboostS = atts.getValue(LUCENE_FIELD_BOOST_ATTRIBUTE);
-                    if (fieldboostS == null) {
-                        fieldboost = 1.0f;
-                    } else {
-                        fieldboost = Float.parseFloat(fieldboostS);
-                    }
-                    processing = IN_FIELD_PROCESS;
-                } else {
-                    handleError("<" + LUCENE_PREXIF + ":" + LUCENE_FIELD_ELEMENT + " was expected!");
-                }
-                break;
-            }
-        } else {
-            // bypass
-            super.startElement(namespaceURI, localName, qName, atts);
-        }
-    }
-
-    public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-
-        // getLogger().debug("END processing: "+processing+" "+localName);
-
-        if (LUCENE_URI.equals(namespaceURI)) {
-            switch (processing) {
-
-            case INDEX_PROCESS:
-                if (LUCENE_INDEXING_ELEMENT.equals(localName)) {
-                    // end of the indexing -> close the indexer
-                    this.closeIndexer();
-                    this.processing = NO_PROCESSING;
-                    super.endElement(namespaceURI, localName, qName);
-                } else {
-                    handleError("</lucene:" + LUCENE_DELETING_ELEMENT + " was expected!");
-                }
-                break;
-
-            case DELETE_PROCESS:
-                if (LUCENE_DELETING_ELEMENT.equals(localName)) {
-                    // end of the deleting -> close the indexer
-                    this.closeIndexer();
-                    this.processing = NO_PROCESSING;
-                    super.endElement(namespaceURI, localName, qName);
-                } else {
-                    handleError("</lucene:" + LUCENE_DELETING_ELEMENT + " was expected!");
-                }
-                break;
-
-            case IN_DOCUMENT_PROCESS:
-                if (LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-                    if (canIndex()) {
-                        // index the document
-                        try {
-                            this.indexer.index(bodyDocument);
-                        } catch (IndexException ex1) {
-                            handleError(ex1);
-                        }
-                    }
-                    if (this.getLogger().isDebugEnabled()) {
-                        this.getLogger().debug(" lucene document: " + this.bodyDocument);
-                    }
-                    bodyDocument = null;
-                    attrs.clear();
-                    attrs.addAttribute(namespaceURI, "uid", "uid", "CDATA", uid);
-                    super.startElement(namespaceURI, localName, qName, attrs);
-                    super.endElement(namespaceURI, localName, qName);
-                    this.processing = INDEX_PROCESS;
-                } else {
-                    handleError("</lucene:" + LUCENE_DOCUMENT_ELEMENT + " was expected!");
-                }
-                break;
-
-            case DELETING_PROCESS:
-                if (LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-                    // delete a document
-                    if (canIndex()) {
-                        try {
-                            indexer.del(uid);
-                        } catch (IndexException ex2) {
-                            handleError(ex2);
-                        }
-                    }
-                    attrs.clear();
-                    attrs.addAttribute(namespaceURI, "uid", "uid", "CDATA", uid);
-                    super.startElement(namespaceURI, localName, qName, attrs);
-                    super.endElement(namespaceURI, localName, qName);
-                    this.processing = DELETE_PROCESS;
-                } else {
-                    handleError("</lucene:" + LUCENE_DOCUMENT_ELEMENT + " was expected!");
-                }
-                break;
-
-            case IN_FIELD_PROCESS:
-                if (LUCENE_FIELD_ELEMENT.equals(localName)) {
-
-                    // create lucene field
-                    Field f = null;
-                    try {
-                        f = index.createField(fieldname, fieldvalue.toString());
-                    } catch (IndexException ex) {
-                        handleError(ex);
-                    }
-                    f.setBoost(fieldboost);
-
-                    // add field to the lucene document
-                    bodyDocument.add(f);
-                    processing = IN_DOCUMENT_PROCESS;
-                } else {
-                    handleError("</lucene:" + LUCENE_FIELD_ELEMENT + " was expected!");
-                }
-                break;
-
-            default:
-                handleError("unknow element '" + LUCENE_FIELD_ELEMENT + "'!");
-            }
-        } else {
-            super.endElement(namespaceURI, localName, qName);
-        }
-    }
-
-    protected boolean canIndex() {
-        return this.indexer != null;
-    }
-
-    public void characters(char[] ch, int start, int length) throws SAXException {
-        if (processing == IN_FIELD_PROCESS) {
-            this.fieldvalue.append(ch, start, length);
-        } else {
-            super.characters(ch, start, length);
-        }
-
-    }
-
-    /**
-     * Configure the Indexer
-     * 
-     * @param id the indexid
-     * @param analyzerid
-     * @param mergeF
-     * @param clear
-     * @throws SAXException
-     */
-    private void initIndexer(Attributes atts) throws SAXException {
-
-        String id = atts.getValue(LUCENE_INDEXING_INDEXID_ATTRIBUTE);
-        String analyzerid = atts.getValue(LUCENE_URI, LUCENE_INDEXING_ANALYZER_ATTRIBUTE);
-        String mergeF = atts.getValue(LUCENE_URI, LUCENE_INDEXING_MERGE_FACTOR_ATTRIBUTE);
-        String clear = atts.getValue(LUCENE_URI, LUCENE_INDEXING_CREATE_ATTRIBUTE);
-        attrs = new AttributesImpl(atts);
-
-        // set the indexer
-        try {
-            IndexManager indexM = (IndexManager) manager.lookup(IndexManager.ROLE);
-            index = indexM.getIndex(id);
-            if (index == null) {
-                handleError("index [" + id + "] no found in the index definition");
-            }
-            indexer = index.getIndexer();
-            manager.release(indexM);
-        } catch (ServiceException ex1) {
-            handleError(ex1);
-
-        } catch (IndexException ex3) {
-            handleError("get Indexer error for index [" + id + "]", ex3);
-        }
-
-        // set a custum analyzer (default: the analyzer of the index)
-        if (analyzerid != null) {
-            Analyzer analyzer = null;
-            try {
-                AnalyzerManager analyzerM = (AnalyzerManager) manager.lookup(IndexManager.ROLE);
-                analyzer = analyzerM.getAnalyzer(analyzerid);
-                indexer.setAnalyzer(analyzer);
-                manager.release(analyzerM);
-            } catch (ServiceException ex1) {
-                handleError(ex1);
-            } catch (ConfigurationException ex2) {
-                handleError("error setting analyzer for index [" + id + "]", ex2);
-            }
-        } else {
-
-            attrs.addAttribute(LUCENE_URI, LUCENE_INDEXING_ANALYZER_ATTRIBUTE,
-                    LUCENE_INDEXING_ANALYZER_ATTRIBUTE, "CDATA", index.getDefaultAnalyzerID());
-        }
-
-        if (canIndex()) {
-            // set clear mode
-            boolean new_index = (clear != null && clear.toLowerCase().equals("true")) ? true
-                    : false;
-            if (new_index) {
-                try {
-                    indexer.clearIndex();
-                } catch (IndexException ex3) {
-                    handleError("error clearing index", ex3);
-                }
-            }
-
-            // set the mergeFactor
-            if (mergeF != null) {
-                int mergeFactor = Integer.parseInt(mergeF);
-                indexer.setMergeFactor(mergeFactor);
-            }
-
-            if (this.getLogger().isDebugEnabled()) {
-                this.getLogger().debug(
-                        "index " + id + " clear: " + new_index + " analyzerid: " + analyzerid
-                                + "mergefactor: " + mergeF);
-            }
-        }
-    }
-    
-    void handleError(String message, Exception ex) throws SAXException {
-        handleError(message + ": " + getExceptionMessage(ex));
-    }
-
-    void handleError(Exception ex) throws SAXException {
-        handleError(getExceptionMessage(ex));
-    }
-
-    protected String getExceptionMessage(Exception ex) throws SAXException {
-        String exMsg = ex.getMessage();
-        String msg = exMsg == null ? "" : " (" + exMsg + ")";
-        return ex.getClass().getName() + msg;
-    }
-
-    /**
-     * Handle Exception or Error
-     * 
-     * @param msg
-     * @param ex
-     * @throws SAXException
-     */
-    void handleError(String msg) throws SAXException {
-        closeIndexer();
-
-        try {
-            Session session = RepositoryUtil.getSession(this.manager, this.request);
-            User sender = session.getIdentity().getUser();
-            UserManager userManager = (UserManager) sender.getItemManager();
-            User recipient = userManager.getUser(this.notificationRecipient);
-            Identifiable[] recipients = { recipient };
-
-            String subject = "indexing-failed-subject";
-            String[] subjectParams = new String[0];
-            String body = "indexing-failed-body";
-            String[] bodyParams = { this.pubId, this.area, this.uuid, this.language, msg };
-
-            Message message = new Message(subject, subjectParams, body, bodyParams, sender,
-                    recipients);
-            NotificationUtil.notify(this.manager, message);
-
-            getLogger().error(
-                    "Could not index document [" + this.pubId + ":" + this.area + ":" + this.uuid
-                            + ":" + this.language + "], sent message to user ["
-                            + this.notificationRecipient + "].");
-
-        } catch (Exception e) {
-            throw new SAXException(e);
-        }
-
-        /*
-         * if (ex == null) { // this.getLogger().error(msg); throw new
-         * SAXException(msg); } else { // this.getLogger().error(msg, ex); throw
-         * new SAXException(msg, ex); }
-         */
-    }
-
-    /**
-     * Close the indexer
-     * 
-     * @throws SAXException
-     */
-    void closeIndexer() throws SAXException {
-        if (index != null) {
-            index.releaseIndexer(indexer);
-        }
-    }
-
-    private String notificationRecipient = null;
-
-    public void configure(Configuration config) throws ConfigurationException {
-        this.notificationRecipient = config.getChild("notify").getAttribute("user");
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformerOptimized.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformerOptimized.java
deleted file mode 100644
index 7c0edee..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/LuceneIndexTransformerOptimized.java
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.transformation;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Map;
-import java.util.Stack;
-
-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.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.caching.CacheableProcessingComponent;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.cocoon.components.search.LuceneCocoonHelper;
-import org.apache.cocoon.components.search.LuceneXMLIndexer;
-import org.apache.cocoon.components.search.components.Indexer;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.commons.lang.BooleanUtils;
-import org.apache.excalibur.source.SourceValidity;
-import org.apache.excalibur.source.impl.validity.NOPValidity;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.store.Directory;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * A lucene index creation transformer.
- * <p>
- * See <a
- * href="http://wiki.cocoondev.org/Wiki.jsp?page=LuceneIndexTransformer">LuceneIndexTransformer
- * </a> documentation on the Cocoon Wiki.
- * </p>
- * <p>
- * TODO: Write more documentation.
- * </p>
- * 
- * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko </a>
- * @author <a href="mailto:conal@nzetc.org">Conal Tuohy </a>
- * @author Nicolas Maisonneuve
- */
-public class LuceneIndexTransformerOptimized extends AbstractTransformer implements
-        CacheableProcessingComponent, Configurable, Contextualizable,
-        Serviceable {
-
-    public static final String ANALYZER_CLASSNAME_CONFIG = "analyzer-classname";
-
-    public static final String ANALYZER_CLASSNAME_PARAMETER = "analyzer-classname";
-
-    public static final String ANALYZER_CLASSNAME_DEFAULT = "org.apache.lucene.analysis.standard.StandardAnalyzer";
-
-    public static final String DIRECTORY_CONFIG = "directory";
-
-    public static final String DIRECTORY_PARAMETER = "directory";
-
-    public static final String DIRECTORY_DEFAULT = "index";
-
-    public static final String MERGE_FACTOR_CONFIG = "merge-factor";
-
-    public static final String MERGE_FACTOR_PARAMETER = "merge-factor";
-
-    public static final int MERGE_FACTOR_DEFAULT = 20;
-
-    public static final String LUCENE_URI = "http://apache.org/cocoon/lucene/1.0";
-
-    public static final String LUCENE_QUERY_ELEMENT = "index";
-
-    public static final String LUCENE_QUERY_ANALYZER_ATTRIBUTE = "analyzer";
-
-    public static final String LUCENE_QUERY_DIRECTORY_ATTRIBUTE = "directory";
-
-    public static final String LUCENE_QUERY_CREATE_ATTRIBUTE = "create";
-
-    public static final String LUCENE_QUERY_MERGE_FACTOR_ATTRIBUTE = "merge-factor";
-
-    public static final String LUCENE_DOCUMENT_ELEMENT = "document";
-
-    public static final String LUCENE_DOCUMENT_URL_ATTRIBUTE = "url";
-
-    public static final String LUCENE_ELEMENT_ATTR_TO_TEXT_ATTRIBUTE = "text-attr";
-
-    public static final String LUCENE_ELEMENT_ATTR_STORE_VALUE = "store";
-
-    public static final String LUCENE_ELAPSED_TIME_ATTRIBUTE = "elapsed-time";
-
-    public static final String CDATA = "CDATA";
-
-    // The 3 states of the state machine
-    private static final int STATE_GROUND = 0; // initial or "ground" state
-
-    private static final int STATE_QUERY = 1; // processing a lucene:index
-                                                // (Query) element
-
-    private static final int STATE_DOCUMENT = 2; // processing a
-                                                    // lucene:document element
-
-    // Initialization time variables
-    protected File workDir = null;
-
-    // service manager
-    private ServiceManager manager;
-
-    private Indexer indexer;
-
-    // Declaration time parameters values (specified in sitemap component
-    // config)
-    private IndexerConfiguration configureConfiguration;
-
-    // Invocation time parameters values (specified in sitemap transform
-    // parameters)
-    private IndexerConfiguration setupConfiguration;
-
-    // Parameters specified in the input document
-    private IndexerConfiguration queryConfiguration;
-
-    // Runtime variables
-    private int processing;
-
-    private boolean createIndex = false;
-
-    private StringBuffer bodyText;
-
-    private Document bodyDocument;
-
-    private String bodyDocumentURL;
-
-    private Stack elementStack = new Stack();
-
-    /**
-     * Storage for the document element's attributes until the document has been
-     * indexed, so that they can be copied to the output along with a boolean
-     * <code>indexed</code> attribute.
-     */
-    private AttributesImpl documentAttributes;
-
-    private long documentStartTime;
-
-    private static String uid(String url) {
-        return url.replace('/', '\u0000'); // + "\u0000" +
-                                            // DateField.timeToString(urlConnection.getLastModified());
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * Configure the transformer. The configuration parameters are stored as
-     * general defaults, which may be over-ridden by parameters specified as
-     * parameters in the sitemap pipeline, or by attributes of the query
-     * element(s) in the XML input document.
-     */
-    public void configure(Configuration conf) throws ConfigurationException {
-        this.configureConfiguration = new IndexerConfiguration(
-                conf.getChild(ANALYZER_CLASSNAME_CONFIG).getValue(
-                        ANALYZER_CLASSNAME_DEFAULT), conf.getChild(
-                        DIRECTORY_CONFIG).getValue(DIRECTORY_DEFAULT), conf
-                        .getChild(MERGE_FACTOR_CONFIG).getValueAsInteger(
-                                MERGE_FACTOR_DEFAULT));
-    }
-
-    /**
-     * Setup the transformer. Called when the pipeline is assembled. The
-     * parameters are those specified as child elements of the
-     * <code>&lt;map:transform&gt;</code> element in the sitemap. These
-     * parameters are optional: If no parameters are specified here then the
-     * defaults are supplied by the component configuration. Any parameters
-     * specified here may be over-ridden by attributes of the lucene:index
-     * element in the input document.
-     */
-    public void setup(SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws ProcessingException, SAXException,
-            IOException {
-        setupConfiguration = new IndexerConfiguration(parameters.getParameter(
-                ANALYZER_CLASSNAME_PARAMETER,
-                configureConfiguration.analyzerClassname), parameters
-                .getParameter(DIRECTORY_PARAMETER,
-                        configureConfiguration.indexDirectory), parameters
-                .getParameterAsInteger(MERGE_FACTOR_PARAMETER,
-                        configureConfiguration.mergeFactor));
-    }
-
-    /**
-     * Contextualize this class
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.workDir = (File) context.get(Constants.CONTEXT_WORK_DIR);
-    }
-
-    public void recycle() {
-        this.processing = STATE_GROUND;
-        if (this.indexer != null) {
-            manager.release(indexer);
-            indexer = null;
-        }
-
-        this.bodyText = null;
-        this.bodyDocument = null;
-        this.bodyDocumentURL = null;
-        this.elementStack.clear();
-        super.recycle();
-    }
-
-    /**
-     * Generate the unique key. This key must be unique inside the space of this
-     * component.
-     * 
-     * @return The generated key
-     */
-    public Serializable getKey() {
-        return "1";
-    }
-
-    /**
-     * Generate the validity object.
-     * 
-     * @return The generated validity object or <code>null</code> if the
-     *         component is currently not cacheable.
-     */
-    public SourceValidity getValidity() {
-        return NOPValidity.SHARED_INSTANCE;
-    }
-
-    public void startDocument() throws SAXException {
-        super.startDocument();
-    }
-
-    public void endDocument() throws SAXException {
-        super.endDocument();
-    }
-
-    /**
-     * Begin the scope of a prefix-URI Namespace mapping.
-     * 
-     * @param prefix
-     *            The Namespace prefix being declared.
-     * @param uri
-     *            The Namespace URI the prefix is mapped to.
-     */
-    public void startPrefixMapping(String prefix, String uri)
-            throws SAXException {
-        if (processing == STATE_GROUND) {
-            super.startPrefixMapping(prefix, uri);
-        }
-    }
-
-    /**
-     * End the scope of a prefix-URI mapping.
-     * 
-     * @param prefix
-     *            The prefix that was being mapping.
-     */
-    public void endPrefixMapping(String prefix) throws SAXException {
-        if (processing == STATE_GROUND) {
-            super.endPrefixMapping(prefix);
-        }
-    }
-
-    public void startElement(String namespaceURI, String localName,
-            String qName, Attributes atts) throws SAXException {
-
-        if (processing == STATE_GROUND) {
-            if (LUCENE_URI.equals(namespaceURI)
-                    && LUCENE_QUERY_ELEMENT.equals(localName)) {
-                String sCreate = atts.getValue(LUCENE_QUERY_CREATE_ATTRIBUTE);
-                createIndex = BooleanUtils.toBoolean(sCreate);
-
-                String analyzerClassname = atts
-                        .getValue(LUCENE_QUERY_ANALYZER_ATTRIBUTE);
-                String indexDirectory = atts
-                        .getValue(LUCENE_QUERY_DIRECTORY_ATTRIBUTE);
-                String mergeFactor = atts
-                        .getValue(LUCENE_QUERY_MERGE_FACTOR_ATTRIBUTE);
-
-                queryConfiguration = new IndexerConfiguration(
-                        analyzerClassname != null ? analyzerClassname
-                                : setupConfiguration.analyzerClassname,
-                        indexDirectory != null ? indexDirectory
-                                : setupConfiguration.indexDirectory,
-                        mergeFactor != null ? Integer.parseInt(mergeFactor)
-                                : setupConfiguration.mergeFactor);
-
-                // propagate the lucene:index to the next stage in the pipeline
-                super.startElement(namespaceURI, localName, qName, atts);
-                processing = STATE_QUERY;
-            } else {
-                super.startElement(namespaceURI, localName, qName, atts);
-            }
-        } else if (processing == STATE_QUERY) {
-            // processing a lucene:index - expecting a lucene:document
-            if (LUCENE_URI.equals(namespaceURI)
-                    && LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-                this.bodyDocumentURL = atts
-                        .getValue(LUCENE_DOCUMENT_URL_ATTRIBUTE);
-                if (this.bodyDocumentURL == null) {
-                    throw new SAXException(
-                            "<lucene:document> must have @url attribute");
-                }
-
-                // Remember the time the document indexing began
-                this.documentStartTime = System.currentTimeMillis();
-                // remember these attributes so they can be passed on to the
-                // next stage in the pipeline,
-                // when this document element is ended.
-                this.documentAttributes = new AttributesImpl(atts);
-                this.bodyText = new StringBuffer();
-                this.bodyDocument = new Document();
-                this.elementStack.clear();
-                processing = STATE_DOCUMENT;
-            } else {
-                throw new SAXException(
-                        "<lucene:index> element can contain only <lucene:document> elements!");
-            }
-        } else if (processing == STATE_DOCUMENT) {
-            elementStack.push(new IndexHelperField(localName,
-                    new AttributesImpl(atts)));
-        }
-    }
-
-    public void endElement(String namespaceURI, String localName, String qName)
-            throws SAXException {
-
-        if (processing == STATE_QUERY) {
-            if (LUCENE_URI.equals(namespaceURI)
-                    && LUCENE_QUERY_ELEMENT.equals(localName)) {
-                // propagate the query element to the next stage in the pipeline
-                super.endElement(namespaceURI, localName, qName);
-                this.processing = STATE_GROUND;
-            } else {
-                throw new SAXException("</lucene:index> was expected!");
-            }
-        } else if (processing == STATE_DOCUMENT) {
-            if (LUCENE_URI.equals(namespaceURI)
-                    && LUCENE_DOCUMENT_ELEMENT.equals(localName)) {
-                // End document processing
-                this.bodyDocument.add(Field.UnStored(
-                        LuceneXMLIndexer.BODY_FIELD, this.bodyText.toString()));
-                this.bodyText = null;
-
-                this.bodyDocument.add(Field.UnIndexed(
-                        LuceneXMLIndexer.URL_FIELD, this.bodyDocumentURL));
-                // store: false, index: true, tokenize: false
-                this.bodyDocument.add(new Field(LuceneXMLIndexer.UID_FIELD,
-                        uid(this.bodyDocumentURL), false, true, false));
-                try {
-                    reindexDocument();
-                } catch (IndexException e) {
-                    throw new SAXException(e);
-                }
-                this.bodyDocumentURL = null;
-
-                // propagate the lucene:document element to the next stage in
-                // the pipeline
-                long elapsedTime = System.currentTimeMillis()
-                        - this.documentStartTime;
-                // documentAttributes = new AttributesImpl();
-                this.documentAttributes.addAttribute("",
-                        LUCENE_ELAPSED_TIME_ATTRIBUTE,
-                        LUCENE_ELAPSED_TIME_ATTRIBUTE, CDATA, String
-                                .valueOf(elapsedTime));
-                super.startElement(namespaceURI, localName, qName,
-                        this.documentAttributes);
-                super.endElement(namespaceURI, localName, qName);
-                this.processing = STATE_QUERY;
-            } else {
-                // End element processing
-                IndexHelperField tos = (IndexHelperField) elementStack.pop();
-                StringBuffer text = tos.getText();
-
-                Attributes atts = tos.getAttributes();
-                boolean attributesToText = atts.getIndex(LUCENE_URI,
-                        LUCENE_ELEMENT_ATTR_TO_TEXT_ATTRIBUTE) != -1;
-                for (int i = 0; i < atts.getLength(); i++) {
-                    // Ignore Lucene attributes
-                    if (LUCENE_URI.equals(atts.getURI(i))) {
-                        continue;
-                    }
-
-                    String atts_lname = atts.getLocalName(i);
-                    String atts_value = atts.getValue(i);
-                    bodyDocument.add(Field.UnStored(localName + "@"
-                            + atts_lname, atts_value));
-                    if (attributesToText) {
-                        text.append(atts_value);
-                        text.append(' ');
-                        bodyText.append(atts_value);
-                        bodyText.append(' ');
-                    }
-                }
-
-                boolean store = atts.getIndex(LUCENE_URI,
-                        LUCENE_ELEMENT_ATTR_STORE_VALUE) != -1;
-                if (text != null && text.length() > 0) {
-                    if (store) {
-                        bodyDocument
-                                .add(Field.Text(localName, text.toString()));
-                    } else {
-                        bodyDocument.add(Field.UnStored(localName, text
-                                .toString()));
-                    }
-                }
-            }
-        } else {
-            // All other tags
-            super.endElement(namespaceURI, localName, qName);
-        }
-    }
-
-    public void characters(char[] ch, int start, int length)
-            throws SAXException {
-
-        if (processing == STATE_DOCUMENT && ch.length > 0 && start >= 0
-                && length > 1 && elementStack.size() > 0) {
-            String text = new String(ch, start, length);
-            ((IndexHelperField) elementStack.peek()).append(text);
-            bodyText.append(text);
-            bodyText.append(' ');
-        } else if (processing == STATE_GROUND) {
-            super.characters(ch, start, length);
-        }
-    }
-
-    private void openWriter() throws IndexException {
-        getLogger().debug("use luceneIndexTransformer with indexer component");
-        // lookup the indexer
-        try {
-            indexer = (Indexer) this.manager.lookup(Indexer.ROLE+"/default");
-        } catch (ServiceException e) {
-            throw new IndexException(e);
-        }
-
-        File indexDirectory = new File(queryConfiguration.indexDirectory);
-        if (!indexDirectory.isAbsolute()) {
-            indexDirectory = new File(workDir,
-                    queryConfiguration.indexDirectory);
-        }
-        // If the index directory doesn't exist, then always create it.
-        boolean indexExists = IndexReader.indexExists(indexDirectory);
-        if (!indexExists) {
-            createIndex = true;
-        }
-        // Get the index directory, creating it if necessary
-        try {
-            Directory directory = LuceneCocoonHelper.getDirectory(
-                    indexDirectory, createIndex);
-            indexer.setIndex(directory);
-        } catch (IOException e) {
-            throw new IndexException("set directory " + indexDirectory
-                    + " error", e);
-        }
-        // Get the analyzer
-        Analyzer analyzer = LuceneCocoonHelper
-                .getAnalyzer(queryConfiguration.analyzerClassname);
-        indexer.setAnalyzer(analyzer);
-
-        this.indexer.setMergeFactor(queryConfiguration.mergeFactor);
-        if (this.createIndex) {
-            this.indexer.clearIndex();
-        }
-    }
-
-    private void reindexDocument() throws IndexException {
-        // The index is being created, so there's no need to delete the doc from
-        // an existing index.
-        // This means we can keep a single IndexWriter open throughout the
-        // process.
-        if (this.indexer == null) {
-            openWriter();
-        }
-        this.indexer.index(this.bodyDocument);
-        this.bodyDocument = null;
-    }
-
-    class IndexHelperField {
-        String localName;
-
-        StringBuffer text;
-
-        Attributes attributes;
-
-        IndexHelperField(String localName, Attributes atts) {
-            this.localName = localName;
-            this.attributes = atts;
-            this.text = new StringBuffer();
-        }
-
-        public Attributes getAttributes() {
-            return attributes;
-        }
-
-        public StringBuffer getText() {
-            return text;
-        }
-
-        public void append(String text) {
-            this.text.append(text);
-        }
-
-        public void append(char[] str, int offset, int length) {
-            this.text.append(str, offset, length);
-        }
-    }
-
-    class IndexerConfiguration {
-        String analyzerClassname;
-
-        String indexDirectory;
-
-        int mergeFactor;
-
-        public IndexerConfiguration(String analyzerClassname,
-                String indexDirectory, int mergeFactor) {
-            this.analyzerClassname = analyzerClassname;
-            this.indexDirectory = indexDirectory;
-            this.mergeFactor = mergeFactor;
-        }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/UuidToUrlTransformer.java b/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/UuidToUrlTransformer.java
deleted file mode 100644
index fe2805f..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/cocoon/transformation/UuidToUrlTransformer.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * <p>
- * Transform
- * <code><search:field name="uid">a5d30250-2b7c-11db-98f0-bef7b2781cf0:en</search:field></code>
- * into the corresponding URL.
- * </p>
- * <p>
- * Parameters:
- * </p>
- * <ul>
- * <li>pubId (optional, defaults to current page)</li>
- * <li>area (optional, defaults to current page)</li>
- * </ul>
- */
-public class UuidToUrlTransformer extends AbstractSAXTransformer {
-
-    private SiteStructure site;
-
-    protected static final String NAMESPACE = "http://apache.org/cocoon/search/1.0";
-    protected static final String ELEMENT_FIELD = "field";
-    protected static final String ATTR_NAME = "name";
-    protected static final String ATTR_VALUE_UID = "uid";
-
-    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters params)
-            throws ProcessingException, SAXException, IOException {
-        super.setup(resolver, objectModel, src, params);
-
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        String url = ServletHelper.getWebappURI(request);
-        URLInformation info = new URLInformation(url);
-
-        String pubId = params.getParameter("pubId", info.getPublicationId());
-        String areaId = params.getParameter("area", info.getArea());
-
-        DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-        try {
-            Publication pub = factory.getPublication(pubId);
-            Area area = pub.getArea(areaId);
-            this.site = area.getSite();
-        } catch (Exception e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    private boolean insideUidElement = false;
-
-    public void startElement(String uri, String name, String raw, Attributes attr)
-            throws SAXException {
-        super.startElement(uri, name, raw, attr);
-        if (uri.equals(NAMESPACE) && name.equals(ELEMENT_FIELD)
-                && attr.getValue(ATTR_NAME).equals(ATTR_VALUE_UID)) {
-            this.insideUidElement = true;
-        }
-    }
-
-    public void characters(char[] ch, int start, int length) throws SAXException {
-        if (this.insideUidElement) {
-            String key = new String(ch);
-            String[] steps = key.split(":");
-            String uuid = steps[0];
-            String language = steps[1];
-
-            if (site.containsByUuid(uuid, language)) {
-                try {
-                    String url = site.getByUuid(uuid, language)
-                            .getDocument()
-                            .getCanonicalDocumentURL();
-                    char[] chars = url.toCharArray();
-                    super.characters(chars, 0, chars.length);
-                } catch (SiteException e) {
-                    throw new SAXException(e);
-                }
-            }
-
-        } else {
-            super.characters(ch, start, length);
-        }
-    }
-
-    public void endElement(String uri, String name, String raw) throws SAXException {
-        this.insideUidElement = false;
-        super.endElement(uri, name, raw);
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexDocument.java b/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexDocument.java
deleted file mode 100644
index 9115814..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexDocument.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import java.util.Arrays;
-
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.xml.sax.InputSource;
-
-/**
- * Usecase to maintain lucene index.
- */
-public class IndexDocument extends DocumentUsecase {
-
-    /**
-     * The URI to copy the document source from.
-     */
-    public static final String SOURCE_URI = "sourceUri";
-
-    public static final String INDEX_ACTION = "indexAction";
-    public static final String INDEX = "index";
-    public static final String DELETE = "delete";
-    public static final String INDEX_AREA = "indexArea";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        SourceResolver resolver = null;
-        Source source = null;
-
-        String action = super.getParameterAsString(INDEX_ACTION);
-        String area = super.getParameterAsString(INDEX_AREA);
-
-        try {
-            String[] formats = getSourceDocument().getResourceType().getFormats();
-            if (!Arrays.asList(formats).contains("luceneIndex")) {
-                getLogger().warn("Document ["+getSourceDocument()+"] is not being indexed because resource type [" + getSourceDocument().getResourceType().getName() + "] does not support indexing!");
-                return;
-            }
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            if (action.equals(INDEX)) {
-                // index
-                source = resolver.resolveURI("cocoon://modules/lucene/index-" + area + ".xml");
-                InputSource xmlInputSource = org.apache.cocoon.components.source.SourceUtil.getInputSource(source);
-            } else if (action.equals(DELETE)) {
-                // delete
-                source = resolver.resolveURI("cocoon://modules/lucene/delete-" + area + ".xml");
-                InputSource xmlInputSource = org.apache.cocoon.components.source.SourceUtil.getInputSource(source);
-            }
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("IndexDocument::getObjectsToLock() called on source document ["
-                    + getSourceDocument() + "]");
-        }
-
-        Node[] objects = { getSourceDocument().getRepositoryNode() };
-        return objects;
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexSite.java b/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexSite.java
deleted file mode 100644
index 7cffd7e..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexSite.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-
-/**
- * Index all documents of the current publication in the current area.
- */
-public class IndexSite extends AbstractUsecase {
-
-    public void doExecute() throws Exception {
-        String url = getSourceURL();
-        URLInformation info = new URLInformation(url);
-        String pubId = info.getPublicationId();
-
-        DocumentFactory factory = getDocumentFactory();
-        Publication pub = factory.getPublication(pubId);
-        Area area = pub.getArea(info.getArea());
-
-        Document[] docs = area.getDocuments();
-
-        IndexUpdater updater = null;
-        try {
-            updater = (IndexUpdater) this.manager.lookup(IndexUpdater.ROLE);
-            for (int i = 0; i < docs.length; i++) {
-                try {
-                    updater.index(getSession(), docs[i].getResourceType(), pubId, area.getName(),
-                            docs[i].getUUID(), docs[i].getLanguage());
-                } catch (Exception e) {
-                    String message = "Error indexing document [" + docs[i].getPath() + ":"
-                            + docs[i].getLanguage() + "], UUID=" + docs[i].getUUID();
-                    addErrorMessage(e + ", see logfiles for more information.");
-                    getLogger().error(message, e);
-                }
-            }
-        } finally {
-            if (updater != null) {
-                this.manager.release(updater);
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdater.java b/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdater.java
deleted file mode 100644
index 9d0140a..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdater.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.lenya.cms.observation.RepositoryListener;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Index updater which updates the index when a document changes.
- */
-public interface IndexUpdater extends RepositoryListener {
-    
-    /**
-     * The service role.
-     */
-    String ROLE = IndexUpdater.class.getName();
-
-    /**
-     * Adds a document to the index.
-     * @param session The session.
-     * @param resourceType The resource type.
-     * @param publicationId The publication ID.
-     * @param area The area.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @throws IndexException if an error occurs.
-     */
-    void index(Session session, ResourceType resourceType, String publicationId, String area, String uuid,
-            String language) throws IndexException;
-
-    /**
-     * Deletes a document from the index.
-     * @param session The session.
-     * @param resourceType The resource type.
-     * @param publicationId The publication ID.
-     * @param area The area.
-     * @param uuid The UUID.
-     * @param language The language.
-     * @throws IndexException if an error occurs.
-     */
-    void delete(Session session, ResourceType resourceType, String publicationId, String area,
-            String uuid, String language) throws IndexException;
-
-}
diff --git a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdaterImpl.java b/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdaterImpl.java
deleted file mode 100644
index f853be8..0000000
--- a/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdaterImpl.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import java.util.Arrays;
-
-import org.apache.avalon.framework.activity.Startable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.search.IndexException;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.observation.DocumentEvent;
-import org.apache.lenya.cms.observation.ObservationRegistry;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Index updater implementation.
- */
-public class IndexUpdaterImpl extends AbstractLogEnabled implements IndexUpdater, Startable,
-        Serviceable, ThreadSafe {
-
-    public void eventFired(RepositoryEvent repoEvent) {
-
-        if (!(repoEvent instanceof DocumentEvent)) {
-            return;
-        }
-        DocumentEvent event = (DocumentEvent) repoEvent;
-
-        try {
-            if (event.getDescriptor().equals(DocumentEvent.CHANGED)) {
-                index(event.getSession(), event.getResourceType(), event.getPublicationId(), event
-                        .getArea(), event.getUuid(), event.getLanguage());
-            } else if (event.getDescriptor().equals(DocumentEvent.REMOVED)) {
-                delete(event.getSession(), event.getResourceType(), event.getPublicationId(), event
-                        .getArea(), event.getUuid(), event.getLanguage());
-            }
-
-        } catch (IndexException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected void updateIndex(String operation, ResourceType resourceType, String pubId,
-            String area, String uuid, String language) throws IndexException {
-
-        String uri = null;
-        try {
-            String[] formats = resourceType.getFormats();
-            if (Arrays.asList(formats).contains("luceneIndex")) {
-                String docString = pubId + "/" + area + "/" + uuid + "/" + language;
-                // + event.getDocumentUrl();
-                uri = "cocoon://modules/lucene/" + operation + "-document/" + docString;
-                SourceUtil.readDOM(uri, this.manager);
-            } else {
-                getLogger().info(
-                        "Document [" + pubId + ":" + area + ":" + uuid + ":" + language
-                                + "] is not being indexed because resource type ["
-                                + resourceType.getName() + "] does not support indexing!");
-            }
-        } catch (Exception e) {
-            getLogger().error("Invoking indexing failed for URL [" + uri + "]: ", e);
-            throw new IndexException(e);
-        }
-    }
-
-    public void start() throws Exception {
-        ObservationRegistry registry = null;
-        try {
-            registry = (ObservationRegistry) this.manager.lookup(ObservationRegistry.ROLE);
-            registry.registerListener(this);
-        } finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-    }
-
-    public void stop() throws Exception {
-    }
-
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public void delete(Session session, ResourceType resourceType, String pubId, String area,
-            String uuid, String language) throws IndexException {
-        updateIndex("delete", resourceType, pubId, area, uuid, language);
-    }
-
-    public void index(Session session, ResourceType resourceType, String pubId, String area,
-            String uuid, String language) throws IndexException {
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-        try {
-            Publication pub = factory.getPublication(pubId);
-            Area areaObj = pub.getArea(area);
-            if (areaObj.contains(uuid, language)) {
-                updateIndex("index", resourceType, pubId, area, uuid, language);
-            } else {
-                getLogger().debug(
-                        "Ignoring document [" + pubId + ":" + area + ":" + uuid + ":" + language
-                                + "] because it doesn't exist (anymore).");
-            }
-        } catch (Exception e) {
-            throw new IndexException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/IndexUpdaterTest.java b/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/IndexUpdaterTest.java
deleted file mode 100644
index d7b9c98..0000000
--- a/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/IndexUpdaterTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-public class IndexUpdaterTest extends AbstractAccessControlTest {
-
-    public void testIndexUpdater() throws Exception {
-        Session session = login("lenya");
-
-        Publication pub = getPublication(session, "test");
-        SiteStructure site = pub.getArea("authoring").getSite();
-        
-        SiteNode sourceNode = site.getNode("/tutorial");
-        SiteNode destNode = site.getNode("/concepts");
-        
-        Document sourceDoc = sourceNode.getLink(sourceNode.getLanguages()[0]).getDocument();
-        Document destDoc = destNode.getLink(destNode.getLanguages()[0]).getDocument();
-
-        sourceDoc.getRepositoryNode().lock();
-
-        DocumentManager docMgr = null;
-        try {
-            docMgr = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            docMgr.copy(sourceDoc, destDoc.getLocator());
-        } finally {
-            if (docMgr != null) {
-                getManager().release(docMgr);
-            }
-        }
-        checkSearchResults(pub, Publication.AUTHORING_AREA);
-
-    }
-
-    protected void checkSearchResults(Publication pub, String area) throws Exception {
-//        String searchUri = "cocoon://modules/lucene/search.xml?queryString=tutorial";
-//        String searchUri = "cocoon://modules/lucene/search/" + pub.getId() + "/" + area + ".xml";
-//        org.w3c.dom.Document searchResult = SourceUtil.readDOM(searchUri, getManager());
-        
-//        DocumentHelper.writeDocument(searchResult, System.out);
-    }
-}
diff --git a/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/SearchTest.java b/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/SearchTest.java
deleted file mode 100644
index 0b1a6ea..0000000
--- a/trunk/src/modules/lucene/java/test/org/apache/lenya/cms/lucene/SearchTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.lucene;
-
-import org.apache.cocoon.components.search.Index;
-import org.apache.cocoon.components.search.LuceneCocoonSearcher;
-import org.apache.cocoon.components.search.components.IndexManager;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-
-/**
- * Test for search functionality.
- */
-public class SearchTest extends AbstractAccessControlTest {
-
-    public void testSearch() throws Exception {
-        LuceneCocoonSearcher searcher = null;
-        IndexManager indexManager = null;
-        try {
-            searcher = (LuceneCocoonSearcher) getManager().lookup(LuceneCocoonSearcher.ROLE);
-            indexManager = (IndexManager) getManager().lookup(IndexManager.ROLE);
-            Index index = indexManager.getIndex("test-authoring");
-            searcher.setDirectory(index.getDirectory());
-
-            Term term = new Term("body", "tutorial");
-            Query query = new TermQuery(term);
-
-            Hits hits = searcher.search(query);
-
-            /*
-             * The indexing doesn't work at the moment when the tests are executed because the
-             * cocoon:// protocol is not supported in the test environment.
-             * 
-             * assertTrue(hits.length() > 0);
-             */
-            
-        } finally {
-            if (searcher != null) {
-                getManager().release(searcher);
-            }
-            if (indexManager != null) {
-                getManager().release(indexManager);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules/lucene/menus.xmap b/trunk/src/modules/lucene/menus.xmap
deleted file mode 100644
index 6fc7e18..0000000
--- a/trunk/src/modules/lucene/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/lucene/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/lucene/resources/i18n/cmsui.xml b/trunk/src/modules/lucene/resources/i18n/cmsui.xml
deleted file mode 100644
index 11f1e34..0000000
--- a/trunk/src/modules/lucene/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Search">Search</message>
-  <message key="Rank">Rank</message>
-  <message key="Score">Score</message>
-  <message key="No Title">(no title)</message>
-  <message key="hits">{0} hits</message>
-  <message key="Pages">Pages</message>
-  
-  <message key="indexing-failed-subject">Indexing failed</message>
-  <message key="indexing-failed-body">The document [{0}:{1}:{2}:{3}] could not be indexed: {4}</message>
-  
-  <message key="New Search Page">New Search Page</message>
-  <message key="Re-Index Site">Re-Index Site</message>
-  <message key="re-index site?">Do you want to re-index all documents of this publication in the current area?</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/lucene/resources/i18n/cmsui_de.xml b/trunk/src/modules/lucene/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 59bf06d..0000000
--- a/trunk/src/modules/lucene/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Search">Suche</message>
-  <message key="Rank">Rang</message>
-  <message key="Score">Quote</message>
-  <message key="No Title">(kein Titel)</message>
-  <message key="hits">{0} Ergebnisse</message>
-  <message key="Pages">Seiten</message>
-  

-  <message key="indexing-failed-subject">Indexierung fehlgeschlagen</message>
-  <message key="indexing-failed-body">Das Dokument [{0}:{1}:{2}:{3}] konnte nicht indexiert werden: {4}</message>
-  
-  <message key="New Search Page">Neue Suchseite</message>
-  <message key="Re-Index Site">Website neu indexieren</message>
-  <message key="re-index site?">
-    Wollen Sie alle Dokumente dieser Publikation in der aktuellen Area neu indexieren?
-  </message>
-</catalogue>

-

diff --git a/trunk/src/modules/lucene/sitemap.xmap b/trunk/src/modules/lucene/sitemap.xmap
deleted file mode 100644
index bc40340..0000000
--- a/trunk/src/modules/lucene/sitemap.xmap
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-<!-- =========================== Components ================================ -->
-  <map:components>
-
-    <map:actions default="request">
-      <map:action name="request" src="org.apache.cocoon.acting.RequestParamAction"/>
-    </map:actions>
-
-    <map:transformers default="xslt">
-      <map:transformer name="index2" logger="sitemap.transformer.luceneindextransformer2" src="org.apache.cocoon.transformation.LuceneIndexTransformer2">
-        <notify user="lenya"/>
-      </map:transformer>
-      <map:transformer name="cinclude" src="org.apache.cocoon.transformation.CIncludeTransformer"/>
-      <map:transformer name="uuid2url" src="org.apache.cocoon.transformation.UuidToUrlTransformer"/>
-    </map:transformers>
-
-  </map:components>
-
-<!-- =========================== Pipelines ================================ -->
-
-  <map:pipelines>
-
-    <map:pipeline>
-      <map:match pattern="modules/*/**">
-        <map:mount uri-prefix="modules/{1}/" src="context://lenya/modules/{1}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-    </map:pipeline>
-
-    <map:pipeline>
-
-      <map:match pattern="opensearch.xml">
-          <!-- TODO: implement the opensearch results to make the search results available for an external app -->
-        <map:generate type="search">
-          <map:parameter name="index" value="{index-path:{page-envelope:publication-id}-{page-envelope:area}}"/>
-        </map:generate>
-
-        <map:transform src="fallback://lenya/modules/lucene/xslt/search2opensearch.xsl">
-          <map:parameter name="root" value="/{page-envelope:publication-id}/{page-envelope:area}"/>
-          <map:parameter name="document-uuid" value="{page-envelope:document-uuid}"/>
-          <map:parameter name="publication-id" value="{page-envelope:publication-id}"/>
-          <map:parameter name="document-type" value="{page-envelope:document-type}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-          <map:parameter name="page-length" value="{pageLength}"/>
-        </map:transform>
-
-        <map:transform type="cinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <map:match pattern="externalopensearch.xml">
-        <!-- TODO: the location of the searchengine should be configurable somewhere else -->
-        <!-- TODO: use the queryString parameter: request action -->
-        <map:generate src="fallback://lenya/modules/lucene/xslt/opensearch.xml"/>
-
-        <map:transform src="fallback://lenya/modules/lucene/xslt/opensearch2html.xsl">
-          <map:parameter name="url" value="{page-envelope:document-url}"/>
-          <map:parameter name="area" value="{page-envelope:area}"/>
-          <map:parameter name="pub" value="{page-envelope:publication-id}"/>
-          <map:parameter name="root" value="/{page-envelope:publication-id}/{page-envelope:area}"/>
-          <map:parameter name="opensearch" value="opensearch.xml"/>
-        </map:transform>
-
-        <map:transform type="cinclude"/>
-
-        <map:transform src="fallback://xslt/page2xhtml-{page-envelope:document-type}.xsl">
-          <map:parameter name="root" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}}"/>
-          <map:parameter name="document-uuid" value="{page-envelope:document-uuid}"/>
-          <map:parameter name="document-type" value="{page-envelope:document-type}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-          <map:parameter name="url" value="{page-envelope:document-url}"/>
-        </map:transform>
-
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {1:pub}/{2:area}/{3:queryString} -->
-      <map:match pattern="search-generator/*/*/*">
-        <map:generate type="search">
-          <map:parameter name="index" value="{index-path:{1}-{2}}"/>
-          <map:parameter name="query" value="title:{3} OR description:{3} OR subject:{3} OR body:{3}"/>
-        </map:generate>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {1:pub}/{2:area} -->
-      <map:match pattern="search/*/*.xml">
-        <map:generate src="cocoon:/search-generator/{1}/{2}/{request-param:queryString}"/>
-        <map:transform type="uuid2url">
-          <map:parameter name="pubId" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <map:match pattern="search.xml">
-        <map:generate src="cocoon:/search/{page-envelope:publication-id}/{page-envelope:area}.xml"/>
-        <map:transform src="fallback://lenya/modules/lucene/xslt/search2html.xsl">
-          <map:parameter name="url" value="{page-envelope:document-url}"/>
-          <map:parameter name="area" value="{page-envelope:area}"/>
-          <map:parameter name="pub" value="{page-envelope:publication-id}"/>
-          <map:parameter name="root" value="/{page-envelope:publication-id}/{page-envelope:area}"/>
-          <map:parameter name="use-request-parameters" value="true"/>
-          <map:parameter name="queryString" value="{request-param:queryString}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:transform type="uuid2url"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- {pub-id}/{area}/{uuid}/{language} -->
-      <map:match pattern="index-document/*/*/*/*">
-        <map:generate src="{resource-type:{doc-info:{1}:{2}:{3}:{4}:resourceType}:format-luceneIndex}/{1}/{2}/{3}/{4}"/>
-        <map:transform src="fallback://lenya/modules/lucene/xslt/index.xsl">
-          <map:parameter name="index" value="{1}-{2}"/>
-          <map:parameter name="id" value="{3}:{4}"/>
-        </map:transform>
-        <map:transform type="index2">
-          <map:parameter name="publicationId" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="uuid" value="{3}"/>
-          <map:parameter name="language" value="{4}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {pub-id}/{area}/{uuid}/{language} -->
-      <map:match pattern="delete-document/*/*/*/*">
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:transform src="fallback://lenya/modules/lucene/xslt/delete.xsl">
-          <map:parameter name="index" value="{1}-{2}"/>
-          <map:parameter name="id" value="{3}:{4}"/>
-        </map:transform>
-
-        <map:transform type="index2">
-          <map:parameter name="publicationId" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="uuid" value="{3}"/>
-          <map:parameter name="language" value="{4}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/lucene/usecases/indexSite.jx b/trunk/src/modules/lucene/usecases/indexSite.jx
deleted file mode 100644
index 5f034a8..0000000
--- a/trunk/src/modules/lucene/usecases/indexSite.jx
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: login.jx 529195 2007-04-16 10:45:27Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-
-  <jx:set var="pub" value="${usecase.getParameter('publication')}"/>
-
-  <page:title>
-    <i18n:text>Re-Index Site</i18n:text>
-  </page:title>
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    <p>
-      <i18n:text>re-index site?</i18n:text>
-    </p>
-    <form>
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      <p>
-        <input i18n:attr="value" name="submit" type="submit" value="Submit"/>
-        <input i18n:attr="value" name="cancel" type="submit" value="Cancel"/>
-      </p>
-    </form>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/lucene/usecases/lucene/externalOpensearch.jx b/trunk/src/modules/lucene/usecases/lucene/externalOpensearch.jx
deleted file mode 100644
index 9fa3339..0000000
--- a/trunk/src/modules/lucene/usecases/lucene/externalOpensearch.jx
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<cinclude:includexml xmlns:cinclude="http://apache.org/cocoon/include/1.0">
-  <cinclude:src>cocoon://modules/lucene/externalopensearch.xml</cinclude:src>
-</cinclude:includexml>
diff --git a/trunk/src/modules/lucene/usecases/lucene/opensearch.jx b/trunk/src/modules/lucene/usecases/lucene/opensearch.jx
deleted file mode 100644
index 361bf67..0000000
--- a/trunk/src/modules/lucene/usecases/lucene/opensearch.jx
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<cinclude:includexml xmlns:cinclude="http://apache.org/cocoon/include/1.0">
-  <cinclude:src>cocoon://modules/lucene/opensearch.xml</cinclude:src>
-</cinclude:includexml>
diff --git a/trunk/src/modules/lucene/usecases/lucene/search.jx b/trunk/src/modules/lucene/usecases/lucene/search.jx
deleted file mode 100644
index 83c57f8..0000000
--- a/trunk/src/modules/lucene/usecases/lucene/search.jx
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<cinclude:includexml xmlns:cinclude="http://apache.org/cocoon/include/1.0">
-  <cinclude:src>cocoon://modules/lucene/search.xml</cinclude:src>
-</cinclude:includexml>
diff --git a/trunk/src/modules/lucene/xslt/delete.xsl b/trunk/src/modules/lucene/xslt/delete.xsl
deleted file mode 100644
index 9aa304f..0000000
--- a/trunk/src/modules/lucene/xslt/delete.xsl
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lucene="http://apache.org/cocoon/lucene/1.0"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:param name="index"/>
-<xsl:param name="id"/>
-
-<xsl:template match="/">  
-  <lucene:delete indexid="{$index}">
-    <lucene:document uid="{$id}"/>
-  </lucene:delete>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/lucene/xslt/index.xsl b/trunk/src/modules/lucene/xslt/index.xsl
deleted file mode 100644
index d10955e..0000000
--- a/trunk/src/modules/lucene/xslt/index.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lucene="http://apache.org/cocoon/lucene/1.0"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:param name="index"/>
-<xsl:param name="id"/>
-
-<xsl:template match="/lucene:index">
-  <lucene:index clear="false" indexid="{$index}" merge-factor="100">
-    <lucene:document uid="{$id}">
-      <xsl:apply-templates select="lucene:document/*"/>
-    </lucene:document>
-  </lucene:index>  
-</xsl:template>
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/lucene/xslt/opensearch.xml b/trunk/src/modules/lucene/xslt/opensearch.xml
deleted file mode 100644
index 172f429..0000000
--- a/trunk/src/modules/lucene/xslt/opensearch.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-  <rss xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" >
-    <channel>
-      <title>history</title>
-      <link>history</link>
-      <description>Search A9.com</description>
-      <language>en-us</language>
-      <openSearch:totalResults>4230000</openSearch:totalResults>
-      <openSearch:startIndex>1</openSearch:startIndex>
-      <openSearch:itemsPerPage>10</openSearch:itemsPerPage>
-      <nutch:query xmlns:nutch="http://www.nutch.org/opensearchrss/1.0/">ofd</nutch:query>
-      <item>
-        <title>New York City History</title>
-        <link>http://www.columbia.edu/cu/lweb/eguides/amerihist/nyc.html</link>
-        <description>... Harlem.NYC - A virtual tour and information on 
-        businesses ...  with historic photos of Columbia's own New York 
-        neighborhood ... Internet Resources for the City's History. ...</description>
-      </item>
-      <item>
-        <title>Gotham Center for New York City History</title>
-        <link>http://www.gothamcenter.org/</link>
-        <description>... Submit Events Edit Your Submission. Main Neighborhood
-        Stories NYC History in the ... The Gotham Center for New York City History
-        is supported by The CUNY Graduate ...</description>
-      </item>
-      <item>
-        <title>Welcome to the Museum of the City of New York</title>
-        <link>http://www.mcny.org/</link>
-        <description>... a list with the event staff. Additional information
-        will be included in the confirming email.  Museum of the City
-        of New York.</description>
-      </item>
-    </channel>
-  </rss>
diff --git a/trunk/src/modules/lucene/xslt/opensearch2html.xsl b/trunk/src/modules/lucene/xslt/opensearch2html.xsl
deleted file mode 100644
index adee347..0000000
--- a/trunk/src/modules/lucene/xslt/opensearch2html.xsl
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- CVS $Id: search2html.xsl 47285 2004-09-27 12:52:44Z cziegeler $ -->
-<xsl:stylesheet 
-  version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:search="http://apache.org/cocoon/search/1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
-  xmlns:nutch="http://www.nutch.org/opensearchrss/1.0/"
-  exclude-result-prefixes="xhtml cinclude search xsl openSearch"
->
-
-<xsl:param name="url"/>
-<xsl:param name="area"/>
-<xsl:param name="pub"/>
-<xsl:param name="root"/>
-<xsl:param name="opensearch"/>
-
-  <xsl:template match="/rss/channel">  
-    <cmsbody>
-      <cinclude:include src="cocoon:/modules/sitetree/{$pub}/{$area}/breadcrumb{$url}.xml"/>
-      <cinclude:include src="cocoon:/modules/sitetree/{$pub}/{$area}/menu{$url}.xml"/>
-      <cinclude:include src="cocoon:/modules/sitetree/{$pub}/{$area}/tabs{$url}.xml"/>
-      <cinclude:include src="cocoon:/modules/sitetree/{$pub}/{$area}/search{$url}.xml"/>      
-      <xhtml:div id="body">
-        <h1>
-          <xsl:value-of select="openSearch:totalResults"/> hit(s) on search engine
-          <a href="{link}"><xsl:value-of select="title"/></a>
-          <xsl:apply-templates select="nutch:query"/>
-	</h1>
-	
-	<p><xsl:value-of select="description"/></p>
-        <ul>
-          <xsl:apply-templates select="item"/>
-        </ul>
-        <p><a href="{$root}{$url}">Return to document</a></p>
-      </xhtml:div>
-    </cmsbody>
-  </xsl:template>
-
-  <xsl:template match="nutch:query">
-    with query <em><xsl:value-of select="."/></em>
-  </xsl:template>
-
-  <xsl:template match="item">
-    <li>
-      <h2><a href="{link}"><xsl:value-of select="title"/></a></h2>
-      <p><xsl:value-of select="description"/></p>
-    </li>
-  </xsl:template>
-
-<xsl:template match="@*|node()" priority="-1">
-<xsl:apply-templates/>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/lucene/xslt/search2html.xsl b/trunk/src/modules/lucene/xslt/search2html.xsl
deleted file mode 100644
index 57466d9..0000000
--- a/trunk/src/modules/lucene/xslt/search2html.xsl
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- CVS $Id: search2html.xsl 47285 2004-09-27 12:52:44Z cziegeler $ -->
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:search="http://apache.org/cocoon/search/1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  exclude-result-prefixes="cinclude search xhtml"
->
-
-  <xsl:param name="url"/>
-  <xsl:param name="area"/>
-  <xsl:param name="pub"/>
-  <xsl:param name="root"/>
-  <xsl:param name="lenya.usecase"/>
-  <xsl:param name="queryString"/>
-  
-  <xsl:variable name="usecaseParam">
-    <xsl:if test="$lenya.usecase != ''">
-      <xsl:text>lenya.usecase=</xsl:text>
-      <xsl:value-of select="$lenya.usecase"/>
-      <xsl:text>&amp;</xsl:text>
-    </xsl:if>
-  </xsl:variable>
-  
-  <xsl:template match="search:results">  
-    <div id="body">
-      <xsl:apply-templates/>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="search:hits">
-    <!--
-    <h1>
-        <xsl:value-of select="@total-count"/> hit<xsl:if test="@total-count &gt; 1">s</xsl:if>
-        <xsl:text>, </xsl:text>
-        <xsl:value-of select="@count-of-pages"/> result page<xsl:if test="@count-of-pages &gt; 1">s</xsl:if> on query
-        <em><xsl:value-of select="/search:results/@query-string"/></em>
-    </h1>
-    -->
-    <h1><i18n:text>Search</i18n:text></h1>
-    <form class="search-results-form" action="" method="get">
-      <input name="queryString" type="text" style="width: 400px" value="{$queryString}"
-      />&#160;<input type="submit" name="submit" value="Search" i18n:attr="value"/>
-    </form>
-    
-    <h2>
-      <i18n:translate>
-        <i18n:text>hits</i18n:text>
-        <i18n:param><xsl:value-of select="@total-count"/></i18n:param>
-      </i18n:translate>
-    </h2>
-    <ul class="search-results">
-      <xsl:apply-templates/>
-    </ul>
-    
-    <p>
-      <i18n:text>Pages</i18n:text><xsl:text>: </xsl:text>
-
-      <xsl:if test="count(/search:results/search:navigation/search:navigation-page) &gt; 1">
-        <xsl:for-each select="/search:results/search:navigation/search:navigation-page">
-          <xsl:call-template name="navigation-link"> 
-            <xsl:with-param name="query-string" select="/search:results/@query-string"/>
-            <xsl:with-param name="page-length" select="/search:results/@page-length"/>
-            <xsl:with-param name="start-index" select="@start-index"/>
-            <xsl:with-param name="link-text" select="position()"/>
-          </xsl:call-template>
-        </xsl:for-each>
-      </xsl:if>  
-      
-      <xsl:call-template name="navigation-paging-link">
-        <xsl:with-param name="query-string" select="/search:results/@query-string"/>
-        <xsl:with-param name="page-length" select="/search:results/@page-length"/>
-        <xsl:with-param name="has-previous" select="/search:results/search:navigation/@has-previous"/>
-        <xsl:with-param name="has-next" select="/search:results/search:navigation/@has-next"/>
-        <xsl:with-param name="previous-index" select="/search:results/search:navigation/@previous-index"/>
-        <xsl:with-param name="next-index" select="/search:results/search:navigation/@next-index"/>
-      </xsl:call-template>
-    </p>
-    
-  </xsl:template>
-
-  <xsl:template match="search:navigation">
-    <!--
-    <p>
-    <xsl:call-template name="navigation-paging-form">
-      <xsl:with-param name="query-string"><xsl:value-of select="/search:results/@query-string"/></xsl:with-param>
-      <xsl:with-param name="page-length"><xsl:value-of select="/search:results/@page-length"/></xsl:with-param>
-      <xsl:with-param name="has-previous"><xsl:value-of select="@has-previous"/></xsl:with-param>
-      <xsl:with-param name="has-next"><xsl:value-of select="@has-next"/></xsl:with-param>
-      <xsl:with-param name="previous-index"><xsl:value-of select="@previous-index"/></xsl:with-param>
-      <xsl:with-param name="next-index"><xsl:value-of select="@next-index"/></xsl:with-param>
-    </xsl:call-template>
-    </p>
-    -->
-  </xsl:template>
-  
-  <xsl:template match="search:hit">
-    <li class="search-result">
-      <div class="search-result-rank"><xsl:value-of select="@rank + 1"/>. </div>
-      <div class="search-result-title">
-        <xsl:variable name="titleField" select="search:field[attribute::name='title']"/>
-        <xsl:variable name="title">
-          <xsl:choose>
-            <xsl:when test="normalize-space($titleField) != ''">
-              <xsl:value-of select="$titleField"/>
-            </xsl:when>
-            <xsl:otherwise><i18n:text>No Title</i18n:text></xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
-        <xsl:choose>
-          <xsl:when test="normalize-space(search:field[@name = 'uid']) != ''">
-            <a href="{$root}{search:field[attribute::name='uid']}"><xsl:value-of select="$title"/></a>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:value-of select="$title"/> (<i18n:text>not in site structure</i18n:text>)
-          </xsl:otherwise>
-        </xsl:choose>
-      <span class="search-result-score"> (<i18n:text>Score</i18n:text>: <xsl:value-of select="format-number( @score, '### %' )"/>)</span>
-      </div>
-      <div class="search-result-description"><xsl:value-of select="search:field[attribute::name='description']"/></div>
-    </li>
-  </xsl:template>
-
-  <xsl:template name="navigation-paging-form">
-    <xsl:param name="page-length"/>
-    <xsl:param name="has-previous"/>
-    <xsl:param name="has-next"/>
-    <xsl:param name="previous-index"/>
-    <xsl:param name="next-index"/>
-
-    <xsl:if test="$has-previous = 'true'">
-      <form action="" id="form-previous">
-        <xsl:if test="$lenya.usecase != ''">
-          <input type="hidden" name="lenya.usecase" value="{$lenya.usecase}"/>
-        </xsl:if>
-        <input type="hidden" name="startIndex" value="{$previous-index}"/>
-        <input type="hidden" name="queryString" value="{$queryString}"/>
-        <input type="hidden" name="pageLength" value="{$page-length}"/>
-        <input type="submit" name="previous" value="Previous" i18n:attr="value"/>
-      </form>
-    </xsl:if>
-    
-    <xsl:if test="$has-next = 'true'">
-      <form action="" id="form-next">
-        <xsl:if test="lenya.usecase != ''">
-          <input type="hidden" name="lenya.usecase" value="{$lenya.usecase}"/>
-        </xsl:if>
-        <input type="hidden" name="startIndex" value="{$next-index}"/>
-        <input type="hidden" name="queryString" value="{$queryString}"/>
-        <input type="hidden" name="pageLength" value="{$page-length}"/>
-        <input type="submit" name="next" value="Next" i18n:attr="value"/>
-      </form>
-    </xsl:if>
-    
-  </xsl:template>
-
-  <xsl:template name="navigation-paging-link">
-    <xsl:param name="page-length"/>
-    <xsl:param name="has-previous"/>
-    <xsl:param name="has-next"/>
-    <xsl:param name="previous-index"/>
-    <xsl:param name="next-index"/>
-
-    <xsl:if test="$has-previous = 'true'">
-      <xsl:call-template name="navigation-link">
-        <xsl:with-param name="page-length"><xsl:value-of select="$page-length"/></xsl:with-param>
-        <xsl:with-param name="start-index"><xsl:value-of select="$previous-index"/></xsl:with-param>
-        <xsl:with-param name="link-text">&lt;</xsl:with-param>
-      </xsl:call-template>
-    </xsl:if>
-    <xsl:text> </xsl:text>
-    <xsl:if test="$has-next = 'true'">
-      <a href="?{$usecaseParam}startIndex={$next-index}&amp;queryString={$queryString}&amp;pageLength={$page-length}">
-        <xsl:text>&gt;</xsl:text>
-      </a>
-    </xsl:if>
-  </xsl:template>
-  
-  <xsl:template name="navigation-link">
-    <xsl:param name="query-string"/>
-    <xsl:param name="page-length"/>
-    <xsl:param name="start-index"/>
-    <xsl:param name="link-text"/>
-
-    <a href="?{$usecaseParam}startIndex={$start-index}&amp;queryString={$queryString}&amp;pageLength={$page-length}">
-      <xsl:value-of select="$link-text"/>
-    </a>
-    <xsl:text> </xsl:text>
-  </xsl:template>
-
-  <xsl:template match="@*|node()" priority="-2"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-  <xsl:template match="text()" priority="-1"><xsl:value-of select="."/></xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/lucene/xslt/search2opensearch.xsl b/trunk/src/modules/lucene/xslt/search2opensearch.xsl
deleted file mode 100644
index 18f8039..0000000
--- a/trunk/src/modules/lucene/xslt/search2opensearch.xsl
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- CVS $Id: search2html.xsl 47285 2004-09-27 12:52:44Z cziegeler $ -->
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:search="http://apache.org/cocoon/search/1.0"
-  xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
-  exclude-result-prefixes="openSearch"
->
-
-<xsl:param name="language"/>
-<xsl:param name="root"/>
-<xsl:param name="publication-id"/>
-<xsl:param name="page-length"/>
-
-  <xsl:template match="search:results">  
-    <rss version="2.0">
-      <title><xsl:value-of select="$publication-id"/></title>
-      <link><xsl:value-of select="$root"/></link>
-      <description></description>
-      <language><xsl:value-of select="$language"/></language>
-      <xsl:apply-templates/>
-    </rss>
-  </xsl:template>
-
-
-  <xsl:template match="search:hits">
-      <openSearch:totalResults><xsl:value-of select="@total-count"/></openSearch:totalResults>
-      <openSearch:startIndex><xsl:value-of select="@count-of-pages"/></openSearch:startIndex>
-      <openSearch:itemsPerPage><xsl:value-of select="$page-length"/></openSearch:itemsPerPage>
-      
-      <xsl:for-each select="/search:results/search:navigation/search:navigation-page">
-        <xsl:call-template name="navigation-link"> 
-          <xsl:with-param name="query-string" select="/search:results/@query-string"/>
-          <xsl:with-param name="page-length" select="/search:results/@page-length"/>
-          <xsl:with-param name="start-index" select="@start-index"/>
-          <xsl:with-param name="link-text" select="position()"/>
-        </xsl:call-template>
-      </xsl:for-each>
-    
-    <xsl:call-template name="navigation-paging-link">
-      <xsl:with-param name="query-string" select="/search:results/@query-string"/>
-      <xsl:with-param name="page-length" select="/search:results/@page-length"/>
-      <xsl:with-param name="has-previous" select="/search:results/search:navigation/@has-previous"/>
-      <xsl:with-param name="has-next" select="/search:results/search:navigation/@has-next"/>
-      <xsl:with-param name="previous-index" select="/search:results/search:navigation/@previous-index"/>
-      <xsl:with-param name="next-index" select="/search:results/search:navigation/@next-index"/>
-    </xsl:call-template>
-    
-    <xsl:apply-templates/>
-    
-  </xsl:template>
-
-  <xsl:template match="search:navigation">
-    <xsl:call-template name="navigation-paging-form">
-      <xsl:with-param name="query-string"><xsl:value-of select="/search:results/@query-string"/></xsl:with-param>
-      <xsl:with-param name="page-length"><xsl:value-of select="/search:results/@page-length"/></xsl:with-param>
-      <xsl:with-param name="has-previous"><xsl:value-of select="@has-previous"/></xsl:with-param>
-      <xsl:with-param name="has-next"><xsl:value-of select="@has-next"/></xsl:with-param>
-      <xsl:with-param name="previous-index"><xsl:value-of select="@previous-index"/></xsl:with-param>
-      <xsl:with-param name="next-index"><xsl:value-of select="@next-index"/></xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  
-  <xsl:template match="search:hit">
-      <item>
-        <title><xsl:value-of select="search:field[@name='title']"/></title>
-        <link><xsl:value-of select="@uri"/></link>
-        <description><xsl:value-of select="search:field[@name='description']"/></description>
-      </item>
-  </xsl:template>
-
-  <xsl:template name="navigation-paging-form">
-    <xsl:param name="query-string"/>
-    <xsl:param name="page-length"/>
-    <xsl:param name="has-previous"/>
-    <xsl:param name="has-next"/>
-    <xsl:param name="previous-index"/>
-    <xsl:param name="next-index"/>
-
-    <xsl:if test="$has-previous = 'true'">
-      <form action="findIt" id="form-opensearch_previous">
-        <input type="hidden" name="startIndex" value="{$previous-index}"/>
-        <input type="hidden" name="queryString" value="{$query-string}"/>
-        <input type="hidden" name="pageLength" value="{$page-length}"/>
-        <input type="submit" name="previous" value="previous"/>
-      </form>
-    </xsl:if>
-    
-    <xsl:if test="$has-next = 'true'">
-      <form action="findIt" id="form-opensearch_next">
-        <input type="hidden" name="startIndex" value="{$next-index}"/>
-        <input type="hidden" name="queryString" value="{$query-string}"/>
-        <input type="hidden" name="pageLength" value="{$page-length}"/>
-        <input type="submit" name="next" value="next"/>
-      </form>
-    </xsl:if>
-    
-  </xsl:template>
-
-  <xsl:template name="navigation-paging-link">
-    <xsl:param name="query-string"/>
-    <xsl:param name="page-length"/>
-    <xsl:param name="has-previous"/>
-    <xsl:param name="has-next"/>
-    <xsl:param name="previous-index"/>
-    <xsl:param name="next-index"/>
-
-    <xsl:if test="$has-previous = 'true'">
-      
-      <xsl:call-template name="navigation-link">
-        <xsl:with-param name="query-string"><xsl:value-of select="$query-string"/></xsl:with-param>
-        <xsl:with-param name="page-length"><xsl:value-of select="$page-length"/></xsl:with-param>
-        <xsl:with-param name="start-index"><xsl:value-of select="$previous-index"/></xsl:with-param>
-        <xsl:with-param name="link-text">Previous Page Of Hits</xsl:with-param>
-      </xsl:call-template>
-    </xsl:if>
-    &#160;
-    <xsl:if test="$has-next = 'true'">
-      <a href="findIt?startIndex={$next-index}&amp;queryString={$query-string}&amp;pageLength={$page-length}">
-        Next Page Of Hits
-      </a>
-    </xsl:if>
-  </xsl:template>
-  
-  <xsl:template name="navigation-link">
-    <xsl:param name="query-string"/>
-    <xsl:param name="page-length"/>
-    <xsl:param name="start-index"/>
-    <xsl:param name="link-text"/>
-
-    <a href="findIt?startIndex={$start-index}&amp;queryString={$query-string}&amp;pageLength={$page-length}">
-      <xsl:value-of select="$link-text"/>
-    </a>
-    &#160;
-  </xsl:template>
-
-  <xsl:template match="@*|node()" priority="-2"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-  <xsl:template match="text()" priority="-1"><xsl:value-of select="."/></xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/menubar/config/module.xml b/trunk/src/modules/menubar/config/module.xml
deleted file mode 100644
index bc2d743..0000000
--- a/trunk/src/modules/menubar/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.menubar</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Menubar Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Menubar module.</description>
-</module>
diff --git a/trunk/src/modules/menubar/resources/images/indicator.gif b/trunk/src/modules/menubar/resources/images/indicator.gif
deleted file mode 100644
index 085ccae..0000000
--- a/trunk/src/modules/menubar/resources/images/indicator.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/menubar/resources/javascript/loadmenu.js b/trunk/src/modules/menubar/resources/javascript/loadmenu.js
deleted file mode 100644
index a2bf246..0000000
--- a/trunk/src/modules/menubar/resources/javascript/loadmenu.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-dojo.require("dojo.logging.*");
-dojo.require("dojo.event.*");
-dojo.require("dojo.io.*");
-
-function loadMenu(event) {
-    var menuNumber = event.target.id.substring("nav".length);
-	var menuFunction = {
-		url: MENU_URL + "&lenya.module=menubar&lenya.menu=" + menuNumber,
-		load: function(type, data, evt) {
-		    var docElement = data.documentElement
-		    var attrValue = docElement.getAttribute("id");
-            var menuNumber = attrValue.substring("menu".length);
-			var element = document.getElementById("menu" + menuNumber);
-			var placeholderElement = document.getElementById("menuPlaceholder" + menuNumber);
-			element.removeChild(placeholderElement);
-			var children = docElement.childNodes;
-			for (var i = 0; i < children.length; i++) {
-				element.appendChild(children[i].cloneNode(true));
-			}
-			dojo.event.disconnect(dojo.byId("nav" + menuNumber), "onclick", "loadMenu");
-		},
-		error: function(type, error) {
-			dojo.log.error(error.message);
-		},
-		mimetype: "text/xml",
-		method: "GET"
-	};
-	dojo.io.bind(menuFunction);
-}
-
-/*
-* Customize this method for event-based loading.
-*/
-function initAjax() {
-	var menuNumber = 5;
-	for (var i = 1; i <= menuNumber; i++) {
-		dojo.event.connect(dojo.byId("nav" + i), "onclick", "loadMenu");
-	}
-}
-
-dojo.addOnLoad(initAjax);
diff --git a/trunk/src/modules/menubar/sitemap.xmap b/trunk/src/modules/menubar/sitemap.xmap
deleted file mode 100644
index 0a40763..0000000
--- a/trunk/src/modules/menubar/sitemap.xmap
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: global-sitemap.xmap 546840 2007-06-13 12:38:45Z andreas $ -->
-    
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
- <map:pipelines>
-   
-   <map:pipeline>
-     <map:match pattern="dojo/**">
-       <map:read src="resource://org/apache/cocoon/dojo/resources/{1}"/>
-     </map:match>
-   </map:pipeline> 
-
-    <map:pipeline internal-only="true">  
-      
-      <!-- AJAX menubar -->
-      <!-- ajaxmenu/{1:pubId}/{2:area}/{3:...} -->
-      <map:match pattern="ajaxmenu/*/*/**">
-        <map:generate src="xslt/emptyMenu.xml"/>
-        <map:transform src="fallback://lenya/xslt/menu/menubar2xhtml.xsl">
-          <map:parameter name="publicationid" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
-          <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>
-          <map:parameter name="userid" value="{access-control:user-id}"/>
-          <map:parameter name="servertime" value="{date-i18n:currentDate}"/>
-          <map:parameter name="workflowstate" value="{workflow:state}"/>
-          <map:parameter name="islive" value="{workflow:variable.is_live}"/>
-          <map:parameter name="usecase" value="{request-param:lenya.usecase}"/>
-          <map:parameter name="tabGroup" value="{usecase:tabGroup:{request-param:lenya.usecase}}"/>
-          <map:parameter name="newMessages" value="{inbox:newMessageCount}"/>
-        </map:transform>
-        <map:transform src="xslt/menu2xslt-ajax.xsl">
-          <map:parameter name="areaPrefix" value="{proxy:/{1}/{2}}"/>
-          <map:parameter name="publicationid" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
-          <map:parameter name="queryString" value="{request:queryString}"/>
-        </map:transform>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      
-      <!-- menu-xml/modules -->
-      <!-- menu-xml/modules/{pub-id}/{area}.xml -->
-      <map:match pattern="menu-xml/modules/*/*.xml">
-        <map:generate src="aggregate-fallback://config/publication.xml"/>
-        <map:transform src="fallback://lenya/xslt/modules/modules2xinclude.xsl">
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:transform type="xinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- menu-xml/module/{area}/{module-id}.xml -->
-      <map:match pattern="menu-xml/module/*/*.xml">
-        <map:select type="resource-exists">
-          <map:when test="fallback://lenya/modules/{2}/menus.xmap">
-            <map:mount uri-prefix="menu-xml/module/{1}/" src="fallback://lenya/modules/{2}/menus.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate type="serverpages" src="fallback://lenya/content/menus/live.xsp"/>
-            <map:serialize type="xml"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-      
-      <!-- menu-xml/{publication-id}/admin/... -->
-      <map:match pattern="menu-xml/*/admin/**" internal-only="true">
-        <map:generate type="serverpages" src="lenya/content/menus/admin.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- menu-xml/{publication-id}/... -->
-      <map:match pattern="menu-xml/*/**" internal-only="true">
-        <map:mount uri-prefix="menu-xml/{1}/" src="{fallback:menus.xmap}" check-reload="true" reload-method="synchron" pass-through="true"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-   <map:pipeline>
-     
-     <!-- Default Lenya menubar -->
-     <!-- {1:pubId}/{2:area}/{3:...} -->
-     <map:match pattern="*/*/**">
-       
-       <map:aggregate element="menu" ns="http://apache.org/cocoon/lenya/menubar/1.0">
-         <map:part src="cocoon:/menu-xml/{1}/{2}/{3}" strip-root="true"/>
-         <map:part src="cocoon:/menu-xml/modules/{1}/{2}.xml" strip-root="true"/>
-       </map:aggregate>
-       
-       <map:transform src="fallback://lenya/xslt/menu/merge-menus.xsl"/>
-       
-       
-       <map:transform src="xslt/selectSingleMenu.xsl">
-         <map:parameter name="menu" value="{request-param:lenya.menu}"/>
-       </map:transform>
-       
-       <map:transform src="fallback://lenya/xslt/menu/filter-menu.xsl">
-         <map:parameter name="tabGroup" value="{usecase:tabGroup:{request-param:lenya.usecase}}"/>
-       </map:transform>
-       
-       <!-- Disable menu items according to usecase policies -->
-       <map:transform type="usecasemenu"/>
-       
-       <map:transform src="fallback://lenya/xslt/menu/menu2xhtml.xsl">
-         <map:parameter name="publicationid" value="{1}"/>
-         <map:parameter name="area" value="{2}"/>
-         <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
-         <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>
-         <map:parameter name="userid" value="{access-control:user-id}"/>
-         <map:parameter name="servertime" value="{date-i18n:currentDate}"/>
-         <map:parameter name="workflowstate" value="{workflow:state}"/>
-         <map:parameter name="islive" value="{workflow:variable.is_live}"/>
-         <map:parameter name="usecase" value="{request-param:lenya.usecase}"/>
-         <map:parameter name="tabGroup" value="{usecase:tabGroup:{request-param:lenya.usecase}}"/>
-         <map:parameter name="newMessages" value="{inbox:newMessageCount}"/>
-         <map:parameter name="position" value="{request-param:lenya.menu}"/>
-       </map:transform>
-       
-       <map:transform type="i18n">
-         <map:parameter name="locale" value="{request:locale}"/>
-       </map:transform>
-       <map:transform src="xslt/convertMessages.xsl"/>
-       <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-       <map:serialize type="xml"/>
-     </map:match>
-     
-   </map:pipeline>
-   
- </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/menubar/xslt/convertMessages.xsl b/trunk/src/modules/menubar/xslt/convertMessages.xsl
deleted file mode 100644
index 446cb9b..0000000
--- a/trunk/src/modules/menubar/xslt/convertMessages.xsl
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xslt.xsl 520418 2007-03-20 15:03:34Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  exclude-result-prefixes="menu"
-  >
-  
-  <!-- add only first message as title attribute --> 
-  <xsl:template match="menu:message[preceding-sibling::menu:message]"/>
-  
-  <xsl:template match="menu:message">
-    <xsl:attribute name="title">
-      <xsl:value-of select="."/>
-    </xsl:attribute>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/menubar/xslt/emptyMenu.xml b/trunk/src/modules/menubar/xslt/emptyMenu.xml
deleted file mode 100644
index 9025c3b..0000000
--- a/trunk/src/modules/menubar/xslt/emptyMenu.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xslt.xsl 520418 2007-03-20 15:03:34Z andreas $ -->
-
-<menu:menu xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  <menu:menus>
-    <menu:menu name="File" i18n:attr="name"/>
-    <menu:menu name="Edit" i18n:attr="name"/>
-    <menu:menu name="Workflow" i18n:attr="name"/>
-    <menu:menu name="Help" i18n:attr="name"/>
-    <menu:menu name="Development" i18n:attr="name"/>
-  </menu:menus>
-</menu:menu>
diff --git a/trunk/src/modules/menubar/xslt/menu2xslt-ajax.xsl b/trunk/src/modules/menubar/xslt/menu2xslt-ajax.xsl
deleted file mode 100644
index 402dd68..0000000
--- a/trunk/src/modules/menubar/xslt/menu2xslt-ajax.xsl
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xslt.xsl 520418 2007-03-20 15:03:34Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xso="http://apache.org/cocoon/lenya/xslt/1.0"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  exclude-result-prefixes="menu"
-  >
- 
-  <xsl:param name="areaPrefix"/> 
-  <xsl:param name="publicationid"/>
-  <xsl:param name="area"/>
-  <xsl:param name="documenturl"/>
-  
-  <xsl:param name="queryString"/>
-  
-  <xsl:variable name="querySuffix">
-    <xsl:choose>
-      <xsl:when test="$queryString != ''">
-        <xsl:text>?</xsl:text>
-        <xsl:value-of select="$queryString"/>
-        <xsl:text>&amp;lenya.module=menubar</xsl:text>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:text>?lenya.module=menubar</xsl:text>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  
-  <xsl:namespace-alias stylesheet-prefix="xso" result-prefix="xsl"/>
-  
-  <xsl:template match="/">
-    
-    <xso:stylesheet version="1.0"
-      xmlns:xhtml="http://www.w3.org/1999/xhtml"
-      exclude-result-prefixes="xhtml">
-      
-      <xso:output method="xml" indent="yes"/>
-      
-      <xso:template match="/">
-        <html>
-          <head>
-            <xso:call-template name="title"/>
-            <script src="/lenya/menu/menu.js" type="text/javascript">&#160;</script>
-            <!--
-            -->
-            <link href="/lenya/css/menu.css" rel="stylesheet" type="text/css"/>
-            <link rel="icon" href="/favicon.ico" type="image/ico"/>
-            <xso:apply-templates select="xhtml:html/xhtml:head/*[local-name() != 'title']"/>
-            
-            <script type="text/javascript">
-              djConfig = { isDebug: false };
-            </script>
-            <script type="text/javascript" src="/modules/menubar/dojo/dojo.js">&#160;</script>
-            <script type="text/javascript">
-              MENU_URL = "<xsl:value-of select="concat($areaPrefix, $documenturl, '?', $queryString)"/>";
-            </script>
-            <script type="text/javascript" src="/modules/menubar/javascript/loadmenu.js">&#160;</script>
-          </head>
-          <body>
-            <xso:apply-templates select="xhtml:html/xhtml:body/@*"/>
-            <xsl:apply-templates select="xhtml:div[@id = 'lenya-logo']"/>
-            <xsl:apply-templates select="xhtml:div/xhtml:div[@id = 'lenya-menus']"/>
-            <div id="lenya-cmsbody">
-              <xso:apply-templates select="xhtml:html/xhtml:body/node()"/>
-            </div>
-            <script type="text/javascript"> initialize(); </script>
-          </body>
-        </html>
-      </xso:template>
-      
-      <xso:template name="title">
-        <title>
-          Apache Lenya |
-          <xsl:value-of select="$publicationid"/> |
-          <xsl:value-of select="$area"/> |
-          <xsl:value-of select="$documenturl"/> |
-          <xso:value-of select="xhtml:html/xhtml:head/xhtml:title"/>
-        </title>
-      </xso:template>
-      
-      <xso:template match="xhtml:script">
-        <xso:copy>
-          <xso:apply-templates select="@*|node()"/>
-          <xso:if test="not(.//text())"><xso:text>&#160;</xso:text></xso:if>
-        </xso:copy>
-      </xso:template>
-      
-      <xso:template match="xhtml:*">
-        <xso:element name="{string('{local-name()}')}">
-          <xso:apply-templates select="@*|node()"/>
-        </xso:element>
-      </xso:template>
-      
-      
-      <xso:template match="@*|node()">
-        <xso:copy>
-          <xso:apply-templates select="@*|node()"/>
-        </xso:copy>
-      </xso:template>
-      
-    </xso:stylesheet>
-    
-  </xsl:template>
-  
-
-  <xsl:template match="xhtml:div[@id = 'lenya-options']/xhtml:ul/xhtml:li">
-    <xsl:copy>
-      <xsl:attribute name="id">nav<xsl:value-of select="position()"/></xsl:attribute>
-      <xsl:copy-of select="node()"/>
-      <ul id="menu{position()}">
-        <li id="menuPlaceholder{position()}"><img src="/modules/menubar/images/indicator.gif"/></li>
-      </ul>
-    </xsl:copy>
-  </xsl:template>
-
-  
-  
-  <xsl:template match="xhtml:*">
-    <xsl:element name="{local-name()}">
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:element>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/menubar/xslt/selectSingleMenu.xsl b/trunk/src/modules/menubar/xslt/selectSingleMenu.xsl
deleted file mode 100644
index 0e43d48..0000000
--- a/trunk/src/modules/menubar/xslt/selectSingleMenu.xsl
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xslt.xsl 520418 2007-03-20 15:03:34Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  >
-  
-  <xsl:param name="menu"/>
-  
-  <xsl:template match="menu:menus">
-    <xsl:copy>
-      <xsl:apply-templates select="menu:menu[position() = $menu]"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/migration/config/module.xml b/trunk/src/modules/migration/config/module.xml
deleted file mode 100644
index 7788ba1..0000000
--- a/trunk/src/modules/migration/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.migration</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Migration Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Migration</description>
-</module>
diff --git a/trunk/src/modules/migration/java/test/org/apache/lenya/cms/migration/MigrateUuidsTest.java b/trunk/src/modules/migration/java/test/org/apache/lenya/cms/migration/MigrateUuidsTest.java
deleted file mode 100644
index d03c0c7..0000000
--- a/trunk/src/modules/migration/java/test/org/apache/lenya/cms/migration/MigrateUuidsTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.migration;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Migrate from path-based content to UUIDs.
- */
-public class MigrateUuidsTest extends AbstractAccessControlTest {
-
-    /**
-     * Do the migration.
-     * @throws Exception
-     */
-    public void testMigrateUuids() throws Exception {
-
-        Session session = login("lenya");
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(getManager(), session);
-        Publication[] pubs = factory.getPublications();
-        for (int i = 0; i < pubs.length; i++) {
-            this.migratedDocs.clear();
-            migratePublication(pubs[i]);
-        }
-        session.commit();
-    }
-
-    private void migratePublication(Publication pub) throws Exception {
-        getLogger().info("Migrating publication [" + pub.getId() + "]");
-
-        String[] areaNames = pub.getAreaNames();
-        if (areaNames != null) {
-            for (int i = 0; i < areaNames.length; i++) {
-                Area area = pub.getArea(areaNames[i]);
-                migrateArea(area);
-            }
-        }
-    }
-
-    private void migrateArea(Area area) throws Exception {
-        getLogger().info("Migrating area [" + area + "]");
-
-        SiteNode[] nodes = area.getSite().getNodes();
-
-        Map path2langs = new HashMap();
-
-        for (int n = 0; n < nodes.length; n++) {
-
-            String uuid = nodes[n].getUuid();
-            if (uuid != null && uuid.startsWith("/")) {
-                String[] languages = nodes[n].getLanguages();
-                for (int l = 0; l < languages.length; l++) {
-                    path2langs.put(nodes[n].getPath(), languages);
-                    Document doc = area.getDocument(nodes[n].getPath(), languages[l]);
-                    migrateDocument(doc);
-                }
-            }
-        }
-        verifyMigration(area, path2langs);
-    }
-
-    protected void verifyMigration(Area area, Map path2langs) throws SiteException,
-            DocumentException {
-        SiteStructure site = area.getSite();
-        for (Iterator i = path2langs.keySet().iterator(); i.hasNext();) {
-            String path = (String) i.next();
-            String[] langs = (String[]) path2langs.get(path);
-            SiteNode node = site.getNode(path);
-            Document migratedDoc = node.getLink(node.getLanguages()[0]).getDocument();
-            String[] migratedLangs = migratedDoc.getLanguages();
-            assertEquals(Arrays.asList(langs), Arrays.asList(migratedLangs));
-        }
-    }
-
-    private Map migratedDocs = new HashMap();
-
-    private void migrateDocument(Document doc) throws Exception {
-
-        getLogger().info("Migrating document [" + doc + "]");
-
-        DocumentManager docManager = null;
-        SiteManager siteManager = null;
-        ServiceSelector selector = null;
-        SourceResolver resolver = null;
-        try {
-            docManager = (DocumentManager) getManager().lookup(DocumentManager.ROLE);
-            selector = (ServiceSelector) getManager().lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(doc.getPublication().getSiteManagerHint());
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-
-            String path = doc.getPath();
-
-            Node node = siteManager.getSiteStructure(doc.getFactory(),
-                    doc.getPublication(),
-                    doc.getArea()).getRepositoryNode();
-
-            if (!node.isLocked()) {
-                node.lock();
-            }
-
-            Document newDoc;
-/*
-            String docId = doc.getUUID();
-            if (this.migratedDocs.containsKey(docId)) {
-                Document migratedDoc = (Document) this.migratedDocs.get(docId);
-                newDoc = docManager.addVersion(migratedDoc, doc.getArea(), doc.getLanguage(), false);
-                SourceUtil.copy(resolver, doc.getSourceURI(), newDoc.getSourceURI());
-            } else {
-                newDoc = docManager.add(doc.getFactory(),
-                        doc.getResourceType(),
-                        doc.getSourceURI(),
-                        doc.getPublication(),
-                        doc.getArea(),
-                        doc.getLanguage(),
-                        doc.getExtension());
-
-                migratedDocs.put(docId, newDoc);
-                siteManager.set(path, newDoc);
-            }
-
-            String[] uris = doc.getMetaDataNamespaceUris();
-            for (int i = 0; i < uris.length; i++) {
-                newDoc.getMetaData(uris[i]).replaceBy(doc.getMetaData(uris[i]));
-            }
-*/
-            doc.delete();
-
-        } finally {
-            if (docManager != null) {
-                getManager().release(docManager);
-            }
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                getManager().release(selector);
-            }
-            if (resolver != null) {
-                getManager().release(resolver);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules/neutron/checkin-exception.xml b/trunk/src/modules/neutron/checkin-exception.xml
deleted file mode 100644
index 39e34f1..0000000
--- a/trunk/src/modules/neutron/checkin-exception.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- TODO: Also see Neutron Spec ... -->
-<exception xmlns="http://www.wyona.org/neutron/1.0" type="checkin">
-  <message>Something went wrong during checkin ...</message>
-</exception>
diff --git a/trunk/src/modules/neutron/checkout-exception.xml b/trunk/src/modules/neutron/checkout-exception.xml
deleted file mode 100644
index 0e7e17b..0000000
--- a/trunk/src/modules/neutron/checkout-exception.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- TODO: Return user, etc. Also see Neutron Spec ... -->
-<exception xmlns="http://www.wyona.org/neutron/1.0" type="checkout">
-  <message>Document has already been checked-out by ...</message>
-</exception>
diff --git a/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkin.xconf b/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkin.xconf
deleted file mode 100644
index 6cab2d9..0000000
--- a/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkin.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'neutron.checkin']">

-    <component-instance name="neutron.checkin" logger="lenya.neutron"

-      class="org.apache.lenya.cms.editors.SaveDocument">

-      <parameter name="sourceUri" value="cocoon://modules/editors/stream.xml"/>
-      <parameter name="usecaseName" value="editors.publicationEdit"/>
-      <view uri="/modules/neutron/load.xml"/>
-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkout.xconf b/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkout.xconf
deleted file mode 100644
index 27048d4..0000000
--- a/trunk/src/modules/neutron/config/cocoon-xconf/usecase-checkout.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'neutron.checkout']">

-    <component-instance name="neutron.checkout" logger="lenya.neutron"

-      class="org.apache.lenya.cms.workflow.usecases.InvokeWorkflow">
-      <view uri="modules/neutron/usecases/neutron.jx" menu="false" createContinuation="false"/>
-      <transaction policy="pessimistic"/>
-      <event id="edit"/>
-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/neutron/config/module.xml b/trunk/src/modules/neutron/config/module.xml
deleted file mode 100644
index fc19d8d..0000000
--- a/trunk/src/modules/neutron/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.neutron</lenya:id>
-  <lenya:depends module="org.apache.lenya.modules.usecase"/>
-  <lenya:depends module="org.apache.lenya.modules.sitemanagement"/>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>Neutron Module</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>Neutron Module</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/neutron/sitemap.xmap b/trunk/src/modules/neutron/sitemap.xmap
deleted file mode 100644
index 529a237..0000000
--- a/trunk/src/modules/neutron/sitemap.xmap
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:components>
-    <map:matchers default="wildcard">
-      <map:matcher logger="sitemap.matcher.usecase" name="action"
-          src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">
-        <parameter-name>lenya.action</parameter-name>
-      </map:matcher>
-    </map:matchers>
-    <map:transformers default="xslt">
-      <map:transformer logger="lenya.sitemap.transformer.uuid2url" name="uuid2url-sitetree"
-        src="org.apache.lenya.cms.cocoon.transformation.UuidToUrlTransformer">
-        <urls type="relative"/>
-        <transform namespace="http://apache.org/cocoon/lenya/navigation/1.0" element="node" attribute="href"/>
-      </map:transformer>
-      <map:transformer logger="lenya.sitemap.transformer.proxy" name="proxy-sitetree"
-        src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer">
-        <transform namespace="http://apache.org/cocoon/lenya/navigation/1.0" element="node" attribute="href"/>
-      </map:transformer>
-    </map:transformers>
-  </map:components>
-  
-  <map:pipelines>
-      
-    <!-- Introspection -->
-    <map:pipeline type="noncaching">
-      
-      <map:match type="action" pattern="introspect">
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:transform src="fallback://lenya/modules/neutron/xslt/introspection.xsl">
-          <map:parameter name="uri" value="{proxy:{request:requestURI}}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match type="action" pattern="sitetree">
-        <map:match pattern="*/*/**">
-          <map:generate src="cocoon://modules/sitetree/{1}/{2}/sitetree.xml"/>
-          <map:transform src="fallback://lenya/modules/sitetree/xslt/navigation/sitetree2nav.xsl" label="navtree">
-            <map:parameter name="chosenlanguage" value="{request-param:language}"/>
-            <map:parameter name="defaultlanguage" value="{page-envelope:default-language}"/>
-            <map:parameter name="extension" value="html"/>
-          </map:transform>
-          <map:transform type="i18n">
-            <map:parameter name="locale" value="{request:locale}"/>
-          </map:transform>
-          <map:transform type="uuid2url-sitetree"/>
-          <map:transform type="proxy-sitetree"/>
-          <map:transform src="xslt/sitetree.xsl"/>
-          <map:serialize type="xml"/>
-        </map:match>
-      </map:match>
-      
-      <!-- document -->
-      <map:match pattern="document">
-        <map:generate src="lenya-document:{page-envelope:document-uuid}"/>
-        <map:transform src="fallback://lenya/modules/neutron/xslt/addCss.xsl">
-          <map:parameter name="css" value="{proxy:/{page-envelope:publication-id}/{page-envelope:area}/css/page.css}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-  
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/neutron/usecases/neutron.jx b/trunk/src/modules/neutron/usecases/neutron.jx
deleted file mode 100644
index c5ff022..0000000
--- a/trunk/src/modules/neutron/usecases/neutron.jx
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<jx:choose
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:ci="http://apache.org/cocoon/include/1.0">
-  
-  <jx:when test="${usecase.hasErrors()}">
-    <page:page
-      xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-      xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-      >
-      
-      <page:title><i18n:text>Neutron Editor</i18n:text></page:title>
-      
-      <jx:set var="sourceUrl" value="${usecase.getSourceURL()}"/>
-      <jx:set var="steps" value="${sourceUrl.split('/')}"/>
-      <jx:set var="lastStep" value="${steps[steps.size() - 1]}"/>
-      
-      <page:body>
-        <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      </page:body>
-    </page:page>
-  </jx:when>
-  <jx:otherwise>
-    <jx:set var="document" value="${usecase.getParameter('document')}"/>
-    <ci:include src="cocoon://modules/neutron/document"/>
-  </jx:otherwise>
-</jx:choose>
\ No newline at end of file
diff --git a/trunk/src/modules/neutron/xslt/addCss.xsl b/trunk/src/modules/neutron/xslt/addCss.xsl
deleted file mode 100644
index f67aa9e..0000000
--- a/trunk/src/modules/neutron/xslt/addCss.xsl
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: removeSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns="http://www.w3.org/1999/xhtml">
-  
-  <xsl:param name="css"/>
-
-  <xsl:template match="xhtml:head">
-    <xsl:copy>
-      <link rel="stylesheet" type="text/css" href="{$css}"/>
-      <xsl:copy-of select="*"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/neutron/xslt/introspection.xsl b/trunk/src/modules/neutron/xslt/introspection.xsl
deleted file mode 100644
index 467ef9d..0000000
--- a/trunk/src/modules/neutron/xslt/introspection.xsl
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xsl 388509 2006-03-24 13:07:10Z michi $ -->
-
-<xsl:stylesheet
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns="http://www.wyona.org/neutron/1.0"
->
-
-<xsl:param name="uri"/>
-  
-<xsl:template match="/">
-  <introspection>
-
-    <navigation>
-      <sitetree href="{$uri}?lenya.module=neutron&amp;lenya.action=sitetree" method="GET"/>
-    </navigation>
-    
-    <!--
-    TODO: In order to get the WYSIWYG view one needs to change the mime-type
-    to xhtml+xml, but somehow this causes problems re saving ...
-    See missing mime-type within
-    cocoon_2_1_x/src/java/org/apache/cocoon/generation/StreamGenerator.java
-    -->
-    <edit mime-type="application/xhtml+xml" name="Body Content">
-
-      <checkout url="{$uri}?lenya.usecase=neutron.checkout" method="GET"/>
-
-<!-- Save without releasing the lock, e.g. for "global" temporary saving -->
-<!--
-      <save url="{$uri}?lenya.module=neutron&amp;lenya.step=save" method="PUT"/>
--->
-      <checkin url="{$uri}?lenya.usecase=bxe.close" method="PUT"/>
-
-<!--
-      <schemas>
-        <schema href="http://foo.bar.com/lenya/modules/docbook/schemas/simple.rng" type="RelaxNG"/>
-        <schema href="http://foo.bar.com/lenya/modules/docbook/schemas/default.rng" type="RelaxNG"/>
-      </schemas>
-      <styles>
-        <style href="{$uri}.xsl"/>
-      </styles>
--->
-    </edit>
-  </introspection>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/neutron/xslt/sitetree.xsl b/trunk/src/modules/neutron/xslt/sitetree.xsl
deleted file mode 100644
index 0043fb6..0000000
--- a/trunk/src/modules/neutron/xslt/sitetree.xsl
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: removeSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-  xmlns="DAV:">
-  
-  <xsl:template match="nav:site">
-    <multistatus xmlns="DAV:">
-      <xsl:apply-templates select="nav:node"/>
-    </multistatus>
-  </xsl:template>
-  
-  <xsl:template match="nav:node">
-    <xsl:apply-templates select="nav:label"/>
-    <xsl:apply-templates select="nav:node"/>
-  </xsl:template>
-  
-  <xsl:template match="nav:label">
-    <response>
-      <href><xsl:value-of select="../@href"/></href>
-      <propstat>
-        <prop>
-          <displayname><xsl:value-of select="."/></displayname>
-          <resourcetype/>
-          <getcontenttype>application/xhtml+xml</getcontenttype>
-          <source>
-            <link>
-              <src><xsl:value-of select="../@href"/></src>
-              <dst><xsl:value-of select="../@href"/></dst>
-            </link>
-          </source>
-        </prop>
-        <status>HTTP/1.1 200 OK</status>
-      </propstat>
-    </response>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/news/config/cocoon-xconf/resourcetype-news.xconf b/trunk/src/modules/news/config/cocoon-xconf/resourcetype-news.xconf
deleted file mode 100644
index fd27758..0000000
--- a/trunk/src/modules/news/config/cocoon-xconf/resourcetype-news.xconf
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'news']">
-
-  <component-instance name="news"
-                      logger="lenya.resourcetypes.news"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    
-    <!-- Default time in seconds until the resource-type has expired -->  
-    <expires seconds="3600" />
-    
-    <sample 
-       mime-type="application/xml" 
-       uri="fallback://lenya/modules/news/samples/news.xml"
-    />
-    <format name="xhtml" uri="cocoon://modules/news/xhtml.xml"/>
-    <format name="include" uri="cocoon://modules/news/include.xml"/>
-    <format name="rss" uri="cocoon://modules/news/rss.xml"/>
-    <format name="header" uri="cocoon://modules/news/header.xml"/>
-    
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/news/config/cocoon-xconf/usecase-news-edit.xconf b/trunk/src/modules/news/config/cocoon-xconf/usecase-news-edit.xconf
deleted file mode 100644
index f2f8832..0000000
--- a/trunk/src/modules/news/config/cocoon-xconf/usecase-news-edit.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Copyright 1999-2005 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.

--->

-

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'news.edit']">

-    

-    <component-instance name="news.edit" logger="lenya.news" 

-      class="org.apache.lenya.modules.news.usecases.Edit">

-      <view uri="modules/news/usecases/edit.jx" menu="false"/>

-      <event id="edit"/>

-    </component-instance>

-    

-  </xconf>

diff --git a/trunk/src/modules/news/config/menu.xsp b/trunk/src/modules/news/config/menu.xsp
deleted file mode 100644
index 4c95603..0000000
--- a/trunk/src/modules/news/config/menu.xsp
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="sitemanagement.create" href="?doctype=news">
-            <i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-news</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Edit">
-        <xsp:logic>
-          try {
-              Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-              if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                  String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                  if ("news".equals(doctype)) {
-                      <block areas="authoring">
-                        <item uc:usecase="news.edit" href="?"><i18n:text>news-settings</i18n:text></item>
-                      </block>
-                  }
-              }
-          }
-          catch (Exception e) {
-              throw new ProcessingException("Error during menu generation: ", e);
-          }
-        </xsp:logic>
-      </menu>
-      
-    </menus>
-  </menu>
-  
-</xsp:page>
diff --git a/trunk/src/modules/news/config/module.xml b/trunk/src/modules/news/config/module.xml
deleted file mode 100644
index c1abcb4..0000000
--- a/trunk/src/modules/news/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.news</id>
-  <depends module="org.apache.lenya.modules.collection"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>News</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>News feed</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/NewsWrapper.java b/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/NewsWrapper.java
deleted file mode 100644
index 364ae08..0000000
--- a/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/NewsWrapper.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.modules.news;
-
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.modules.collection.CollectionWrapper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * Wrapper for a news document.
- */
-public class NewsWrapper extends CollectionWrapper {
-
-    protected static final int DEFAULT_INCLUDE_ITEMS = 3;
-    protected static final String ATTRIBUTE_INCLUDE_ITEMS = "includeItems";
-    
-    private short includeItemNumber = DEFAULT_INCLUDE_ITEMS;
-
-    /**
-     * @param doc The document to wrap.
-     * @param logger The logger.
-     */
-    public NewsWrapper(Document doc, Logger logger) {
-        super(doc, logger);
-    }
-
-    protected void loadXml(NamespaceHelper helper) {
-        super.loadXml(helper);
-        Element docElement = helper.getDocument().getDocumentElement();
-        if (docElement.hasAttribute(ATTRIBUTE_INCLUDE_ITEMS)) {
-            String number = docElement.getAttribute(ATTRIBUTE_INCLUDE_ITEMS);
-            this.includeItemNumber = Short.parseShort(number);
-        }
-    }
-
-    protected void saveXml(NamespaceHelper helper) throws TransformerException, DocumentException {
-        super.saveXml(helper);
-        Element docElement = helper.getDocument().getDocumentElement();
-        docElement.setAttribute(ATTRIBUTE_INCLUDE_ITEMS, Short.toString(this.includeItemNumber));
-    }
-
-    /**
-     * @return The number of items to appear on overviews which are generated
-     *         using the "include" format.
-     */
-    public short getIncludeItemNumber() {
-        load();
-        return this.includeItemNumber;
-    }
-
-    /**
-     * @param number The number of items to appear on overviews which are
-     *        generated using the "include" format.
-     */
-    public void setIncludeItemNumber(short number) {
-        load();
-        this.includeItemNumber = number;
-    }
-
-    protected NamespaceHelper initializeNamespaceHelper() {
-        NamespaceHelper helper = super.initializeNamespaceHelper();
-        Element docElement = helper.getDocument().getDocumentElement();
-        docElement.setAttribute(ATTRIBUTE_INCLUDE_ITEMS, Short.toString(getIncludeItemNumber()));
-        return helper;
-    }
-
-}
diff --git a/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/usecases/Edit.java b/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/usecases/Edit.java
deleted file mode 100644
index 20458e1..0000000
--- a/trunk/src/modules/news/java/src/org/apache/lenya/modules/news/usecases/Edit.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.modules.news.usecases;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.modules.collection.CollectionWrapper;
-import org.apache.lenya.modules.news.NewsWrapper;
-
-/**
- * Edit the properties of a news document.
- */
-public class Edit extends InvokeWorkflow {
-
-    protected static final String INCLUDE_ITEM_NUMBER = "includeItems";
-    protected static final String NEWS_WRAPPER = "newsWrapper";
-    protected static final String NUMBERS = "numbers";
-    protected static final String TYPE = "type";
-    protected static final String HREF = "href";
-    
-    protected void initParameters() {
-        super.initParameters();
-        NewsWrapper news = new NewsWrapper(getSourceDocument(), getLogger());
-        setParameter(NEWS_WRAPPER, news);
-        
-        setParameter(INCLUDE_ITEM_NUMBER, new Short(news.getIncludeItemNumber()));
-        setParameter(TYPE, news.getType());
-        setParameter(HREF, news.getHref());
-        
-        List numbers = new ArrayList();
-        for (int i = 1; i <= 10; i++) {
-            numbers.add(new Integer(i));
-        }
-        setParameter(NUMBERS, numbers);
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        String numberString = getParameterAsString(INCLUDE_ITEM_NUMBER);
-        short number = Short.parseShort(numberString);
-        
-        // we must create a new wrapper, because a new (modifiable) session is used
-        NewsWrapper news = new NewsWrapper(getSourceDocument(), getLogger());
-        news.setIncludeItemNumber(number);
-        String type = getParameterAsString(TYPE);
-        news.setType(type);
-        if (type.equals(CollectionWrapper.TYPE_LINK)) {
-            news.setHref(getParameterAsString(HREF));
-        }
-        news.save();
-    }
-
-}
diff --git a/trunk/src/modules/news/menus.xmap b/trunk/src/modules/news/menus.xmap
deleted file mode 100644
index 5a9217b..0000000
--- a/trunk/src/modules/news/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/news/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/news/resources/i18n/cmsui.xml b/trunk/src/modules/news/resources/i18n/cmsui.xml
deleted file mode 100644
index 82ab07c..0000000
--- a/trunk/src/modules/news/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="resourceType-news">News</message>
-  <message key="new-news-message-hint">To add a new news message, choose 'File' -> 'New XHTML Document'.</message>
-  <message key="news-settings">News Settings</message>
-  <message key="include-items">Number of items to display on overview page</message>
-  <message key="type-children">Child documents</message>
-  <message key="acquire-news-from">Acquire messages from</message>
-  <message key="external-source">External source</message>
-  <message key="note-feed-module">
-    Acquiring messages from a link requires the <em>feeds</em> module which
-    is currently in the sandbox (not stable yet).
-  </message>
-  
-</catalogue>

diff --git a/trunk/src/modules/news/resources/i18n/cmsui_de.xml b/trunk/src/modules/news/resources/i18n/cmsui_de.xml
deleted file mode 100644
index b0013d6..0000000
--- a/trunk/src/modules/news/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  
-  <message key="resourceType-news">News</message>

-  <message key="new-news-message-hint">
-    Um eine neue News-Meldung zu erstellen,
-    wählen Sie 'Datei' -> 'Neues News-Dokument'.
-  </message>
-  <message key="news-settings">News-Einstellungen</message>
-  <message key="include-items">Anzahl der Meldungen, die auf der Übersicht dargestellt werden sollen</message>
-  <message key="type-children">Kind-Dokumenten</message>
-  <message key="acquire-news-from">Meldungen beziehen von</message>
-  <message key="external-source">Externe Quelle</message>
-  <message key="note-feed-module">
-    Um Meldungen von einer externen Quelle beziehen zu können, ist das <em>feeds</em>-Modul erforderlich,
-    das sich derzeit in der Sandbox befindet (noch nicht stabil).
-  </message>
-  
-</catalogue>

diff --git a/trunk/src/modules/news/resources/icons/news.gif b/trunk/src/modules/news/resources/icons/news.gif
deleted file mode 100644
index 20bb1a0..0000000
--- a/trunk/src/modules/news/resources/icons/news.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/news/samples/news.xml b/trunk/src/modules/news/samples/news.xml
deleted file mode 100644
index 43c96ad..0000000
--- a/trunk/src/modules/news/samples/news.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://apache.org/cocoon/lenya/collection/1.0" type="children" includeItems="3"/>
diff --git a/trunk/src/modules/news/sitemap.xmap b/trunk/src/modules/news/sitemap.xmap
deleted file mode 100644
index 575abbe..0000000
--- a/trunk/src/modules/news/sitemap.xmap
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<!-- =========================== Components ================================ -->
-
-  <map:components>
-  
-    <map:serializers default="xhtml"> 
-      <map:serializer name="xml-get" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="text/xml">
-        <doctype-public>-//W3C//DTD XHTML 1.0 Strict//EN</doctype-public>
-        <doctype-system>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</doctype-system>
-        <encoding>UTF-8</encoding>
-      </map:serializer>
-    </map:serializers>
- 
-  </map:components>
-
-  <map:pipelines>
-
-    <map:pipeline>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{format}.xml" -->
-      <map:match pattern="*.xml">
-        <map:generate src="cocoon:/{1}.xml/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- pattern="{format}.xml/{pubId}/{area}/{uuid}/{language}" -->
-      <map:match pattern="*.xml/*/*/*/*">
-        
-        <!-- This is a workaround (see below). -->
-        <map:generate src="lenya-document:{4},pub={2},area={3},lang={5}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/collection/xslt/prepareCinclude.xsl">
-          <map:parameter name="uuid" value="{4}"/>
-          <map:parameter name="language" value="{5}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        
-        <!-- This would be a nicer way, but causes NPES in AbstractEnvironment.release(AbstractEnvironment.java:561)
-        <map:generate src="{resource-type:collection:format-collection}/{2}/{3}/{4}/{5}"/>
-        -->
-        
-        <map:transform src="fallback://lenya/modules/collection/xslt/collection2cinclude.xsl">
-          <map:parameter name="uuid" value="{4}"/>
-          <map:parameter name="language" value="{5}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:transform src="fallback://lenya/modules/news/xslt/collection2{1}.xsl">
-          <map:parameter name="language" value="{5}"/>
-          <map:parameter name="title" value=""/>
-          <map:parameter name="area" value="{3}"/>
-          <map:parameter name="uuid" value="{4}"/>
-          <map:parameter name="baseUrl" value="/{2}/{3}"/>
-        </map:transform>
-        <map:match pattern="rss.xml/**">
-          <map:transform type="uuid2url"/>
-          <map:transform type="proxy"/>
-          <map:transform src="xslt/rss/xhtmllink2rsslink.xsl"/>
-          <map:transform type="i18n">
-            <map:parameter name="locale" value="{5}"/>
-          </map:transform>
-        </map:match>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <map:match pattern="icon/*/*/*/*">
-        <map:read src="fallback://lenya/modules/news/resources/icons/news.gif"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/news/usecases/edit.jx b/trunk/src/modules/news/usecases/edit.jx
deleted file mode 100644
index 3fad62f..0000000
--- a/trunk/src/modules/news/usecases/edit.jx
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: oneform.jx 510073 2007-02-21 16:01:52Z andreas $ -->
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
-  >
-  
-  <page:title><i18n:text>news-settings</i18n:text></page:title>
-  <page:body>
-    
-    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-    
-    <form method="post" id="form-news-edit">
-      <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-      
-      <jx:set var="newsWrapper" value="${usecase.getParameter('newsWrapper')}"/>
-      <jx:set var="includeItems" value="${usecase.getParameter('includeItems')}"/>
-      
-      <p><i18n:text>acquire-news-from</i18n:text>:</p>
-      
-      <jx:set var="type" value="${usecase.getParameter('type')}"/>
-      <p style="padding-left: 3em;">
-        <jx:choose>
-          <jx:when test="${type.equals('children')}">
-            <input type="radio" name="type" value="children" checked="checked"/>
-          </jx:when>
-          <jx:otherwise>
-            <input type="radio" name="type" value="children"/>
-          </jx:otherwise>
-        </jx:choose>
-        <i18n:text>type-children</i18n:text>
-      </p>
-      <p style="padding-left: 3em; color: #999999;">
-        <i18n:text>note-feed-module</i18n:text>
-      </p>
-      <p style="padding-left: 3em;">
-        <jx:choose>
-          <jx:when test="${type.equals('link')}">
-            <input type="radio" name="type" value="link" checked="checked"/>
-          </jx:when>
-          <jx:otherwise>
-            <input type="radio" name="type" value="link"/>
-          </jx:otherwise>
-        </jx:choose>
-        <i18n:text>external-source</i18n:text>:
-        <input type="text" name="href" size="50" value="${usecase.getParameter('href')}"/>
-      </p>
-      
-      <p style="margin: 3em 0;">
-        <label for="includeItems"><i18n:text>include-items</i18n:text>:</label>
-        <select name="includeItems">
-          <jx:forEach var="number" items="${usecase.getParameter('numbers')}">
-            <jx:choose>
-              <jx:when test="${includeItems == number}">
-                <option value="${number}" selected="selected"><jx:out value="${number}"/></option>
-              </jx:when>
-              <jx:otherwise>
-                <option value="${number}"><jx:out value="${number}"/></option>
-              </jx:otherwise>
-            </jx:choose>
-          </jx:forEach>
-        </select>
-      </p>
-      
-      <p>
-        <input type="submit" value="Save" name="submit" i18n:attr="value"/>
-        <input type="submit" value="Cancel" name="cancel" i18n:attr="value"/>
-      </p>
-      
-    </form>
-    
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules/news/xslt/collection2header.xsl b/trunk/src/modules/news/xslt/collection2header.xsl
deleted file mode 100644
index 283e8a7..0000000
--- a/trunk/src/modules/news/xslt/collection2header.xsl
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-    xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    exclude-result-prefixes="xhtml lenya col meta dc i18n"
-    >
-    
-  <xsl:param name="uuid"/>
-  
-  <xsl:template match="/col:collection">
-    <link rel="alternate" type="application/rss+xml"
-      title="RSS" href="lenya-document:{$uuid}?uuid2url.extension=rss" />
-  </xsl:template>
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/news/xslt/collection2include.xsl b/trunk/src/modules/news/xslt/collection2include.xsl
deleted file mode 100644
index 93cd631..0000000
--- a/trunk/src/modules/news/xslt/collection2include.xsl
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-    xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    exclude-result-prefixes="xhtml lenya col meta dc i18n"
-    >
-    
-  <xsl:import href="fallback://lenya/modules/news/xslt/collection2xhtml.xsl"/>
-  
-  <xsl:param name="nodeid"/>
-  <xsl:param name="language"/>
-  <xsl:param name="uuid"/>
-  
-  <xsl:variable name="includeItems" select="/col:collection/@includeItems"/>
-  
-  <xsl:template match="/col:collection">
-    <xsl:variable name="title" select="meta:metadata/dc:elements/dc:title"/>
-    <div id="news">
-      <div class="rsslink">
-        <a type="application/rss+xml" href="lenya-document:{$uuid}?uuid2url.extension=rss">RSS 2.0</a>
-      </div>
-      <h1><xsl:value-of select="$title"/></h1>
-      <xsl:choose>
-        <xsl:when test="col:document//xhtml:div[@class = 'newsItem']">
-          <xsl:for-each select="col:document//xhtml:div[@class = 'newsItem']">
-            <xsl:sort select="xhtml:h2/xhtml:span[@class = 'newsDate']/i18n:date-time/@value" order="descending"/>
-            <xsl:if test="position() &lt;= number($includeItems)">
-              <xsl:apply-templates select="."/>
-            </xsl:if>
-          </xsl:for-each>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:for-each select="col:document">
-            <xsl:sort order="descending" select="meta:metadata/dc:elements/dc:date"/>
-            <xsl:if test="position() &lt;= number($includeItems)">
-              <xsl:apply-templates select="."/>
-            </xsl:if>
-          </xsl:for-each>
-        </xsl:otherwise>
-      </xsl:choose>
-    </div>
-  </xsl:template>
-  
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/news/xslt/collection2rss.xsl b/trunk/src/modules/news/xslt/collection2rss.xsl
deleted file mode 100644
index 2d9267b..0000000
--- a/trunk/src/modules/news/xslt/collection2rss.xsl
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-    xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    exclude-result-prefixes="xhtml lenya col meta dc i18n"
-    >
-    
-  <xsl:include href="fallback://lenya/modules/xhtml/xslt/helper-object.xsl"/>
-  <xsl:include href="shared.xsl"/>
-  
-  <xsl:param name="nodeid"/>
-  <xsl:param name="language"/>
-  <xsl:param name="area"/>
-  <xsl:param name="baseUrl"/>
-  
-  
-  <xsl:template match="/col:collection">
-    <xsl:variable name="title" select="meta:metadata/dc:elements/dc:title"/>
-    
-    <rss version="2.0">
-      
-      <channel>
-        <title><xsl:value-of select="$title"/></title>
-        <link><xhtml:a href="{$baseUrl}"/></link>
-        <description></description>
-        <language><xsl:value-of select="$language"/></language>
-        <copyright></copyright>
-        <pubDate><xsl:call-template name="date"/></pubDate>
-        
-        <!--
-        <image>
-          <url></url>
-          <title></title>
-          <link></link>
-        </image>
-        -->
-        
-        <xsl:apply-templates select="col:document">
-          <xsl:sort order="descending" select="meta:metadata/dc:elements/dc:date"/>
-        </xsl:apply-templates>
-        
-      </channel>
-      
-    </rss>
-  </xsl:template>
-  
-  
-  <xsl:template name="date">
-    <xsl:for-each select="col:document">
-      <xsl:sort select="meta:metadata/dc:elements/dc:date"/>
-      <xsl:if test="position() = 1">
-        <xsl:variable name="date" select="meta:metadata/dc:elements/dc:date"/>
-        <i18n:date-time locale="en" src-pattern="yyyy-MM-dd hh:mm:ss" pattern="EEE, dd MMM yyyy HH:mm:ss Z" value="{$date}" />
-      </xsl:if>
-    </xsl:for-each>
-  </xsl:template>
-
-
-  <xsl:template match="col:document">
-    <item>
-      <title><xsl:value-of select="meta:metadata/dc:elements/dc:title"/></title>
-      <description><xsl:value-of select="meta:metadata/dc:elements/dc:description"/></description>
-      <xsl:variable name="href">
-        <xsl:call-template name="getHref"/>
-      </xsl:variable>
-      <link><xhtml:a href="{$href}"/></link>
-      <author><xsl:value-of select="meta:metadata/dc:elements/dc:creator"/></author>
-      <xsl:variable name="date" select="meta:metadata/dc:elements/dc:date"/>
-      <pubDate><i18n:date-time locale="en" src-pattern="yyyy-MM-dd hh:mm:ss" pattern="EEE, dd MMM yyyy HH:mm:ss Z" value="{$date}" /></pubDate>
-    </item>
-  </xsl:template>
-
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/news/xslt/collection2xhtml.xsl b/trunk/src/modules/news/xslt/collection2xhtml.xsl
deleted file mode 100644
index 3a3a2a0..0000000
--- a/trunk/src/modules/news/xslt/collection2xhtml.xsl
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:col="http://apache.org/cocoon/lenya/collection/1.0"
-    xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    exclude-result-prefixes="xhtml lenya col meta dc i18n"
-    >
-    
-  <xsl:include href="fallback://lenya/modules/xhtml/xslt/helper-object.xsl"/>
-  <xsl:include href="shared.xsl"/>
-  
-  <xsl:param name="nodeid"/>
-  <xsl:param name="language"/>
-  <xsl:param name="area"/>
-  
-  <xsl:variable name="maxChars">100</xsl:variable>
-  
-  
-  <xsl:template match="/col:collection">
-    <xsl:variable name="title" select="meta:metadata/dc:elements/dc:title"/>
-    <html>
-      <body>
-        <div id="body">
-          <h1><xsl:value-of select="$title"/></h1>
-          
-          <xsl:if test="$area = 'authoring'">
-            <p style="color: #999999;">
-              <i18n:text>new-news-message-hint</i18n:text>
-            </p>
-          </xsl:if>
-          
-          <xsl:choose>
-            <xsl:when test="col:document//xhtml:div[@class = 'newsItem']">
-              <xsl:apply-templates select="col:document//xhtml:div[@class = 'newsItem']">
-                <xsl:sort select="xhtml:h2/xhtml:span[@class = 'newsDate']/i18n:date-time/@value" order="descending"/>
-              </xsl:apply-templates>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:apply-templates select="col:document">
-                <xsl:sort order="descending" select="meta:metadata/dc:elements/dc:date"/>
-              </xsl:apply-templates>
-            </xsl:otherwise>
-          </xsl:choose>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-
-
-  <xsl:template match="col:document">
-    <xsl:variable name="date" select="meta:metadata/dc:elements/dc:date"/>
-    <xsl:variable name="title" select="meta:metadata/dc:elements/dc:title"/>
-    <div class="newsItem">
-      <h2>
-        <span class="newsDate">
-          <i18n:date-time src-pattern="yyyy-MM-dd HH:mm:ss" locale="{$language}" value="{$date}" />
-        </span><br />
-        <xsl:variable name="href">
-          <xsl:call-template name="getHref"/>
-        </xsl:variable>
-        <a href="{$href}" style="text-decoration: none"><xsl:value-of select="$title"/></a>
-      </h2>
-      <xsl:apply-templates select="xhtml:html/xhtml:body/xhtml:p[1]" mode="excerpt"/>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:p" mode="excerpt">
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <xsl:value-of select="substring(., 1, $maxChars)"/>
-      <xsl:if test="string-length(.) &gt; $maxChars">
-        <xsl:text>&#x2026;</xsl:text>
-      </xsl:if>
-    </xsl:copy>
-  </xsl:template>
-
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/news/xslt/rss/xhtmllink2rsslink.xsl b/trunk/src/modules/news/xslt/rss/xhtmllink2rsslink.xsl
deleted file mode 100644
index cc90928..0000000
--- a/trunk/src/modules/news/xslt/rss/xhtmllink2rsslink.xsl
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  
-  
-  <xsl:template match="xhtml:a">
-    <xsl:text/>
-    <xsl:value-of select="@href"/>
-    <xsl:text/>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/news/xslt/shared.xsl b/trunk/src/modules/news/xslt/shared.xsl
deleted file mode 100644
index de7556d..0000000
--- a/trunk/src/modules/news/xslt/shared.xsl
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  
-  <xsl:template name="getHref">
-    <xsl:choose>
-      <xsl:when test="@uuid">lenya-document:<xsl:value-of select="@uuid"/></xsl:when>
-      <xsl:when test="@href"><xsl:value-of select="@href"/></xsl:when>
-    </xsl:choose>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/config/cocoon-xconf/inboxmanager.xconf b/trunk/src/modules/notification/config/cocoon-xconf/inboxmanager.xconf
deleted file mode 100644
index 0fb2212..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/inboxmanager.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.inbox.InboxManager']">
-
-  <component logger="lenya.inbox"
-    role="org.apache.lenya.inbox.InboxManager"
-    class="org.apache.lenya.inbox.xml.XmlSourceInboxManager"/>
-  
-</xconf>
diff --git a/trunk/src/modules/notification/config/cocoon-xconf/inboxmodule.xconf b/trunk/src/modules/notification/config/cocoon-xconf/inboxmodule.xconf
deleted file mode 100644
index 21cffe3..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/inboxmodule.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'inbox']">

-    <component-instance logger="core.modules.input.inbox" name="inbox"

-      class="org.apache.lenya.inbox.InboxModule"/>

-  </xconf>

diff --git a/trunk/src/modules/notification/config/cocoon-xconf/notificationlistener.xconf b/trunk/src/modules/notification/config/cocoon-xconf/notificationlistener.xconf
deleted file mode 100644
index 4789bfd..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/notificationlistener.xconf
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.notification.NotificationListener']">
-
-  <component role="org.apache.lenya.notification.NotificationListener"
-    class="org.apache.lenya.notification.NotificationListener"
-    logger="lenya.notification"/>
-  
-</xconf>
diff --git a/trunk/src/modules/notification/config/cocoon-xconf/notifier.xconf b/trunk/src/modules/notification/config/cocoon-xconf/notifier.xconf
deleted file mode 100644
index f6da6f4..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/notifier.xconf
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.notification.Notifier']">
-
-  <component logger="lenya.notification"
-    role="org.apache.lenya.notification.Notifier"
-    class="org.apache.lenya.inbox.InboxNotifier"/>
-
-  <!-- Use the following configuration to send e-mail notifications -->
-  <!--
-  <component logger="lenya.notification"
-    role="org.apache.lenya.notification.Notifier"
-    class="org.apache.lenya.notification.EmailNotifier">
-    
-    <smtp host="localhost"/>
-    
-    <!- use this for authentication
-    <smtp host="localhost" username="john" password="swordfish" />
-    ->
-    
-  </component>
-  -->
-  
-</xconf>
diff --git a/trunk/src/modules/notification/config/cocoon-xconf/tab.xconf b/trunk/src/modules/notification/config/cocoon-xconf/tab.xconf
deleted file mode 100644
index 6c5f04b..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/tab.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/gui-manager/tab-group[@name = 'admin']"
-    unless="/cocoon/gui-manager/tab-group[@name = 'admin']/tab[@name = 'inbox']">

-    <tab name="inbox" label="Inbox" usecase="notification.inbox"/>

-  </xconf>

diff --git a/trunk/src/modules/notification/config/cocoon-xconf/usecase-inbox.xconf b/trunk/src/modules/notification/config/cocoon-xconf/usecase-inbox.xconf
deleted file mode 100644
index 6b75104..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/usecase-inbox.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'notification.inbox']">
-
-    <component-instance name="notification.inbox" logger="lenya.notification"
-      class="org.apache.lenya.inbox.usecases.Inbox">
-      <view uri="modules/notification/usecases/inbox.jx" menu="true">
-        <tab group="admin" name="inbox"/>
-      </view>
-      <exit usecase="notification.inbox"/>
-    </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/notification/config/cocoon-xconf/usecase-sendMessage.xconf b/trunk/src/modules/notification/config/cocoon-xconf/usecase-sendMessage.xconf
deleted file mode 100644
index ab84535..0000000
--- a/trunk/src/modules/notification/config/cocoon-xconf/usecase-sendMessage.xconf
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'notification.sendMessage']">
-
-    <component-instance name="notification.sendMessage" logger="lenya.notification"
-      class="org.apache.lenya.inbox.usecases.SendMessage">
-      <view uri="modules/notification/usecases/sendMessage.jx" menu="true">
-        <tab group="admin" name="inbox"/>
-      </view>
-      <exit usecase="notification.inbox"/>
-    </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/notification/config/lenya-roles/notifier.xroles b/trunk/src/modules/notification/config/lenya-roles/notifier.xroles
deleted file mode 100644
index f722bc0..0000000
--- a/trunk/src/modules/notification/config/lenya-roles/notifier.xroles
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xroles xpath="/role-list" unless="/role-list/role[@name = 'org.apache.lenya.notification.Notifier']">
-
-  <role name="org.apache.lenya.notification.Notifier"
-    shorthand="notifier"
-    default-class="org.apache.lenya.notification.EmailNotifier"/>
-  
-</xroles>
diff --git a/trunk/src/modules/notification/config/module.xml b/trunk/src/modules/notification/config/module.xml
deleted file mode 100644
index 87ad81e..0000000
--- a/trunk/src/modules/notification/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.notification</id>
-  <export package="org.apache.lenya.notification"/>
-  <depends module="org.apache.lenya.modules.administration"/> <!-- necessary for tabs -->
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Notification</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Notification module</description>
-</module>
diff --git a/trunk/src/modules/notification/content/message.xml b/trunk/src/modules/notification/content/message.xml
deleted file mode 100644
index dc92fdd..0000000
--- a/trunk/src/modules/notification/content/message.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-<message xmlns="http://apache.org/lenya/notification/2.0">
-  <subject/>
-  <body/>
-</message>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxManager.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxManager.java
deleted file mode 100644
index 5fd4c5d..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxManager.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.ac.User;
-
-/**
- * Abstract base class for inbox managers.
- */
-public abstract class AbstractInboxManager extends AbstractLogEnabled implements InboxManager,
-        ThreadSafe {
-
-    private Map inboxes = new HashMap();
-
-    public synchronized Inbox getInbox(User user) {
-        Inbox inbox = (Inbox) this.inboxes.get(user);
-        if (inbox == null) {
-            inbox = doGetInbox(user);
-            this.inboxes.put(user, inbox);
-        }
-        return inbox;
-    }
-
-    protected abstract Inbox doGetInbox(User user);
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxMessage.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxMessage.java
deleted file mode 100644
index 1cae695..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxMessage.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.util.Assert;
-
-/**
- * Inbox message implementation.
- */
-public abstract class AbstractInboxMessage implements InboxMessage {
-
-    private boolean markedAsRead;
-    private Message message;
-    private String id;
-    
-    /**
-     * @param id The ID.
-     * @param message The message to wrap.
-     * @param markedAsRead if the message is marked as read.
-     */
-    public AbstractInboxMessage(String id, Message message, boolean markedAsRead) {
-        Assert.notNull("id", id);
-        this.id = id;
-        Assert.notNull("message", message);
-        this.message = message;
-        this.markedAsRead = markedAsRead;
-    }
-    
-    public boolean isMarkedAsRead() {
-        return this.markedAsRead;
-    }
-
-    public Message getMessage() {
-        return this.message;
-    }
-
-    public void markAsRead(boolean marked) {
-        this.markedAsRead = marked;
-        changed();
-    }
-
-    protected abstract void changed();
-
-    public String getId() {
-        return this.id;
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/Inbox.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/Inbox.java
deleted file mode 100644
index fe41f44..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/Inbox.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.lenya.notification.Message;
-
-/**
- * An inbox.
- */
-public interface Inbox {
-    
-    /**
-     * @return All messages in this inbox.
-     */
-    InboxMessage[] getMessages();
-    
-    /**
-     * @param message The message to add.
-     * @return The inbox message which wraps the message.
-     */
-    InboxMessage add(Message message);
-
-    /**
-     * @param message The message to remove.
-     */
-    void remove(InboxMessage message);
-    
-    /**
-     * @param id The ID.
-     * @return The message with this ID.
-     */
-    InboxMessage getMessage(String id);
-    
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxManager.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxManager.java
deleted file mode 100644
index c358de0..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.lenya.ac.User;
-
-/**
- * Inbox manager.
- */
-public interface InboxManager {
-    
-    /**
-     * The Avalon service role.
-     */
-    String ROLE = InboxManager.class.getName();
-
-    /**
-     * @param user The user.
-     * @return The inbox of this user.
-     */
-    Inbox getInbox(User user);
-    
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxMessage.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxMessage.java
deleted file mode 100644
index 053f2d0..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxMessage.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.lenya.notification.Message;
-
-/**
- * A message entry in an inbox.
- */
-public interface InboxMessage {
-    
-    /**
-     * Marks this message as read.
-     * @param marked A boolean value.
-     */
-    void markAsRead(boolean marked);
-    
-    /**
-     * @return if this message is marked as read.
-     */
-    boolean isMarkedAsRead();
-    
-    /**
-     * @return The message which is wrapped by this inbox message.
-     */
-    Message getMessage();
-    
-    /**
-     * @return The ID of this message.
-     */
-    String getId();
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java
deleted file mode 100644
index 5ab7709..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxModule.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * <p>
- * Inbox module.
- * </p>
- * <p>
- * Attributes:
- * </p>
- * <ul>
- * <li><strong>newMessageCount</strong> - the number of unread messages as
- * string</li>
- * </ul>
- */
-public class InboxModule extends AbstractInputModule implements Serviceable {
-
-    protected static final String NEW_MESSAGE_COUNT = "newMessageCount";
-    protected ServiceManager manager;
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        Object value = null;
-        if (name.equals(NEW_MESSAGE_COUNT)) {
-            InboxManager inboxManager = null;
-            try {
-                inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
-                Request request = ObjectModelHelper.getRequest(objectModel);
-                Session session = RepositoryUtil.getSession(manager, request);
-                User user = session.getIdentity().getUser();
-                if (user == null) {
-                    return "0";
-                } else {
-                    Inbox inbox = inboxManager.getInbox(user);
-                    int count = 0;
-                    InboxMessage[] messages = inbox.getMessages();
-                    for (int i = 0; i < messages.length; i++) {
-                        if (!messages[i].isMarkedAsRead()) {
-                            count++;
-                        }
-                    }
-                    value = Integer.toString(count);
-                }
-
-            } catch (Exception e) {
-                throw new ConfigurationException("Attribute [" + name + "]: ", e);
-            } finally {
-                if (inboxManager != null) {
-                    this.manager.release(inboxManager);
-                }
-            }
-        }
-        else {
-            throw new ConfigurationException("Attribute: [" + name + "] not supported.");
-        }
-        return value;
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxNotifier.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxNotifier.java
deleted file mode 100644
index 105d825..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxNotifier.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.notification.AbstractNotifier;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationException;
-
-/**
- * Notifier which adds the message to the recipients' inboxes.
- */
-public class InboxNotifier extends AbstractNotifier {
-
-    protected void notify(User user, Message message) throws NotificationException {
-        
-        InboxManager inboxManager = null;
-        try {
-            inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
-            Inbox inbox = inboxManager.getInbox(user);
-            inbox.add(message);
-        } catch (ServiceException e) {
-            throw new NotificationException(e);
-        } finally {
-            if (inboxManager != null) {
-                this.manager.release(inboxManager);
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java
deleted file mode 100644
index f315238..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox.usecases;
-
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.inbox.InboxManager;
-import org.apache.lenya.inbox.InboxMessage;
-
-/**
- * Show and manage an inbox.
- */
-public class Inbox extends AbstractUsecase {
-
-    protected void initParameters() {
-        super.initParameters();
-        
-        User user = getSession().getIdentity().getUser();
-        setParameter("user", user);
-        
-        InboxManager inboxManager = null;
-        try {
-            inboxManager = (InboxManager) this.manager.lookup(InboxManager.ROLE);
-            org.apache.lenya.inbox.Inbox inbox = inboxManager.getInbox(user);
-            setParameter("inbox", inbox);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        finally {
-            if (inboxManager != null) {
-                this.manager.release(inboxManager);
-            }
-        }
-    }
-    
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        String id = getParameterAsString("messageId");
-        if (id != null) {
-            org.apache.lenya.inbox.Inbox inbox = (org.apache.lenya.inbox.Inbox) getParameter("inbox");
-            InboxMessage message = inbox.getMessage(id);
-            message.markAsRead(true);
-        }
-        
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        
-        String deleteId = getParameterAsString("deleteMessageId");
-        if (deleteId != null) {
-            org.apache.lenya.inbox.Inbox inbox = (org.apache.lenya.inbox.Inbox) getParameter("inbox");
-            InboxMessage message = inbox.getMessage(deleteId);
-            inbox.remove(message);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java
deleted file mode 100644
index 0f420ae..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox.usecases;
-
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.UserManager;
-import org.apache.lenya.cms.usecase.AbstractUsecase;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.NotificationUtil;
-import org.apache.lenya.util.Assert;
-
-/**
- * Show and manage an inbox.
- */
-public class SendMessage extends AbstractUsecase {
-
-    protected void initParameters() {
-        super.initParameters();
-
-        User user = getSession().getIdentity().getUser();
-        setParameter("user", user);
-
-        try {
-            UserManager userManager = user.getAccreditableManager().getUserManager();
-            User[] users = userManager.getUsers();
-            setParameter("users", users);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        if (getRecipient().equals("")) {
-            addErrorMessage("Please choose a recipient.");
-        }
-
-        if (getSubject().equals("")) {
-            addErrorMessage("Please choose a subject.");
-        }
-    }
-
-    protected String getSubject() {
-        return getParameterAsString("subject");
-    }
-
-    protected String getRecipient() {
-        return getParameterAsString("recipient");
-    }
-
-    protected String getBody() {
-        return getParameterAsString("body");
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String recipientId = getRecipient();
-        User sender = getSession().getIdentity().getUser();
-        User recipient;
-
-        try {
-            UserManager userManager = sender.getAccreditableManager().getUserManager();
-            recipient = userManager.getUser(recipientId);
-            Assert.notNull("user " + recipientId, recipient);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        Identifiable[] recipients = { recipient };
-        String subject = getSubject();
-        String body = getBody();
-
-        Message message = new Message(subject, new String[0], body, new String[0], sender,
-                recipients);
-        NotificationUtil.notify(this.manager, message);
-
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
deleted file mode 100644
index 21a0a2e..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.axis.components.uuid.UUIDGen;
-import org.apache.axis.components.uuid.UUIDGenFactory;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.inbox.Inbox;
-import org.apache.lenya.inbox.InboxMessage;
-import org.apache.lenya.notification.Message;
-import org.apache.lenya.notification.Notifier;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Inbox based on XML sources.
- */
-public class XmlSourceInbox implements Inbox {
-
-    private ServiceManager manager;
-    private User user;
-
-    /**
-     * @param manager The service manager.
-     * @param user The user.
-     */
-    public XmlSourceInbox(ServiceManager manager, User user) {
-        this.manager = manager;
-        this.user = user;
-    }
-
-    public synchronized InboxMessage add(Message message) {
-        InboxMessage msg = new XmlSourceInboxMessage(this, generateId(), message, false);
-        messages().add(msg);
-        save();
-        return msg;
-    }
-
-    protected String generateId() {
-        UUIDGen generator = UUIDGenFactory.getUUIDGen();
-        String id = generator.nextUUID();
-        return id;
-    }
-
-    public synchronized void remove(InboxMessage message) {
-        Assert.isTrue("contained", messages().contains(message));
-        messages().remove(message);
-        save();
-    }
-
-    public InboxMessage[] getMessages() {
-        List messages = messages();
-        return (InboxMessage[]) messages.toArray(new InboxMessage[messages.size()]);
-    }
-
-    private List messages;
-
-    protected List messages() {
-        if (this.messages == null) {
-            load();
-        }
-        return this.messages;
-    }
-
-    private long lastModified = -1;
-
-    protected synchronized void load() {
-        this.messages = new ArrayList();
-        try {
-
-            if (SourceUtil.exists(getSourceUri(), this.manager)) {
-
-                this.lastModified = SourceUtil.getLastModified(getSourceUri(), this.manager);
-                Document xml = SourceUtil.readDOM(getSourceUri(), this.manager);
-
-                Assert.isTrue("document element is <inbox>", xml.getDocumentElement()
-                        .getLocalName().equals("inbox"));
-                NamespaceHelper helper = new NamespaceHelper(Notifier.NAMESPACE, "", xml);
-
-                Element[] messageElements = helper.getChildren(xml.getDocumentElement(), "message");
-                for (int i = 0; i < messageElements.length; i++) {
-                    
-                    String id;
-                    if (messageElements[i].hasAttribute("id")) {
-                        id = messageElements[i].getAttribute("id");
-                    }
-                    else {
-                        id = generateId();
-                    }
-                    
-                    String senderId = messageElements[i].getAttribute("sender");
-                    User sender = getUser(senderId);
-
-                    Element recipientElement = helper.getFirstChild(messageElements[i],
-                            "recipients");
-
-                    Element[] userElements = helper.getChildren(recipientElement, "user");
-                    Element[] groupElements = helper.getChildren(recipientElement, "group");
-
-                    Identifiable[] recipients = new Identifiable[userElements.length
-                            + groupElements.length];
-
-                    for (int u = 0; u < userElements.length; u++) {
-                        String userId = userElements[u].getAttribute("id");
-                        recipients[u] = getUser(userId);
-                    }
-
-                    for (int g = 0; g < groupElements.length; g++) {
-                        String groupId = groupElements[g].getAttribute("id");
-                        recipients[userElements.length + g] = getGroup(groupId);
-                    }
-
-                    Element bodyElement = helper.getFirstChild(messageElements[i], "body");
-                    Element bodyTextElement = helper.getFirstChild(bodyElement, "text");
-                    String body = DocumentHelper.getSimpleElementText(bodyTextElement);
-                    Element[] bodyParamElements = helper.getChildren(bodyElement, "param");
-                    String[] bodyParams = new String[bodyParamElements.length];
-                    for (int p = 0; p < bodyParamElements.length; p++) {
-                        bodyParams[p] = DocumentHelper.getSimpleElementText(bodyParamElements[p]);
-                    }
-
-                    Element subjectElement = helper.getFirstChild(messageElements[i], "subject");
-                    Element subjectTextElement = helper.getFirstChild(subjectElement, "text");
-                    String subject = DocumentHelper.getSimpleElementText(subjectTextElement);
-                    Element[] subjectParamElements = helper.getChildren(subjectElement, "param");
-                    String[] subjectParams = new String[subjectParamElements.length];
-                    for (int p = 0; p < subjectParamElements.length; p++) {
-                        subjectParams[p] = DocumentHelper
-                                .getSimpleElementText(subjectParamElements[p]);
-                    }
-                    
-                    String readString = "false";
-                    if (messageElements[i].hasAttribute("read")) {
-                        readString = messageElements[i].getAttribute("read");
-                    }
-                    boolean read = Boolean.valueOf(readString).booleanValue();
-
-                    Message message = new Message(subject, subjectParams, body, bodyParams, sender,
-                            recipients);
-                    InboxMessage msg = new XmlSourceInboxMessage(this, id, message, read);
-                    this.messages.add(msg);
-                }
-            }
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected User getUser(String id) throws AccessControlException {
-        return this.user.getAccreditableManager().getUserManager().getUser(id);
-    }
-
-    protected Group getGroup(String id) throws AccessControlException {
-        return this.user.getAccreditableManager().getGroupManager().getGroup(id);
-    }
-
-    private String sourceUri;
-
-    protected String getSourceUri() {
-        if (this.sourceUri == null) {
-            String configUri = this.user.getAccreditableManager().getConfigurationCollectionUri();
-            if (configUri.endsWith("/")) {
-                configUri = configUri.substring(0, configUri.length() - 1);
-            }
-            this.sourceUri = configUri + "/inboxes/" + this.user.getId() + ".xml";
-        }
-        return this.sourceUri;
-    }
-
-    protected synchronized void save() {
-        try {
-
-            long newLastModified = SourceUtil.getLastModified(getSourceUri(), this.manager);
-            if (this.lastModified > -1 && newLastModified > this.lastModified) {
-                throw new RuntimeException("The inbox file [" + getSourceUri()
-                        + "] has been changed externally and can't be saved.");
-            }
-
-            NamespaceHelper helper = buildXml();
-            SourceUtil.writeDOM(helper.getDocument(), getSourceUri(), this.manager);
-            this.lastModified = SourceUtil.getLastModified(getSourceUri(), this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected NamespaceHelper buildXml() throws ParserConfigurationException {
-        NamespaceHelper helper = new NamespaceHelper(Notifier.NAMESPACE, "", "inbox");
-
-        InboxMessage[] messages = getMessages();
-        for (int i = 0; i < messages.length; i++) {
-            
-            Message message = messages[i].getMessage();
-            
-            Element messageElement = helper.createElement("message");
-            helper.getDocument().getDocumentElement().appendChild(messageElement);
-            User sender = (User) message.getSender();
-            messageElement.setAttribute("sender", sender.getId());
-
-            Element recipientsElement = helper.createElement("recipients");
-            messageElement.appendChild(recipientsElement);
-
-            Identifiable[] recipients = message.getRecipients();
-            for (int r = 0; r < recipients.length; r++) {
-                if (recipients[r] instanceof User) {
-                    Element userElement = helper.createElement("user");
-                    userElement.setAttribute("id", ((User) recipients[r]).getId());
-                    recipientsElement.appendChild(userElement);
-                } else if (recipients[r] instanceof Group) {
-                    Element groupElement = helper.createElement("group");
-                    groupElement.setAttribute("id", ((Group) recipients[r]).getId());
-                    recipientsElement.appendChild(groupElement);
-                }
-            }
-
-            Element subjectElement = helper.createElement("subject");
-            messageElement.appendChild(subjectElement);
-            Element subjectTextElement = helper.createElement("text", message.getSubject());
-            subjectElement.appendChild(subjectTextElement);
-            String[] subjectParams = message.getSubjectParameters();
-            for (int p = 0; p < subjectParams.length; p++) {
-                Element paramElement = helper.createElement("param", subjectParams[p]);
-                subjectElement.appendChild(paramElement);
-            }
-
-            Element bodyElement = helper.createElement("body");
-            messageElement.appendChild(bodyElement);
-            Element bodyTextElement = helper.createElement("text", message.getBody());
-            bodyElement.appendChild(bodyTextElement);
-            String[] bodyParams = message.getBodyParameters();
-            for (int p = 0; p < bodyParams.length; p++) {
-                Element paramElement = helper.createElement("param", bodyParams[p]);
-                bodyElement.appendChild(paramElement);
-            }
-            
-            messageElement.setAttribute("read", Boolean.toString(messages[i].isMarkedAsRead()));
-            messageElement.setAttribute("id", messages[i].getId());
-        }
-        return helper;
-    }
-
-    public InboxMessage getMessage(String id) {
-        InboxMessage[] messages = getMessages();
-        for (int i = 0; i < messages.length; i++) {
-            if (messages[i].getId().equals(id)) {
-                return messages[i];
-            }
-        }
-        throw new RuntimeException("No message found with ID [" + id + "]");
-    }
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxManager.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxManager.java
deleted file mode 100644
index 3fbca19..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxManager.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox.xml;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.inbox.AbstractInboxManager;
-import org.apache.lenya.inbox.Inbox;
-
-/**
- * XML-source based inbox manager.
- */
-public class XmlSourceInboxManager extends AbstractInboxManager implements Serviceable {
-
-    protected ServiceManager manager;
-
-    protected Inbox doGetInbox(User user) {
-        return new XmlSourceInbox(this.manager, user);
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxMessage.java b/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxMessage.java
deleted file mode 100644
index 5028262..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxMessage.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox.xml;
-
-import org.apache.lenya.inbox.AbstractInboxMessage;
-import org.apache.lenya.notification.Message;
-
-/**
- * XML source inbox message.
- */
-public class XmlSourceInboxMessage extends AbstractInboxMessage {
-
-    private XmlSourceInbox inbox;
-
-    /**
-     * @param inbox The inbox this message belongs to.
-     * @param id The ID.
-     * @param message The message to wrap.
-     * @param markedAsRead if the message is marked as read.
-     */
-    public XmlSourceInboxMessage(XmlSourceInbox inbox, String id, Message message,
-            boolean markedAsRead) {
-        super(id, message, markedAsRead);
-        this.inbox = inbox;
-    }
-
-    protected void changed() {
-        this.inbox.save();
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java
deleted file mode 100644
index 3a13805..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.cocoon.transformation.I18nTransformer;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.ac.Group;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Base class for notifier implementation.
- */
-public abstract class AbstractNotifier extends AbstractLogEnabled implements Notifier, Serviceable,
-        Contextualizable {
-
-    public void notify(Message message) throws NotificationException {
-
-        Set noDuplicates = new HashSet();
-
-        Identifiable[] recipients = message.getRecipients();
-
-        for (int i = 0; i < recipients.length; i++) {
-            if (recipients[i] instanceof Group) {
-                Group group = (Group) recipients[i];
-                noDuplicates.addAll(Arrays.asList(group.getMembers()));
-            } else {
-                noDuplicates.add(recipients[i]);
-            }
-        }
-
-        for (Iterator i = noDuplicates.iterator(); i.hasNext();) {
-            Identifiable identifiable = (Identifiable) i.next();
-            if (identifiable instanceof User) {
-                User user = (User) identifiable;
-                Message translatedMessage = translateMessage(user.getDefaultMenuLocale(), message);
-                notify(user, translatedMessage);
-            }
-        }
-
-    }
-
-    protected abstract void notify(User user, Message translatedMessage)
-            throws NotificationException;
-
-    protected Message translateMessage(String locale, Message message) throws NotificationException {
-
-        SourceResolver resolver = null;
-        Source source = null;
-        try {
-
-            NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "not", "message");
-            Document doc = helper.getDocument();
-            NamespaceHelper i18nHelper = new NamespaceHelper(I18nTransformer.I18N_NAMESPACE_URI,
-                    "i18n", doc);
-
-            Element docElement = doc.getDocumentElement();
-
-            Element subjectElement = helper.createElement("subject");
-            docElement.appendChild(subjectElement);
-            Element i18nTranslateSubjectElement = i18nHelper.createElement("translate");
-            subjectElement.appendChild(i18nTranslateSubjectElement);
-            Element subjectI18nElement = i18nHelper.createElement("text", message.getSubject());
-            i18nTranslateSubjectElement.appendChild(subjectI18nElement);
-
-            String[] subjectParams = message.getSubjectParameters();
-            for (int i = 0; i < subjectParams.length; i++) {
-                Element paramElement = i18nHelper.createElement("param", subjectParams[i]);
-                i18nTranslateSubjectElement.appendChild(paramElement);
-            }
-
-            Element bodyElement = helper.createElement("body");
-            docElement.appendChild(bodyElement);
-            Element i18nTranslateElement = i18nHelper.createElement("translate");
-            bodyElement.appendChild(i18nTranslateElement);
-            Element bodyI18nElement = i18nHelper.createElement("text", message.getBody());
-            i18nTranslateElement.appendChild(bodyI18nElement);
-
-            String[] msgParams = message.getBodyParameters();
-            for (int i = 0; i < msgParams.length; i++) {
-                Element paramElement = i18nHelper.createElement("param", msgParams[i]);
-                i18nTranslateElement.appendChild(paramElement);
-            }
-
-            Session session = this.request.getSession();
-            session.setAttribute("notification.dom", doc);
-
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI("cocoon://modules/notification/message/" + locale, null,
-                    null);
-
-            if (source.exists()) {
-                doc = DocumentHelper.readDocument(source.getInputStream());
-                helper = new NamespaceHelper(NAMESPACE, "not", doc);
-
-                subjectElement = helper.getFirstChild(doc.getDocumentElement(), "subject");
-                String subject = DocumentHelper.getSimpleElementText(subjectElement);
-
-                bodyElement = helper.getFirstChild(doc.getDocumentElement(), "body");
-                String body = DocumentHelper.getSimpleElementText(bodyElement);
-
-                return new Message(subject, new String[0], body, new String[0],
-                        message.getSender(), message.getRecipients());
-            } else {
-                // this happens in the test
-                getLogger().info("cocoon protocol not available, not translating message");
-                return message;
-            }
-        } catch (Exception e) {
-            throw new NotificationException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    private Request request;
-
-    public void contextualize(Context context) throws ContextException {
-        this.request = ContextHelper.getRequest(context);
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java
deleted file mode 100644
index c48a331..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.AddressException;
-
-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.service.ServiceException;
-import org.apache.cocoon.mail.MailSender;
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.inbox.InboxNotifier;
-
-/**
- * Default notifier implementation.
- */
-public class EmailNotifier extends InboxNotifier implements Configurable {
-
-    protected void notify(User recipient, Message translatedMessage) throws NotificationException {
-        
-        super.notify(recipient, translatedMessage);
-        
-        if (!this.manager.hasService(MailSender.ROLE)) {
-            getLogger().error("Can't send mails - no MailSender service found.");
-            return;
-        }
-
-        Identifiable sender = translatedMessage.getSender();
-        MailSender mailer = null;
-        try {
-            mailer = (MailSender) this.manager.lookup(MailSender.ROLE);
-            if (this.username == null) {
-                mailer.setSmtpHost(this.smtpHost);
-            } else {
-                mailer.setSmtpHost(this.smtpHost, this.username, this.password);
-            }
-
-            mailer.setTo(recipient.getEmail());
-            if (sender instanceof User) {
-                mailer.setFrom(((User) sender).getEmail());
-            }
-
-            mailer.setSubject(translatedMessage.getSubject());
-            mailer.setBody(translatedMessage.getBody(), "text/plain; charset=UTF-8");
-            mailer.send();
-        
-        } catch (AddressException e) {
-            getLogger().error("Sending mail failed (address error): ", e);
-            throw new NotificationException(e);
-        } catch (MessagingException e) {
-            getLogger().error("Sending mail failed (mail error): ", e);
-            throw new NotificationException(e);
-        } catch (ServiceException e) {
-            throw new NotificationException(e);
-        } finally {
-            if (mailer != null) {
-                this.manager.release(mailer);
-            }
-        }
-    }
-
-    private String smtpHost;
-    private String username;
-    private String password;
-
-    public void configure(Configuration config) throws ConfigurationException {
-        Configuration smtp = config.getChild("smtp");
-        this.smtpHost = smtp.getAttribute("host");
-        this.username = smtp.getAttribute("username", null);
-        if (this.username != null) {
-            this.password = smtp.getAttribute("password");
-        }
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Message.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Message.java
deleted file mode 100644
index d54771d..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Message.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import java.util.Arrays;
-import java.util.Date;
-
-import org.apache.lenya.ac.Identifiable;
-
-/**
- * A notification message.
- */
-public class Message {
-
-    private String subject;
-    private String[] subjectParams;
-    private String body;
-    private String[] bodyParams;
-    private Identifiable sender;
-    private Identifiable[] recipients;
-    private Date time;
-
-    /**
-     * Ctor.
-     * @param subject The subject.
-     * @param subjectParams The subject parameters.
-     * @param body The body.
-     * @param bodyParams The body parameters.
-     * @param sender The sender.
-     * @param recipients The recipients.
-     */
-    public Message(String subject, String[] subjectParams, String body, String[] bodyParams,
-            Identifiable sender, Identifiable[] recipients) {
-        this.subject = subject;
-        this.subjectParams = subjectParams;
-        this.body = body;
-        this.bodyParams = bodyParams;
-        this.sender = sender;
-        this.recipients = recipients;
-        this.time = new Date();
-    }
-
-    /**
-     * Determine if this message has parameters
-     * @return true if the message has parameters
-     */
-    public boolean hasBodyParameters() {
-        return bodyParams != null && bodyParams.length > 0;
-    }
-
-    /**
-     * Retrieve the message content
-     * @return the message
-     */
-    public String getBody() {
-        return body;
-    }
-
-    /**
-     * Retrieve the parameters for this message
-     * @return the parameters
-     */
-    public String[] getBodyParameters() {
-        return bodyParams;
-    }
-
-    /**
-     * Determine if this message has parameters
-     * @return true if the message has parameters
-     */
-    public boolean hasSubjectParameters() {
-        return subjectParams != null && subjectParams.length > 0;
-    }
-
-    /**
-     * Retrieve the message subject
-     * @return the subject
-     */
-    public String getSubject() {
-        return subject;
-    }
-
-    /**
-     * Retrieve the parameters for this message
-     * @return the parameters
-     */
-    public String[] getSubjectParameters() {
-        return subjectParams;
-    }
-    
-    /**
-     * @return The sender.
-     */
-    public Identifiable getSender() {
-        return this.sender;
-    }
-    
-    /**
-     * @return The recipients.
-     */
-    public Identifiable[] getRecipients() {
-        // don't expose the internal array
-        return (Identifiable[]) Arrays.asList(this.recipients).toArray(
-                new Identifiable[this.recipients.length]);
-    }
-    
-    /**
-     * @return The time when the message was sent.
-     */
-    public Date getTime() {
-        return (Date)this.time.clone();
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationEventDescriptor.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationEventDescriptor.java
deleted file mode 100644
index 318d345..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationEventDescriptor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import org.apache.lenya.util.Assert;
-
-/**
- * Descriptor for notification events.
- */
-public class NotificationEventDescriptor {
-
-    private Message message;
-    
-    /**
-     * @param message The message.
-     */
-    public NotificationEventDescriptor(Message message) {
-        Assert.notNull("message", message);
-        this.message = message;
-    }
-    
-    /**
-     * @return The message.
-     */
-    public Message getMessage() {
-        return this.message;
-    }
-    
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationException.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationException.java
deleted file mode 100644
index 508f76d..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationException.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-/**
- * Notification exception.
- */
-public class NotificationException extends Exception {
-
-    /**
-     * Auto-generated serial version UID.
-     */
-    private static final long serialVersionUID = 4354478318970992557L;
-
-    /**
-     * Ctor.
-     */
-    public NotificationException() {
-        super();
-    }
-
-    /**
-     * Ctor.
-     * @param arg0 The message.
-     * @param arg1 The cause.
-     */
-    public NotificationException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-    }
-
-    /**
-     * Ctor.
-     * @param arg0 The message.
-     */
-    public NotificationException(String arg0) {
-        super(arg0);
-    }
-
-    /**
-     * Ctor.
-     * @param arg0 The cause.
-     */
-    public NotificationException(Throwable arg0) {
-        super(arg0);
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationListener.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationListener.java
deleted file mode 100644
index 544f5b7..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import org.apache.lenya.cms.observation.AbstractRepositoryListener;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-
-/**
- * Repository listener to distribute notification events.
- */
-public class NotificationListener extends AbstractRepositoryListener {
-
-    public void eventFired(RepositoryEvent event) {
-
-        if (!(event.getDescriptor() instanceof NotificationEventDescriptor)) {
-            return;
-        }
-
-        NotificationEventDescriptor descriptor = (NotificationEventDescriptor) event
-                .getDescriptor();
-
-        Message message = descriptor.getMessage();
-
-        Notifier notifier = null;
-        try {
-            notifier = (Notifier) this.manager.lookup(Notifier.ROLE);
-            notifier.notify(message);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (notifier != null) {
-                this.manager.release(notifier);
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationUtil.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationUtil.java
deleted file mode 100644
index 68781f4..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationUtil.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-
-/**
- * Notification utility.
- */
-public final class NotificationUtil {
-
-    /**
-     * Invokes a notification.
-     * @param manager The service manager.
-     * @param message The message.
-     * @throws NotificationException if an error occurs.
-     */
-    public static final void notify(ServiceManager manager, Message message)
-            throws NotificationException {
-
-        Notifier notifier = null;
-        try {
-            notifier = (Notifier) manager.lookup(Notifier.ROLE);
-            notifier.notify(message);
-        } catch (ServiceException e) {
-            throw new NotificationException(e);
-        } finally {
-            if (notifier != null) {
-                manager.release(notifier);
-            }
-        }
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Notifier.java b/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Notifier.java
deleted file mode 100644
index 2f45ec4..0000000
--- a/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Notifier.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-/**
- * Notification service.
- */
-public interface Notifier {
-
-    /**
-     * The notification namespace.
-     */
-    String NAMESPACE = "http://apache.org/lenya/notification/2.0";
-
-    /**
-     * The service role.
-     */
-    String ROLE = Notifier.class.getName();
-    
-    /**
-     * Send a notification.
-     * @param message The message.
-     * @throws NotificationException if an error occurs.
-     */
-    void notify(Message message) throws NotificationException;
-    
-}
diff --git a/trunk/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java b/trunk/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java
deleted file mode 100644
index ddd6a2d..0000000
--- a/trunk/src/modules/notification/java/test/org/apache/lenya/inbox/InboxTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.inbox;
-
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.inbox.xml.XmlSourceInbox;
-import org.apache.lenya.notification.AbstractNotificationTest;
-import org.apache.lenya.notification.Message;
-
-/**
- * Inbox test.
- */
-public class InboxTest extends AbstractNotificationTest {
-    
-    protected static final String SUBJECT = "hello";
-
-    /**
-     * The test.
-     * @throws Exception if an error occurs.
-     */
-    public void testInbox() throws Exception {
-        
-        User lenya = getAccreditableManager().getUserManager().getUser("lenya");
-        Inbox inbox = getInbox(lenya);
-        
-        cleanUp(inbox, SUBJECT);
-        assertFalse(containsMessage(inbox, SUBJECT));
-        
-        Identifiable[] recipients = { lenya };
-
-        Message message = new Message(SUBJECT, new String[0], "body", new String[0], lenya,
-                recipients);
-        InboxMessage inboxMessage = inbox.add(message);
-        
-        assertEquals(inboxMessage.getMessage().getSubject(), SUBJECT);
-        
-        assertFalse(inboxMessage.isMarkedAsRead());
-        inboxMessage.markAsRead(true);
-        assertTrue(inboxMessage.isMarkedAsRead());
-        
-        XmlSourceInbox xmlInbox = new XmlSourceInbox(getManager(), lenya);
-        assertTrue(containsMessage(xmlInbox, SUBJECT));
-        
-        InboxMessage xmlMessage = getMessage(xmlInbox, SUBJECT);
-        assertTrue(xmlMessage.isMarkedAsRead());
-        
-        cleanUp(inbox, SUBJECT);
-        
-    }
-
-}
diff --git a/trunk/src/modules/notification/java/test/org/apache/lenya/notification/AbstractNotificationTest.java b/trunk/src/modules/notification/java/test/org/apache/lenya/notification/AbstractNotificationTest.java
deleted file mode 100644
index 082a784..0000000
--- a/trunk/src/modules/notification/java/test/org/apache/lenya/notification/AbstractNotificationTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.inbox.Inbox;
-import org.apache.lenya.inbox.InboxManager;
-import org.apache.lenya.inbox.InboxMessage;
-
-/**
- * Base class for notification tests.
- */
-public abstract class AbstractNotificationTest extends AbstractAccessControlTest {
-
-    protected Inbox getInbox(User user) throws Exception {
-        InboxManager inboxManager = null;
-        try {
-            inboxManager = (InboxManager) getManager().lookup(InboxManager.ROLE);
-            return inboxManager.getInbox(user);
-        }
-        finally {
-            if (inboxManager != null) {
-                getManager().release(inboxManager);
-            }
-        }
-    }
-
-    protected boolean containsMessage(Inbox inbox, String subject) {
-        InboxMessage[] messages = inbox.getMessages();
-        if (messages.length == 0) {
-            return false;
-        }
-        return messages[messages.length - 1].getMessage().getSubject().equals(subject);
-    }
-    
-    protected InboxMessage getMessage(Inbox inbox, String subject) {
-        InboxMessage[] messages = inbox.getMessages();
-        for (int i = 0; i < messages.length; i++) {
-            if (messages[i].getMessage().getSubject().equals(subject)) {
-                return messages[i];
-            }
-        }
-        return null;
-    }
-    
-    protected void cleanUp(Inbox inbox, String subject) {
-        InboxMessage[] messages = inbox.getMessages();
-        for (int i = 0; i < messages.length; i++) {
-            if (messages[i].getMessage().getSubject().equals(subject)) {
-                inbox.remove(messages[i]);
-            }
-        }
-    }
-}
diff --git a/trunk/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java b/trunk/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java
deleted file mode 100644
index 0ee2085..0000000
--- a/trunk/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.notification;
-
-import org.apache.lenya.ac.Identifiable;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.inbox.Inbox;
-
-/**
- * Notification test.
- */
-public class NotificationTest extends AbstractNotificationTest {
-
-    protected static final String SUBJECT = "hello";
-
-    /**
-     * The test.
-     * @throws Exception
-     */
-    public void testNotification() throws Exception {
-
-        login("lenya");
-
-        Session session = getFactory().getSession();
-
-        User lenya = getAccreditableManager().getUserManager().getUser("lenya");
-        User alice = getAccreditableManager().getUserManager().getUser("alice");
-
-        Identifiable[] recipients = { alice };
-
-        Message message = new Message(SUBJECT, new String[0], "body", new String[0], lenya,
-                recipients);
-        NotificationEventDescriptor descr = new NotificationEventDescriptor(message);
-        RepositoryEvent event = RepositoryEventFactory.createEvent(getManager(), session,
-                getLogger(), descr);
-
-        session.enqueueEvent(event);
-        
-        Inbox inbox = getInbox(alice);
-        cleanUp(inbox, SUBJECT);
-        
-        assertFalse(containsMessage(inbox, SUBJECT));
-        session.commit();
-        Thread.sleep(100);
-        assertTrue(containsMessage(inbox, SUBJECT));
-        
-        cleanUp(inbox, SUBJECT);
-
-    }
-
-}
diff --git a/trunk/src/modules/notification/resources/i18n/cmsui.xml b/trunk/src/modules/notification/resources/i18n/cmsui.xml
deleted file mode 100644
index 2e7ff8b..0000000
--- a/trunk/src/modules/notification/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="inbox-of">Inbox of User {0}</message>
-  <message key="Sender">Sender</message>
-  <message key="new-message">New Message</message>
-  <message key="From">From</message>
-  <message key="To">To</message>
-  <message key="Message">Message</message>
-  <message key="Messages">Messages</message>
-  <message key="Send">Send</message>
-  <message key="selected-message">Selected&#160;message</message>
-  <message key="unread-messages">{0} new messages</message>
-  <message key="unread-message">1 new message</message>
-  <message key="Read">Read</message>
-  <message key="Inbox">Inbox</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/notification/resources/i18n/cmsui_de.xml b/trunk/src/modules/notification/resources/i18n/cmsui_de.xml
deleted file mode 100644
index a522958..0000000
--- a/trunk/src/modules/notification/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  

-  <message key="inbox-of">Posteingang von Nutzer {0}</message>

-  <message key="Sender">Absender</message>
-  <message key="new-message">Neue Nachricht</message>
-  <message key="From">Von</message>
-  <message key="To">An</message>
-  <message key="Message">Nachricht</message>
-  <message key="Messages">Nachrichten</message>
-  <message key="Send">Senden</message>
-  <message key="selected-message">Ausgewählte&#160;Nachricht</message>
-  <message key="unread-messages">{0} neue Nachrichten</message>
-  <message key="unread-message">1 neue Nachricht</message>
-  <message key="Read">Gelesen</message>
-  <message key="Inbox">Posteingang</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/notification/sitemap.xmap b/trunk/src/modules/notification/sitemap.xmap
deleted file mode 100644
index 5881739..0000000
--- a/trunk/src/modules/notification/sitemap.xmap
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-      <map:match pattern="message/*">
-      
-      <!--
-        <map:generate src="fallback://lenya/modules/notification/content/message.xml"/>
-        -->
-        <map:generate type="session-attr">
-          <map:parameter name="attr-name" value="notification.dom"/>
-        </map:generate>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{1}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-        
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/notification/test/canoo/test.xml b/trunk/src/modules/notification/test/canoo/test.xml
deleted file mode 100644
index 96a9d7a..0000000
--- a/trunk/src/modules/notification/test/canoo/test.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="Notification test" basedir="." default="main">
-  
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-  
-  <target name="main">
-    <webtest name="notification">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi"/>
-        
-        <!-- inbox usecase -->
-        <invoke url="index.html?lenya.usecase=notification.inbox"/>
-        <verifyElementText type="h1" text="Inbox of User lenya"/>
-        
-        <!-- send message -->
-        <invoke url="index.html?lenya.usecase=notification.sendMessage"/>
-        <verifyElementText type="h1" text="New Message"/>
-        <setSelectField name="recipient" value="lenya"/>
-        <setInputField name="subject" value="NotificationTestSubject"/>
-        <setInputField name="body" value="NotificationTestBody"/>
-        <clickButton name="submit"/>
-        <verifyElementText type="h1" text="Inbox of User lenya"/>
-        <verifyText text="NotificationTestSubject"/>
-        
-        <!-- read message -->
-        <clickLink xpath="//a[normalize-space(.) = 'NotificationTestSubject']"/>
-        <verifyText text="Selected"/>
-        <verifyText text="NotificationTestBody"/>
-
-        <!-- delete message -->        
-        <clickButton name="submit"/>
-        <verifyElementText type="h1" text="Inbox of User lenya"/>
-        <not>
-          <verifyText text="NotificationTestSubject"/>
-        </not>
-
-       <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-</project>
diff --git a/trunk/src/modules/notification/usecases/currentMessage.jx b/trunk/src/modules/notification/usecases/currentMessage.jx
deleted file mode 100644
index 4e4769b..0000000
--- a/trunk/src/modules/notification/usecases/currentMessage.jx
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: groups.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <jx:if test="${usecase.getName().getClass().isInstance(messageId)}">
-    <jx:set var="message" value="${inbox.getMessage(messageId)}"/>
-    
-    <div class="lenya-box" style="width: 100%">
-      <div class="lenya-box-title"><i18n:text>selected-message</i18n:text></div>
-      <div class="lenya-box-body">
-        <table class="lenya-table-noborder">
-          <tr>
-            <td class="lenya-entry-caption"><i18n:text>From</i18n:text>:</td>
-            <td style="white-space: nowrap">
-              <jx:out value="${message.getMessage().getSender().getName()}"/>
-              (<a href="?lenya.usecase=admin.user&amp;userId=${message.getMessage().getSender().getId()}"><jx:out value="${message.getMessage().getSender().getId()}"/></a>)
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><i18n:text>Subject</i18n:text>:</td>
-            <td>
-              <i18n:translate>
-                <i18n:text><jx:out value="${message.getMessage().getSubject()}"/></i18n:text>
-                <jx:forEach var="param" items="${message.getMessage().getSubjectParameters()}">
-                  <i18n:param><jx:out value="${param}"/></i18n:param>
-                </jx:forEach>
-              </i18n:translate>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption" valign="top"><i18n:text>Message</i18n:text>:</td>
-            <td>
-              <i18n:translate>
-                <i18n:text><jx:out value="${message.getMessage().getBody()}"/></i18n:text>
-                <jx:forEach var="param" items="${message.getMessage().getBodyParameters()}">
-                  <i18n:param><jx:out value="${param}"/></i18n:param>
-                </jx:forEach>
-              </i18n:translate>
-            </td>
-          </tr>
-          <tr>
-            <td/>
-            <td>
-              <br/>
-              <form method="POST">
-                <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-                <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-                <input type="hidden" name="deleteMessageId" value="${messageId}"/>
-                <input type="submit" name="submit" value="Delete" i18n:attr="value"/>
-              </form>
-            </td>
-          </tr>
-        </table>
-      </div>
-    </div>
-    
-  </jx:if>
-  
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/usecases/inbox.jx b/trunk/src/modules/notification/usecases/inbox.jx
deleted file mode 100644
index d843a1a..0000000
--- a/trunk/src/modules/notification/usecases/inbox.jx
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: groups.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1>
-        <i18n:translate>
-          <i18n:text>inbox-of</i18n:text>
-          <i18n:param><jx:out value="${usecase.getParameter('user')}"/></i18n:param>
-        </i18n:translate>
-      </h1>
-      
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <div style="margin-bottom: 10px;">
-        <a href="?lenya.usecase=notification.sendMessage"><i18n:text>new-message</i18n:text></a>
-      </div>
-      
-      <jx:set var="inbox" value="${usecase.getParameter('inbox')}"/>
-      <jx:set var="messageId" value="${request.getParameter('messageId')}"/>
-      
-      <table>
-        <tr>
-          <td valign="top" style="padding: 0px; padding-right: 20px;">
-            <jx:import uri="fallback://lenya/modules/notification/usecases/messageList.jx"/>
-          </td>
-          <td valign="top" style="padding: 0px; padding-left: 20px;">
-            <jx:import uri="fallback://lenya/modules/notification/usecases/currentMessage.jx"/>
-          </td>
-        </tr>
-      </table>
-            
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/usecases/messageList.jx b/trunk/src/modules/notification/usecases/messageList.jx
deleted file mode 100644
index 710fea9..0000000
--- a/trunk/src/modules/notification/usecases/messageList.jx
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: groups.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<jx:template
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <table class="lenya-table-list">
-    <tr>
-      <th style="text-align: left; padding-right: 20px;"><i18n:text>Subject</i18n:text></th>
-      <th style="text-align: left; padding-right: 20px;"><i18n:text>Sender</i18n:text></th>
-      <th style="text-align: left; padding-right: 20px;"><i18n:text>Date</i18n:text></th>
-      <th style="text-align: left; padding-right: 20px;"><i18n:text>Read</i18n:text></th>
-      <th>&#160;</th>
-    </tr>
-    <jx:forEach var="message" items="${inbox.getMessages()}">
-      
-      <jx:set var="class" value="normal"/>
-      <jx:if test="${messageId.equals(message.getId())}">
-        <jx:set var="class" value="highlight"/>
-      </jx:if>
-      
-      <tr class="${class}">
-        <td>
-          <a href="?lenya.usecase=notification.inbox&amp;messageId=${message.getId()}">
-            <i18n:translate>
-              <i18n:text><jx:out value="${message.getMessage().getSubject()}"/></i18n:text>
-              <jx:forEach var="param" items="${message.getMessage().getSubjectParameters()}">
-                <i18n:param><jx:out value="${param}"/></i18n:param>
-              </jx:forEach>
-            </i18n:translate>
-          </a>
-        </td>
-        <td>
-          <a href="?lenya.usecase=admin.user&amp;userId=${message.getMessage().getSender().getId()}"><jx:out value="${message.getMessage().getSender().getId()}"/></a>
-        </td>
-        <td>
-          <jx:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${message.getMessage().getTime()}"/>
-        </td>
-        <td style="text-align: center;">
-          <jx:if test="${message.isMarkedAsRead()}">&#10004;</jx:if>
-        </td>
-        <td style="text-align: center;">
-          <form method="POST">
-            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-            <input type="hidden" name="deleteMessageId" value="${message.getId()}"/>
-            <input type="submit" name="submit" value="Delete" i18n:attr="value"/>
-          </form>
-        </td>
-      </tr>
-    </jx:forEach>
-  </table>
-  
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/usecases/notification/usecase.xmap b/trunk/src/modules/notification/usecases/notification/usecase.xmap
deleted file mode 100644
index 99d20fa..0000000
--- a/trunk/src/modules/notification/usecases/notification/usecase.xmap
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:components>
-    <map:generators default="file">
-      <map:generator name="session-attr" logger="sitemap.generator.session-attr"
-           src="org.apache.cocoon.generation.SessionAttributeGenerator"/>
-    </map:generators>
-  </map:components>
-
-  <map:pipelines>
-  
-    <map:pipeline internal-only="true">
-      
-      <map:match pattern="*">
-        <map:generate type="session-attr">
-          <map:parameter name="attr-name" value="notification.dom"/>
-        </map:generate>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{locale}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/notification/usecases/sendMessage.jx b/trunk/src/modules/notification/usecases/sendMessage.jx
deleted file mode 100644
index 28adac2..0000000
--- a/trunk/src/modules/notification/usecases/sendMessage.jx
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: groups.jx 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <page:body>
-    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab">
-      <h1><i18n:text>new-message</i18n:text></h1>
-      
-      <table class="lenya-table-noborder">
-        <tr>
-          <td colspan="2">
-            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-          </td>
-        </tr>
-      </table>
-      
-      <jx:set var="sender" value="${usecase.getParameter('user')}"/>
-      
-      <form action="" method="POST">
-        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-        <div style="margin: 10px 0px">
-          <table class="lenya-table-noborder">
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>From</i18n:text></td>
-              <td>
-                <jx:out value="${sender.getId()}"></jx:out>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>To</i18n:text></td>
-              <td>
-                <select class="lenya-form-element" name="recipient">
-                  <jx:forEach var="recipient" items="${usecase.getParameter('users')}">
-                    <option value="${recipient.getId()}"><jx:out value="${recipient.getId()}"/></option>
-                  </jx:forEach>
-                </select>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><i18n:text>Subject</i18n:text></td>
-              <td>
-                <input class="lenya-form-element" name="subject" type="text"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption" valign="top"><i18n:text>Message</i18n:text></td>
-              <td>
-                <textarea style="height: 300px" class="lenya-form-element" name="body"/>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input name="submit" type="submit" value="Send" i18n:attr="value"/>
-              </td>
-            </tr>
-          </table>
-        </div>
-      </form>
-      
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/modules/notification/xslt/insertContent.xsl b/trunk/src/modules/notification/xslt/insertContent.xsl
deleted file mode 100644
index 756db2d..0000000
--- a/trunk/src/modules/notification/xslt/insertContent.xsl
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:not="http://apache.org/lenya/notification/2.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  >
-
-  <xsl:param name="subject"/>
-  <xsl:param name="body"/>
-
-  <xsl:template match="/not:message">
-    <xsl:apply-templates/>
-  </xsl:template>
-  
-  
-  <xsl:template match="not:subject">
-    <xsl:copy>
-      <i18n:text><xsl:value-of select="$subject"/></i18n:text>
-    </xsl:copy>
-  </xsl:template>
-  
-
-  <xsl:template match="not:body">
-    <xsl:copy>
-      <i18n:text><xsl:value-of select="$body"/></i18n:text>
-    </xsl:copy>
-  </xsl:template>
-
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/opendocument/config/cocoon-xconf/resource-type-opendocument.xconf b/trunk/src/modules/opendocument/config/cocoon-xconf/resource-type-opendocument.xconf
deleted file mode 100644
index 3da8470..0000000
--- a/trunk/src/modules/opendocument/config/cocoon-xconf/resource-type-opendocument.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'opendocument']">
-
-  <component-instance name="opendocument"
-                      logger="lenya.resourcetypes.opendocument"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <sample 
-      mime-type="application/vnd.oasis.opendocument.text"
-      uri="fallback://lenya/modules/opendocument/samples/helloworld.odt"
-    />
-    <!-- NOTE: Will be matched within sitemap of this module (modules/opendocument/sitemap.xmap) -->
-    <format name="xhtml" uri="cocoon://modules/opendocument/xhtml.xml"/>
-    <format name="webdavGET" uri="cocoon://modules/opendocument/davget.xml"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-create-odt.xconf b/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-create-odt.xconf
deleted file mode 100644
index c9eb494..0000000
--- a/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-create-odt.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase-create-metadata.xconf 7081 2005-11-11 13:04:23Z felix $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'opendocument.create']">
-
-  <component-instance name="opendocument.create" logger="lenya.module.odt"
-    class="org.apache.lenya.cms.site.usecases.CreateOpenDocument">
-    <view uri="modules/sitemanagement/usecases/site/create.jx"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-upload-odt.xconf b/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-upload-odt.xconf
deleted file mode 100644
index 85bfc7b..0000000
--- a/trunk/src/modules/opendocument/config/cocoon-xconf/usecase-upload-odt.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase-create-metadata.xconf 7081 2005-11-11 13:04:23Z felix $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'opendocument.upload']">
-
-  <component-instance name="opendocument.upload" logger="lenya.module.odt"
-    class="org.apache.lenya.cms.site.usecases.UploadOpenDocument">
-    <view uri="modules/opendocument/usecases/upload.jx"/>
-    <event id="edit"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules/opendocument/config/menus/opendocument.xsp b/trunk/src/modules/opendocument/config/menus/opendocument.xsp
deleted file mode 100644
index 9e40e97..0000000
--- a/trunk/src/modules/opendocument/config/menus/opendocument.xsp
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="opendocument.create" href="?doctype=opendocument">
-            <i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-opendocument</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            try {
-                Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-                if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                    String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                    if ("opendocument".equals(doctype)) {
-                        String requestURI = <input:get-attribute module="request" as="string" name="requestURI"/>;
-                        String moduleURI = requestURI.substring(0,requestURI.lastIndexOf(".html")).concat(".odt?lenya.module=opendocument");
-                        <block areas="authoring">
-                          <item>
-                            <xsp:attribute name="href">
-                              <xsp:expr>moduleURI</xsp:expr>
-                            </xsp:attribute>
-                            <i18n:text>Download ODT</i18n:text></item>
-                        </block>
-                        <block areas="authoring">
-                          <item uc:usecase="opendocument.upload" href="?"><i18n:text>Upload ODT</i18n:text></item>
-                        </block>
-                    }
-                }
-            }
-            catch (Exception e) {
-                throw new ProcessingException("Error during menu generation: ", e);
-            }
-          </xsp:logic>
-      </menu>
-    </menus>
-
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/opendocument/config/module.xml b/trunk/src/modules/opendocument/config/module.xml
deleted file mode 100644
index e9f4849..0000000
--- a/trunk/src/modules/opendocument/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.opendocument</id>
-  <depends module="org.apache.lenya.modules.sitemanagement"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>ODF Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>ODF Module</description>
-</module>
diff --git a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/publication/OpenDocumentWrapper.java b/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/publication/OpenDocumentWrapper.java
deleted file mode 100644
index 0ae2dc1..0000000
--- a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/publication/OpenDocumentWrapper.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-
-/**
- * Wrapper class for the ODT resource type.
- */
-public class OpenDocumentWrapper extends AbstractLogEnabled {
-
-    /**
-     * The extension for ODT documents.
-     */
-    public static final String ODT_EXTENSION = "odt";
-
-    /**
-     * The mime-type for ODT documents.
-     */
-    public static final String ODT_MIME_TYPE = "application/vnd.oasis.opendocument.text";
-
-    private Document delegate;
-
-    /**
-     * @param doc The document to wrap.
-     * @param logger The logger.
-     */
-    public OpenDocumentWrapper(Document doc, Logger logger) {
-        enableLogging(logger);
-        this.delegate = doc;
-    }
-
-    /**
-     * @param file The part to write.
-     */
-    public void write(Part file) {
-        if (!file.getMimeType().equals(ODT_MIME_TYPE)) {
-            throw new IllegalArgumentException("Invalid mime type: [" + file.getMimeType() + "]");
-        }
-        try {
-            write(file.getInputStream());
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Writes the content of the resource.
-     * @param inputStream The input stream providing the content.
-     */
-    public void write(InputStream inputStream) {
-        final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-
-        OutputStream destOutputStream = null;
-        try {
-
-            IOUtils.copy(inputStream, sourceBos);
-
-            destOutputStream = delegate.getOutputStream();
-            IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-
-            delegate.setMimeType(ODT_MIME_TYPE);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (destOutputStream != null) {
-                try {
-                    destOutputStream.flush();
-                    destOutputStream.close();
-                } catch (Exception ignore) {
-                }
-            }
-        }
-
-    }
-
-}
diff --git a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/CreateOpenDocument.java b/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/CreateOpenDocument.java
deleted file mode 100644
index 598b14f..0000000
--- a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/CreateOpenDocument.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.OpenDocumentWrapper;
-
-
-/**
- * Usecase to create a document.
- * 
- * @version $Id: CreateDocument.java 379098 2006-02-20 11:35:10Z andreas $
- */
-public class CreateOpenDocument extends CreateDocument {
-
-    protected String getSourceExtension() {
-        String extension = OpenDocumentWrapper.ODT_EXTENSION;
-        return extension;
-    }
-}
diff --git a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/UploadOpenDocument.java b/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/UploadOpenDocument.java
deleted file mode 100644
index c9e3036..0000000
--- a/trunk/src/modules/opendocument/java/src/org/apache/lenya/cms/site/usecases/UploadOpenDocument.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.OpenDocumentWrapper;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Usecase to create a document.
- * 
- * @version $Id: CreateDocument.java 379098 2006-02-20 11:35:10Z andreas $
- */
-public class UploadOpenDocument extends InvokeWorkflow {
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!ServletHelper.isUploadEnabled(manager)) {
-            addErrorMessage("Upload is not enabled. Please check local.build.properties!");
-        }
-        Document doc = getSourceDocument();
-        if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        Part file = getPart("file");
-        if (file == null) {
-            addErrorMessage("missing-file");
-        } else {
-            if (file.isRejected()) {
-                String[] params = { Integer.toString(file.getSize()) };
-                addErrorMessage("upload-size-exceeded", params);
-            } else {
-                String mimeType = file.getMimeType();
-                if (!OpenDocumentWrapper.ODT_MIME_TYPE.equals(mimeType)) {
-                    String[] params = { mimeType, OpenDocumentWrapper.ODT_MIME_TYPE };
-                    addErrorMessage("wrong-mime-type", params);
-                }
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        OpenDocumentWrapper odt = new OpenDocumentWrapper(getSourceDocument(), getLogger());
-        Part file = getPart("file");
-        odt.write(file);
-    }
-
-}
diff --git a/trunk/src/modules/opendocument/menus.xmap b/trunk/src/modules/opendocument/menus.xmap
deleted file mode 100644
index 5cf39ce..0000000
--- a/trunk/src/modules/opendocument/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/opendocument/config/menus/opendocument.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/opendocument/resources/i18n/cmsui.xml b/trunk/src/modules/opendocument/resources/i18n/cmsui.xml
deleted file mode 100644
index 8ae1d7e..0000000
--- a/trunk/src/modules/opendocument/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-opendocument">ODT</message>
-  <message key="Upload ODT">Upload ODT</message>
-  <message key="Download ODT">Download ODT</message>
-  <message key="Upload ODT File">Upload ODT File</message>
-  <message key="Warning">Warning</message>
-  <message key="document-will-be-overwritten">The existing document will be overwritten!</message>
-  <message key="missing-file">Please select a file.</message>
-  <message key="wrong-mime-type">
-    The mime type of the document you want to upload ("{0}") does not match the required mime type "{1}"
-  </message>
-  

-</catalogue>

diff --git a/trunk/src/modules/opendocument/resources/i18n/cmsui_de.xml b/trunk/src/modules/opendocument/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 5f2534b..0000000
--- a/trunk/src/modules/opendocument/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-
-  <message key="resourceType-opendocument">ODT</message>

-  <message key="Upload ODT">ODT hochladen</message>
-  <message key="Download ODT">ODT herunterladen</message>
-  <message key="Upload ODT File">ODT-Datei hochladen</message>
-  <message key="Warning">Warnung</message>
-  <message key="document-will-be-overwritten">Das existierende Dokument wird überschrieben!</message>
-  <message key="missing-file">Bitte wählen Sie eine Datei.</message>
-  <message key="wrong-mime-type">
-    Der Mime-Type der Datei, die Sie hochladen möchten ("{0}"), entspricht nicht dem
-    benötigten Mime-Type "{1}"
-  </message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/opendocument/samples/helloworld.odt b/trunk/src/modules/opendocument/samples/helloworld.odt
deleted file mode 100644
index 0e4ba31..0000000
--- a/trunk/src/modules/opendocument/samples/helloworld.odt
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/opendocument/sitemap.xmap b/trunk/src/modules/opendocument/sitemap.xmap
deleted file mode 100644
index 72dcd3e..0000000
--- a/trunk/src/modules/opendocument/sitemap.xmap
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-
-      <!-- webdav GET matcher -->
-      <map:match pattern="davget.xml">
-        <map:act type="set-header">
-          <map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
-          <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}" mime-type="application/vnd.oasis.opendocument.text"/>
-        </map:act>
-      </map:match>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{rendertype}" -->
-
-      <map:match pattern="*.xml">
-        <map:generate src="zip:lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}!/content.xml"/>
-
-<!--
-        <map:parameter name="metaFileURL" value="{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}/meta.xml"/>
-        <map:parameter name="stylesFileURL" value="{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}/styles.xml"/>
--->
-
-        <map:transform src="fallback://lenya/modules/opendocument/xslt/opendocument2xhtml.xsl">
-          <map:parameter name="rendertype" value="{1}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <map:match pattern="**.odt">
-        <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}" mime-type="application/vnd.oasis.opendocument.text"/>
-      </map:match>
-
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/opendocument/usecases/upload.jx b/trunk/src/modules/opendocument/usecases/upload.jx
deleted file mode 100644
index 9e7c8ca..0000000
--- a/trunk/src/modules/opendocument/usecases/upload.jx
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: assets.jx 374391 2006-02-02 14:02:17Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-
-  <page:title>
-    <i18n:text>Upload ODT File</i18n:text>
-  </page:title> 
- 
-  <page:body>
-    <div class="lenya-box">
-    <div class="lenya-box-title">
-      <i18n:text>Upload ODT File</i18n:text>
-    </div>
-    <div class="lenya-box-body">
-      <form method="POST" enctype="multipart/form-data" id="form-upload">
-        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-        <table class="lenya-table-noborder">
-          <tr>
-            <td colspan="2">
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </td>
-          </tr>
-          <tr>
-            <td colspan="2" style="padding-bottom: 2em;">
-              <strong><i18n:text>Warning</i18n:text>:</strong> <i18n:text>document-will-be-overwritten</i18n:text>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="file">
-              <i18n:text>File</i18n:text> *</label></td>
-            <td><input type="file" name="file" class="lenya-form-element" size="50"/></td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption">*
-              <i18n:text>required fields</i18n:text>
-            </td>
-          </tr>
-          <tr>
-            <td/>
-            <td>
-              <input i18n:attr="value" name="submit" type="submit" value="Upload ODT"/>
-              <input i18n:attr="value" name="cancel" type="submit" value="Cancel"/>
-            </td>
-          </tr>
-        </table>
-      </form>
-    </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/opendocument/xslt/common/odt_to_xhtml.xsl b/trunk/src/modules/opendocument/xslt/common/odt_to_xhtml.xsl
deleted file mode 100755
index 7942147..0000000
--- a/trunk/src/modules/opendocument/xslt/common/odt_to_xhtml.xsl
+++ /dev/null
@@ -1,533 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Apache 2.0
-  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.
--->
-
-<!--
-http://www.opendocumentfoundation.org/repos/svn/libopendocument/trunk/xsl/default/document2xhtml.xsl
-
-resp.
-
-http://www.opendocumentfoundation.org/repos/svn/libopendocument/trunk/
-
-resp.
-
-http://books.evc-cit.info/odf_utils/odt_to_xhtml.html
--->
-
-<xsl:stylesheet version="1.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
-    xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
-    xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
-    xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
-    xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
-    xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
-    xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
-    xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
-    xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
-    xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
-    xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
-    xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
-    xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
-    xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
-
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:xlink="http://www.w3.org/1999/xlink"
-    xmlns:math="http://www.w3.org/1998/Math/MathML"
-    xmlns:xforms="http://www.w3.org/2002/xforms"
-
-    xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
-    xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
-    xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
-	
-	xmlns:ooo="http://openoffice.org/2004/office"
-	xmlns:ooow="http://openoffice.org/2004/writer"
-	xmlns:oooc="http://openoffice.org/2004/calc"
-	xmlns:int="http://catcode.com/odf_to_xhtml/internal"
-    xmlns="http://www.w3.org/1999/xhtml"
-	exclude-result-prefixes="office meta config text table draw presentation
-		dr3d chart form script style number anim dc xlink math xforms fo
-		svg smil ooo ooow oooc int #default"
->
-
-<xsl:output
-	method="xml"
-	indent="yes"
-	omit-xml-declaration="yes"
-	doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
-	doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-	encoding="UTF-8"
-/>
-<xsl:variable name="lineBreak"><xsl:text>
-</xsl:text></xsl:variable>
-
-<xsl:key name="listTypes" match="text:list-style" use="@style:name"/>
-
-<xsl:template match="/office:document-content">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Converted by odt_to_xhtml.xsl</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<xsl:apply-templates select="office:automatic-styles"/>
-</head>
-<body>
-<xsl:apply-templates select="office:body/office:text"/>
-</body>
-</html>
-</xsl:template>
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<!--
-	This section of the transformation handles styles in the
-	content.xml file
--->
-<xsl:template match="office:automatic-styles">
-	<style type="text/css">
-	<xsl:apply-templates/>
-	</style>
-</xsl:template>
-
-<xsl:template match="style:style">
-	<xsl:choose>
-		<xsl:when test="@style:family='table'">
-			<xsl:call-template name="process-table-style"/>
-		</xsl:when>
-		<xsl:when test="@style:family='table-column'">
-			<xsl:call-template name="process-table-column-style"/>
-		</xsl:when>
-		<xsl:when test="@style:family='table-cell'">
-			<xsl:call-template name="process-table-cell-style"/>
-		</xsl:when>
-		<xsl:when test="@style:family='paragraph'">
-			<xsl:call-template name="process-paragraph-style"/>
-		</xsl:when>
-		<xsl:when test="@style:family='text'">
-			<xsl:call-template name="process-text-style"/>
-		</xsl:when>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template name="process-table-style">
-	<xsl:if test="style:table-properties">
-		<xsl:value-of select="$lineBreak"/>
-		<xsl:text>.</xsl:text>
-		<xsl:value-of select="translate(@style:name,'.','_')"/>
-		<xsl:text>{width: </xsl:text>
-		<xsl:value-of select="style:table-properties/
-			@style:width"/>
-		<xsl:text>}</xsl:text>
-		<xsl:value-of select="$lineBreak"/>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="process-table-column-style">
-	<xsl:if test="style:table-column-properties">
-		<xsl:value-of select="$lineBreak"/>
-		<xsl:text>.</xsl:text>
-		<xsl:value-of select="translate(@style:name,'.','_')"/>
-		<xsl:text>{width: </xsl:text>
-		<xsl:value-of select="style:table-column-properties/
-			@style:column-width"/><xsl:text>;</xsl:text>
-		<xsl:value-of select="$lineBreak"/>
-				<xsl:call-template name="handle-style-properties">
-			<xsl:with-param name="nodeSet"
-				select="style:table-properties"/>
-		</xsl:call-template>
-		<xsl:text>}</xsl:text>
-		<xsl:value-of select="$lineBreak"/>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="process-table-cell-style">
-	<xsl:if test="style:table-cell-properties">
-		<xsl:value-of select="$lineBreak"/>
-		<xsl:text>.</xsl:text>
-		<xsl:value-of select="translate(@style:name,'.','_')"/>
-		<xsl:text>{</xsl:text><xsl:value-of select="$lineBreak"/>
-		<xsl:call-template name="handle-style-properties">
-			<xsl:with-param name="nodeSet"
-				select="style:table-cell-properties"/>
-		</xsl:call-template>
-		<xsl:text>}</xsl:text><xsl:value-of select="$lineBreak"/>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="process-paragraph-style">
-	<xsl:if test="style:paragraph-properties">
-		<xsl:value-of select="$lineBreak"/>
-		<xsl:text>.</xsl:text>
-		<xsl:value-of select="translate(@style:name,'.','_')"/>
-		<xsl:text>{</xsl:text><xsl:value-of select="$lineBreak"/>
-		<xsl:call-template name="handle-style-properties">
-			<xsl:with-param name="nodeSet"
-				select="style:paragraph-properties"/>
-		</xsl:call-template>
-		<xsl:text>}</xsl:text><xsl:value-of select="$lineBreak"/>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="process-text-style">
-	<xsl:if test="style:text-properties">
-		<xsl:value-of select="$lineBreak"/>
-		<xsl:text>.</xsl:text>
-		<xsl:value-of select="translate(@style:name,'.','_')"/>
-		<xsl:text>{</xsl:text><xsl:value-of select="$lineBreak"/>
-		<xsl:call-template name="handle-style-properties">
-			<xsl:with-param name="nodeSet"
-				select="style:text-properties"/>
-		</xsl:call-template>
-		<xsl:text>}</xsl:text><xsl:value-of select="$lineBreak"/>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template name="handle-style-properties">
-	<xsl:param name="nodeSet"/>
-	<xsl:for-each select="$nodeSet/@*">
-		<xsl:variable name="this" select="."/>
-		<xsl:variable name="find" select="document('')/xsl:stylesheet/
-			int:attr-map/int:attr[@name=name($this)]"/>
-		<xsl:if test="$find">
-			<xsl:variable name="action" select="$find/@action"/>
-			<xsl:choose>
-				<xsl:when test="$action='pass-through'">
-					<xsl:call-template name="pass-through"/>
-				</xsl:when>
-				<xsl:when test="$action='check-align'">
-					<xsl:call-template name="check-align"/>
-				</xsl:when>
-			</xsl:choose>
-		</xsl:if>
-	</xsl:for-each>
-</xsl:template>
-
-<xsl:template name="pass-through">
-	<xsl:value-of select="local-name()"/><xsl:text>: </xsl:text>
-	<xsl:value-of select="."/><xsl:text>;</xsl:text>
-	<xsl:value-of select="$lineBreak"/>
-</xsl:template>
-
-<xsl:template name="check-align">
-	<xsl:value-of select="local-name()"/><xsl:text>: </xsl:text>
-	<xsl:choose>
-		<xsl:when test=".='start'"><xsl:text>left</xsl:text></xsl:when>
-		<xsl:when test=".='end'"><xsl:text>right</xsl:text></xsl:when>
-		<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
-	</xsl:choose>
-	<xsl:text>;</xsl:text>
-	<xsl:value-of select="$lineBreak"/>
-</xsl:template>
-
-<xsl:template match="text:list-level-style-bullet">
-	<xsl:text>.</xsl:text>
-	<xsl:value-of select="../@style:name"/>
-	<xsl:text>_</xsl:text>
-	<xsl:value-of select="@text:level"/>
-	<xsl:text>{ list-style-type: </xsl:text>
-	<xsl:choose>
-		<xsl:when test="@text:level mod 3 = 1">disc</xsl:when>
-		<xsl:when test="@text:level mod 3 = 2">circle</xsl:when>
-		<xsl:when test="@text:level mod 3 = 0">square</xsl:when>
-		<xsl:otherwise>decimal</xsl:otherwise>
-	</xsl:choose>
-	<xsl:text>;}</xsl:text>
-	<xsl:value-of select="$lineBreak"/>
-</xsl:template>
-
-
-<xsl:template match="text:list-level-style-number">
-	<xsl:text>.</xsl:text>
-	<xsl:value-of select="../@style:name"/>
-	<xsl:text>_</xsl:text>
-	<xsl:value-of select="@text:level"/>
-	<xsl:text>{ list-style-type: </xsl:text>
-	<xsl:choose>
-		<xsl:when test="@style:num-format='1'">decimal</xsl:when>
-		<xsl:when test="@style:num-format='I'">upper-roman</xsl:when>
-		<xsl:when test="@style:num-format='i'">lower-roman</xsl:when>
-		<xsl:when test="@style:num-format='A'">upper-alpha</xsl:when>
-		<xsl:when test="@style:num-format='a'">lower-alpha</xsl:when>
-		<xsl:otherwise>decimal</xsl:otherwise>
-	</xsl:choose>
-	<xsl:text>;}</xsl:text>
-	<xsl:value-of select="$lineBreak"/>
-</xsl:template>
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<!--
-	This section of the transformation handles the true content
-	elements in the content.xml file
--->
-
-<!--
-	Yes, paragraphs in ODT really produce a <div> in XHTML,
-	because an ODT paragraph has no extra line spacing.
--->
-<xsl:template match="text:p">
-	<div class="{translate(@text:style-name,'.','_')}">
-		<xsl:apply-templates/>
-		<xsl:if test="count(node())=0"><br /></xsl:if>
-	</div>
-</xsl:template>
-
-<xsl:template match="text:span">
-	<span class="{translate(@text:style-name,'.','_')}">
-		<xsl:apply-templates/>
-	</span>
-</xsl:template>
-
-<xsl:template match="text:h">
-	<!-- Heading levels go only to 6 in XHTML -->
-	<xsl:variable name="level">
-		<xsl:choose>
-			<xsl:when test="@text:outline-level &gt; 6">6</xsl:when>
-			<xsl:otherwise>
-				<xsl:value-of select="@text:outline-level"/>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:variable>
-	<xsl:element name="{concat('h', $level)}">
-		<xsl:attribute name="class">
-			<xsl:value-of
-			select="translate(@text:style-name,'.','_')"/>
-		</xsl:attribute>
-		<xsl:apply-templates/>
-	</xsl:element>
-</xsl:template>
-
-<!--
-	When processing a list, you have to look at the parent style
-	*and* level of nesting
--->
-<xsl:template match="text:list">
-	<xsl:variable name="level" select="count(ancestor::text:list)+1"/>
-	
-	<!-- the list class is the @text:style-name of the outermost
-		<text:list> element -->
-	<xsl:variable name="listClass">
-		<xsl:choose>
-			<xsl:when test="$level=1">
-				<xsl:value-of select="@text:style-name"/>
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:value-of select="
-					ancestor::text:list[last()]/@text:style-name"/>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:variable>
-	
-	<!-- Now select the <text:list-level-style-foo> element at this
-		level of nesting for this list -->
-	<xsl:variable name="node" select="key('listTypes',
-		$listClass)/*[@text:level='$level']"/>
-
-	<!-- emit appropriate list type -->
-	<xsl:choose>
-		<xsl:when test="local-name($node)='list-level-style-number'">
-			<ol class="{concat($listClass,'_',$level)}">
-				<xsl:apply-templates/>
-			</ol>
-		</xsl:when>
-		<xsl:otherwise>
-			<ul class="{concat($listClass,'_',$level)}">
-				<xsl:apply-templates/>
-			</ul>
-		</xsl:otherwise>
-	</xsl:choose>
-</xsl:template>
-
-<xsl:template match="text:list-item">
-	<li><xsl:apply-templates/></li>
-</xsl:template>
-
-<xsl:template match="table:table">
-	<table class="{@table:style-name}">
-		<colgroup>
-			<xsl:apply-templates select="table:table-column"/>
-		</colgroup>
-		<xsl:if test="table:table-header-rows/table:table-row">
-			<thead>
-			<xsl:apply-templates
-				select="table:table-header-rows/table:table-row"/>
-				</thead>
-		</xsl:if>
-		<tbody>
-		<xsl:apply-templates select="table:table-row"/>
-		</tbody>
-	</table>
-</xsl:template>
-
-<xsl:template match="table:table-column">
-<col>
-	<xsl:if test="@table:number-columns-repeated">
-		<xsl:attribute name="span">
-			<xsl:value-of select="@table:number-columns-repeated"/>
-		</xsl:attribute>
-	</xsl:if>
-	<xsl:if test="@table:style-name">
-		<xsl:attribute name="class">
-			<xsl:value-of select="translate(@table:style-name,'.','_')"/>
-		</xsl:attribute>
-	</xsl:if>
-</col>
-</xsl:template>
-
-<xsl:template match="table:table-row">
-<tr>
-	<xsl:apply-templates select="table:table-cell"/>
-</tr>
-</xsl:template>
-
-<xsl:template match="table:table-cell">
-	<xsl:variable name="n">
-		<xsl:choose>
-			<xsl:when test="@table:number-columns-repeated != 0">
-				<xsl:value-of select="@table:number-columns-repeated"/>
-			</xsl:when>
-			<xsl:otherwise>1</xsl:otherwise>
-		</xsl:choose>
-	</xsl:variable>
-	<xsl:call-template name="process-table-cell">
-		<xsl:with-param name="n" select="$n"/>
-	</xsl:call-template>
-</xsl:template>
-
-<xsl:template name="process-table-cell">
-	<xsl:param name="n"/>
-	<xsl:if test="$n != 0">
-		<td>
-		<xsl:if test="@table:style-name">
-			<xsl:attribute name="class">
-				<xsl:value-of select="translate(@table:style-name,
-					'.','_')"/>
-			</xsl:attribute>
-		</xsl:if>
-		<xsl:if test="@table:number-columns-spanned">
-			<xsl:attribute name="colspan">
-				<xsl:value-of select="@table:number-columns-spanned"/>
-			</xsl:attribute>
-		</xsl:if>
-		<xsl:if test="@table:number-rows-spanned">
-			<xsl:attribute name="rowspan">
-				<xsl:value-of select="@table:number-rows-spanned"/>
-			</xsl:attribute>
-		</xsl:if>
-		<xsl:apply-templates/>
-		</td>
-		<xsl:call-template name="process-table-cell">
-			<xsl:with-param name="n" select="$n - 1"/>
-		</xsl:call-template>
-	</xsl:if>
-</xsl:template>
-
-<xsl:template match="text:tab">
-	<xsl:text xml:space="preserve">	</xsl:text>
-</xsl:template>
-
-<xsl:template match="text:line-break">
-	<br />
-</xsl:template>
-
-<xsl:variable name="spaces"
-    xml:space="preserve">                              </xsl:variable>
-
-<xsl:template match="text:s">
-<xsl:choose>
-    <xsl:when test="@text:c">
-        <xsl:call-template name="insert-spaces">
-            <xsl:with-param name="n" select="@text:c"/>
-        </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>
-        <xsl:text> </xsl:text>
-    </xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<xsl:template name="insert-spaces">
-<xsl:param name="n"/>
-<xsl:choose>
-    <xsl:when test="$n &lt;= 30">
-        <xsl:value-of select="substring($spaces, 1, $n)"/>
-    </xsl:when>
-    
-    <xsl:otherwise>
-        <xsl:value-of select="$spaces"/>
-        <xsl:call-template name="insert-spaces">
-            <xsl:with-param name="n">
-                <xsl:value-of select="$n - 30"/>
-            </xsl:with-param>
-        </xsl:call-template>
-    </xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-
-<xsl:template match="text:a">
-<a href="{@xlink:href}"><xsl:apply-templates/></a>
-</xsl:template>
-
-<!--
-	<text:bookmark-start /> and <text:bookmark-end /> can
-	be on non-wellformed boundaries. The quickest solution is
-	to create an <a name=""></a> element.
-	
-	If you don't put in any content, it becomes an empty element,
-	which will confuse browsers. While we would love to insert
-	a zero-width non-breaking space (Unicode 0x200b), Internet
-	Explorer doesn't recognize it.  Hence this ugly hack:
--->
-<xsl:template match="text:bookmark-start|text:bookmark">
-<a name="{@text:name}"><span style="font-size: 0px"><xsl:text> </xsl:text></span></a>
-</xsl:template>
-
-<!--
-	This template is too dangerous to leave active...
-<xsl:template match="text()">
-	<xsl:if test="normalize-space(.) !=''">
-		<xsl:value-of select="normalize-space(.)"/>
-	</xsl:if>
-</xsl:template>
--->
-
-<!--
-	This is a list of fo: attributes to be transferred to the
-	output document. The action tells which template is to be
-	called to process the attribute.
--->
-<int:attr-map>
-	<int:attr name="fo:border-left" action="pass-through"/>
-	<int:attr name="fo:border-right" action="pass-through"/>
-	<int:attr name="fo:border-top" action="pass-through"/>
-	<int:attr name="fo:border-bottom" action="pass-through"/>
-	<int:attr name="fo:border" action="pass-through"/>
-	<int:attr name="fo:margin-left" action="pass-through"/>
-	<int:attr name="fo:margin-right" action="pass-through"/>
-	<int:attr name="fo:margin-top" action="pass-through"/>
-	<int:attr name="fo:margin-bottom" action="pass-through"/>
-	<int:attr name="fo:margin" action="pass-through"/>
-	<int:attr name="fo:padding-left" action="pass-through"/>
-	<int:attr name="fo:padding-right" action="pass-through"/>
-	<int:attr name="fo:padding-top" action="pass-through"/>
-	<int:attr name="fo:padding-bottom" action="pass-through"/>
-	<int:attr name="fo:padding" action="pass-through"/>
-	<int:attr name="fo:text-indent" action="pass-through"/>
-	<int:attr name="fo:font-variant" action="pass-through"/>
-	<int:attr name="fo:font-family" action="pass-through"/>
-	<int:attr name="fo:color" action="pass-through"/>
-	<int:attr name="fo:background-color" action="pass-through"/>
-	<int:attr name="fo:font-style" action="pass-through"/>
-	<int:attr name="fo:font-weight" action="pass-through"/>
-	<int:attr name="fo:line-height" action="pass-through"/>
-	<int:attr name="fo:text-align" action="check-align"/>
-</int:attr-map>
-</xsl:stylesheet>
diff --git a/trunk/src/modules/opendocument/xslt/opendocument2xhtml.xsl b/trunk/src/modules/opendocument/xslt/opendocument2xhtml.xsl
deleted file mode 100644
index 4e4fc1a..0000000
--- a/trunk/src/modules/opendocument/xslt/opendocument2xhtml.xsl
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
-  xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
-  xmlns:xlink="http://www.w3.org/1999/xlink"
->
-<xsl:import href="fallback://lenya/modules/opendocument/xslt/common/odt_to_xhtml.xsl"/>
-
-<!-- default parameter value -->
-<xsl:param name="rendertype" select="'null'"/>
-<xsl:param name="language" select="'none'"/>
-<xsl:param name="nodeid" select="'null'"/>
-
-<xsl:template match="office:document-content">
-  <div id="body">
-<!--
-Language: <xsl:value-of select="$language"/>
--->
-    <h1>OpenDocument Content (<a href="{$nodeid}.odt">ODT</a>)</h1>
-    <xsl:apply-templates select="office:body/office:text"/>
-  </div>
-</xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/prettyprinting/config/module.xml b/trunk/src/modules/prettyprinting/config/module.xml
deleted file mode 100644
index 2983241..0000000
--- a/trunk/src/modules/prettyprinting/config/module.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.prettyprinting</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.2</version>
-  <name>XML pretty-printing</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>This module contains an XML pretty printing stylesheet that
-  will behave correctly wrt whitespace in XHTML.</description>
-</module>
diff --git a/trunk/src/modules/prettyprinting/xslt/xml2nicexml.xsl b/trunk/src/modules/prettyprinting/xslt/xml2nicexml.xsl
deleted file mode 100644
index 596399e..0000000
--- a/trunk/src/modules/prettyprinting/xslt/xml2nicexml.xsl
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- 
-   xml prettyprinter for apache cocoon/lenya, contributed by <nettings@apache.org>
-   everything that is non-trivial in this script has been borrowed from somewhere.
-   this script is in the public domain.
--->
-
-<xsl:stylesheet version="1.0"
-      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-      xmlns:xhtml="http://www.w3.org/1999/xhtml"
->
-<xsl:output method="xml"/>
-
-<xsl:param name="indent-increment" select="'  '" />
-
-  <!-- 
-    indentation
-    thanks to John Mongan, taken from http://www.dpawson.co.uk/xsl/sect2/pretty.html
-  -->
-
-  <xsl:template match="*">
-    <xsl:param name="indent" select="'&#xA;'"/>
-
-    <xsl:value-of select="$indent"/>
-
-    <xsl:copy>
-      <xsl:copy-of select="@*" />
-      <xsl:apply-templates>
-        <xsl:with-param name="indent" select="concat($indent, $indent-increment)"/>
-      </xsl:apply-templates>
-      <!-- add a trailing newline if the node has children and is not a mixed content node -->
-      <xsl:if test="* and not(*[../text()[normalize-space(.) != '']])">
-        <xsl:value-of select="$indent"/>
-      </xsl:if>
-    </xsl:copy>
-   </xsl:template>
-
-   <xsl:template match="comment()|processing-instruction()">
-      <xsl:copy />
-   </xsl:template>
-
-  <!-- 
-    mixed content detection and handling
-    thanks to David Carlisle and Wendell Piez, taken from http://www.dpawson.co.uk/xsl/sect2/normalise.html#d7206e52 
-  -->
-  <xsl:template match="*[../text()[normalize-space(.) != '']]">
-    <!-- but this template matches any element appearing in mixed content -->
-    <xsl:variable name="textbefore"
-         select="preceding-sibling::node()[1][self::text()]"/>
-    <xsl:variable name="textafter"
-         select="following-sibling::node()[1][self::text()]"/>
-    <!-- Either of the preceding variables will be an empty node set 
-         if the neighbor node is not text(), right? -->
-    <xsl:variable name="prevchar"
-         select="substring($textbefore, string-length($textbefore))"/>
-    <xsl:variable name="nextchar"
-         select="substring($textafter, 1, 1)"/>
-  
-    <!-- Now the action: -->
-    <xsl:if test="$prevchar != normalize-space($prevchar)">
-    <!-- If the original text had a space before, add one back -->
-      <xsl:text> </xsl:text>
-    </xsl:if>
-  
-    <xsl:copy>
-    <!-- Copy the element over -->
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  
-    <xsl:if test="$nextchar != normalize-space($nextchar)">
-    <!-- If the original text had a space after, add one back -->
-      <xsl:text> </xsl:text>
-    </xsl:if>
-  
-  </xsl:template>
-
-<!--
-  normalize all whitespace in text nodes (i.e. those that don't get matched by the mixed content handler)
--->
-  <xsl:template match="text()">
-    <xsl:value-of select="normalize-space(.)"/>
-  </xsl:template>
-
-<!--
-  leave the contents of the xhtml pre tag alone to preserve intended formatting
--->
-  <xsl:template match="xhtml:pre/node()">
-    <xsl:copy-of select="."/>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/profiling/config/menu.xsp b/trunk/src/modules/profiling/config/menu.xsp
deleted file mode 100644
index 805451f..0000000
--- a/trunk/src/modules/profiling/config/menu.xsp
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-   |
-   |  Lenya menu.xsp
-   |
-   -->
-
-
-<xsp:page 
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
-    language="java"
->
-   <menu>
-      <menus>
-         <menu i18n:attr="name" name="Development">
-            <block>
-               <!-- 
-                    This is a nasty kind of hack. The goal is to open 
-                    the profiler output in a separate window with Javascript.
-                    The UsecaseMenuTransformer will only accept a href="" 
-                    attribute, i.e. we can't use onclick="" or target="" here. 
-                    To make sure the window always pops up in front,
-                    we focus() it.
-                    At the same time, we want the original window to remain 
-                    unchanged, so we use the "void" operator to suppress the
-                    return value of the whole expression. 
-                    Unfortunately, we need to take care of the webapp context
-                    prefix manually, because Lenya's ProxyTransformer can't 
-                    reach into this javascript: link.
-                -->
-               <item>
-                 <xsp:attribute> 
-                   <xsp:param name="name">href</xsp:param>
-                   <xsp:expr>"javascript:void window.open('"
-                    + <input:get-attribute 
-                         module="proxy" 
-                         as="string" 
-                         name="/modules/profiling/profile.html"
-                      /> 
-                    + "',"
-                    + "'Cocoon Profiler',"
-                    + "'location=yes,scrollbars=yes,menubar=no,"
-                    + "toolbar=no,status=yes,top=100,left=100,"
-                    + "height=500,width=700'"
-                    + ").focus()"
-                   </xsp:expr>
-                 </xsp:attribute> 
-                 <i18n:text>Profiling</i18n:text>
-               </item>
-            </block>
-         </menu>
-      </menus>
-   </menu>
-</xsp:page>
\ No newline at end of file
diff --git a/trunk/src/modules/profiling/config/module.xml b/trunk/src/modules/profiling/config/module.xml
deleted file mode 100644
index 1af0c8e..0000000
--- a/trunk/src/modules/profiling/config/module.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.profiling</id>
-  <depends module="org.apache.lenya.modules.prettyprinting"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.0.3</version>
-  <name>Cocoon Pipeline Profiling Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Makes the Cocoon profiling mechanism available to Lenya site
-administrators. See also
-http://cocoon.apache.org/2.1/userdocs/concepts/profiler.html</description>
-</module> 
diff --git a/trunk/src/modules/profiling/menus.xmap b/trunk/src/modules/profiling/menus.xmap
deleted file mode 100644
index fc07118..0000000
--- a/trunk/src/modules/profiling/menus.xmap
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-   <map:pipelines>
-      <map:pipeline>
-         <map:match pattern="**">
-            <map:generate type="serverpages" src="config/menu.xsp">
-              <map:parameter name="servlet-context" value=""/>
-            </map:generate>
-            <map:serialize type="xml"/>
-         </map:match>
-      </map:pipeline>
-   </map:pipelines>
-</map:sitemap>
\ No newline at end of file
diff --git a/trunk/src/modules/profiling/resources/css/xmlverbatim.css b/trunk/src/modules/profiling/resources/css/xmlverbatim.css
deleted file mode 100644
index 8d9d14b..0000000
--- a/trunk/src/modules/profiling/resources/css/xmlverbatim.css
+++ /dev/null
@@ -1,13 +0,0 @@
-.xmlverb-default          { color: #333333; background-color: #ffffff;
-                            font-family: monospace }
-.xmlverb-element-name     { color: #990000 }
-.xmlverb-element-nsprefix { color: #666600 }
-.xmlverb-attr-name        { color: #660000 }
-.xmlverb-attr-content     { color: #000099; font-weight: bold }
-.xmlverb-ns-name          { color: #666600 }
-.xmlverb-ns-uri           { color: #330099 }
-.xmlverb-text             { color: #000000; font-weight: bold }
-.xmlverb-comment          { color: #006600; font-style: italic }
-.xmlverb-pi-name          { color: #006600; font-style: italic }
-.xmlverb-pi-content       { color: #006666; font-style: italic }
-
diff --git a/trunk/src/modules/profiling/sitemap.xmap b/trunk/src/modules/profiling/sitemap.xmap
deleted file mode 100644
index 48d7053..0000000
--- a/trunk/src/modules/profiling/sitemap.xmap
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<map:components>
-  <map:generators default="file">
-    <map:generator label="content,data" logger="sitemap.generator.profiler" name="profiler"
-        src="org.apache.cocoon.generation.ProfilerGenerator"/>
-  </map:generators>
-</map:components>
-
-<map:views>
-  <map:view name="pretty-content" from-label="data">
-    <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-    <map:transform src="xslt/xmlverbatimwrapper.xsl">
-      <map:parameter 
-          name="css-stylesheet" 
-          value="{proxy:/modules/profiling/css/xmlverbatim.css}"
-      />
-    </map:transform>
-    <map:transform type="proxy"/>
-    <map:serialize type="xhtml"/>
-  </map:view>
-</map:views>
- 
-<map:pipelines>
-  <map:pipeline>
-    <map:match pattern="profile.html">
-      <map:generate type="profiler"/>
-      <map:transform src="xslt/profile2xhtml.xsl">
-        <map:parameter name="use-request-parameters" value="true"/>
-      </map:transform>
-      <map:serialize type="xhtml"/>
-    </map:match>
-    <map:match pattern="profile.xml">
-      <map:generate type="profiler"/>
-      <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-      <map:serialize type="xml"/>
-    </map:match>    
-  </map:pipeline>
-</map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/profiling/xslt/profile2xhtml.xsl b/trunk/src/modules/profiling/xslt/profile2xhtml.xsl
deleted file mode 100644
index b112998..0000000
--- a/trunk/src/modules/profiling/xslt/profile2xhtml.xsl
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:profile="http://apache.org/cocoon/profiler/1.0">
-
-  <xsl:param name="sort"/>
-  <xsl:param name="key"/>
-  <xsl:param name="result"/>
-  <xsl:param name="component"/>
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <title>Cocoon2 profile information [<xsl:value-of select="profile:profilerinfo/@date"/>]</title>
-      </head>
-      <body>
-        <xsl:choose>
-          <xsl:when test="$component!=''">
-            <xsl:apply-templates
-              select="profile:profilerinfo/profile:pipeline/profile:result/profile:component[@index=$component]"
-              mode="fragment"/>
-          </xsl:when>
-          <xsl:when test="$result!=''">
-            <xsl:apply-templates select="profile:profilerinfo/profile:pipeline/profile:result" mode="result"/>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:apply-templates select="profile:profilerinfo" mode="pipelines"/>
-          </xsl:otherwise>
-        </xsl:choose>
-      </body>
-    </html>
-  </xsl:template>
-
-  <xsl:template match="profile:profilerinfo" mode="pipelines">
-    <xsl:choose>
-      <xsl:when test="not(profile:pipeline)">
-        <xsl:call-template name="help"/>
-      </xsl:when>
-      <xsl:otherwise>
-
-    <p>
-      Sort results by <a href="?sort=uri">uri</a>,
-      <a href="?sort=count">count</a>, <a href="?sort=time">time</a>.
-    </p>
-    <p>
-      Start at the section which matches the original request, then follow the
-      processing. The right-hand columns are the times (in milliseconds) for 
-      each occasion that a component was processed. The far right column is
-      the initial occasion.
-    </p>
-
-      
-    <table noshade="noshade" border="0" cellspacing="1" cellpadding="0">
-      <xsl:choose>
-        <xsl:when test="$sort = 'uri'">
-          <xsl:apply-templates select="profile:pipeline">
-            <xsl:sort select="@uri"/>
-          </xsl:apply-templates>
-        </xsl:when>
-        <xsl:when test="$sort = 'time'">
-          <xsl:apply-templates select="profile:pipeline">
-            <xsl:sort select="@time" data-type="number"/>
-          </xsl:apply-templates>
-        </xsl:when>
-        <xsl:when test="$sort = 'count'">
-          <xsl:apply-templates select="profile:pipeline">
-            <xsl:sort select="@count" data-type="number"/>
-          </xsl:apply-templates>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:apply-templates/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </table>
-
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-
-  <xsl:template name="help">
-    <p>
-      The <strong>Cocoon profiler</strong> is a great tool to debug and 
-      profile your pipelines.<br />
-      In order to use it, change the type of the pipeline you want to 
-      inspect to "profile-noncaching", like so:
-    </p>
-    <p>
-      <code>
-        &lt;map:pipeline type="profile-noncaching"&gt;<br />
-        ...<br />
-        &lt;/map:pipeline&gt;
-      </code>
-    </p>
-    <p>
-      Once you've done this, and you have sent a couple of requests to 
-      the pipeline in question, this page will display useful information
-      about processing and setup time of the individual pipeline components. 
-      What's even more interesting, you will be able to view the XML 
-      output of all intermediate stages!
-    </p>
-    <p>
-      To make profiling work, the profiler block in Cocoon must be
-      included, and the profiling pipeline type needs to be declared. 
-      Lenya provides both by default.
-    </p>
-    <p>
-      For more information, refer to 
-      <a href="http://cocoon.apache.org/2.1/userdocs/concepts/profiler.html">the Cocoon documentation</a>.
-    </p>
-    <p>
-      <em><strong>Note:</strong> profiling comes with a substantial 
-      performance penalty and should not be left activated on production
-      systems unless you are actively debugging them.</em>
-    </p>
-  </xsl:template>
-
-
-  <xsl:template match="profile:pipeline">
-    <xsl:if test="position() mod 5 = 1">
-      <tr bgcolor="#FFC0C0">
-       <th></th>
-       <th>Component</th>
-       <th>Average</th>
-       <th colspan="10">Last Results</th>
-      </tr>
-    </xsl:if>
-    <tr bgcolor="#C0C0FF">
-     <td colspan="3">
-       <font face="verdana"><strong><xsl:value-of select="@uri"/></strong></font>
-       (<xsl:value-of select="@count"/> results,
-       total time: <xsl:value-of select="@processingTime"/>,
-       average time: <xsl:value-of select="profile:average/@time"/>)
-     </td>
-     <xsl:for-each select="profile:result">
-      <td>
-       <a href="?key={../@key}&amp;result={@index}">
-        <xsl:value-of select="@index"/>
-       </a>
-      </td>
-     </xsl:for-each>
-    </tr>
-
-    <xsl:for-each select="profile:average/profile:component">
-      <xsl:variable name="bgcolor">
-       <xsl:if test="position() mod 2 = 0">#D0D0D0</xsl:if>
-       <xsl:if test="position() mod 2 = 1">#E0E0E0</xsl:if>
-      </xsl:variable>
-      <tr bgcolor="{$bgcolor}">
-
-       <xsl:variable name="pos" select="position()"/>
-       <td>
-        <xsl:value-of select="$pos"/>
-       </td>
-       <td>
-         <xsl:value-of select="@role"/>
-         <xsl:text>&#160;</xsl:text>
-         <xsl:if test="@source">
-           <i>src=</i><xsl:value-of select="@source"/>
-         </xsl:if>
-       </td>
-
-       <xsl:for-each select="../../profile:average/profile:component[position()=$pos]">
-        <th>
-         <xsl:value-of select="@time"/>
-        </th>
-       </xsl:for-each>
-
-       <xsl:for-each select="../../profile:result/profile:component[position()=$pos]">
-        <td>
-          <xsl:value-of select="@time"/>
-        </td>
-       </xsl:for-each>
-
-      </tr>
-    </xsl:for-each>
-
-       <xsl:variable name="pos" select="count(profile:average/profile:component)"/>
-      <tr>
-       <td>
-        <xsl:value-of select="$pos+1"/>
-       </td>
-       <td>
-        TOTAL
-       </td>
-
-        <th>
-         <xsl:value-of select="profile:average/@time"/>
-        </th>
-
-       <xsl:for-each select="profile:result">
-        <td>
-         <xsl:value-of select="@time"/>
-        </td>
-       </xsl:for-each>
-
-      </tr>
-  </xsl:template>
-
-  <xsl:template match="profile:result" mode="result">
-    <h1><xsl:value-of select="profile:environmentinfo/profile:uri"/></h1>
-    <table>
-      <tr bgcolor="#FFC0C0">
-        <th></th>
-        <th>Component</th>
-        <th colspan="3">Elapsed time in ms</th>
-        <th>View source</th>
-      </tr>
-      <tr bgcolor="#C0C0FF">
-        <td colspan="2">
-          <font face="verdana"><strong><xsl:value-of select="profile:environmentinfo/profile:uri"/></strong></font>
-        </td>
-        <td>Total</td>
-        <td>Setup</td>
-        <td>Processing</td>
-        <td/>
-      </tr>
-
-      <xsl:for-each select="profile:component">
-        <xsl:variable name="bgcolor">
-          <xsl:if test="position() mod 2 = 0">#D0D0D0</xsl:if>
-          <xsl:if test="position() mod 2 = 1">#E0E0E0</xsl:if>
-        </xsl:variable>
-        <tr bgcolor="{$bgcolor}">
-
-          <xsl:variable name="pos" select="position()"/>
-          <td>
-            <xsl:value-of select="$pos"/>
-          </td>
-          <td>
-            <xsl:value-of select="@role"/>
-            <xsl:text>&#160;</xsl:text>
-            <xsl:if test="@source">
-              <i>src=</i><xsl:value-of select="@source"/>
-            </xsl:if>
-          </td>
-
-          <td>
-            <xsl:value-of select="@time"/>
-          </td>
-
-          <td>
-            <xsl:value-of select="@setup"/>
-          </td>
-
-          <td>
-            <xsl:value-of select="@processing"/>
-          </td>
-
-          <td>
-            <xsl:if test="position() != last()">
-              <a href="profile.xml?key={$key}&amp;result={$result}&amp;component={@index}&amp;fragmentonly=true">[XML]</a>
-              &#160;&#160;
-              <a href="profile.xml?key={$key}&amp;result={$result}&amp;component={@index}&amp;fragmentonly=true&amp;cocoon-view=pretty-content">[XML as HTML]</a>
-            </xsl:if>
-          </td>
-        </tr>
-      </xsl:for-each>
-    </table>
-    <xsl:apply-templates select="profile:environmentinfo"/>
-  </xsl:template>
-
-  <xsl:template match="profile:environmentinfo">
-   <xsl:apply-templates select="profile:request-parameters"/>
-   <xsl:apply-templates select="profile:session-attributes"/>
-  </xsl:template>
-
-  <xsl:template match="profile:request-parameters">
-    <table>
-      <tr bgcolor="#C0C0FF">
-       <th colspan="2">
-        Request parameters
-       </th>
-      </tr>
-      <tr bgcolor="#FFC0C0">
-        <th>Name</th>
-        <th>Value</th>
-      </tr>
-      <xsl:for-each select="profile:parameter">
-        <xsl:variable name="bgcolor">
-          <xsl:if test="position() mod 2 = 0">#D0D0D0</xsl:if>
-          <xsl:if test="position() mod 2 = 1">#E0E0E0</xsl:if>
-        </xsl:variable>
-
-        <tr bgcolor="{$bgcolor}">
-          <td><xsl:value-of select="@name"/></td>
-          <td><xsl:value-of select="@value"/></td>
-        </tr>
-      </xsl:for-each>
-    </table>
-  </xsl:template>
-
-  <xsl:template match="profile:session-attributes">
-    <table>
-      <tr bgcolor="#C0C0FF">
-       <th colspan="2">
-        Session attributes
-       </th>
-      </tr>
-      <tr bgcolor="#FFC0C0">
-        <th>Name</th>
-        <th>Value</th>
-      </tr>
-      <xsl:for-each select="profile:attribute">
-        <xsl:variable name="bgcolor">
-          <xsl:if test="position() mod 2 = 0">#D0D0D0</xsl:if>
-          <xsl:if test="position() mod 2 = 1">#E0E0E0</xsl:if>
-        </xsl:variable>
-
-        <tr bgcolor="{$bgcolor}">
-          <td><xsl:value-of select="@name"/></td>
-          <td><xsl:value-of select="@value"/></td>
-        </tr>
-      </xsl:for-each>
-    </table>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/profiling/xslt/xmlverbatim.xsl b/trunk/src/modules/profiling/xslt/xmlverbatim.xsl
deleted file mode 100644
index 27a91d6..0000000
--- a/trunk/src/modules/profiling/xslt/xmlverbatim.xsl
+++ /dev/null
@@ -1,331 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!--
-  XML to HTML Verbatim Formatter with Syntax Highlighting
-  Version 1.1
-  Contributors: Doug Dicks, added auto-indent (parameter indent-elements)
-                for pretty-print
-
-  Copyright 2002 Oliver Becker
-  ob@obqo.de
- 
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-  Alternatively, this software may be used under the terms of the 
-  GNU Lesser General Public License (LGPL).
--->
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:verb="http://informatik.hu-berlin.de/xmlverbatim"
-                exclude-result-prefixes="verb">
-
-   <xsl:output method="html" omit-xml-declaration="yes" indent="no"/>
-
-   <xsl:param name="indent-elements" select="false()" />
-
-   <xsl:template match="/">
-      <xsl:apply-templates select="." mode="xmlverb" />
-   </xsl:template>
-
-   <!-- root -->
-   <xsl:template match="/" mode="xmlverb">
-      <xsl:text>&#xA;</xsl:text>
-      <xsl:comment>
-         <xsl:text> converted by xmlverbatim.xsl 1.1, (c) O. Becker </xsl:text>
-      </xsl:comment>
-      <xsl:text>&#xA;</xsl:text>
-      <div class="xmlverb-default">
-         <xsl:apply-templates mode="xmlverb">
-            <xsl:with-param name="indent-elements" select="$indent-elements" />
-         </xsl:apply-templates>
-      </div>
-      <xsl:text>&#xA;</xsl:text>
-   </xsl:template>
-
-   <!-- wrapper -->
-   <xsl:template match="verb:wrapper">
-      <xsl:apply-templates mode="xmlverb">
-         <xsl:with-param name="indent-elements" select="$indent-elements" />
-      </xsl:apply-templates>
-   </xsl:template>
-
-   <xsl:template match="verb:wrapper" mode="xmlverb">
-      <xsl:apply-templates mode="xmlverb">
-         <xsl:with-param name="indent-elements" select="$indent-elements" />
-      </xsl:apply-templates>
-   </xsl:template>
-
-   <!-- element nodes -->
-   <xsl:template match="*" mode="xmlverb">
-      <xsl:param name="indent-elements" select="false()" />
-      <xsl:param name="indent" select="''" />
-      <xsl:param name="indent-increment" select="'&#xA0;&#xA0;&#xA0;'" />
-      <xsl:if test="$indent-elements">
-         <br/>
-         <xsl:value-of select="$indent" />
-      </xsl:if>
-      <xsl:text>&lt;</xsl:text>
-      <xsl:variable name="ns-prefix"
-                    select="substring-before(name(),':')" />
-      <xsl:if test="$ns-prefix != ''">
-         <span class="xmlverb-element-nsprefix">
-            <xsl:value-of select="$ns-prefix"/>
-         </span>
-         <xsl:text>:</xsl:text>
-      </xsl:if>
-      <span class="xmlverb-element-name">
-         <xsl:value-of select="local-name()"/>
-      </span>
-      <xsl:variable name="pns" select="../namespace::*"/>
-      <xsl:if test="$pns[name()=''] and not(namespace::*[name()=''])">
-         <span class="xmlverb-ns-name">
-            <xsl:text> xmlns</xsl:text>
-         </span>
-         <xsl:text>=&quot;&quot;</xsl:text>
-      </xsl:if>
-      <xsl:for-each select="namespace::*">
-         <xsl:if test="not($pns[name()=name(current()) and 
-                           .=current()])">
-            <xsl:call-template name="xmlverb-ns" />
-         </xsl:if>
-      </xsl:for-each>
-      <xsl:for-each select="@*">
-         <xsl:call-template name="xmlverb-attrs" />
-      </xsl:for-each>
-      <xsl:choose>
-         <xsl:when test="node()">
-            <xsl:text>&gt;</xsl:text>
-            <xsl:apply-templates mode="xmlverb">
-              <xsl:with-param name="indent-elements"
-                              select="$indent-elements"/>
-              <xsl:with-param name="indent"
-                              select="concat($indent, $indent-increment)"/>
-              <xsl:with-param name="indent-increment"
-                              select="$indent-increment"/>
-            </xsl:apply-templates>
-            <xsl:if test="* and $indent-elements">
-               <br/>
-               <xsl:value-of select="$indent" />
-            </xsl:if>
-            <xsl:text>&lt;/</xsl:text>
-            <xsl:if test="$ns-prefix != ''">
-               <span class="xmlverb-element-nsprefix">
-                  <xsl:value-of select="$ns-prefix"/>
-               </span>
-               <xsl:text>:</xsl:text>
-            </xsl:if>
-            <span class="xmlverb-element-name">
-               <xsl:value-of select="local-name()"/>
-            </span>
-            <xsl:text>&gt;</xsl:text>
-         </xsl:when>
-         <xsl:otherwise>
-            <xsl:text> /&gt;</xsl:text>
-         </xsl:otherwise>
-      </xsl:choose>
-      <xsl:if test="not(parent::*)"><br /><xsl:text>&#xA;</xsl:text></xsl:if>
-   </xsl:template>
-
-   <!-- attribute nodes -->
-   <xsl:template name="xmlverb-attrs">
-      <xsl:text> </xsl:text>
-      <span class="xmlverb-attr-name">
-         <xsl:value-of select="name()"/>
-      </span>
-      <xsl:text>=&quot;</xsl:text>
-      <span class="xmlverb-attr-content">
-         <xsl:call-template name="html-replace-entities">
-            <xsl:with-param name="text" select="normalize-space(.)" />
-            <xsl:with-param name="attrs" select="true()" />
-         </xsl:call-template>
-      </span>
-      <xsl:text>&quot;</xsl:text>
-   </xsl:template>
-
-   <!-- namespace nodes -->
-   <xsl:template name="xmlverb-ns">
-      <xsl:if test="name()!='xml'">
-         <span class="xmlverb-ns-name">
-            <xsl:text> xmlns</xsl:text>
-            <xsl:if test="name()!=''">
-               <xsl:text>:</xsl:text>
-            </xsl:if>
-            <xsl:value-of select="name()"/>
-         </span>
-         <xsl:text>=&quot;</xsl:text>
-         <span class="xmlverb-ns-uri">
-            <xsl:value-of select="."/>
-         </span>
-         <xsl:text>&quot;</xsl:text>
-      </xsl:if>
-   </xsl:template>
-
-   <!-- text nodes -->
-   <xsl:template match="text()" mode="xmlverb">
-      <span class="xmlverb-text">
-         <xsl:call-template name="preformatted-output">
-            <xsl:with-param name="text">
-               <xsl:call-template name="html-replace-entities">
-                  <xsl:with-param name="text" select="." />
-               </xsl:call-template>
-            </xsl:with-param>
-         </xsl:call-template>
-      </span>
-   </xsl:template>
-
-   <!-- comments -->
-   <xsl:template match="comment()" mode="xmlverb">
-      <xsl:text>&lt;!--</xsl:text>
-      <span class="xmlverb-comment">
-         <xsl:call-template name="preformatted-output">
-            <xsl:with-param name="text" select="." />
-         </xsl:call-template>
-      </span>
-      <xsl:text>--&gt;</xsl:text>
-      <xsl:if test="not(parent::*)"><br /><xsl:text>&#xA;</xsl:text></xsl:if>
-   </xsl:template>
-
-   <!-- processing instructions -->
-   <xsl:template match="processing-instruction()" mode="xmlverb">
-      <xsl:text>&lt;?</xsl:text>
-      <span class="xmlverb-pi-name">
-         <xsl:value-of select="name()"/>
-      </span>
-      <xsl:if test=".!=''">
-         <xsl:text> </xsl:text>
-         <span class="xmlverb-pi-content">
-            <xsl:value-of select="."/>
-         </span>
-      </xsl:if>
-      <xsl:text>?&gt;</xsl:text>
-      <xsl:if test="not(parent::*)"><br /><xsl:text>&#xA;</xsl:text></xsl:if>
-   </xsl:template>
-
-
-   <!-- =========================================================== -->
-   <!--                    Procedures / Functions                   -->
-   <!-- =========================================================== -->
-
-   <!-- generate entities by replacing &, ", < and > in $text -->
-   <xsl:template name="html-replace-entities">
-      <xsl:param name="text" />
-      <xsl:param name="attrs" />
-      <xsl:variable name="tmp">
-         <xsl:call-template name="replace-substring">
-            <xsl:with-param name="from" select="'&gt;'" />
-            <xsl:with-param name="to" select="'&amp;gt;'" />
-            <xsl:with-param name="value">
-               <xsl:call-template name="replace-substring">
-                  <xsl:with-param name="from" select="'&lt;'" />
-                  <xsl:with-param name="to" select="'&amp;lt;'" />
-                  <xsl:with-param name="value">
-                     <xsl:call-template name="replace-substring">
-                        <xsl:with-param name="from" 
-                                        select="'&amp;'" />
-                        <xsl:with-param name="to" 
-                                        select="'&amp;amp;'" />
-                        <xsl:with-param name="value" 
-                                        select="$text" />
-                     </xsl:call-template>
-                  </xsl:with-param>
-               </xsl:call-template>
-            </xsl:with-param>
-         </xsl:call-template>
-      </xsl:variable>
-      <xsl:choose>
-         <!-- $text is an attribute value -->
-         <xsl:when test="$attrs">
-            <xsl:call-template name="replace-substring">
-               <xsl:with-param name="from" select="'&#xA;'" />
-               <xsl:with-param name="to" select="'&amp;#xA;'" />
-               <xsl:with-param name="value">
-                  <xsl:call-template name="replace-substring">
-                     <xsl:with-param name="from" 
-                                     select="'&quot;'" />
-                     <xsl:with-param name="to" 
-                                     select="'&amp;quot;'" />
-                     <xsl:with-param name="value" select="$tmp" />
-                  </xsl:call-template>
-               </xsl:with-param>
-            </xsl:call-template>
-         </xsl:when>
-         <xsl:otherwise>
-            <xsl:value-of select="$tmp" />
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-   <!-- replace in $value substring $from with $to -->
-   <xsl:template name="replace-substring">
-      <xsl:param name="value" />
-      <xsl:param name="from" />
-      <xsl:param name="to" />
-      <xsl:choose>
-         <xsl:when test="contains($value,$from)">
-            <xsl:value-of select="substring-before($value,$from)" />
-            <xsl:value-of select="$to" />
-            <xsl:call-template name="replace-substring">
-               <xsl:with-param name="value" 
-                               select="substring-after($value,$from)" />
-               <xsl:with-param name="from" select="$from" />
-               <xsl:with-param name="to" select="$to" />
-            </xsl:call-template>
-         </xsl:when>
-         <xsl:otherwise>
-            <xsl:value-of select="$value" />
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-   <!-- preformatted output: space as &nbsp;, tab as 8 &nbsp;
-                             nl as <br> -->
-   <xsl:template name="preformatted-output">
-      <xsl:param name="text" />
-      <xsl:call-template name="output-nl">
-         <xsl:with-param name="text">
-            <xsl:call-template name="replace-substring">
-               <xsl:with-param name="value"
-                               select="translate($text,' ','&#xA0;')" />
-               <xsl:with-param name="from" select="'&#9;'" />
-               <xsl:with-param name="to" 
-                               select="'&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;'" />
-            </xsl:call-template>
-         </xsl:with-param>
-      </xsl:call-template>
-   </xsl:template>
-
-   <!-- output nl as <br> -->
-   <xsl:template name="output-nl">
-      <xsl:param name="text" />
-      <xsl:choose>
-         <xsl:when test="contains($text,'&#xA;')">
-            <xsl:value-of select="substring-before($text,'&#xA;')" />
-            <br />
-            <xsl:text>&#xA;</xsl:text>
-            <xsl:call-template name="output-nl">
-               <xsl:with-param name="text" 
-                               select="substring-after($text,'&#xA;')" />
-            </xsl:call-template>
-         </xsl:when>
-         <xsl:otherwise>
-            <xsl:value-of select="$text" />
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/trunk/src/modules/profiling/xslt/xmlverbatimwrapper.xsl b/trunk/src/modules/profiling/xslt/xmlverbatimwrapper.xsl
deleted file mode 100644
index d0921a8..0000000
--- a/trunk/src/modules/profiling/xslt/xmlverbatimwrapper.xsl
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!--
-  XML to HTML Verbatim Formatter with Syntax Highlighting
-  Version 1.1
-
-  Copyright 2002 Oliver Becker
-  ob@obqo.de
-
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-  Alternatively, this software may be used under the terms of the
-  GNU Lesser General Public License (LGPL).
--->
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-   <xsl:import href="xmlverbatim.xsl" />
-
-   <xsl:output method="xhtml"/>
-
-   <!-- select the name of an element that should be formatted
-        (print only these elements and their contents) -->
-   <xsl:param name="select" />
-
-   <!-- CSS Stylesheet -->
-   <xsl:param name="css-stylesheet" select="profiling.ERROR" />
-
-   <!-- root -->
-   <xsl:template match="/">
-      <xsl:apply-templates select="/" mode="xmlverbwrapper" />
-   </xsl:template>
-
-
-
-   <xsl:template match="/" mode="xmlverbwrapper">
-     <!--
-       check sitemap parameters.
-     -->
-     <xsl:if test="$css-stylesheet='profiling.ERROR'">
-       <xsl:message terminate="yes">
-         Missing css-stylesheet parameter! Check your profiling sitemap.
-       </xsl:message>
-     </xsl:if>
-      <html>
-         <head>
-            <title>XML source view</title>
-            <link rel="stylesheet" type="text/css" 
-	          href="{$css-stylesheet}" />
-         </head>
-         <body class="xmlverb-default">
-            <tt>
-               <xsl:choose>
-                  <!-- "select" parameter present? -->
-                  <xsl:when test="$select">
-                     <xsl:apply-templates mode="xmlverbwrapper" />
-                  </xsl:when>
-                  <xsl:otherwise>
-                     <xsl:apply-templates select="." mode="xmlverb" />
-                  </xsl:otherwise>
-               </xsl:choose>
-            </tt>
-         </body>
-      </html>
-      <xsl:text>&#xA;</xsl:text>
-   </xsl:template>
-
-   <xsl:template match="*" mode="xmlverbwrapper">
-      <xsl:choose>
-         <xsl:when test="name()=$select">
-            <!-- switch to render mode -->
-            <!-- print indent -->
-            <span class="xmlverb-text">
-               <xsl:call-template name="preformatted-output">
-                  <xsl:with-param name="text">
-                     <xsl:call-template name="find-last-line">
-                        <xsl:with-param name="text"
-                              select="preceding-sibling::node()[1][self::text()]" />
-                     </xsl:call-template>
-                  </xsl:with-param>
-               </xsl:call-template>
-            </span>
-            <!-- print element -->
-            <xsl:apply-templates select="." mode="xmlverb" />
-            <br /><br />
-         </xsl:when>
-         <xsl:otherwise>
-            <!-- look for the selected element among the children -->
-            <xsl:apply-templates select="*" mode="xmlverbwrapper" />
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-   <!-- return the last line (after newline) in parameter $text -->
-   <xsl:template name="find-last-line">
-      <xsl:param name="text" />
-      <xsl:choose>
-         <xsl:when test="contains($text,'&#xA;')">
-            <xsl:call-template name="find-last-line">
-               <xsl:with-param name="text"
-                    select="substring-after($text,'&#xA;')" />
-            </xsl:call-template>
-         </xsl:when>
-         <xsl:otherwise>
-            <xsl:value-of select="$text" />
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/resource/config/cocoon-xconf/media-metadata.xconf b/trunk/src/modules/resource/config/cocoon-xconf/media-metadata.xconf
deleted file mode 100644
index 8cbef5f..0000000
--- a/trunk/src/modules/resource/config/cocoon-xconf/media-metadata.xconf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-  This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/meta-data"

-    unless="/cocoon/meta-data/component-instance[@name = 'http://apache.org/lenya/metadata/media/1.0']">

-    <component-instance name="http://apache.org/lenya/metadata/media/1.0"

-      class="org.apache.lenya.cms.metadata.ConfigurableElementSet">

-      <element name="filename" multiple="false"/>

-      <element name="width" multiple="false"/>

-      <element name="height" multiple="false"/>

-    </component-instance>

-  </xconf>

-  

diff --git a/trunk/src/modules/resource/config/cocoon-xconf/module.xconf b/trunk/src/modules/resource/config/cocoon-xconf/module.xconf
deleted file mode 100644
index 76cdd9e..0000000
--- a/trunk/src/modules/resource/config/cocoon-xconf/module.xconf
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'resource']">
-
-  <component-instance name="resource"
-                      logger="lenya.resourcetypes.resource"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-       uri="fallback://lenya/modules/resource/resources/schemas/resource.rng" 
-       namespace="http://relaxng.org/ns/structure/0.9"
-    />
-    <sample 
-       mime-type="application/xml" 
-       uri="fallback://lenya/modules/resource/samples/resource.xml"
-    />
-    <format name="xhtml" uri="cocoon://modules/resource/xhtml.xml"/>
-    <format name="downloadLink" uri="cocoon://modules/resource/downloadLink.xml"/>
-    <format name="icon" uri="cocoon://modules/resource/icon"/>
-    <format name="luceneIndex" uri="cocoon://modules/resource/lucene-index"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/modules/resource/config/cocoon-xconf/usecase-create-resource.xconf b/trunk/src/modules/resource/config/cocoon-xconf/usecase-create-resource.xconf
deleted file mode 100644
index 3567b2a..0000000
--- a/trunk/src/modules/resource/config/cocoon-xconf/usecase-create-resource.xconf
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'resource.create']">
-    <component-instance name="resource.create" 
-                        logger="lenya.site" 
-                        class="org.apache.lenya.cms.site.usecases.CreateResource">
-      <view uri="modules/resource/usecases/create-resource.jx"/>
-    </component-instance>
-  </xconf>
diff --git a/trunk/src/modules/resource/config/cocoon-xconf/usecase-upload-resource.xconf b/trunk/src/modules/resource/config/cocoon-xconf/usecase-upload-resource.xconf
deleted file mode 100644
index 99df716..0000000
--- a/trunk/src/modules/resource/config/cocoon-xconf/usecase-upload-resource.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase-create-metadata.xconf 7081 2005-11-11 13:04:23Z felix $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'resource.upload']">
-
-  <component-instance name="resource.upload" logger="lenya.module.resource"
-    class="org.apache.lenya.cms.site.usecases.UploadResource">
-    <view uri="modules/resource/usecases/upload-resource.jx"/>
-    <event id="edit"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules/resource/config/menus/resource.xsp b/trunk/src/modules/resource/config/menus/resource.xsp
deleted file mode 100644
index 07332fe..0000000
--- a/trunk/src/modules/resource/config/menus/resource.xsp
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="resource.create" href="?doctype=resource">
-            <i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-resource</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      <menu i18n:attr="name" name="Edit">
-        <xsp:logic>
-          String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-          if ("resource".equals(doctype)) {
-            <block areas="authoring">
-              <item wf:event="edit" uc:usecase="resource.upload" href="?"><i18n:text>Upload File</i18n:text></item>
-            </block>
-          }
-        </xsp:logic>
-      </menu>
-    </menus>
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/resource/config/module.xml b/trunk/src/modules/resource/config/module.xml
deleted file mode 100644
index 801f629..0000000
--- a/trunk/src/modules/resource/config/module.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.resource</lenya:id>
-  <lenya:export package="org.apache.lenya.cms.site.usecases"/>
-  <lenya:depends module="org.apache.lenya.modules.usecase"/>
-  <lenya:depends module="org.apache.lenya.modules.sitemanagement"/>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>Resource Module</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>A module to manage arbitrary resources (PDF, GIF, ...)</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/publication/ResourceWrapper.java b/trunk/src/modules/resource/java/src/org/apache/lenya/cms/publication/ResourceWrapper.java
deleted file mode 100644
index f53b05b..0000000
--- a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/publication/ResourceWrapper.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.util.Iterator;
-
-import javax.imageio.ImageIO;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.TraversableSource;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.repository.RepositoryException;
-
-/**
- * Wrapper to handle resource documents.
- */
-public class ResourceWrapper extends AbstractLogEnabled {
-
-    private ServiceManager manager;
-    private Document document;
-
-    private static final String MIME_IMAGE_PJPEG = "image/pjpeg";
-    private static final String MIME_IMAGE_JPEG = "image/jpeg";
-
-    /**
-     * @param document The document to wrap.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public ResourceWrapper(Document document, ServiceManager manager, Logger logger) {
-        this.document = document;
-        this.manager = manager;
-        enableLogging(logger);
-    }
-
-    protected Document getDocument() {
-        return this.document;
-    }
-
-    /**
-     * @param file The part to write.
-     * @throws IOException
-     * @throws MetaDataException
-     * @throws ServiceException
-     * @throws RepositoryException
-     * @throws DocumentException
-     */
-    public void write(Part file) throws IOException, MetaDataException, ServiceException,
-            RepositoryException, DocumentException {
-
-        String mimeType = file.getMimeType();
-        String fileName = file.getFileName();
-        int fileSize = file.getSize();
-        InputStream inputStream = file.getInputStream();
-
-        write(inputStream, mimeType, fileName, fileSize);
-    }
-
-    /**
-     * Writes the content of the resource from a source.
-     * @param sourceUri The source URI.
-     * @throws ServiceException
-     * @throws MalformedURLException
-     * @throws IOException
-     * @throws RepositoryException
-     * @throws DocumentException
-     * @throws MetaDataException
-     */
-    public void write(String sourceUri) throws ServiceException, MalformedURLException,
-            IOException, RepositoryException, DocumentException, MetaDataException {
-        SourceResolver resolver = null;
-        TraversableSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(sourceUri);
-            write(source.getInputStream(),
-                    source.getMimeType(),
-                    source.getName(),
-                    source.getContentLength());
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Writes the content of the resource.
-     * @param inputStream The input stream providing the content.
-     * @param mimeType The mime type.
-     * @param fileName The file name.
-     * @param fileSize The file size.
-     * @throws IOException
-     * @throws MetaDataException
-     * @throws ServiceException
-     * @throws MalformedURLException
-     * @throws RepositoryException
-     * @throws DocumentException
-     */
-    public void write(InputStream inputStream, String mimeType, String fileName, long fileSize)
-            throws IOException, MetaDataException, ServiceException, MalformedURLException,
-            RepositoryException, DocumentException {
-        final ByteArrayOutputStream sourceBos = new ByteArrayOutputStream();
-        IOUtils.copy(inputStream, sourceBos);
-
-        InputStream input = new ByteArrayInputStream(sourceBos.toByteArray());
-
-        MetaData mediaMeta = null;
-
-        OutputStream destOutputStream = null;
-        try {
-            mediaMeta = document.getMetaData("http://apache.org/lenya/metadata/media/1.0");
-            addResourceMeta(fileName, mimeType, input, mediaMeta);
-
-            destOutputStream = document.getOutputStream();
-            IOUtils.write(sourceBos.toByteArray(), destOutputStream);
-
-            document.setMimeType(mimeType);
-
-        } finally {
-            if (destOutputStream != null) {
-                destOutputStream.flush();
-                destOutputStream.close();
-            }
-        }
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("Resource::addResource() done.");
-    }
-
-    protected void addResourceMeta(String fileName, String mimeType, InputStream stream,
-            MetaData customMeta) throws MetaDataException, IOException {
-        if (customMeta != null) {
-            customMeta.setValue("filename", fileName);
-        }
-        if (canReadMimeType(mimeType)) {
-            BufferedImage input = ImageIO.read(stream);
-            String width = Integer.toString(input.getWidth());
-            String height = Integer.toString(input.getHeight());
-            customMeta.setValue("height", height);
-            customMeta.setValue("width", width);
-        }
-    }
-
-    /**
-     * Checks if a mime type denotes an image.
-     * @param mimeType The mime type.
-     * @return A boolean value.
-     */
-    public static boolean canReadMimeType(String mimeType) {
-        Iterator iter = ImageIO.getImageReadersByMIMEType(translateMimeType(mimeType));
-        return iter.hasNext();
-    }
-
-    /**
-     * Translates the mime type if it can be read, but the tools don't think so.
-     * For example, all jpegs from IE are marked as image/pjpeg, which ImageIO
-     * doesn't return a ImageReader for, even though the one for image/jpeg 
-     * works just fine, even for a real image/pjpeg.
-     * @param mimeType The mime type.
-     * @return The translated or original mime type if no translation was applied
-     */
-    private static String translateMimeType(String mimeType) {
-        if(mimeType.equals(MIME_IMAGE_PJPEG)) {
-            return MIME_IMAGE_JPEG;
-        }
-        return mimeType;
-    }
-}
diff --git a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/CreateResource.java b/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/CreateResource.java
deleted file mode 100644
index 00f5b01..0000000
--- a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/CreateResource.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.io.IOException;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.ResourceWrapper;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Create a new resource document.
- */
-public class CreateResource extends CreateDocument {
-
-    protected static final String PARAMETER_FILE = "file";
-    
-    protected static final String MESSAGE_UPLOAD_DISABLED = "upload-disabled";
-    protected static final String MESSAGE_UPLOAD_ENTER_TITLE = "upload-enter-title";
-    protected static final String MESSAGE_UPLOAD_CHOOSE_FILE = "upload-choose-file";
-    protected static final String MESSAGE_UPLOAD_SIZE_EXCEEDED = "upload-size-exceeded";
-    protected static final String MESSAGE_UPLOAD_RESET = "upload-reset";
-    protected static final String MESSAGE_UPLOAD_MISSING_EXTENSION = "upload-missing-extension";
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!ServletHelper.isUploadEnabled(manager)) {
-            addErrorMessage(MESSAGE_UPLOAD_DISABLED);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
-     */
-    protected void doCheckExecutionConditions() throws Exception {
-
-        super.doCheckExecutionConditions();
-
-        Part file = getPart(PARAMETER_FILE);
-        if (hasErrors() && file != null) {
-            resetUploadField();
-        } else {
-            if (file == null) {
-                addErrorMessage(MESSAGE_UPLOAD_CHOOSE_FILE);
-            } else if (file.isRejected()) {
-                String[] params = { Integer.toString(file.getSize()) };
-                addErrorMessage(MESSAGE_UPLOAD_SIZE_EXCEEDED, params);
-            }
-        }
-    }
-
-    /**
-     * The browser can't set the value of the file upload widget for security reasons, so we have to
-     * remove the file parameter and the user has to select the file again.
-     */
-    protected void resetUploadField() {
-        deleteParameter(PARAMETER_FILE);
-        addErrorMessage(MESSAGE_UPLOAD_RESET);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-        deleteParameter(RESOURCE_TYPES);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        addResource();
-    }
-
-    /**
-     * Adds the ressource. If asset upload is not enabled, an error message is added.
-     * @throws IOException
-     * @throws ServiceException
-     * @throws DocumentException
-     * @throws MetaDataException
-     * @throws RepositoryException
-     */
-    protected void addResource() throws ServiceException, IOException, DocumentException,
-            RepositoryException, MetaDataException {
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("Assets::addAsset() called");
-
-        Part file = getPart(PARAMETER_FILE);
-        Document document = getNewDocument();
-        ResourceWrapper wrapper = new ResourceWrapper(document, this.manager, getLogger());
-        wrapper.write(file);
-    }
-
-    protected String getSourceExtension() {
-        String extension = "";
-
-        Part file = getPart(PARAMETER_FILE);
-        String fileName = file.getFileName();
-        int lastDotIndex = fileName.lastIndexOf(".");
-        if (lastDotIndex > -1) {
-            extension = fileName.substring(lastDotIndex + 1);
-        } else {
-            addErrorMessage(MESSAGE_UPLOAD_MISSING_EXTENSION);
-        }
-        return extension.toLowerCase();
-    }
-
-}
diff --git a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java b/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java
deleted file mode 100644
index 9c05051..0000000
--- a/trunk/src/modules/resource/java/src/org/apache/lenya/cms/site/usecases/UploadResource.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceWrapper;
-import org.apache.lenya.cms.workflow.usecases.InvokeWorkflow;
-import org.apache.lenya.util.ServletHelper;
-
-/**
- * Usecase to upload a resource.
- * 
- */
-public class UploadResource extends InvokeWorkflow {
-
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        if (!ServletHelper.isUploadEnabled(manager)) {
-            addErrorMessage("Upload is not enabled. Please check local.build.properties!");
-        }
-        Document doc = getSourceDocument();
-        if (!doc.getArea().equals(Publication.AUTHORING_AREA)) {
-            addErrorMessage("This usecase can only be invoked in the authoring area!");
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        Part file = getPart("file");
-        if (file.isRejected()) {
-            String[] params = { Integer.toString(file.getSize()) };
-            addErrorMessage("upload-size-exceeded", params);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-        Part file = getPart("file");
-        Document document = getSourceDocument();
-        ResourceWrapper wrapper = new ResourceWrapper(document, this.manager, getLogger());
-        wrapper.write(file);
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/resource/java/test/org/apache/lenya/cms/publication/ResourceWrapperTest.java b/trunk/src/modules/resource/java/test/org/apache/lenya/cms/publication/ResourceWrapperTest.java
deleted file mode 100644
index bc3997a..0000000
--- a/trunk/src/modules/resource/java/test/org/apache/lenya/cms/publication/ResourceWrapperTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.publication;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.TraversableSource;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Resource wrapper test.
- */
-public class ResourceWrapperTest extends AbstractAccessControlTest {
-
-    protected static final String IMAGE_URL = "context://lenya/resources/images/project-logo.png";
-
-    /**
-     * @throws RepositoryException
-     * @throws PublicationException
-     * @throws ServiceException
-     * @throws MetaDataException
-     * @throws IOException
-     * @throws MalformedURLException
-     * @throws AccessControlException 
-     */
-    public void testResourceWrapper() throws RepositoryException, PublicationException,
-            ServiceException, MalformedURLException, IOException, MetaDataException, AccessControlException {
-
-        String path = "/testResource";
-
-        Session session = login("lenya");
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(getManager(), session);
-
-        Publication pub = getPublication("test");
-
-        Document doc = createResource(factory, pub, path, getManager(), getLogger());
-
-        SourceResolver resolver = null;
-        TraversableSource source = null;
-
-        try {
-            resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(IMAGE_URL);
-
-            assertEquals(doc.getMimeType(), source.getMimeType());
-            assertEquals(doc.getContentLength(), source.getContentLength());
-
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                getManager().release(resolver);
-            }
-
-        }
-
-    }
-
-    /**
-     * @param factory
-     * @param pub
-     * @param path
-     * @param manager 
-     * @param logger 
-     * @return A document.
-     * @throws ServiceException
-     * @throws DocumentBuildException
-     * @throws PublicationException
-     * @throws MalformedURLException
-     * @throws IOException
-     * @throws RepositoryException
-     * @throws DocumentException
-     * @throws MetaDataException
-     */
-    public static Document createResource(DocumentFactory factory, Publication pub, String path,
-            ServiceManager manager, Logger logger) throws ServiceException, DocumentBuildException,
-            PublicationException, MalformedURLException, IOException, RepositoryException,
-            DocumentException, MetaDataException {
-
-        String extension = "png";
-
-        Document doc = null;
-
-        ResourceType resourceType = null;
-        ServiceSelector selector = null;
-        DocumentManager docManager = null;
-
-        try {
-            docManager = (DocumentManager) manager.lookup(DocumentManager.ROLE);
-
-            pub.getArea(Publication.AUTHORING_AREA).getSite().getRepositoryNode().lock();
-
-            selector = (ServiceSelector) manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = (ResourceType) selector.select("resource");
-
-            ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
-            doc = docManager.add(factory, resourceType, sample.getUri(), pub, Publication.AUTHORING_AREA,
-                    path, pub.getDefaultLanguage(), extension, "Test Resource", true);
-            doc.setMimeType(sample.getMimeType());
-
-            ResourceWrapper resource = new ResourceWrapper(doc, manager, logger);
-            resource.write(IMAGE_URL);
-        } finally {
-            if (docManager != null) {
-                manager.release(docManager);
-            }
-            if (selector != null) {
-                manager.release(selector);
-            }
-        }
-        return doc;
-    }
-
-}
diff --git a/trunk/src/modules/resource/java/test/org/apache/lenya/cms/site/usecases/ResourceLinkRewriterTest.java b/trunk/src/modules/resource/java/test/org/apache/lenya/cms/site/usecases/ResourceLinkRewriterTest.java
deleted file mode 100644
index 04aed7f..0000000
--- a/trunk/src/modules/resource/java/test/org/apache/lenya/cms/site/usecases/ResourceLinkRewriterTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.ResourceWrapperTest;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Link rewriter test for the "resource" resource type.
- */
-public class ResourceLinkRewriterTest extends LinkRewriterTest {
-
-    /**
-     * Check if the link rewriter doesn't try to rewrite links in resources.
-     * @throws Exception 
-     */
-    public void testResourceLinkRewriting() throws Exception {
-        String documentId = "/testResourceLinkRewriting";
-        
-        Session session = login("lenya");
-        DocumentFactory factory = DocumentUtil.createDocumentFactory(getManager(), session);
-
-        Publication pub = getPublication("test");
-        
-        ResourceWrapperTest.createResource(factory, pub, documentId, getManager(), getLogger());
-        
-        super.testLinkRewriter();
-        
-    }
-    
-}
diff --git a/trunk/src/modules/resource/menus.xmap b/trunk/src/modules/resource/menus.xmap
deleted file mode 100644
index 53ade2e..0000000
--- a/trunk/src/modules/resource/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id:$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/resource/config/menus/resource.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
\ No newline at end of file
diff --git a/trunk/src/modules/resource/resources/i18n/cmsui.xml b/trunk/src/modules/resource/resources/i18n/cmsui.xml
deleted file mode 100644
index 40d2773..0000000
--- a/trunk/src/modules/resource/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-resource">Media</message>
-  <message key="http://apache.org/lenya/metadata/media/1.0">Media</message>
-  <message key="filename">File name</message>
-  <message key="Insert Image">Insert Image</message>

-  <message key="Insert Asset">Insert Asset</message>

-  <message key="Asset Upload">Asset Upload</message>

-  <message key="Insert a new Image">Insert a new Image</message>

-  <message key="Upload an Asset">Upload an Asset</message>

-  <message key="upload-size-exceeded">The file is too big ({0}).</message>

-  <message key="upload-enter-title">Please enter a title.</message>

-  <message key="upload-choose-file">Please choose a file to upload.</message>

-  <message key="upload-missing-extension">Please upload a file with an extension.</message>

-  <message key="upload-disabled">Upload is not enabled. Please check local.build.properties!</message>

-  <message key="upload-reset">

-    The browser can't set the value of the file upload widget for security reasons.

-    Please select the file again.

-  </message>

-  <message key="width">Width</message>
-  <message key="height">Height</message>
-  <message key="Preview">Preview</message>
-  <message key="Available Assets">Available Assets</message>
-  <message key="Upload Asset">Upload Asset</message>
-  <message key="Media Document">Media Document</message>
-  <message key="Title">Title</message>
-  <message key="Description">Description</message>
-  <message key="Content">Content</message>
-  <message key="Size">Size</message>
-  <message key="MimeType">Mime Type</message>
-  <message key="Dimension (w x h)">Dimension (width&#160;&#215;&#160;height)</message>
-  <message key="Width">Width</message>
-  <message key="Height">Height</message>
-  <message key="Upload File">Upload File</message>
-  <message key="Warning">Warning</message>
-  <message key="document-will-be-overwritten">The existing document will be overwritten!</message>
-  <message key="no-preview-available">No preview available for this resource.</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/resource/resources/i18n/cmsui_de.xml b/trunk/src/modules/resource/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 99372f6..0000000
--- a/trunk/src/modules/resource/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-resource">Media</message>
-  <message key="http://apache.org/lenya/metadata/media/1.0">Media</message>
-  <message key="filename">Dateiname</message>
-  <message key="Insert Image">Bild einfügen</message>

-  <message key="Insert Asset">Anlage einfügen</message>

-  <message key="Asset Upload">Anlage hochladen</message>

-  <message key="Insert a new Image">Neues Bild einfügen</message>

-  <message key="Upload an Asset">Anlage hochladen</message>

-  <message key="upload-size-exceeded">Die Datei ist zu groß ({0}).</message>

-  <message key="upload-enter-title">Bitte geben Sie einen Titel ein.</message>

-  <message key="upload-choose-file">Bitte wählen Sie eine Datei.</message>

-  <message key="upload-missing-extension">Bitte wählen Sie eine Datei mit einer Endung.</message>

-  <message key="upload-disabled">

-    Das Hochladen von Dateien ist nicht erlaubt.

-    Bitte prüfen Sie die Einstellungen in local.build.properties!

-  </message>

-  <message key="upload-reset">

-    Der Browser darf aus Sicherheitsgründen den Wert des Datei-Upload-Felds nicht setzen.

-    Bitte wählen Sie die Datei erneut.

-  </message>

-  <message key="width">Breite</message>
-  <message key="height">Höhe</message>
-  <message key="Preview">Vorschau</message>
-  <message key="Available Assets">Verfügbare Anlagen</message>
-  <message key="Upload Asset">Anlage hochladen</message>
-  <message key="Media Document">Medien-Dokument</message>
-  <message key="Title">Titel</message>
-  <message key="Description">Beschreibung</message>
-  <message key="Content">Inhalt</message>
-  <message key="Size">Größe</message>
-  <message key="MimeType">Mime-Type</message>
-  <message key="Dimension (w x h)">Abmessungen (Breite&#160;&#215;&#160;Höhe)</message>
-  <message key="Width">Breite</message>
-  <message key="Height">Höhe</message>
-  <message key="Upload File">Datei hochladen</message>
-  <message key="Warning">Warnung</message>
-  <message key="document-will-be-overwritten">Das existierende Dokument wird überschrieben!</message>
-  <message key="no-preview-available">Für diese Ressource ist keine Vorschau verfügbar.</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/resource/resources/i18n/cmsui_es.xml b/trunk/src/modules/resource/resources/i18n/cmsui_es.xml
deleted file mode 100644
index c4f405c..0000000
--- a/trunk/src/modules/resource/resources/i18n/cmsui_es.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_es.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="es" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Dimension (w x h)">Dimensiones (ancho&#160;&#215;&#160;alto)</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/resource/resources/i18n/cmsui_fr.xml b/trunk/src/modules/resource/resources/i18n/cmsui_fr.xml
deleted file mode 100644
index c9d6af3..0000000
--- a/trunk/src/modules/resource/resources/i18n/cmsui_fr.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_fr.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="fr" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="Dimension (w x h)">Dimension (l&#160;&#215;&#160;h)</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/resource/resources/icons/default.gif b/trunk/src/modules/resource/resources/icons/default.gif
deleted file mode 100644
index 654b7de..0000000
--- a/trunk/src/modules/resource/resources/icons/default.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/resource/resources/icons/default_med.gif b/trunk/src/modules/resource/resources/icons/default_med.gif
deleted file mode 100644
index 17ecb5a..0000000
--- a/trunk/src/modules/resource/resources/icons/default_med.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/resource/resources/schemas/resource.rng b/trunk/src/modules/resource/resources/schemas/resource.rng
deleted file mode 100644
index 757d5f8..0000000
--- a/trunk/src/modules/resource/resources/schemas/resource.rng
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!--+
-    | XHTML doctype
-    +-->
-
-<!--+
-    | Namespaces:
-    | lenya namespace is required for embedding assets.
-    +-->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-    xmlns="http://relaxng.org/ns/structure/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    >
-
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml.rng"/>
-
-</grammar>
diff --git a/trunk/src/modules/resource/samples/resource.xml b/trunk/src/modules/resource/samples/resource.xml
deleted file mode 100644
index b82b060..0000000
--- a/trunk/src/modules/resource/samples/resource.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dummy/>
\ No newline at end of file
diff --git a/trunk/src/modules/resource/sitemap.xmap b/trunk/src/modules/resource/sitemap.xmap
deleted file mode 100644
index 83cebd2..0000000
--- a/trunk/src/modules/resource/sitemap.xmap
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  <map:components>
-    <map:generators default="file">
-      <map:generator label="content" logger="sitemap.generator.directory"
-        name="lenyaMetaData" pool-max="16"
-        src="org.apache.lenya.cms.cocoon.generation.LenyaMetaDataGenerator"/>
-    </map:generators>
-    <map:serializers default="xhtml">
-      <map:serializer logger="sitemap.serializer.links" name="links" src="org.apache.lenya.cms.cocoon.serialization.LinkSerializer"/>
-    </map:serializers>
-  </map:components>
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      
-      <!-- Generates the lenya metadata to be aggregated for each page -->
-      <!-- {1:pubId}/{2:area}/{3:uuid}/{4:language}/{5:revision} -->
-      <map:match pattern="lenyametadata.xml/*/*/*/*/*">
-        <map:generate type="lenyaMetaData" src="lenya-document:{3},pub={1},area={2},lang={4},rev={5}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {pub-id}/{area}/{uuid}/{language} -->
-      <map:match pattern="lucene-index/*/*/*/*">
-        <map:aggregate element="cmsbody">
-          <map:part src="cocoon:/lenyametadata.xml/{1}/{2}/{3}/{4}/-1"/>
-        </map:aggregate>
-        <map:transform src="fallback://lenya/modules/xhtml/xslt/xhtml2index.xsl">
-          <map:parameter name="url" value="{request:requestURI}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-    <map:pipeline>
-      
-      <!-- pattern="{format}.xml" -->
-      <map:match pattern="*.xml">
-        <map:generate src="cocoon:/{1}.xml/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {format}.xml/{pubId}/{area}/{uuid}/{language} -->
-      <map:match pattern="downloadLink.xml/*/*/*/*">
-        <map:generate src="cocoon:/lenyametadata.xml/{1}/{2}/{3}/{4}/"/>
-        <map:transform src="fallback://lenya/modules/resource/xslt/downloadLink.xsl">
-          <map:parameter name="contentLength" value="{doc-info:{1}:{2}:{3}:{4}}"/>
-          <map:parameter name="mimeType" value="{doc-info:{1}:{2}:{3}:{4}}"/>
-          <map:parameter name="uuid" value="{3}"/>
-          <map:parameter name="language" value="{4}"/>
-          <map:parameter name="imageprefix" value="{proxy:/{1}/modules/resource}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {format}.xml/{pubId}/{area}/{uuid}/{language} -->
-      <map:match pattern="xhtml.xml/*/*/*/*">
-        <map:generate src="cocoon:/lenyametadata.xml/{1}/{2}/{3}/{4}/{request-param:lenya.revision}"/>
-        <map:transform src="fallback://lenya/modules/resource/xslt/resource2xhtml.xsl">
-          <map:parameter name="document-type" value="{doc-info:{1}:{2}:{3}:{4}:resourceType:{request-param:lenya.revision}}"/>
-          <map:parameter name="nodeId" value="{doc-info:{1}:{2}:{3}:{4}:nodeName}"/>
-          <map:parameter name="path" value="{doc-info:{1}:{2}:{3}:{4}:path}"/>
-          <map:parameter name="language" value="{4}"/>
-          <map:parameter name="root" value="{proxy:/{1}/{2}}"/>
-          <map:parameter name="mimeType" value="{doc-info:{1}:{2}:{3}:{4}:mimeType:{request-param:lenya.revision}}"/>
-          <map:parameter name="contentLength" value="{doc-info:{1}:{2}:{3}:{4}:contentLength:{request-param:lenya.revision}}"/>
-          <map:parameter name="documentUrl" value="{doc-info:{1}:{2}:{3}:{4}:documentUrl}"/>
-          <map:parameter name="sourceExtension" value="{doc-info:{1}:{2}:{3}:{4}:sourceExtension:{request-param:lenya.revision}}"/>
-          <map:parameter name="pubid" value="{1}"/>
-          <map:parameter name="imageprefix" value="{proxy:/{1}/modules/resource}"/>
-          <map:parameter name="revision" value="{request-param:lenya.revision}"/>
-        </map:transform>
-        <map:transform type="i18n"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match pattern="icon/*/*/*/*">
-        <map:read src="fallback://lenya/modules/resource/resources/icons/default.gif"/>
-      </map:match>
-      
-      <map:match pattern="bitmap-icons/*">
-        <map:read src="resources/icons/{1}"/>
-      </map:match>
-      
-      <map:match pattern="icons/*.*">
-        <map:act type="resource-exists-enhanced">
-          <map:parameter name="url" value="fallback://lenya/modules/resource/resources/icons/{2}.{3}"/>
-          <map:parameter name="type" value="file"/>
-          <map:read src="fallback://lenya/modules/resource/resources/icons/{2}.{3}"/>
-        </map:act>
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:transform src="fallback://lenya/modules/resource/xslt/svgIcon.xsl">
-          <map:parameter name="basePath" value="{realpath:.}"/>
-          <map:parameter name="extension" value="{1}"/>
-        </map:transform>
-        <map:serialize type="svg2png"/>
-      </map:match>
-      
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
\ No newline at end of file
diff --git a/trunk/src/modules/resource/usecases/create-resource.jx b/trunk/src/modules/resource/usecases/create-resource.jx
deleted file mode 100644
index 21d3d92..0000000
--- a/trunk/src/modules/resource/usecases/create-resource.jx
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: assets.jx 374391 2006-02-02 14:02:17Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-
-  <page:title>
-    <i18n:translate>
-      <i18n:text>New ... Document</i18n:text>
-      <i18n:param><i18n:text>resourceType-<jx:out value="${usecase.getParameter('doctype')}"/></i18n:text></i18n:param>
-    </i18n:translate>
-  </page:title>
-
-  <page:body>
-    <div class="lenya-box">
-    <div class="lenya-box-title">
-      <i18n:translate>
-        <i18n:text>New ... Document</i18n:text>
-        <i18n:param><i18n:text>resourceType-<jx:out value="${usecase.getParameter('doctype')}"/></i18n:text></i18n:param>
-      </i18n:translate>
-    </div>
-    <div class="lenya-box-body">
-      <form method="POST" enctype="multipart/form-data" id="form-add_asset">
-        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-        <table class="lenya-table-noborder">
-          <tr>
-            <td colspan="2">
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="file">
-              <i18n:text>File</i18n:text> *</label></td>
-            <td><input type="file" name="file" class="lenya-form-element"/></td>
-          </tr>
-          <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/site/createFields.jx"/>
-          <tr>
-            <td colspan="2">
-              <input i18n:attr="value" name="submit" type="submit" value="New Asset"/>
-              &#160;
-              <input i18n:attr="value" name="cancel" type="submit" value="Cancel"/>
-            </td>
-          </tr>
-        </table>
-      </form>
-    </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/resource/usecases/upload-resource.jx b/trunk/src/modules/resource/usecases/upload-resource.jx
deleted file mode 100644
index bf4e88f..0000000
--- a/trunk/src/modules/resource/usecases/upload-resource.jx
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: assets.jx 374391 2006-02-02 14:02:17Z andreas $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  
-  <page:title>
-      <i18n:text>Upload File</i18n:text>
-  </page:title>
-  
-  <page:body>
-    <div class="lenya-box">
-    <div class="lenya-box-title">
-      <i18n:text>Upload File</i18n:text>
-    </div>
-    <div class="lenya-box-body">
-      <form method="POST" enctype="multipart/form-data" id="form-upload">
-        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-        <table class="lenya-table-noborder">
-          <tr>
-            <td colspan="2">
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </td>
-          </tr>
-          <tr>
-            <td colspan="2" style="padding-bottom: 2em;">
-              <strong><i18n:text>Warning</i18n:text>:</strong> <i18n:text>document-will-be-overwritten</i18n:text>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="file">
-              <i18n:text>File</i18n:text>: *</label></td>
-            <td><input type="file" name="file" class="lenya-form-element" size="50"/></td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption">*
-              <i18n:text>required fields</i18n:text>
-            </td>
-          </tr>
-          <tr>
-            <td/>
-            <td>
-              <input i18n:attr="value" name="submit" type="submit" value="Upload File"/>
-              <input i18n:attr="value" name="cancel" type="submit" value="Cancel"/>
-            </td>
-          </tr>
-        </table>
-      </form>
-    </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/resource/xslt/common/mimetype.xsl b/trunk/src/modules/resource/xslt/common/mimetype.xsl
deleted file mode 100644
index 06f2ccf..0000000
--- a/trunk/src/modules/resource/xslt/common/mimetype.xsl
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: mimetype.xsl 9187 2005-12-22 15:53:21Z josias $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:media="http://apache.org/lenya/pubs/default/media/1.0"    
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    xmlns:dcterms="http://purl.org/dc/terms/"
-    exclude-result-prefixes="xhtml lenya dc">
-    
-  <xsl:template name="icon">
-    <xsl:param name="mimetype"/>
-    <xsl:param name="imageprefix"/>
-    
-    <xsl:choose>
-      <!-- Audio file types -->
-      <xsl:when test="$mimetype = 'audio/x-aiff'">
-        <img src="{$imageprefix}/icons/aif_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'audio/mpeg'">
-        <img src="{$imageprefix}/icons/mp3_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'audio/x-pn-realaudio'">
-        <img src="{$imageprefix}/icons/rm_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'audio/x-wav'">
-        <img src="{$imageprefix}/icons/wav_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Video file types -->
-      <xsl:when test="$mimetype = 'video/x-msvideo'">
-        <img src="{$imageprefix}/icons/avi_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'video/quicktime'">
-        <img src="{$imageprefix}/icons/mov_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'video/mpeg'">
-        <img src="{$imageprefix}/icons/mpg_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'video/x-ms-wmv'">
-        <img src="{$imageprefix}/icons/wmv_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Image file types -->
-      <xsl:when test="$mimetype = 'image/gif'">
-        <img src="{$imageprefix}/icons/gif_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/png'">
-        <img src="{$imageprefix}/icons/png_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/x-png'">
-        <img src="{$imageprefix}/icons/png_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/jpeg'">
-        <img src="{$imageprefix}/icons/jpg_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/pjpeg'">
-        <img src="{$imageprefix}/icons/jpg_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/tiff'">
-        <img src="{$imageprefix}/icons/tif_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/bmp'">
-        <img src="{$imageprefix}/icons/bmp_med.gif" border="0" alt=""/>
-      </xsl:when>
- 
-      <!-- Compressed file types -->
-      <xsl:when test="$mimetype = 'application/x-bzip2'">
-        <img src="{$imageprefix}/icons/bz2_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/x-gzip'">
-        <img src="{$imageprefix}/icons/gz_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/x-tar'">
-        <img src="{$imageprefix}/icons/tgz_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/zip'">
-        <img src="{$imageprefix}/icons/zip_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/x-zip-compressed'">
-        <img src="{$imageprefix}/icons/zip_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Text file types -->
-      <xsl:when test="$mimetype = 'application/rtf'">
-        <img src="{$imageprefix}/icons/rtf_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/pdf'">
-        <img src="{$imageprefix}/icons/pdf_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/x-pdf'">
-        <img src="{$imageprefix}/icons/pdf_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'text/plain'">
-        <img src="{$imageprefix}/icons/txt_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'text/html'">
-        <img src="{$imageprefix}/icons/html_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'text/xml'">
-        <img src="{$imageprefix}/icons/xml_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Application file types -->
-      <xsl:when test="$mimetype = 'application/octet-stream'">
-        <img src="{$imageprefix}/icons/exe_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Multimedia file types -->
-      <xsl:when test="$mimetype = 'application/x-shockwave-flash'">
-        <img src="{$imageprefix}/icons/swf_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Microsft Office file types -->
-      <xsl:when test="$mimetype = 'application/msword'">
-        <img src="{$imageprefix}/icons/doc_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/vnd.ms-excel'">
-        <img src="{$imageprefix}/icons/xls_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/x-excel'">
-        <img src="{$imageprefix}/icons/xls_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/vnd.ms-powerpoint'">
-        <img src="{$imageprefix}/icons/ppt_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/mspowerpoint'">
-        <img src="{$imageprefix}/icons/ppt_med.gif" border="0" alt=""/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'application/powerpoint'">
-        <img src="{$imageprefix}/icons/ppt_med.gif" border="0" alt=""/>
-      </xsl:when>
-
-      <!-- Unknown file types -->
-      <xsl:otherwise>
-        <img src="{$imageprefix}/icons/default_med.gif" border="0" alt=""/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  <xsl:template name="preview">
-    <xsl:param name="mimetype"/>
-    <xsl:param name="mediaURI"/>
-    <xsl:param name="width"/>
-    <xsl:param name="height"/>
-    
-    <xsl:variable name="maxPreviewWidth">400</xsl:variable>
-    <xsl:variable name="previewWidth">
-      <xsl:choose>
-        <xsl:when test="$width &gt; $maxPreviewWidth"><xsl:value-of select="$maxPreviewWidth"/></xsl:when>
-        <xsl:otherwise><xsl:value-of select="$width"/></xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    
-    <xsl:variable name="svgSuffix">
-      <xsl:choose>
-        <xsl:when test="contains($mediaURI, '?')">&amp;</xsl:when>
-        <xsl:otherwise>?</xsl:otherwise>
-      </xsl:choose>
-      <xsl:text>lenya.module=svg&amp;height=</xsl:text>
-      <xsl:value-of select="$previewWidth * ($height div $width)"/>
-      <xsl:text>&amp;width=</xsl:text>
-      <xsl:value-of select="$previewWidth"/>
-    </xsl:variable>
-    
-    <xsl:choose>
-      <xsl:when test="$mimetype = 'image/gif'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/png'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/x-png'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/jpeg'">
-        <img src="{$mediaURI}{$svgSuffix}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/pjpeg'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/tiff'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:when test="$mimetype = 'image/bmp'">
-        <img src="{$mediaURI}" border="1" alt="preview"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <i><i18n:text>no-preview-available</i18n:text></i>
-      </xsl:otherwise>
-      
-    </xsl:choose> 
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/trunk/src/modules/resource/xslt/downloadLink.xsl b/trunk/src/modules/resource/xslt/downloadLink.xsl
deleted file mode 100644
index 2b5a335..0000000
--- a/trunk/src/modules/resource/xslt/downloadLink.xsl
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml-standard.xsl,v 1.44 2004/12/14 11:00:41 josias Exp $ -->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:media="http://apache.org/lenya/pubs/default/media/1.0"
-  xmlns:mediameta="http://apache.org/lenya/metadata/media/1.0"
-  xmlns:docmeta="http://apache.org/lenya/metadata/document/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:dcterms="http://purl.org/dc/terms/"
-  exclude-result-prefixes="xhtml meta dc">
-  
-  <xsl:import href="fallback://lenya/modules/resource/xslt/common/mimetype.xsl"/>
-  
-  
-  <xsl:param name="documentUrl"/>
-  <xsl:param name="sourceExtension"/>
-  <xsl:param name="contentLength"/>
-  <xsl:param name="uuid"/>
-  <xsl:param name="language"/>
-  <xsl:param name="imageprefix"/>
-  <xsl:param name="mimeType"/>
-  
-  <xsl:variable name="mediaUrl" select="concat(substring-before($documentUrl, '.html'), '.', $sourceExtension)"/>
-  
-  <xsl:template match="/">
-    <xsl:apply-templates select="//meta:metadata" mode="media"/>
-  </xsl:template>
-    
-  <xsl:template match="meta:metadata" mode="media">
-  
-    <xsl:variable name="title">
-      <xsl:choose>
-        <xsl:when test="normalize-space(dc:elements/dc:title) != ''">
-          <xsl:value-of select="dc:elements/dc:title"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <i18n:text>No title</i18n:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    
-    <xsl:variable name="size">
-      <xsl:value-of select="format-number($contentLength div 1024, '#,###.##')"/>
-    </xsl:variable>
-    
-    <span class="asset">
-      <a href="lenya-document:{$uuid},lang={$language}" title="{text()}">
-        <xsl:call-template name="icon">
-          <xsl:with-param name="mimetype" select="$mimeType"/>
-          <xsl:with-param name="imageprefix" select="$imageprefix"/>
-        </xsl:call-template>
-      </a>
-      &#160;
-      <a href="lenya-document:{$uuid},lang={$language}" title="{text()}">
-        <xsl:value-of select="$title"/>
-      </a>
-      (<xsl:value-of select="number($size)"/> KB)
-    </span>
-
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/resource/xslt/resource2xhtml.xsl b/trunk/src/modules/resource/xslt/resource2xhtml.xsl
deleted file mode 100644
index 386fd63..0000000
--- a/trunk/src/modules/resource/xslt/resource2xhtml.xsl
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml-standard.xsl,v 1.44 2004/12/14 11:00:41 josias Exp $ -->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:meta="http://apache.org/cocoon/lenya/metadata/1.0"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:media="http://apache.org/lenya/pubs/default/media/1.0"
-  xmlns:mediameta="http://apache.org/lenya/metadata/media/1.0"
-  xmlns:docmeta="http://apache.org/lenya/metadata/document/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:dcterms="http://purl.org/dc/terms/"
-  exclude-result-prefixes="xhtml meta dc">
-  
-  <xsl:import href="fallback://lenya/modules/resource/xslt/common/mimetype.xsl"/>
-  <xsl:include href="fallback://lenya/modules/xhtml/xslt/helper-object.xsl"/>
-  <xsl:param name="root"/> <!-- the URL up to (including) the area -->
-  <xsl:param name="path"/>
-  <xsl:param name="pubid"/>
-  <xsl:param name="language"/>
-  <xsl:param name="document-type"/>
-  <xsl:param name="contentLength"/>
-  <xsl:param name="mimeType"/>
-  <xsl:param name="documentUrl"/>
-  <xsl:param name="sourceExtension"/>
-  <xsl:param name="imageprefix"/>
-  <xsl:param name="revision"/>
-  
-  <xsl:variable name="revisionSuffix">
-    <xsl:if test="$revision != ''">
-      <xsl:text>?lenya.revision=</xsl:text><xsl:value-of select="$revision"/>
-    </xsl:if>
-  </xsl:variable>
-  
-  <xsl:variable name="mediaUrl" select="concat(substring-before($documentUrl, '.html'), '.', $sourceExtension, $revisionSuffix)"/>
-  
-  <xsl:template match="/">
-    <xhtml:div id="body">
-      <xsl:apply-templates select="//meta:metadata" mode="media"/>
-    </xhtml:div>
-  </xsl:template>
-    
-  <xsl:template match="meta:metadata" mode="media">
-    
-    <xsl:variable name="mediaURI">
-      <xsl:value-of select="$root"/>
-      <xsl:value-of select="$mediaUrl"/>
-    </xsl:variable>
-    
-    <xsl:variable name="size">
-      <xsl:value-of select="format-number($contentLength div 1024, '#,###.##')"/>
-    </xsl:variable>
-    
-    <table cellpadding="3" cellspacing="0" border="0" style="padding: 20px;">
-      <tr>
-        <th class="vertical"><a href="{$mediaURI}" target="_new">
-          <xsl:call-template name="icon">
-            <xsl:with-param name="mimetype" select="$mimeType"/>
-            <xsl:with-param name="imageprefix" select="$imageprefix"/>
-          </xsl:call-template> </a>
-        </th>
-        <td><h1><i18n:text>Media Document</i18n:text></h1></td>
-      </tr>
-      <tr>
-        <th class="vertical"><i18n:text>Title</i18n:text>:</th>
-        <td><strong><xsl:value-of select="dc:elements/dc:title"/></strong></td>
-      </tr>
-      <tr>
-        <th class="vertical"><i18n:text>Description</i18n:text>:</th>
-        <td><xsl:value-of select="dc:elements/dc:description"/></td>
-      </tr>
-      <tr>
-        <th class="vertical"><i18n:text>Content</i18n:text>:</th>
-        <td><a href="{$mediaURI}" target="_new"><xsl:value-of select="$mediaUrl"/>
-          </a></td>
-      </tr>
-      <tr>
-        <th class="vertical"><i18n:text>Size</i18n:text>:</th>
-        <td><xsl:value-of select="$size"/> KB</td>
-      </tr>
-      <tr>
-        <th class="vertical"><i18n:text>MimeType</i18n:text>:</th>
-        <td><xsl:value-of select="$mimeType"/></td>
-      </tr>
-      <xsl:if test="mediameta:elements/mediameta:width != ''">
-        <tr>
-          <th class="vertical"><i18n:text>Width</i18n:text>:</th>
-          <td><xsl:value-of select="mediameta:elements/mediameta:width"/></td>
-        </tr>
-        <tr>
-          <th class="vertical"><i18n:text>Height</i18n:text>:</th>
-          <td><xsl:value-of select="mediameta:elements/mediameta:height"/></td>
-        </tr>
-      </xsl:if>
-      <tr>
-        <th class="vertical" style="padding-top: 1em; vertical-align: top;"><i18n:text>Preview</i18n:text>:</th>
-        <td style="padding-top: 1em;">
-          <xsl:call-template name="preview">
-            <xsl:with-param name="mimetype" select="$mimeType"/>
-            <xsl:with-param name="mediaURI" select="$mediaURI"/>
-            <xsl:with-param name="width" select="mediameta:elements/mediameta:width"/>
-            <xsl:with-param name="height" select="mediameta:elements/mediameta:height"/>
-          </xsl:call-template><br/><br/>
-        </td>
-      </tr>
-    </table>
-
-  </xsl:template>
-  
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/resource/xslt/svgIcon.xsl b/trunk/src/modules/resource/xslt/svgIcon.xsl
deleted file mode 100644
index e29a56c..0000000
--- a/trunk/src/modules/resource/xslt/svgIcon.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns:xlink="http://www.w3.org/1999/xlink">
-  
-  <xsl:param name="basePath"/>
-  <xsl:param name="extension"/>
-  
-  <xsl:template match="/*">
-    
-    <svg:svg width="33" height="40">
-      
-      <svg:image x="0" y="0" width="33" height="40"
-        xlink:href="file://{$basePath}/lenya/resources/images/icons/empty-icon.png"/>
-        
-      <svg:text x="16" y="24"
-        style="text-anchor: middle; font-size: 11; font-weight: bold; fill: #000000;">
-        <xsl:value-of select="translate(substring($extension, 1, 3),
-          'abcdefghijklmnopqrstuvwxyz',
-          'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
-      </svg:text>
-      
-    </svg:svg>
-    
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/simplesite/config/cocoon-xconf/site-managers.xconf b/trunk/src/modules/simplesite/config/cocoon-xconf/site-managers.xconf
deleted file mode 100644
index f4cf4b7..0000000
--- a/trunk/src/modules/simplesite/config/cocoon-xconf/site-managers.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/site-managers" unless="/cocoon/site-managers/component-instance[@name = 'simple']">

-    <component-instance name="simple" logger="lenya.site"

-      class="org.apache.lenya.cms.site.simple.SimpleSiteManager"/>

-  </xconf>

diff --git a/trunk/src/modules/simplesite/config/module.xml b/trunk/src/modules/simplesite/config/module.xml
deleted file mode 100644
index adf63d6..0000000
--- a/trunk/src/modules/simplesite/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.simplesite</id>
-  <export package="org.apache.lenya.cms.site.simple"/>
-  <depends module="org.apache.lenya.modules.collection"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Simple Site Manager</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Collection-based site manager implementation</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStore.java b/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStore.java
deleted file mode 100644
index ec4eaf7..0000000
--- a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStore.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.simple;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.WeakHashMap;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.modules.collection.CollectionWrapper;
-import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * Site structure object which stores a list of documents.
- * 
- * @version $Id$
- */
-public class DocumentStore extends CollectionWrapper implements SiteStructure {
-
-    /**
-     * The identifiable type.
-     */
-    public static final String IDENTIFIABLE_TYPE = "documentstore";
-
-    protected static final Object SITE_PATH = "/sitestructure";
-
-    /**
-     * @param doc The document where the collection is stored.
-     * @param logger The logger.
-     * @throws DocumentException if an error occurs.
-     */
-    public DocumentStore(Document doc, Logger logger) throws DocumentException {
-        super(doc, logger);
-        this.doc2path.put(getKey(doc.getUUID(), doc.getLanguage()), SITE_PATH);
-    }
-
-    protected static final String NAMESPACE = "http://apache.org/lenya/sitemanagement/simple/1.0";
-
-    protected static final String ATTRIBUTE_LANGUAGE = "xml:lang";
-    protected static final String ATTRIBUTE_PATH = "path";
-
-    private Map doc2path = new HashMap();
-
-    protected String getKey(String uuid, String language) {
-        return uuid + ":" + language;
-    }
-
-    protected String getLanguage(String key) {
-        return key.split(":")[1];
-    }
-
-    protected String getUuid(String key) {
-        return key.split(":")[0];
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.CollectionWrapper#createDocumentElement(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.xml.NamespaceHelper)
-     */
-    protected Element createDocumentElement(Document document, NamespaceHelper helper)
-            throws DocumentException {
-        Element element = super.createDocumentElement(document, helper);
-        element.setAttribute(ATTRIBUTE_LANGUAGE, document.getLanguage());
-        String path = getPath(document.getUUID(), document.getLanguage());
-        element.setAttribute(ATTRIBUTE_PATH, path);
-        return element;
-    }
-
-    /**
-     * @see org.apache.lenya.modules.collection.CollectionWrapper#loadDocument(org.w3c.dom.Element)
-     */
-    protected Document loadDocument(Element documentElement) throws DocumentBuildException {
-        String uuid = documentElement.getAttribute(ATTRIBUTE_UUID);
-        String language = documentElement.getAttribute(ATTRIBUTE_LANGUAGE);
-        String path = documentElement.getAttribute(ATTRIBUTE_PATH);
-        Document document = getDelegate().getFactory().get(getDelegate().getPublication(),
-                getDelegate().getArea(), uuid, language);
-        String key = getKey(uuid, language);
-        if (!this.doc2path.containsKey(key)) {
-            this.doc2path.put(key, path);
-        }
-        return document;
-    }
-
-    /**
-     * @return if the document exists.
-     * @throws DocumentException if an error occurs.
-     */
-    public boolean exists() throws DocumentException {
-        try {
-            return getDelegate().exists();
-        } catch (Exception e) {
-            throw new DocumentException(e);
-        }
-    }
-
-    public Node getRepositoryNode() {
-        return getDelegate().getRepositoryNode();
-    }
-
-    public boolean contains(String path) {
-        return doc2path().values().contains(path);
-    }
-
-    public boolean containsByUuid(String uuid, String language) {
-        return doc2path().containsKey(getKey(uuid, language));
-    }
-
-    public boolean containsInAnyLanguage(String uuid) {
-        return doc2path().containsKey(uuid);
-    }
-
-    protected Document getDocument(String uuid) {
-        Document[] docs;
-        try {
-            docs = getDocuments();
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-        for (int i = 0; i < docs.length; i++) {
-            if (docs[i].getUUID().equals(uuid)) {
-                return docs[i];
-            }
-        }
-        return null;
-    }
-
-    public Link getByUuid(String uuid, String language) throws SiteException {
-        String path = getPath(uuid, language);
-        SiteNode node = new SimpleSiteNode(this, path, uuid, getLogger());
-        return node.getLink(language);
-    }
-
-    protected String getPath(String uuid, String language) {
-        String key = getKey(uuid, language);
-        Assert.isTrue("contains [" + key + "]", containsByUuid(uuid, language));
-        return (String) doc2path().get(key);
-    }
-
-    private Map path2node = new WeakHashMap();
-
-    public SiteNode getNode(String path) throws SiteException {
-
-        SiteNode node = (SiteNode) this.path2node.get(path);
-        if (node == null) {
-            Set keys = doc2path().keySet();
-            for (Iterator i = keys.iterator(); i.hasNext();) {
-                String key = (String) i.next();
-                String value = (String) doc2path().get(key);
-                if (value.equals(path)) {
-                    String uuid = getUuid(key);
-                    node = new SimpleSiteNode(this, path, uuid, getLogger());
-                    this.path2node.put(path, node);
-                }
-            }
-        }
-        if (node != null) {
-            return node;
-        }
-        throw new SiteException("[" + this + "] does not contain the path [" + path + "]");
-    }
-
-    public String toString() {
-        return getPublication().getId() + ":" + getArea();
-    }
-
-    public Publication getPublication() {
-        return getDelegate().getPublication();
-    }
-
-    public String getArea() {
-        return getDelegate().getArea();
-    }
-
-    public Link add(String path, Document document) throws SiteException {
-        Assert.notNull("path", path);
-        Assert.notNull("document", document);
-
-        try {
-            Assert.isTrue("document [" + document + "] is already contained!", !contains(document));
-            String key = getKey(document.getUUID(), document.getLanguage());
-            if (!doc2path().containsKey(key)) {
-                doc2path().put(key, path);
-            }
-            super.add(document);
-            save();
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-
-        return getNode(path).getLink(document.getLanguage());
-    }
-
-    /**
-     * Sets the path for a document.
-     * @param document
-     * @param path
-     * @throws TransactionException
-     */
-    public void setPath(Document document, String path) throws TransactionException {
-        Assert.notNull("path", path);
-        Assert.notNull("document", document);
-        String key = getKey(document.getUUID(), document.getLanguage());
-        doc2path().put(key, path);
-        save();
-    }
-
-    protected Map doc2path() {
-        load();
-        return this.doc2path;
-    }
-
-    public SiteNode[] getNodes() {
-        try {
-            Document[] docs = getDocuments();
-            Set paths = new HashSet();
-            for (int i = 0; i < docs.length; i++) {
-                paths.add(getPath(docs[i].getUUID(), docs[i].getLanguage()));
-            }
-            Set nodes = new HashSet();
-            for (Iterator i = paths.iterator(); i.hasNext();) {
-                String path = (String) i.next();
-                nodes.add(getNode(path));
-            }
-            return (SiteNode[]) nodes.toArray(new SiteNode[nodes.size()]);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public SiteNode add(String path) throws SiteException {
-        throw new SiteException("This operation is not supported by [" + getClass().getName()
-                + "]!");
-    }
-
-    public void remove(Document document) throws DocumentException {
-        super.remove(document);
-        this.doc2path.remove(getKey(document.getUUID(), document.getLanguage()));
-        save();
-    }
-
-    public SiteNode add(String path, String followingSiblingPath) throws SiteException {
-        return add(path);
-    }
-
-    public SiteNode[] getTopLevelNodes() {
-        SiteNode[] nodes = getNodes();
-        List topLevelNodes = new ArrayList();
-        for (int i = 0; i < nodes.length; i++) {
-            if (nodes[i].isTopLevel()) {
-                topLevelNodes.add(nodes[i]);
-            }
-        }
-        return (SiteNode[]) topLevelNodes.toArray(new SiteNode[topLevelNodes.size()]);
-    }
-
-    public boolean contains(String path, String language) {
-        if (contains(path)) {
-            SiteNode node;
-            try {
-                node = getNode(path);
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-            return node.hasLink(language);
-        }
-        return false;
-    }
-
-    public Session getSession() {
-        return getRepositoryNode().getSession();
-    }
-}
\ No newline at end of file
diff --git a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStoreFactory.java b/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStoreFactory.java
deleted file mode 100644
index 4dbef6e..0000000
--- a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/DocumentStoreFactory.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.simple;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.Assert;
-
-/**
- * Factory for sitetree objects.
- * 
- * @version $Id$
- */
-public class DocumentStoreFactory extends AbstractLogEnabled implements RepositoryItemFactory {
-
-    protected ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public DocumentStoreFactory(ServiceManager manager, Logger logger) {
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.repository.RepositoryItemFactory#getItemType()
-     */
-    public String getItemType() {
-        return DocumentStore.IDENTIFIABLE_TYPE;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.repository.RepositoryItemFactory#buildItem(org.apache.lenya.cms.repository.Session,
-     *      java.lang.String)
-     */
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        String[] snippets = key.split(":");
-
-        Assert.isTrue("key [" + key + "] is invalid!", snippets.length == 3);
-
-        String publicationId = snippets[0];
-        String areaName = snippets[1];
-        String uuid = snippets[2];
-        DocumentStore store;
-        try {
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication publication = factory.getPublication(publicationId);
-            Area area = publication.getArea(areaName);
-            String lang = publication.getDefaultLanguage();
-
-            if (!area.contains(uuid, lang)) {
-                createAreaVersion(publication, areaName, uuid, lang);
-            }
-
-            Document doc = area.getDocument(uuid, lang);
-
-            store = new DocumentStore(doc, getLogger());
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-        return store;
-    }
-
-    protected void createAreaVersion(Publication publication, String areaName, String uuid,
-            String lang) throws PublicationException, ServiceException {
-        DocumentManager docManager = null;
-        try {
-            Area authoring = publication.getArea(Publication.AUTHORING_AREA);
-            Document authoringDoc = authoring.getDocument(uuid, lang);
-            docManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-            docManager.copyToArea(authoringDoc, areaName);
-        } finally {
-            if (docManager != null) {
-                this.manager.release(docManager);
-            }
-        }
-    }
-
-    public boolean isSharable() {
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleLink.java b/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleLink.java
deleted file mode 100644
index bc2b770..0000000
--- a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleLink.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.simple;
-
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.AbstractLink;
-
-/**
- * Link for SimpleSiteManager.
- */
-public class SimpleLink extends AbstractLink {
-
-    protected SimpleLink(DocumentFactory factory, SimpleSiteNode node, String _label, String language) {
-        super(factory, node, _label, language);
-    }
-
-    public void delete() {
-        SimpleSiteNode node = (SimpleSiteNode) getNode();
-        DocumentStore store = (DocumentStore) node.getStructure();
-        try {
-            store.remove(getDocument());
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void setLabel(String label) {
-    }
-    
-}
diff --git a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteManager.java b/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
deleted file mode 100644
index 304f68b..0000000
--- a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.simple;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.transaction.TransactionException;
-
-/**
- * Simple site manager which does not imply structural information. The documents are stored in
- * collections.
- * 
- * @version $Id$
- */
-public class SimpleSiteManager extends AbstractSiteManager implements Serviceable {
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
-     */
-    public boolean requires(DocumentFactory map, SiteNode dependingResource,
-            SiteNode requiredResource) throws SiteException {
-        return false;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode)
-     */
-    public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
-            throws SiteException {
-        return new SiteNode[0];
-    }
-
-    public void add(String path, Document document) throws SiteException {
-        getStore(document).add(path, document);
-    }
-
-    /**
-     * @param document The document.
-     * @return The store of the document.
-     * @throws SiteException if an error occurs.
-     */
-    private DocumentStore getStore(Document document) throws SiteException {
-        Publication publication = document.getPublication();
-        String area = document.getArea();
-        DocumentFactory map = document.getFactory();
-        return getStore(map, publication, area);
-    }
-
-    /**
-     * @param map The identity map.
-     * @param publication The publication.
-     * @param area The area.
-     * @return A document store.
-     * @throws SiteException if an error occurs.
-     */
-    protected DocumentStore getStore(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-        String key = getKey(publication, area);
-        DocumentStore store;
-        RepositoryItemFactory factory = new DocumentStoreFactory(this.manager, getLogger());
-        try {
-            store = (DocumentStore) map.getSession().getRepositoryItem(factory, key);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-
-        return store;
-    }
-
-    protected String getCollectionUuid(Publication pub) {
-        String sourceUri = pub.getContentURI(Publication.AUTHORING_AREA) + DOCUMENT_PATH;
-        try {
-            
-            if (!SourceUtil.exists(sourceUri, manager)) {
-                throw new RuntimeException("The site configuration [" + sourceUri + "] does not exist!");
-            }
-            
-            org.w3c.dom.Document xml = SourceUtil.readDOM(sourceUri, manager);
-            if (!xml.getDocumentElement().hasAttribute("uuid")) {
-                throw new RuntimeException("The document element of [" + sourceUri
-                        + "] doesn't contain a uuid attribute!");
-            }
-            return xml.getDocumentElement().getAttribute("uuid");
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected static final String DOCUMENT_PATH = "/site.xml";
-
-    /**
-     * @param publication The publication.
-     * @param area The area.
-     * @return The key to store sitetree objects in the identity map.
-     */
-    protected String getKey(Publication publication, String area) {
-        return publication.getId() + ":" + area + ":" + getCollectionUuid(publication);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#contains(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean contains(Document resource) throws SiteException {
-
-        try {
-            DocumentStore store = getStore(resource);
-            if (resource.equals(store)) {
-                return true;
-            }
-            return store.contains(resource);
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#containsInAnyLanguage(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean containsInAnyLanguage(Document resource) throws SiteException {
-        try {
-            boolean contains = false;
-
-            String[] languages = resource.getLanguages();
-            for (int i = 0; i < languages.length; i++) {
-                Document doc = resource.getTranslation(languages[i]);
-                DocumentStore store = getStore(doc);
-                contains = contains || store.contains(doc);
-            }
-
-            return contains;
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#copy(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.cms.publication.Document)
-     */
-    public void copy(Document sourceDocument, Document destinationDocument) throws SiteException {
-        DocumentStore destinationStore = getStore(destinationDocument);
-        try {
-            if (!destinationStore.contains(destinationDocument)) {
-                destinationStore.add(destinationDocument);
-            }
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#setVisibleInNav(org.apache.lenya.cms.publication.Document,
-     *      boolean)
-     */
-    public void setVisibleInNav(Document document, boolean visibleInNav) throws SiteException {
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getDocuments(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public Document[] getDocuments(DocumentFactory identityMap, Publication publication, String area)
-            throws SiteException {
-        DocumentStore store = getStore(identityMap, publication, area);
-        try {
-            return store.getDocuments();
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getSiteStructure(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public SiteStructure getSiteStructure(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-        return getStore(map, publication, area);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getAvailableLocator(DocumentFactory,
-     *      DocumentLocator)
-     */
-    public DocumentLocator getAvailableLocator(DocumentFactory factory, DocumentLocator document)
-            throws SiteException {
-        return document;
-    }
-
-    public boolean isVisibleInNav(Document document) throws SiteException {
-        return true;
-    }
-
-    public void set(String path, Document document) throws SiteException {
-        try {
-            getStore(document).setPath(document, path);
-        } catch (TransactionException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    public DocumentLocator[] getRequiredResources(DocumentFactory map, DocumentLocator locator)
-            throws SiteException {
-        return new DocumentLocator[0];
-    }
-
-}
diff --git a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteNode.java b/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteNode.java
deleted file mode 100644
index 2b36c3d..0000000
--- a/trunk/src/modules/simplesite/java/src/org/apache/lenya/cms/site/simple/SimpleSiteNode.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.simple;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.site.AbstractSiteNode;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * Node for SimpleSiteManager.
- */
-public class SimpleSiteNode extends AbstractSiteNode {
-
-    protected SimpleSiteNode(DocumentStore store, String path, String uuid, Logger logger) {
-        super(store.getPublication(), store, path, uuid, logger);
-    }
-
-    public Link getLink(String language) throws SiteException {
-        DocumentStore store = (DocumentStore) getStructure();
-        return new SimpleLink(store.getDelegate().getFactory(), this, "", language);
-    }
-
-    public String getName() {
-        String[] steps = getPath().split("/");
-        return steps[steps.length - 1];
-    }
-
-    public String[] getLanguages() {
-        DocumentStore store = (DocumentStore) getStructure();
-        List languages = new ArrayList();
-        Document[] docs;
-        try {
-            docs = store.getDocuments();
-        } catch (DocumentException e) {
-            throw new RuntimeException(e);
-        }
-        for (int i = 0; i < docs.length; i++) {
-            if (docs[i].getUUID().equals(getUuid())) {
-                if (languages.contains(docs[i].getLanguage())) {
-                    throw new RuntimeException("Document [" + docs[i] + "] is contained twice!");
-                }
-                languages.add(docs[i].getLanguage());
-            }
-        }
-        return (String[]) languages.toArray(new String[languages.size()]);
-    }
-
-    public boolean isVisible() {
-        return true;
-    }
-
-    public void setVisible(boolean visibleInNav) {
-    }
-
-    public void delete() {
-        String[] languages = getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            try {
-                getLink(languages[i]).delete();
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    public SiteNode[] getChildren() {
-        return new SiteNode[0];
-    }
-
-    public String getHref() {
-        return null;
-    }
-
-    public String getSuffix() {
-        return null;
-    }
-
-    public boolean hasLink() {
-        return false;
-    }
-
-    public SiteNode getParent() throws SiteException {
-        return null;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/config/cocoon-xconf/module.xconf b/trunk/src/modules/sitetree/config/cocoon-xconf/module.xconf
deleted file mode 100644
index 7563eda..0000000
--- a/trunk/src/modules/sitetree/config/cocoon-xconf/module.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/site-managers" unless="/cocoon/site-managers/component-instance[@name = 'tree']">
-
-  <component-instance name="tree" logger="lenya.site"
-    class="org.apache.lenya.cms.site.tree2.TreeSiteManager"/>
-  
-</xconf>
diff --git a/trunk/src/modules/sitetree/config/cocoon-xconf/modules.xconf b/trunk/src/modules/sitetree/config/cocoon-xconf/modules.xconf
deleted file mode 100644
index b7c2dbb..0000000
--- a/trunk/src/modules/sitetree/config/cocoon-xconf/modules.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'sitetree']">
-
-  <component-instance logger="core.modules.input.sitetree" name="sitetree"
-    class="org.apache.lenya.cms.cocoon.components.modules.input.SitetreeModule"/>
-  
-</xconf>
diff --git a/trunk/src/modules/sitetree/config/cocoon-xconf/usecases.xconf b/trunk/src/modules/sitetree/config/cocoon-xconf/usecases.xconf
deleted file mode 100644
index c89ef2c..0000000
--- a/trunk/src/modules/sitetree/config/cocoon-xconf/usecases.xconf
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitetree.nudge']">
-
-  <component-instance name="sitetree.nudge" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Nudge"/>
-  
-</xconf>
diff --git a/trunk/src/modules/sitetree/config/module.xml b/trunk/src/modules/sitetree/config/module.xml
deleted file mode 100644
index e7ef3ee..0000000
--- a/trunk/src/modules/sitetree/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.sitetree</id>
-  <export package="org.apache.lenya.cms.site.tree"/>
-  <depends module="org.apache.lenya.modules.ac"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Sitetree</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Tree-based site manager implementation</description>
-</module>
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/config/sitemap/generator-sitetreefragment.xmap b/trunk/src/modules/sitetree/config/sitemap/generator-sitetreefragment.xmap
deleted file mode 100644
index 5eea8c9..0000000
--- a/trunk/src/modules/sitetree/config/sitemap/generator-sitetreefragment.xmap
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/generators" 

-  unless="/sitemap/components/generators/generator[@name = 'sitetree-fragment']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-

-    <map:generator name="sitetree-fragment" label="content,data" logger="sitemap.generator.sitetree-fragment" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.lenya.cms.cocoon.generation.SitetreeFragmentGenerator"/>

-

-</xmap>

diff --git a/trunk/src/modules/sitetree/config/sitemap/transformer-accesscontrolsitetree.xmap b/trunk/src/modules/sitetree/config/sitemap/transformer-accesscontrolsitetree.xmap
deleted file mode 100644
index 8eb2d97..0000000
--- a/trunk/src/modules/sitetree/config/sitemap/transformer-accesscontrolsitetree.xmap
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'access-control-sitetree']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-    

-  <map:transformer name="access-control-sitetree" logger="lenya.sitemap.transformer.accesscontrolsitetree"

-    src="org.apache.lenya.cms.cocoon.transformation.AccessControlSitetreeTransformer"/>

-  

-</xmap>

diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java
deleted file mode 100644
index 65cc98f..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.cms.site.tree.TreeSiteManager;
-
-/**
- * Module for sitetree access.
- * 
- * @version $Id: SitetreeModule.java 159584 2005-03-31 12:49:41Z andreas $
- */
-public class SitetreeModule extends AbstractPageEnvelopeModule {
-
-    /**
-     * <code>AUTHORING_NODE</code> The authoring node
-     */
-    public static final String AUTHORING_NODE = "authoring-node";
-    /**
-     * <code>LIVE_NODE</code> The live node
-     */
-    public static final String LIVE_NODE = "live-node";
-    /**
-     * <code>TRASH_NODE</code> The trash node
-     */
-    public static final String TRASH_NODE = "trash-node";
-    /**
-     * <code>ARCHIVE_NODE</code> The archive node
-     */
-    public static final String ARCHIVE_NODE = "archive-node";
-
-    protected static final String[] PARAMETER_NAMES = { AUTHORING_NODE, LIVE_NODE, TRASH_NODE,
-            ARCHIVE_NODE };
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        Object value = null;
-        ServiceSelector selector = null;
-        TreeSiteManager _manager = null;
-
-        try {
-            PageEnvelope envelope = getEnvelope(objectModel, name);
-            Publication publication = envelope.getPublication();
-            
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            _manager = (TreeSiteManager) selector.select(publication.getSiteManagerHint());
-            
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
-
-            if (name.equals(AUTHORING_NODE)) {
-                SiteTree authoringTree = _manager.getTree(map,
-                        publication,
-                        Publication.AUTHORING_AREA);
-                value = authoringTree.getNode(envelope.getDocument().getPath());
-            }
-
-            if (name.equals(LIVE_NODE)) {
-                SiteTree liveTree = _manager.getTree(map, publication, Publication.LIVE_AREA);
-                value = liveTree.getNode(envelope.getDocument().getPath());
-            }
-
-            if (name.equals(TRASH_NODE)) {
-                SiteTree trashTree = _manager.getTree(map, publication, Publication.TRASH_AREA);
-                value = trashTree.getNode(envelope.getDocument().getPath());
-            }
-
-            if (name.equals(ARCHIVE_NODE)) {
-                SiteTree archiveTree = _manager.getTree(map, publication, Publication.ARCHIVE_AREA);
-                value = archiveTree.getNode(envelope.getDocument().getPath());
-            }
-        } catch (Exception e) {
-            throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
-        }
-        finally {
-            if (selector != null) {
-                if (_manager != null) {
-                    selector.release(_manager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-        return value;
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Iterator getAttributeNames(Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        return Arrays.asList(PARAMETER_NAMES).iterator();
-    }
-
-    /**
-     * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
-     */
-    public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-        Object[] objects = { getAttribute(name, modeConf, objectModel) };
-        return objects;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java
deleted file mode 100644
index e983163..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* @version $Id: SitetreeFragmentGenerator.java 159584 2005-03-31 12:49:41Z andreas $*/
-
-package org.apache.lenya.cms.cocoon.generation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.generation.ServiceableGenerator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Generates a fragment of the navigation XML from the sitetree, corresponding to a given node. The
- * node is specified by the sitemap parameters area/path. If the sitemap parameter initialTree
- * is true, the top nodes of the tree will be generated and the node given by the sitemap parameters
- * area/path will be unfolded. If initialTree is false, only the children of the selected node
- * will be generated.
- */
-public class SitetreeFragmentGenerator extends ServiceableGenerator {
-
-    protected Publication publication;
-
-    /** Parameter which denotes the path of the clicked node */
-    protected String path;
-
-    /** Parameter which denotes the area of the clicked node */
-    protected String area;
-
-    /**
-     * Parameter which decides if the initial tree with the root nodes is generated
-     */
-    protected boolean initialTree;
-    
-    /**
-     * Parameter which decides if the node mime types should be reported
-     */
-    protected boolean showType;
-
-    /** FIXME: should pass this as a parameter */
-    protected String[] areas = null;
-
-    /**
-     * Convenience object, so we don't need to create an AttributesImpl for every element.
-     */
-    protected AttributesImpl attributes;
-
-    protected static final String PARAM_AREA = "area";
-    protected static final String PARAM_PATH = "path";
-    protected static final String PARAM_INITIAL = "initial";
-    protected static final String PARAM_TYPE = "mimetype";
-    protected static final String PARAM_AREAS = "areas";
-
-    /** The URI of the namespace of this generator. */
-    protected static final String URI = "http://apache.org/cocoon/lenya/sitetree/1.0";
-    protected static final String XML_URI = "http://www.w3.org/XML/1998/namespace";
-
-    /** The namespace prefix for this namespace. */
-    protected static final String PREFIX = "site";
-    protected static final String XML_PREFIX = "xml";
-
-    protected static final String NODE_NODE = "node";
-    protected static final String NODE_LABEL = "label";
-    protected static final String NODE_SITE = "site";
-    protected static final String NODE_FRAGMENT = "fragment";
-
-    protected static final String ATTR_ID = "id";
-    protected static final String ATTR_FOLDER = "folder";
-    protected static final String ATTR_AREA = "area";
-    protected static final String ATTR_PUBLICATION = "publication";
-    protected static final String ATTR_LABEL = "label";
-    protected static final String ATTR_VISIBLEINNAV = "visibleinnav";
-    protected static final String ATTR_LINK = "link";
-    protected static final String ATTR_BASE = "base";
-    protected static final String ATTR_SUFFIX = "suffix";
-    protected static final String ATTR_HREF = "href";
-    protected static final String ATTR_UUID = "uuid";
-    protected static final String ATTR_LANG = "lang";
-    protected static final String ATTR_TYPE = "mimetype";
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String src, Parameters par)
-            throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, src, par);
-
-        Request request = ObjectModelHelper.getRequest(_objectModel);
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Resolving page envelope for URL [" + request.getRequestURI() + "]");
-        }
-
-        this.area = par.getParameter(PARAM_AREA, null);
-        this.path = par.getParameter(PARAM_PATH, null);
-
-        if (par.isParameter(PARAM_INITIAL)) {
-            this.initialTree = Boolean.valueOf(par.getParameter(PARAM_INITIAL, null))
-                    .booleanValue();
-        } else {
-            this.initialTree = false;
-        }
-        
-        if (par.isParameter(PARAM_TYPE)) {
-            this.showType = Boolean.valueOf(par.getParameter(PARAM_TYPE, null)).booleanValue();
-        } else {
-            this.showType = false;
-        }
-
-        if (par.isParameter(PARAM_AREAS)) {
-            String parAreas = par.getParameter(PARAM_AREAS, null);
-            this.areas = parAreas.split(",");
-        } else {
-            String temp[] = { "authoring", "archive", "trash" };
-            this.areas = temp;
-        }
-
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug("Parameter area: " + this.area);
-            this.getLogger().debug("Parameter path: " + this.path);
-            this.getLogger().debug("Parameter initialTree: " + this.initialTree);
-            StringBuffer areasStr = new StringBuffer();
-            for (int i = 0; i < this.areas.length; i++) {
-                areasStr.append(this.areas[i]).append(" ");
-            }
-            this.getLogger().debug("Parameter areas: " + areasStr.toString());
-        }
-
-        try {
-            this.publication = PublicationUtil.getPublication(this.manager, _objectModel);
-        } catch (Exception e) {
-            throw new ProcessingException("Could not create publication: ", e);
-        }
-        this.attributes = new AttributesImpl();
-
-    }
-
-    /**
-     * @see org.apache.cocoon.generation.Generator#generate()
-     */
-    public void generate() throws IOException, SAXException, ProcessingException {
-
-        try {
-
-            this.contentHandler.startDocument();
-            this.contentHandler.startPrefixMapping(PREFIX, URI);
-
-            this.attributes.clear();
-            this.attributes.addAttribute("", ATTR_PUBLICATION, ATTR_PUBLICATION, "CDATA",
-                    this.publication.getId());
-            
-            if (!this.initialTree) {
-                this.attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA", this.area);
-                this.attributes.addAttribute("", ATTR_BASE, ATTR_BASE, "CDATA", this.path);
-            }
-
-            this.contentHandler.startElement(URI,
-                    NODE_FRAGMENT,
-                    PREFIX + ':' + NODE_FRAGMENT,
-                    this.attributes);
-
-            if (this.initialTree) {
-                for (int i = 0; i < this.areas.length; i++) {
-                    generateFragmentInitial(this.areas[i]);
-                }
-            } else {
-                generateFragment();
-            }
-
-            this.contentHandler.endElement(URI, NODE_FRAGMENT, PREFIX + ':' + NODE_FRAGMENT);
-
-            this.contentHandler.endPrefixMapping(PREFIX);
-            this.contentHandler.endDocument();
-
-        } catch (final SAXException e) {
-            throw new ProcessingException(e);
-        } catch (final SiteException e) {
-            throw new ProcessingException(e);
-        }
-
-    }
-
-    /**
-     * Generates a fragment of the tree which contains the children of a given node.
-     * @throws SiteException
-     * @throws SAXException
-     * @throws ProcessingException
-     */
-    protected void generateFragment() throws SiteException, SAXException, ProcessingException {
-
-        if (!this.area.equals(Publication.AUTHORING_AREA)
-                && !this.area.equals(Publication.ARCHIVE_AREA)
-                && !this.area.equals(Publication.TRASH_AREA)
-                && !this.area.equals(Publication.LIVE_AREA)
-                && !this.area.equals(Publication.STAGING_AREA)) {
-            throw new ProcessingException("Invalid area: " + this.area);
-        }
-
-        try {
-            
-            SiteStructure site = this.publication.getArea(this.area).getSite();
-
-            SiteNode[] children;
-            
-            if (this.path.equals("/")) {
-                children = site.getTopLevelNodes();
-            }
-            else {
-                SiteNode node = site.getNode(this.path);
-                children = node.getChildren();
-            }
-
-            addNodes(children);
-        } catch (PublicationException e) {
-            throw new ProcessingException(e);
-        }
-    }
-
-    /**
-     * Adds the given nodes (not recursive).
-     * @param children
-     * @throws SAXException
-     * @throws SiteException 
-     */
-    protected void addNodes(SiteNode[] children) throws SAXException, SiteException {
-        for (int i = 0; i < children.length; i++) {
-            startNode(NODE_NODE, children[i]);
-            addLabels(children[i]);
-            endNode(NODE_NODE);
-        }
-    }
-
-    /**
-     * Generates the top node of the given area and then calls a recursive method to traverse the
-     * tree, if the node given by area/path is in this area.
-     * @param siteArea
-     * @throws SiteException
-     * @throws SAXException
-     * @throws ProcessingException
-     */
-    protected void generateFragmentInitial(String siteArea) throws SiteException, SAXException,
-            ProcessingException {
-        
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(this.publication.getSiteManagerHint());
-            SiteStructure siteTree = this.publication.getArea(siteArea).getSite();
-
-            String label = "";
-            String isFolder = "";
-
-            // FIXME: don't hardcode area label
-            if (siteArea.equals(Publication.AUTHORING_AREA))
-                label = "Authoring";
-            if (siteArea.equals(Publication.ARCHIVE_AREA))
-                label = "Archive";
-            if (siteArea.equals(Publication.TRASH_AREA))
-                label = "Trash";
-            if (siteArea.equals(Publication.LIVE_AREA))
-                label = "Live";
-            if (siteArea.equals(Publication.STAGING_AREA))
-                label = "Staging";
-
-            if (siteTree.getTopLevelNodes().length > 0)
-                isFolder = "true";
-            else
-                isFolder = "false";
-
-            this.attributes.clear();
-            this.attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA", siteArea);
-            this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA", isFolder);
-            this.attributes.addAttribute("", ATTR_LABEL, ATTR_LABEL, "CDATA", label);
-
-            startNode(NODE_SITE);
-
-            if (this.area.equals(siteArea)) {
-                generateFragmentRecursive(siteTree.getTopLevelNodes(), this.path);
-            }
-
-            endNode(NODE_SITE);
-        } catch (Exception e) {
-            throw new ProcessingException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    /**
-     * Follows the path to find the way in the sitetree to the specified node and opens all
-     * folders on its way.
-     * @param nodes
-     * @param path
-     * @throws SiteException
-     * @throws SAXException
-     */
-    protected void generateFragmentRecursive(SiteNode[] nodes, String path)
-            throws SiteException, SAXException {
-        String nodeid;
-        String childid;
-
-        if (nodes == null)
-            return;
-        if (path.startsWith("/"))
-            path = path.substring(1);
-        if (path.indexOf("/") != -1) {
-            nodeid = path.substring(0, path.indexOf("/"));
-            childid = path.substring(path.indexOf("/") + 1);
-        } else {
-            nodeid = path;
-            childid = "";
-        }
-
-        for (int i = 0; i < nodes.length; i++) {
-            addNodeRecursive(nodes[i], nodeid, childid);
-        }
-    }
-
-    /**
-     * Adds the given node, and if the node's id matched the given nodeid, it continues recursively.
-     * @param node
-     * @param nodeid
-     * @param childid
-     * @throws SAXException
-     * @throws SiteException
-     */
-    protected void addNodeRecursive(SiteNode node, String nodeid, String childid)
-            throws SAXException, SiteException {
-        startNode(NODE_NODE, node);
-        addLabels(node);
-        if (node.getName().equals(nodeid)) {
-            generateFragmentRecursive(node.getChildren(), childid);
-        }
-        endNode(NODE_NODE);
-    }
-
-    /**
-     * Begins a named node and calls setNodeAttributes to set its attributes.
-     * @param nodeName the name of the new node
-     * @throws SAXException if an error occurs while creating the node
-     */
-    protected void startNode(String nodeName) throws SAXException {
-        this.contentHandler.startElement(URI, nodeName, PREFIX + ':' + nodeName, this.attributes);
-    }
-
-    /**
-     * Begins a named node and calls setNodeAttributes to set its attributes.
-     * @param nodeName the name of the new node
-     * @param node The attributes are taken from this node
-     * @throws SAXException if an error occurs while creating the node
-     * @throws SiteException 
-     */
-    protected void startNode(String nodeName, SiteNode node) throws SAXException, SiteException {
-        setNodeAttributes(node);
-        this.contentHandler.startElement(URI, nodeName, PREFIX + ':' + nodeName, this.attributes);
-    }
-
-    /**
-     * Sets the attributes for a given node. Sets attributes id, href, folder, suffix, basic-url,
-     * language-suffix.
-     * @param node
-     * @throws SAXException if an error occurs while setting the attributes
-     * @throws SiteException 
-     */
-    protected void setNodeAttributes(SiteNode node) throws SAXException, SiteException {
-        this.attributes.clear();
-
-        String id = node.getName();
-        // String isVisible = Boolean.toString(node.visibleInNav());
-        String hasLink = Boolean.toString(node.hasLink());
-        String href = node.getHref();
-        String suffix = node.getSuffix();
-        String isFolder = Boolean.toString(isFolder(node));
-        String uuid = node.getUuid();
-
-        if (this.getLogger().isDebugEnabled()) {
-            this.getLogger().debug("adding attribute id: " + id);
-            // this.getLogger().debug("adding attribute visibleinnav: " +
-            // isVisible);
-            this.getLogger().debug("adding attribute link: " + hasLink);
-            if (href != null)
-                this.getLogger().debug("adding attribute href: " + href);
-            if (suffix != null)
-                this.getLogger().debug("adding attribute suffix: " + suffix);
-            this.getLogger().debug("adding attribute folder: " + isFolder);
-        }
-        this.attributes.addAttribute("", ATTR_ID, ATTR_ID, "CDATA", id);
-        // attributes.addAttribute("", ATTR_VISIBLEINNAV, ATTR_VISIBLEINNAV,
-        // "CDATA", isVisible);
-        this.attributes.addAttribute("", ATTR_LINK, ATTR_LINK, "CDATA", hasLink);
-        if (href != null)
-            this.attributes.addAttribute("", ATTR_HREF, ATTR_HREF, "CDATA", href);
-        if (suffix != null)
-            this.attributes.addAttribute("", ATTR_SUFFIX, ATTR_SUFFIX, "CDATA", suffix);
-        if (uuid != null)
-            this.attributes.addAttribute("", ATTR_UUID, ATTR_UUID, "CDATA", uuid);
-        this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA", isFolder);
-        
-        if (this.showType) {
-            try {
-                String type = this.publication.getArea(this.area)
-                    .getDocument(node.getUuid(),this.publication.getDefaultLanguage())
-                    .getMimeType();
-                this.attributes.addAttribute("",ATTR_TYPE, ATTR_TYPE, "CDATA", type);
-            } catch (PublicationException e) {
-                throw new SiteException(e);
-            }
-        }
-            
-    }
-
-    /**
-     * Returns a value to indicate whether a node is a folder (contains subnodes). With the
-     * incremental sitetree loading, we sometimes load nodes which are folders, but we don't load
-     * their children. But we still have to know if it's a folder or not, i.e. if it can be opened.
-     * @param node
-     * @return A boolean value.
-     */
-    protected boolean isFolder(SiteNode node) {
-        if (node.getChildren().length > 0)
-            return true;
-        return false;
-    }
-
-    /**
-     * Ends the named node.
-     * @param nodeName the name of the new node
-     * @throws SAXException if an error occurs while closing the node
-     */
-    protected void endNode(String nodeName) throws SAXException {
-        this.contentHandler.endElement(URI, nodeName, PREFIX + ':' + nodeName);
-    }
-
-    /**
-     * Finds all the label children of a node and adds them to the nav xml.
-     * @param node
-     * @throws SAXException
-     */
-    protected void addLabels(SiteNode node) throws SAXException {
-        String[] languages = node.getLanguages();
-
-        for (int i = 0; i < languages.length; i++) {
-            Link link;
-            try {
-                link = node.getLink(languages[i]);
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-            addLabel(link.getLabel(), languages[i]);
-        }
-    }
-
-    /**
-     * Adds a label element of a given language.
-     * @param label the value of the label
-     * @param language the language of the label
-     * @throws SAXException
-     */
-    protected void addLabel(String label, String language) throws SAXException {
-        this.attributes.clear();
-        this.attributes.addAttribute(XML_URI,
-                ATTR_LANG,
-                XML_PREFIX + ":" + ATTR_LANG,
-                "CDATA",
-                language);
-
-        this.contentHandler.startElement(URI,
-                NODE_LABEL,
-                PREFIX + ':' + NODE_LABEL,
-                this.attributes);
-        char[] labelArray = label.toCharArray();
-        this.contentHandler.characters(labelArray, 0, labelArray.length);
-        this.contentHandler.endElement(URI, NODE_LABEL, PREFIX + ':' + NODE_LABEL);
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
deleted file mode 100644
index d4267c4..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: AccessControlSitetreeTransformer.java 153561 2005-02-12 21:49:18Z gregor $  */
-
-package org.apache.lenya.cms.cocoon.transformation;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.ac.AccessControlException;
-import org.apache.lenya.ac.AccessController;
-import org.apache.lenya.ac.AccessControllerResolver;
-import org.apache.lenya.ac.AccreditableManager;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.PolicyManager;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.cms.site.tree.DefaultSiteTree;
-import org.apache.lenya.cms.site.tree.SiteTreeNodeImpl;
-import org.apache.lenya.util.ServletHelper;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * This transformer is applied to the sitetree. It marks the site element and all node elements the
- * current identity is not allowed to access with a <code>protected="true"</code> attribute.
- */
-public class AccessControlSitetreeTransformer extends AbstractSAXTransformer implements Disposable {
-
-    /**
-     * <code>ATTRIBUTE_PROTECTED</code> The attribute for protected
-     */
-    public static final String ATTRIBUTE_PROTECTED = "protected";
-    /**
-     * <code>PARAMETER_PUBLICATION_ID</code> The publication id parameter
-     */
-    public static final String PARAMETER_PUBLICATION_ID = "publication-id";
-    /**
-     * <code>PARAMETER_AREA</code> The area parameter
-     */
-    public static final String PARAMETER_AREA = "area";
-
-    private String documentId;
-    private ServiceSelector serviceSelector;
-    private PolicyManager policyManager;
-    private AccessControllerResolver acResolver;
-    private AccreditableManager accreditableManager;
-    private Identity identity;
-    private String urlPrefix;
-
-    /**
-     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
-     *      java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-     */
-    public void setup(SourceResolver _resolver, Map _objectModel, String src, Parameters par)
-            throws ProcessingException, SAXException, IOException {
-        super.setup(_resolver, _objectModel, src, par);
-
-        this.serviceSelector = null;
-        this.acResolver = null;
-        this.policyManager = null;
-
-        this.identity = Identity.getIdentity(this.request.getSession(false));
-
-        try {
-            String publicationId = par.getParameter(PARAMETER_PUBLICATION_ID);
-            String area = par.getParameter(PARAMETER_AREA);
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Setting up transformer");
-                getLogger().debug("    Identity:       [" + this.identity + "]");
-                getLogger().debug("    Publication ID: [" + publicationId + "]");
-                getLogger().debug("    Area:           [" + area + "]");
-            }
-
-            this.urlPrefix = "/" + publicationId + "/" + area;
-
-            Request _request = ObjectModelHelper.getRequest(_objectModel);
-
-            this.serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
-                    + "Selector");
-
-            this.acResolver = (AccessControllerResolver) this.serviceSelector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("    Resolved AC resolver [" + this.acResolver + "]");
-            }
-
-            String webappUrl = ServletHelper.getWebappURI(_request);
-            AccessController accessController = this.acResolver.resolveAccessController(webappUrl);
-            this.accreditableManager = accessController.getAccreditableManager();
-            this.policyManager = accessController.getPolicyManager();
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("    Using policy manager [" + this.policyManager + "]");
-            }
-        } catch (final ParameterException e) {
-            throw new ProcessingException(e);
-        } catch (final ServiceException e) {
-            throw new ProcessingException(e);
-        } catch (final AccessControlException e) {
-            throw new ProcessingException(e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing transformer");
-        }
-        if (this.serviceSelector != null) {
-            if (this.acResolver != null) {
-                this.serviceSelector.release(this.acResolver);
-            }
-            this.manager.release(this.serviceSelector);
-        }
-    }
-
-    /**
-     * @see org.xml.sax.ContentHandler#startDocument()
-     */
-    public void startDocument() throws SAXException {
-        super.startDocument();
-        this.documentId = "";
-    }
-
-    /**
-     * (non-Javadoc)
-     * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
-     *      java.lang.String, org.xml.sax.Attributes)
-     */
-    public void startElement(String uri, String localName, String raw, Attributes attr)
-            throws SAXException {
-
-        Attributes attributes = attr;
-
-        if (isFragmentNode(uri, localName)) {
-            String area = attr.getValue("area"); // FIXME: don't hardcode
-            String base = attr.getValue("base");
-            if (area != null && base != null) {
-                this.documentId = "/" + area + base;
-            }
-        }
-        if (isNode(uri, localName)) {
-            String id = attr.getValue(SiteTreeNodeImpl.ID_ATTRIBUTE_NAME);
-            if (id != null) {
-                this.documentId += "/" + id;
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Checking node");
-                getLogger().debug("    Document ID: [" + this.documentId + "]");
-                getLogger().debug("    URL:         [" + this.urlPrefix + this.documentId + "]");
-            }
-
-            try {
-                String url = this.urlPrefix + this.documentId;
-                Role[] roles = this.policyManager.getGrantedRoles(this.accreditableManager, this.identity, url);
-
-                getLogger().debug("    Roles:       [" + roles.length + "]");
-
-                if (roles.length == 0) {
-                    getLogger().debug("    Adding attribute [protected='true']");
-
-                    AttributesImpl attributesImpl = new AttributesImpl(attributes);
-                    attributesImpl.addAttribute("",
-                            ATTRIBUTE_PROTECTED,
-                            ATTRIBUTE_PROTECTED,
-                            "",
-                            Boolean.toString(true));
-                    attributes = attributesImpl;
-                }
-            } catch (AccessControlException e) {
-                throw new SAXException(e);
-            }
-        }
-
-        super.startElement(uri, localName, raw, attributes);
-    }
-
-    /**
-     * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String,
-     *      java.lang.String)
-     */
-    public void endElement(String uri, String localName, String raw) throws SAXException {
-        super.endElement(uri, localName, raw);
-        if (isNode(uri, localName) && this.documentId.length() > 0) {
-            this.documentId = this.documentId.substring(0, this.documentId.lastIndexOf("/"));
-        }
-    }
-
-    /**
-     * Returns if an element represents a sitetree node.
-     * @param uri The namespace URI.
-     * @param localName The local name.
-     * @return A boolean value.
-     */
-    protected boolean isNode(String uri, String localName) {
-        return uri.equals(DefaultSiteTree.NAMESPACE_URI)
-                && (localName.equals(SiteTreeNodeImpl.NODE_NAME) || localName.equals("site"));
-    }
-
-    /**
-     * Returns if an element represents a fragment node.
-     * @param uri The namespace URI.
-     * @param localName The local name.
-     * @return A boolean value.
-     */
-    protected boolean isFragmentNode(String uri, String localName) {
-        return uri.equals(DefaultSiteTree.NAMESPACE_URI) && (localName.equals("fragment"));
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
deleted file mode 100644
index b7d404a..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
+++ /dev/null
@@ -1,665 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.xpath.XPathAPI;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Default sitetree implementation.
- * 
- * @version $Id: DefaultSiteTree.java 208764 2005-07-01 15:57:21Z andreas $
- */
-public class DefaultSiteTree extends AbstractLogEnabled implements SiteTree {
-
-    /**
-     * The sitetree namespace.
-     */
-    public static final String NAMESPACE_URI = "http://apache.org/cocoon/lenya/sitetree/1.0";
-
-    /**
-     * The name of the sitetree file.
-     */
-    public static final String SITE_TREE_FILENAME = "sitetree.xml";
-
-    private String sourceUri;
-    // the area is only retained to provide some more info when raising an
-    // exception.
-    private String area = "";
-    private Publication pub;
-    protected ServiceManager manager;
-    private Document document;
-    private DocumentFactory factory;
-
-    private org.apache.lenya.cms.repository.Node repositoryNode;
-
-    private boolean changed;
-
-    /**
-     * Create a DefaultSiteTree
-     * @param factory The document factory.
-     * @param publication The publication.
-     * @param _area The area.
-     * @param manager The service manager.
-     * @param logger The logger.
-     * @throws SiteException if an error occurs.
-     */
-    protected DefaultSiteTree(DocumentFactory factory, Publication publication, String _area,
-            ServiceManager manager, Logger logger) throws SiteException {
-
-        ContainerUtil.enableLogging(this, logger);
-
-        this.factory = factory;
-        this.pub = publication;
-        this.sourceUri = publication.getSourceURI() + "/content/" + _area + "/"
-                + SITE_TREE_FILENAME;
-        this.area = _area;
-        this.manager = manager;
-        try {
-            if (getRepositoryNode().exists()) {
-                this.document = DocumentHelper.readDocument(getRepositoryNode().getInputStream());
-            }
-            else {
-                getLogger().info("Empty sitetree will be created/initialized!");
-                this.document = createDocument();
-            }
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-    }
-
-    protected void saveDocument() throws SiteException {
-        try {
-            DocumentHelper.writeDocument(this.document, getRepositoryNode().getOutputStream());
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * Checks if the tree file has been modified externally and reloads the site
-     * tree. protected synchronized void checkModified() { if
-     * (this.area.equals(Publication.LIVE_AREA) && this.treefile.lastModified() >
-     * this.lastModified) {
-     * 
-     * if (getLogger().isDebugEnabled()) { getLogger().debug("Sitetree [" +
-     * this.treefile + "] has changed: reloading."); }
-     * 
-     * try { this.document = DocumentHelper.readDocument(this.treefile); } catch
-     * (Exception e) { throw new IllegalStateException(e.getMessage()); }
-     * this.lastModified = this.treefile.lastModified(); } }
-     */
-
-    /**
-     * Create a new DefaultSiteTree xml document.
-     * @return the new site document
-     * @throws ParserConfigurationException if an error occurs
-     */
-    public synchronized Document createDocument() throws ParserConfigurationException {
-        Document document = DocumentHelper.createDocument(NAMESPACE_URI, "site", null);
-
-        Element root = document.getDocumentElement();
-        root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
-        root
-                .setAttribute("xsi:schemaLocation",
-                        "http://apache.org/cocoon/lenya/sitetree/1.0  ../../../../resources/entities/sitetree.xsd");
-
-        return document;
-    }
-
-    /**
-     * Find a node in a subtree. The search is started at the given node. The
-     * list of ids contains the document-id split by "/".
-     * @param node where to start the search
-     * @param ids list of node ids
-     * @return the node that matches the path given in the list of ids
-     */
-    protected synchronized Node findNode(Node node, List ids) {
-        if (ids.size() < 1) {
-            return node;
-        }
-        NodeList nodes = node.getChildNodes();
-
-        for (int i = 0; i < nodes.getLength(); i++) {
-            NamedNodeMap attributes = nodes.item(i).getAttributes();
-
-            if (attributes != null) {
-                Node idAttribute = attributes.getNamedItem("id");
-
-                if (idAttribute != null && !"".equals(idAttribute.getNodeValue())
-                        && idAttribute.getNodeValue().equals(ids.get(0))) {
-                    return findNode(nodes.item(i), ids.subList(1, ids.size()));
-                }
-            }
-        }
-
-        // node wasn't found
-        return null;
-    }
-
-    protected synchronized void addNode(SiteTreeNode node, String refpath) throws SiteException {
-        SiteTreeNode target = addNode(node.getParent().getPath(), node.getName(), node.getUuid(),
-                node.isVisible(), node.getHref(), node.getSuffix(), node.hasLink(), refpath);
-        copyLinks(node, target);
-    }
-
-    protected void copyLinks(SiteTreeNode source, SiteTreeNode target) throws SiteException {
-        String[] languages = source.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            addLabel(target.getPath(), languages[i], source.getLink(languages[i]).getLabel());
-        }
-    }
-
-    protected synchronized void addNode(String parentid, String id, String uuid, boolean visibleInNav)
-            throws SiteException {
-        addNode(parentid, id, uuid, visibleInNav, null, null, false);
-    }
-
-    protected synchronized void addNode(SiteTreeNode node) throws SiteException {
-        addNode(node, null);
-    }
-
-    protected synchronized SiteTreeNodeImpl addNode(String path, String uuid, boolean visibleInNav,
-            String href, String suffix, boolean link, String refpath) throws SiteException {
-        StringBuffer buf = new StringBuffer();
-        StringTokenizer st = new StringTokenizer(path, "/");
-        int length = st.countTokens();
-
-        for (int i = 0; i < (length - 1); i++) {
-            buf.append("/" + st.nextToken());
-        }
-        String parentid = buf.toString();
-        String id = st.nextToken();
-        return addNode(parentid, id, uuid, visibleInNav, href, suffix, link, refpath);
-    }
-
-    protected synchronized SiteTreeNodeImpl addNode(String path, String uuid, boolean visibleInNav,
-            String href, String suffix, boolean link) throws SiteException {
-        return addNode(path, uuid, visibleInNav, href, suffix, link, null);
-    }
-
-    protected synchronized SiteTreeNodeImpl addNode(String parentid, String id, String uuid,
-            boolean visibleInNav, String href, String suffix, boolean link) throws SiteException {
-        return addNode(parentid + "/" + id, uuid, visibleInNav, href, suffix, link, null);
-    }
-
-    protected void createParents(final String path) throws SiteException {
-        String[] steps = path.substring(1).split("/");
-        int s = 0;
-        String ancestorPath = "";
-        while (s < steps.length) {
-            if (!contains(ancestorPath)) {
-                add(ancestorPath);
-            }
-            ancestorPath += "/" + steps[s];
-            s++;
-        }
-    }
-
-    protected synchronized SiteTreeNodeImpl addNode(String parentPath, String name, String uuid,
-            boolean visibleInNav, String href, String suffix, boolean link, String refpath)
-            throws SiteException {
-
-        String path = parentPath + "/" + name;
-        createParents(path);
-
-        Node parentNode = getNodeInternal(parentPath);
-
-        getLogger().debug("PARENT ELEMENT: " + parentNode);
-        getLogger().debug("VISIBLEINNAV IS: " + visibleInNav);
-
-        // Check if child already exists
-        Node childNode = getNodeInternal(path);
-
-        if (childNode != null) {
-            getLogger().info("This node: " + path + " has already been inserted");
-            return (SiteTreeNodeImpl) getNode(path);
-        }
-
-        // Create node
-        NamespaceHelper helper = new NamespaceHelper(NAMESPACE_URI, "", this.document);
-        Element child = helper.createElement(SiteTreeNodeImpl.NODE_NAME);
-        child.setAttribute(SiteTreeNodeImpl.ID_ATTRIBUTE_NAME, name);
-        if (uuid != null) {
-            child.setAttribute(SiteTreeNodeImpl.UUID_ATTRIBUTE_NAME, uuid);
-        }
-
-        if (visibleInNav) {
-            child.setAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME, "true");
-        } else {
-            child.setAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME, "false");
-        }
-
-        if ((href != null) && (href.length() > 0)) {
-            child.setAttribute(SiteTreeNodeImpl.HREF_ATTRIBUTE_NAME, href);
-        }
-
-        if ((suffix != null) && (suffix.length() > 0)) {
-            child.setAttribute(SiteTreeNodeImpl.SUFFIX_ATTRIBUTE_NAME, suffix);
-        }
-
-        if (link) {
-            child.setAttribute(SiteTreeNodeImpl.LINK_ATTRIBUTE_NAME, "true");
-        }
-
-        // Add Node
-        if (refpath != null && !refpath.equals("")) {
-            Node nextSibling = getNodeInternal(refpath);
-            if (nextSibling != null) {
-                parentNode.insertBefore(child, nextSibling);
-            } else {
-                parentNode.appendChild(child);
-            }
-        } else {
-            parentNode.appendChild(child);
-        }
-        getLogger().debug("Tree has been modified: " + document.getDocumentElement());
-        saveDocument();
-        return (SiteTreeNodeImpl) getNode(path);
-    }
-
-    protected synchronized void addLabel(String path, String language, String label) {
-        try {
-            SiteTreeNodeImpl node = (SiteTreeNodeImpl) getNode(path);
-            if (node != null) {
-                node.addLabel(language, label);
-            }
-            saveDocument();
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected synchronized void removeLabel(String path, String language) {
-        try {
-            SiteTreeNodeImpl node = (SiteTreeNodeImpl) getNode(path);
-            node.removeLabel(language);
-            saveDocument();
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected synchronized SiteTreeNode removeNode(String path) {
-        assert path != null;
-
-        Node node;
-        try {
-            node = removeNodeInternal(path);
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-        if (node == null) {
-            return null;
-        }
-
-        SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, this, (Element) node, getLogger());
-        ContainerUtil.enableLogging(newNode, getLogger());
-        return newNode;
-    }
-
-    /**
-     * removes the node corresponding to the given document-id and returns it
-     * @param path the document-id of the Node to be removed
-     * @return the <code>Node</code> that was removed
-     * @throws SiteException
-     */
-    private synchronized Node removeNodeInternal(String path) throws SiteException {
-        Assert.isTrue("contains " + path, contains(path));
-        Node node = this.getNodeInternal(path);
-        Node parentNode = node.getParentNode();
-        Node newNode = parentNode.removeChild(node);
-        try {
-            saveDocument();
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-
-        return newNode;
-    }
-
-    /**
-     * Find a node for a given document-id
-     * 
-     * @param path the document-id of the Node that we're trying to get
-     * 
-     * @return the Node if there is a Node for the given document-id, null
-     *         otherwise
-     * @throws SiteException
-     */
-    private synchronized Node getNodeInternal(String path) throws SiteException {
-        StringTokenizer st = new StringTokenizer(path, "/");
-        ArrayList ids = new ArrayList();
-
-        while (st.hasMoreTokens()) {
-            ids.add(st.nextToken());
-        }
-
-        Node node = findNode(this.document.getDocumentElement(), ids);
-        return node;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTree#getNode(java.lang.String)
-     */
-    public synchronized SiteNode getNode(String path) throws SiteException {
-        assert path != null;
-
-        SiteTreeNode treeNode = null;
-
-        Node node;
-        try {
-            node = getNodeInternal(path);
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-        if (node != null) {
-            treeNode = new SiteTreeNodeImpl(this.factory, this, (Element) node, getLogger());
-            ContainerUtil.enableLogging(treeNode, getLogger());
-        } else {
-            throw new SiteException("No node contained for path [" + path + "]!");
-        }
-
-        return treeNode;
-    }
-
-    /**
-     * Move up the node amongst its siblings.
-     * @param path The document id for the node.
-     * @throws SiteException if the moving failed.
-     */
-    public synchronized void moveUp(String path) throws SiteException {
-        Node node = this.getNodeInternal(path);
-        if (node == null) {
-            throw new SiteException("Node to move: " + path + " not found");
-        }
-        Node parentNode = node.getParentNode();
-        if (parentNode == null) {
-            throw new SiteException("Parentid of node with path: " + path + " not found");
-        }
-
-        Node previousNode;
-        try {
-            previousNode = XPathAPI.selectSingleNode(node,
-                    "(preceding-sibling::*[local-name() = 'node'])[last()]");
-        } catch (TransformerException e) {
-            throw new SiteException(e);
-        }
-
-        if (previousNode == null) {
-            getLogger().warn("Couldn't found a preceding sibling");
-            return;
-        }
-        Node insertNode = parentNode.removeChild(node);
-        parentNode.insertBefore(insertNode, previousNode);
-        saveDocument();
-    }
-
-    /**
-     * Move down the node amongst its siblings.
-     * 
-     * @param path The document id for the node.
-     * @throws SiteException if the moving failed.
-     */
-    public synchronized void moveDown(String path) throws SiteException {
-        Node node = this.getNodeInternal(path);
-        if (node == null) {
-            throw new SiteException("Node to move: " + path + " not found");
-        }
-        Node parentNode = node.getParentNode();
-        if (parentNode == null) {
-            throw new SiteException("Parentid of node with path: " + path + " not found");
-        }
-        Node nextNode;
-        try {
-            nextNode = XPathAPI.selectSingleNode(node,
-                    "following-sibling::*[local-name() = 'node'][position()=2]");
-        } catch (TransformerException e) {
-            throw new SiteException(e);
-        }
-
-        Node insertNode = parentNode.removeChild(node);
-
-        if (nextNode == null) {
-            getLogger().debug("Couldn't found the second following sibling");
-            parentNode.appendChild(insertNode);
-        } else {
-            parentNode.insertBefore(insertNode, nextNode);
-        }
-        saveDocument();
-    }
-
-    protected synchronized void setLabel(String path, String language, String label) {
-        try {
-            SiteTreeNode node = (SiteTreeNode) getNode(path);
-            node.getLink(language).setLabel(label);
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteStructure#getRepositoryNode()
-     */
-    public org.apache.lenya.cms.repository.Node getRepositoryNode() {
-        if (this.repositoryNode == null) {
-            Session session = this.getPublication().getFactory().getSession();
-            NodeFactory factory = null;
-            try {
-                factory = (NodeFactory) manager.lookup(NodeFactory.ROLE);
-                this.repositoryNode = (org.apache.lenya.cms.repository.Node)
-                    session.getRepositoryItem(factory, this.sourceUri);
-            } catch (Exception e) {
-                throw new RuntimeException("Creating repository node failed: ", e);
-            } finally {
-                if (factory != null) {
-                    manager.release(factory);
-                }
-            }
-        }
-        return this.repositoryNode;
-    }
-
-    public void save() throws RepositoryException {
-        try {
-            saveDocument();
-        } catch (SiteException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public String getArea() {
-        return this.area;
-    }
-
-    public Publication getPublication() {
-        return this.pub;
-    }
-
-    public boolean contains(String path) {
-        try {
-            return getNodeInternal(path) != null;
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean containsByUuid(String uuid, String language) {
-        return getByUuidInternal(uuid, language) != null;
-    }
-
-    protected SiteNode getByUuidInternal(String uuid, String language) {
-        String xPath = "//*[@uuid = '" + uuid + "']";
-        SiteNode[] nodes = getNodesByXpath(xPath);
-        for (int i = 0; i < nodes.length; i++) {
-            if (nodes[i].hasLink(language)) {
-                return nodes[i];
-            }
-        }
-        return null;
-    }
-
-    protected SiteNode getNodeByXpath(String xPath) {
-        try {
-            Element element = (Element) XPathAPI.selectSingleNode(this.document, xPath);
-            if (element == null) {
-                return null;
-            } else {
-                return new SiteTreeNodeImpl(this.factory, this, element, getLogger());
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    protected SiteNode[] getNodesByXpath(String xPath) {
-        try {
-            NodeList list = XPathAPI.selectNodeList(this.document, xPath);
-            SiteNode[] nodes = new SiteNode[list.getLength()];
-            for (int i = 0; i < nodes.length; i++) {
-                Element element = (Element) list.item(i);
-                nodes[i] = new SiteTreeNodeImpl(this.factory, this, element, getLogger());
-            }
-            return nodes;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public Link getByUuid(String uuid, String language) throws SiteException {
-        SiteNode node = getByUuidInternal(uuid, language);
-        if (node == null) {
-            throw new SiteException("The link for [" + uuid + ":" + language
-                    + "] is not contained!");
-        }
-        return node.getLink(language);
-    }
-
-    protected DocumentFactory getFactory() {
-        return this.factory;
-    }
-
-    public Link add(String path, org.apache.lenya.cms.publication.Document doc)
-            throws SiteException {
-
-        if (contains(path)) {
-            SiteNode node = getNode(path);
-            if (node.getLanguages().length > 0 && !node.getUuid().equals(doc.getUUID())) {
-                throw new SiteException("Node for path [" + path + "] exists with different UUID!");
-            }
-        }
-
-        SiteTreeNodeImpl node = addNode(path, doc.getUUID(), true, null, "", false);
-        node.addLabel(doc.getLanguage(), "");
-
-        if (node.getLanguages().length == 1) {
-            node.setUUID(doc.getUUID());
-        }
-
-        return node.getLink(doc.getLanguage());
-    }
-
-    public SiteNode add(String path) throws SiteException {
-        SiteTreeNode node = addNode(path, null, true, null, "", false);
-        return node;
-    }
-
-    public boolean containsInAnyLanguage(String uuid) {
-        String xPath = "//*[@uuid = '" + uuid + "']";
-        return getNodeByXpath(xPath) != null;
-    }
-
-    public SiteNode[] getNodes() {
-        List nodes = getRootNode().preOrder();
-        nodes.remove(getRootNode());
-        return (SiteNode[]) nodes.toArray(new SiteNode[nodes.size()]);
-    }
-
-    public SiteNode add(String path, String followingSiblingPath) throws SiteException {
-        SiteTreeNode node = addNode(path, null, true, null, "", false, followingSiblingPath);
-        return node;
-    }
-
-    public SiteNode[] getTopLevelNodes() {
-        return getRootNode().getChildren();
-    }
-
-    protected SiteTreeNodeImpl getRootNode() {
-        SiteTreeNodeImpl root;
-        try {
-            root = (SiteTreeNodeImpl) getNode("/");
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-        return root;
-    }
-
-    public boolean contains(String path, String language) {
-        if (contains(path)) {
-            SiteNode node;
-            try {
-                node = getNode(path);
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-            return node.hasLink(language);
-        }
-        return false;
-    }
-
-    public Session getSession() {
-        return getRepositoryNode().getSession();
-    }
-
-    public SiteNode[] preOrder() {
-        List preOrder = getRootNode().preOrder();
-        return (SiteNode[]) preOrder.toArray(new SiteNode[preOrder.size()]);
-    }
-
-    public void changed() {
-        this.changed = true;
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTree.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTree.java
deleted file mode 100644
index ff9c21a..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTree.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * A sitetree.
- * 
- * @version $Id: SiteTree.java 177923 2005-05-23 05:15:51Z gregor $
- */
-public interface SiteTree extends SiteStructure {
-
-    /**
-     * The type of sitetree identifiable objects.
-     */
-    String IDENTIFIABLE_TYPE = "site";
-
-    /**
-     * Move up the node amongst its siblings.
-     * 
-     * @param path The document id of the node.
-     * @throws SiteException if the moving failed.
-     */
-    void moveUp(String path) throws SiteException;
-
-    /**
-     * Move down the node amongst its siblings.
-     * @param path The document id of the node.
-     * @throws SiteException if the moving failed.
-     */
-    void moveDown(String path) throws SiteException;
-
-    /**
-     * @return The nodes in pre order.
-     */
-    SiteNode[] preOrder();
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeFactory.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeFactory.java
deleted file mode 100644
index cc1a77f..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeFactory.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.repository.Session;
-
-/**
- * Factory for sitetree objects.
- * 
- * @version $Id: SiteTreeFactory.java 179568 2005-06-02 09:27:26Z jwkaltz $
- */
-public class SiteTreeFactory extends AbstractLogEnabled implements RepositoryItemFactory {
-
-    protected ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public SiteTreeFactory(ServiceManager manager, Logger logger) {
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        String[] snippets = key.split(":");
-        String publicationId = snippets[0];
-        String area = snippets[1];
-        DefaultSiteTree tree;
-        try {
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication publication = factory.getPublication(publicationId);
-            tree = new DefaultSiteTree(factory, publication, area, this.manager, getLogger());
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-        return tree;
-    }
-
-    public String getItemType() {
-        return SiteTree.IDENTIFIABLE_TYPE;
-    }
-
-    public boolean isSharable() {
-        return true;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
deleted file mode 100644
index ae62c1b..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.AbstractLink;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.xml.DocumentHelper;
-import org.w3c.dom.Element;
-
-/**
- * SiteTree link.
- */
-public class SiteTreeLink extends AbstractLink {
-
-    protected SiteTreeLink(DocumentFactory factory, SiteNode node, String _language,
-            Element element) {
-        super(factory, node, "", _language);
-        this.element = element;
-    }
-
-    public void delete() {
-        SiteTreeNodeImpl node = (SiteTreeNodeImpl) getNode();
-        node.removeLabel(getLanguage());
-    }
-    
-    private Element element;
-
-    /**
-     * Set the actual label of the label object.
-     * 
-     * @param label The label.
-     */
-    public void setLabel(String label) {
-        DocumentHelper.setSimpleElementText(this.element, label);
-        ((SiteTreeNodeImpl) getNode()).save();
-    }
-
-    public String getLabel() {
-        return DocumentHelper.getSimpleElementText(this.element);
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
deleted file mode 100644
index b61b2f5..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: SiteTreeNode.java 155270 2005-02-24 22:43:34Z andreas $  */
-
-package org.apache.lenya.cms.site.tree;
-
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * This interface is a wrapper around the more general w3c.Node which
- * hides some details which are irrelevant for site tree nodes. It basically
- * delegates everything to the Node.
- */
-public interface SiteTreeNode extends SiteNode {
-
-    /**
-     * Get the sitetreenodes, which are the siblings preceding this node
-     * 
-     * @return the children.
-     */
-    SiteTreeNode[] getPrecedingSiblings();
-
-	/**
-	 * Get the sitetreenodes, which are the siblings following this node
-	 * 
-	 * @return the children.
-	 */
-	SiteTreeNode[] getNextSiblings();
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
deleted file mode 100644
index e48ba73..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
+++ /dev/null
@@ -1,609 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Concrete implementation of the <code>SiteTreeNode</code> interface.
- * 
- * @see org.apache.lenya.cms.site.tree.SiteTreeNode
- * @version $Id: SiteTreeNodeImpl.java 155316 2005-02-25 10:53:29Z andreas $
- */
-public class SiteTreeNodeImpl extends AbstractLogEnabled implements SiteTreeNode {
-
-    /**
-     * <code>ID_ATTRIBUTE_NAME</code> The id attribute
-     */
-    public static final String ID_ATTRIBUTE_NAME = "id";
-    /**
-     * <code>UUID_ATTRIBUTE_NAME</code> The uuid attribute
-     */
-    public static final String UUID_ATTRIBUTE_NAME = "uuid";
-    /**
-     * <code>ISIBLEINNAV_ATTRIBUTE_NAME</code>The visibleinnav attribute
-     */
-    public static final String VISIBLEINNAV_ATTRIBUTE_NAME = "visibleinnav";
-    /**
-     * <code>HREF_ATTRIBUTE_NAME</code> The href attribute
-     */
-    public static final String HREF_ATTRIBUTE_NAME = "href";
-    /**
-     * <code>SUFFIX_ATTRIBUTE_NAME</code> The suffix attribute
-     */
-    public static final String SUFFIX_ATTRIBUTE_NAME = "suffix";
-    /**
-     * <code>LINK_ATTRIBUTE_NAME</code> The link attribute
-     */
-    public static final String LINK_ATTRIBUTE_NAME = "link";
-    /**
-     * <code>LANGUAGE_ATTRIBUTE_NAME</code> The language attribute
-     */
-    public static final String LANGUAGE_ATTRIBUTE_NAME = "xml:lang";
-    /**
-     * <code>NODE_NAME</code> The node name
-     */
-    public static final String NODE_NAME = "node";
-    /**
-     * <code>LABEL_NAME</code> The label name
-     */
-    public static final String LABEL_NAME = "label";
-
-    private Element node = null;
-    private DefaultSiteTree tree;
-
-    private DocumentFactory factory;
-
-    /**
-     * Creates a new SiteTreeNodeImpl object.
-     * @param factory The document factory.
-     * @param tree The tree.
-     * @param node The node.
-     * @param logger The logger.
-     * 
-     * @param _node the node which is to be wrapped by this SiteTreeNode
-     */
-    protected SiteTreeNodeImpl(DocumentFactory factory, DefaultSiteTree tree, Element node, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-        this.node = node;
-        this.tree = tree;
-        this.factory = factory;
-    }
-
-    public String getName() {
-        if (this.node == this.node.getOwnerDocument().getDocumentElement()) {
-            return "";
-        }
-        return this.node.getAttributes().getNamedItem(ID_ATTRIBUTE_NAME).getNodeValue();
-    }
-
-    public String getUuid() {
-        if (this.node == this.node.getOwnerDocument().getDocumentElement()) {
-            getLogger().warn("Node equals OwnerDocument: " + this);
-            return "";
-        }
-        Element element = (Element) this.node;
-        if (element.hasAttribute(UUID_ATTRIBUTE_NAME)) {
-            return element.getAttribute(UUID_ATTRIBUTE_NAME);
-        } else {
-            if (getLanguages().length > 0) {
-                String path = getPath();
-                getLogger().warn(
-                        "Assuming non-UUID content because no 'uuid' attribute is set"
-                                + " and the node contains links. Returning path [" + path
-                                + "] as UUID.");
-                return path;
-            } else {
-                return null;
-            }
-        }
-    }
-
-    public String getPath() {
-        String absoluteId = "";
-        Node currentNode = this.node;
-        NamedNodeMap attributes = null;
-        Node idAttribute = null;
-
-        while (currentNode != null) {
-            attributes = currentNode.getAttributes();
-
-            if (attributes == null) {
-                break;
-            }
-
-            idAttribute = attributes.getNamedItem(ID_ATTRIBUTE_NAME);
-
-            if (idAttribute == null) {
-                break;
-            }
-
-            absoluteId = "/" + idAttribute.getNodeValue() + absoluteId;
-            currentNode = currentNode.getParentNode();
-        }
-
-        return absoluteId;
-    }
-
-    protected SiteTreeLink[] getLinks() {
-        ArrayList labels = new ArrayList();
-
-        NodeList children = this.node.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-
-            if ((child.getNodeType() == Node.ELEMENT_NODE)
-                    && child.getNodeName().equals(LABEL_NAME)) {
-                String labelLanguage = null;
-                Node languageAttribute = child.getAttributes()
-                        .getNamedItem(LANGUAGE_ATTRIBUTE_NAME);
-
-                if (languageAttribute != null) {
-                    labelLanguage = languageAttribute.getNodeValue();
-                }
-
-                labels.add(new SiteTreeLink(this.factory, this, labelLanguage,
-                        (Element) child));
-            }
-        }
-
-        return (SiteTreeLink[]) labels.toArray(new SiteTreeLink[labels.size()]);
-    }
-
-    public void addLabel(String language, String label) throws SiteException {
-        Assert.isTrue("not contains " + language, !hasLink(language));
-
-        NamespaceHelper helper = getNamespaceHelper();
-        Element labelElem = helper.createElement(SiteTreeNodeImpl.LABEL_NAME, label);
-        labelElem.setAttribute(SiteTreeNodeImpl.LANGUAGE_ATTRIBUTE_NAME, language);
-        node.insertBefore(labelElem, node.getFirstChild());
-        getTree().changed();
-    }
-
-    public void removeLabel(String language) {
-        if (!hasLink(language)) {
-            throw new RuntimeException(this + " does not contain the language [" + language + "]");
-        } else {
-            // this node doesn't contain this label
-
-            try {
-                NodeList children = this.node.getChildNodes();
-
-                for (int i = 0; i < children.getLength(); i++) {
-                    Node child = children.item(i);
-
-                    if ((child.getNodeType() == Node.ELEMENT_NODE)
-                            && child.getNodeName().equals(LABEL_NAME)) {
-
-                        Node languageAttribute = child.getAttributes().getNamedItem(
-                                LANGUAGE_ATTRIBUTE_NAME);
-
-                        if (languageAttribute != null
-                                && languageAttribute.getNodeValue().equals(language)) {
-                            this.node.removeChild(child);
-                            getTree().changed();
-                            break;
-                        }
-                    }
-                }
-                deleteIfEmpty();
-            } catch (SiteException e) {
-                throw new RuntimeException("could not save sitetree after deleting label of "
-                        + this + " [" + language + "]");
-            }
-        }
-
-    }
-
-    protected void deleteIfEmpty() throws SiteException {
-        if (getLanguages().length == 0 && getChildren().length == 0) {
-            delete();
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#visibleInNav()
-     */
-    public boolean visibleInNav() {
-        Node attribute = this.node.getAttributes().getNamedItem(VISIBLEINNAV_ATTRIBUTE_NAME);
-
-        if (attribute != null) {
-            return attribute.getNodeValue().equals("true");
-        }
-        return true;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getHref()
-     */
-    public String getHref() {
-        Node attribute = this.node.getAttributes().getNamedItem(HREF_ATTRIBUTE_NAME);
-
-        if (attribute != null) {
-            return attribute.getNodeValue();
-        }
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getSuffix()
-     */
-    public String getSuffix() {
-        Node attribute = this.node.getAttributes().getNamedItem(SUFFIX_ATTRIBUTE_NAME);
-
-        if (attribute != null) {
-            return attribute.getNodeValue();
-        }
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#hasLink()
-     */
-    public boolean hasLink() {
-        Node attribute = this.node.getAttributes().getNamedItem(LINK_ATTRIBUTE_NAME);
-
-        if (attribute != null) {
-            return attribute.getNodeValue().equals("true");
-        }
-        return false;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getChildren()
-     */
-    public SiteNode[] getChildren() {
-        List childElements = new ArrayList();
-
-        NamespaceHelper helper = getNamespaceHelper();
-        Element[] elements = helper.getChildren((Element) this.node, SiteTreeNodeImpl.NODE_NAME);
-
-        for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, getTree(), elements[i],
-                    getLogger());
-            childElements.add(newNode);
-        }
-
-        return (SiteNode[]) childElements.toArray(new SiteNode[childElements.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#removeChildren()
-     */
-    public SiteTreeNode[] removeChildren() {
-        List childElements = new ArrayList();
-        NamespaceHelper helper = getNamespaceHelper();
-        Element[] elements = helper.getChildren((Element) this.node, SiteTreeNodeImpl.NODE_NAME);
-        for (int i = 0; i < elements.length; i++) {
-            this.node.removeChild(elements[i]);
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, getTree(), elements[i],
-                    getLogger());
-            childElements.add(newNode);
-        }
-        return (SiteTreeNode[]) childElements.toArray(new SiteTreeNode[childElements.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getNextSiblings()
-     */
-    public SiteTreeNode[] getNextSiblings() {
-        List siblingElements = new ArrayList();
-
-        NamespaceHelper helper = getNamespaceHelper();
-        Element[] elements = helper
-                .getNextSiblings((Element) this.node, SiteTreeNodeImpl.NODE_NAME);
-
-        for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, getTree(), elements[i],
-                    getLogger());
-            siblingElements.add(newNode);
-        }
-
-        return (SiteTreeNode[]) siblingElements.toArray(new SiteTreeNode[siblingElements.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getPrecedingSiblings()
-     */
-    public SiteTreeNode[] getPrecedingSiblings() {
-        List siblingElements = new ArrayList();
-
-        NamespaceHelper helper = getNamespaceHelper();
-        Element[] elements = helper.getPrecedingSiblings((Element) this.node,
-                SiteTreeNodeImpl.NODE_NAME);
-
-        for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, getTree(), elements[i],
-                    getLogger());
-            siblingElements.add(newNode);
-        }
-
-        return (SiteTreeNode[]) siblingElements.toArray(new SiteTreeNode[siblingElements.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getNextSiblingDocumentId()
-     */
-    public String getNextSiblingDocumentId() {
-        SiteTreeNode[] siblings = getNextSiblings();
-        if (siblings != null && siblings.length > 0) {
-            return siblings[0].getPath();
-        }
-        return null;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#accept(org.apache.lenya.cms.site.tree.SiteTreeNodeVisitor)
-     */
-    public void accept(SiteTreeNodeVisitor visitor) throws DocumentException {
-        visitor.visitSiteTreeNode(this);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#acceptSubtree(org.apache.lenya.cms.site.tree.SiteTreeNodeVisitor)
-     */
-    public void acceptSubtree(SiteTreeNodeVisitor visitor) throws DocumentException {
-        this.accept(visitor);
-        SiteNode[] children = this.getChildren();
-        if (children == null) {
-            getLogger().info("The node " + getPath() + " has no children");
-            return;
-        }
-        for (int i = 0; i < children.length; i++) {
-            ((SiteTreeNodeImpl) children[i]).acceptSubtree(visitor);
-        }
-    }
-
-    protected void acceptReverseSubtree(SiteTreeNodeVisitor visitor) throws DocumentException {
-        List orderedNodes = this.postOrder();
-        for (int i = 0; i < orderedNodes.size(); i++) {
-            SiteTreeNodeImpl _node = (SiteTreeNodeImpl) orderedNodes.get(i);
-            _node.accept(visitor);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#postOrder()
-     */
-    public List postOrder() {
-        List list = new ArrayList();
-        SiteNode[] children = this.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            List orderedChildren = ((SiteTreeNodeImpl) children[i]).postOrder();
-            list.addAll(orderedChildren);
-        }
-        list.add(this);
-        return list;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#setNodeAttribute(String, String)
-     */
-    public void setNodeAttribute(String attributeName, String attributeValue) {
-        Element element = (Element) this.node;
-        element.setAttribute(attributeName, attributeValue);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getChildren(java.lang.String)
-     */
-    public SiteTreeNode[] getChildren(String language) {
-        SiteNode[] children = getChildren();
-        List languageChildren = new ArrayList();
-
-        for (int i = 0; i < children.length; i++) {
-            if (children[i].hasLink(language)) {
-                languageChildren.add(children[i]);
-            }
-        }
-
-        return (SiteTreeNode[]) languageChildren.toArray(new SiteTreeNode[languageChildren.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getParent()
-     */
-    public SiteNode getParent() throws SiteException {
-        SiteTreeNode parent = null;
-
-        Node parentNode = this.node.getParentNode();
-        if (parentNode.getNodeType() == Node.ELEMENT_NODE
-                && parentNode.getLocalName().equals(NODE_NAME)) {
-            parent = new SiteTreeNodeImpl(this.factory, getTree(), (Element) parentNode,
-                    getLogger());
-            ContainerUtil.enableLogging(parent, getLogger());
-        } else {
-            throw new SiteException("The node [" + this + "] has no parent.");
-        }
-
-        return parent;
-    }
-
-    /**
-     * Returns the namespace helper of the sitetree XML document.
-     * @return A namespace helper.
-     */
-    protected NamespaceHelper getNamespaceHelper() {
-        NamespaceHelper helper = new NamespaceHelper(DefaultSiteTree.NAMESPACE_URI, "", this.node
-                .getOwnerDocument());
-        return helper;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#getParent(java.lang.String)
-     */
-    public SiteTreeNode getParent(String language) {
-        SiteTreeNode parent;
-        try {
-            parent = (SiteTreeNode) getParent();
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-        if (!parent.hasLink(language)) {
-            parent = null;
-        }
-        return parent;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.tree.SiteTreeNode#preOrder()
-     */
-    public List preOrder() {
-        List list = new ArrayList();
-        list.add(this);
-        SiteNode[] children = this.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            List orderedChildren = ((SiteTreeNodeImpl) children[i]).preOrder();
-            list.addAll(orderedChildren);
-        }
-        return list;
-    }
-
-    public String getNodeAttribute(String attributeName) {
-        Element element = (Element) this.node;
-        return element.getAttribute(attributeName);
-    }
-
-    public void setUUID(String uuid) {
-        setNodeAttribute(UUID_ATTRIBUTE_NAME, uuid);
-    }
-
-    public SiteStructure getStructure() {
-        return getTree();
-    }
-
-    protected DefaultSiteTree getTree() {
-        return this.tree;
-    }
-
-    public String[] getLanguages() {
-        Link[] links = getLinks();
-        String[] languages = new String[links.length];
-        for (int i = 0; i < links.length; i++) {
-            languages[i] = links[i].getLanguage();
-        }
-        return languages;
-    }
-
-    public Link getLink(String language) throws SiteException {
-        Link link = getLinkInternal(language);
-        if (link == null) {
-            throw new SiteException("The node [" + this + "] doesn't contain the language ["
-                    + language + "].");
-        }
-        return link;
-    }
-
-    protected SiteTreeLink getLinkInternal(String language) {
-        SiteTreeLink[] links = getLinks();
-        for (int i = 0; i < links.length; i++) {
-            if (links[i].getLanguage().equals(language)) {
-                return links[i];
-            }
-        }
-        return null;
-    }
-
-    public boolean hasLink(String language) {
-        return getLinkInternal(language) != null;
-    }
-
-    public boolean equals(Object obj) {
-        if (!getClass().isInstance(obj)) {
-            return false;
-        }
-        return getKey().equals(((SiteTreeNodeImpl) obj).getKey());
-    }
-
-    protected String getKey() {
-        return getTree().getPublication().getId() + ":" + getTree().getArea() + ":" + getPath();
-    }
-
-    public int hashCode() {
-        return getKey().hashCode();
-    }
-
-    public String toString() {
-        return getKey();
-    }
-
-    public boolean isVisible() {
-        String value = getNodeAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME);
-        if (value != null && !value.equals("")) {
-            return Boolean.valueOf(value).booleanValue();
-        } else {
-            return true;
-        }
-    }
-
-    public synchronized void setVisible(boolean visibleInNav) {
-        if (visibleInNav) {
-            setNodeAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME, "true");
-        } else {
-            setNodeAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME, "false");
-        }
-        save();
-    }
-
-    public void delete() {
-        try {
-            SiteTreeNodeImpl parent = null;
-            if (!isTopLevel()) {
-                parent = (SiteTreeNodeImpl) getParent();
-            }
-            getTree().removeNode(getPath());
-            if (parent != null) {
-                parent.deleteIfEmpty();
-            }
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public boolean isTopLevel() {
-        return getPath().lastIndexOf("/") == 0;
-    }
-    
-    protected void save() {
-        try {
-            ((DefaultSiteTree) getTree()).saveDocument();
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeVisitor.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeVisitor.java
deleted file mode 100644
index 65c082c..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeVisitor.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: SiteTreeNodeVisitor.java 123348 2004-12-25 22:49:57Z gregor $  */
-
-package org.apache.lenya.cms.site.tree;
-
-import org.apache.lenya.cms.publication.DocumentException;
-
-/**
- * Visitor interface to define operations performed on SiteTreeNode
- * (Visitor pattern)
- *
- */
-public interface SiteTreeNodeVisitor {
-
-	/**
-	 * Operation performed on a SiteTreeNode
-	 * @param node The SiteTreeNode.
-     * 
-     * @throws DocumentException if an error occurs
-	 */
-	void visitSiteTreeNode(SiteTreeNode node) throws DocumentException;
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
deleted file mode 100644
index 38a1879..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * A tree-based site manager.
- * 
- * @version $Id: TreeSiteManager.java 208766 2005-07-01 16:05:00Z andreas $
- */
-public class TreeSiteManager extends AbstractSiteManager implements Serviceable {
-
-    /**
-     * Ctor.
-     */
-    public TreeSiteManager() {
-        // do nothing
-    }
-
-    /**
-     * Returns the sitetree for a specific area of this publication. Sitetrees are created on demand
-     * and are cached.
-     * 
-     * @param map The document identity map.
-     * @param publication The publication.
-     * @param area The area.
-     * @return A site tree.
-     * @throws SiteException if an error occurs.
-     */
-    public DefaultSiteTree getTree(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-
-        String key = getKey(publication, area);
-        DefaultSiteTree sitetree;
-        RepositoryItemFactory factory = new SiteTreeFactory(this.manager, getLogger());
-        try {
-            sitetree = (DefaultSiteTree) map.getSession().getRepositoryItem(factory, key);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-
-        return sitetree;
-    }
-
-    protected DefaultSiteTree getTree(Document document) throws SiteException {
-        return getTree(document.getFactory(), document.getPublication(), document.getArea());
-    }
-
-    /**
-     * Returns the ancestors of a resource, beginning with the parent.
-     * 
-     * @param node The resource.
-     * @return A list of resources.
-     * @throws SiteException if an error occurs.
-     */
-    protected List getAncestors(SiteNode node) throws SiteException {
-        List ancestors = new ArrayList();
-        SiteNode parent = null;
-        try {
-            if (!node.isTopLevel()) {
-                parent = node.getParent();
-                ancestors.add(parent);
-                ancestors.addAll(getAncestors(parent));
-            }
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-        return ancestors;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
-     */
-    public boolean requires(DocumentFactory map, SiteNode dependingResource,
-            SiteNode requiredResource) throws SiteException {
-        return getAncestors(dependingResource).contains(requiredResource);
-    }
-
-    public DocumentLocator[] getRequiredResources(DocumentFactory map, final DocumentLocator loc)
-            throws SiteException {
-        
-        List ancestors = new ArrayList();
-        DocumentLocator locator = loc;
-        while (locator.getParent() != null) {
-            DocumentLocator parent = locator.getParent();
-            ancestors.add(parent);
-            locator = parent;
-        }
-        return (DocumentLocator[]) ancestors.toArray(new DocumentLocator[ancestors.size()]);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.site.SiteNode)
-     */
-    public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
-            throws SiteException {
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Obtaining requiring resources of [" + resource + "]");
-        }
-
-        NodeSet nodes = new NodeSet(this.manager);
-        Publication pub = resource.getStructure().getPublication();
-        String area = resource.getStructure().getArea();
-        SiteTree tree = getTree(map, pub, area);
-
-        SiteTreeNodeImpl node = (SiteTreeNodeImpl) tree.getNode(resource.getPath());
-        if (node != null) {
-            List preOrder = node.preOrder();
-
-            // remove original resource (does not require itself)
-            preOrder.remove(0);
-
-            for (int i = 0; i < preOrder.size(); i++) {
-                SiteTreeNode descendant = (SiteTreeNode) preOrder.get(i);
-                nodes.add(descendant);
-            }
-
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Obtaining requiring resources completed.");
-            }
-        }
-
-        return nodes.getNodes();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#contains(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean contains(Document resource) throws SiteException {
-        SiteTree tree = getTree(resource);
-        return tree.containsByUuid(resource.getUUID(), resource.getLanguage());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#containsInAnyLanguage(org.apache.lenya.cms.publication.Document)
-     */
-    public boolean containsInAnyLanguage(Document resource) throws SiteException {
-        SiteTree tree = getTree(resource);
-        return tree.containsInAnyLanguage(resource.getUUID());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#copy(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.cms.publication.Document)
-     */
-    public void copy(Document sourceDocument, Document destinationDocument) throws SiteException {
-        DefaultSiteTree destinationTree = getTree(destinationDocument);
-
-        try {
-            SiteTreeNode sourceNode = (SiteTreeNode) sourceDocument.getLink().getNode();
-
-            SiteTreeNode[] siblings = sourceNode.getNextSiblings();
-            SiteNode parent = sourceNode.getParent();
-            String parentId = "";
-            if (parent != null) {
-                parentId = parent.getPath();
-            }
-            SiteTreeNode sibling = null;
-            String siblingPath = null;
-
-            // same UUID -> insert at the same position
-            if (sourceDocument.getUUID().equals(destinationDocument.getUUID())) {
-                for (int i = 0; i < siblings.length; i++) {
-                    String path = parentId + "/" + siblings[i].getName();
-                    sibling = (SiteTreeNode) destinationTree.getNode(path);
-                    if (sibling != null) {
-                        siblingPath = path;
-                        break;
-                    }
-                }
-            }
-
-            if (!sourceNode.hasLink(sourceDocument.getLanguage())) {
-                // the node that we're trying to publish
-                // doesn't have this language
-                throw new SiteException("The node " + sourceDocument.getPath()
-                        + " doesn't contain a label for language " + sourceDocument.getLanguage());
-            }
-            Link link = sourceNode.getLink(sourceDocument.getLanguage());
-            SiteTreeNode destinationNode = (SiteTreeNode) destinationTree.getNode(destinationDocument.getPath());
-            if (destinationNode == null) {
-                if (siblingPath == null) {
-                    destinationTree.addNode(destinationDocument.getPath(),
-                            destinationDocument.getUUID(),
-                            sourceNode.isVisible(),
-                            sourceNode.getHref(),
-                            sourceNode.getSuffix(),
-                            sourceNode.hasLink());
-                    destinationTree.addLabel(destinationDocument.getPath(),
-                            destinationDocument.getLanguage(),
-                            link.getLabel());
-                } else {
-                    destinationTree.addNode(destinationDocument.getPath(),
-                            destinationDocument.getUUID(),
-                            sourceNode.isVisible(),
-                            sourceNode.getHref(),
-                            sourceNode.getSuffix(),
-                            sourceNode.hasLink(),
-                            siblingPath);
-                    destinationTree.addLabel(destinationDocument.getPath(),
-                            destinationDocument.getLanguage(),
-                            link.getLabel());
-                }
-
-            } else {
-                // if the node already exists in the live
-                // tree simply insert the label in the
-                // live tree
-                destinationDocument.getLink().setLabel(link.getLabel());
-            }
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#setVisibleInNav(org.apache.lenya.cms.publication.Document,
-     *      boolean)
-     */
-    public void setVisibleInNav(Document document, boolean visibleInNav) throws SiteException {
-        SiteTree tree = getTree(document);
-        try {
-            tree.getNode(document.getPath()).setVisible(visibleInNav);
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    /**
-     * Returns the label object of a document.
-     * 
-     * @param document The document.
-     * @return A label.
-     * @throws SiteException if an error occurs.
-     */
-    protected Link getLabelObject(Document document) throws SiteException {
-        Link label = null;
-        SiteTree siteTree = getTree(document);
-        if (siteTree != null) {
-            SiteTreeNode node = (SiteTreeNode) siteTree.getByUuid(document.getUUID(),
-                    document.getLanguage()).getNode();
-            if (node == null) {
-                throw new SiteException("Node for document [" + document + "] does not exist!");
-            }
-            label = (Link) node.getLink(document.getLanguage());
-        }
-
-        if (label == null) {
-            throw new SiteException("The label of document [" + document + "] is null!");
-        }
-
-        return label;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getDocuments(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public Document[] getDocuments(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-        try {
-            SiteTreeNodeImpl root = (SiteTreeNodeImpl) getTree(map, publication, area).getNode("/");
-            List allNodes = root.preOrder();
-            List documents = new ArrayList();
-
-            for (int i = 1; i < allNodes.size(); i++) {
-                SiteTreeNode node = (SiteTreeNode) allNodes.get(i);
-                Document doc = map.get(publication, area, node.getUuid());
-                String[] languages = doc.getLanguages();
-                for (int l = 0; l < languages.length; l++) {
-                    documents.add(doc.getTranslation(languages[l]));
-                }
-            }
-            return (Document[]) documents.toArray(new Document[documents.size()]);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-    }
-
-    public void add(String path, Document document) throws SiteException {
-
-        if (contains(document)) {
-            throw new SiteException("The document [" + document + "] is already contained!");
-        }
-        DefaultSiteTree tree = getTree(document);
-
-        SiteTreeNode node;
-        if (!tree.contains(path)) {
-            // done for side effect of calling addNodNode, not the resulting return value
-            node = tree.addNode(path, document.getUUID(), true, null, null, false);
-        } else {
-            node = (SiteTreeNode) tree.getNode(path);
-            if (node.getUuid() != null) {
-                ((SiteTreeNodeImpl) node).setUUID(document.getUUID());
-            }
-        }
-        tree.addLabel(path, document.getLanguage(), "");
-    }
-
-    public void set(String path, Document document) throws SiteException {
-
-        if (contains(document)) {
-            throw new SiteException("The document [" + document + "] is already contained!");
-        }
-        DefaultSiteTree tree = getTree(document);
-        SiteTreeNodeImpl node = (SiteTreeNodeImpl) tree.getNode(path);
-        node.setUUID(document.getUUID());
-        tree.changed();
-    }
-
-    /**
-     * @param publication The publication.
-     * @param area The area.
-     * @return The key to store sitetree objects in the identity map.
-     */
-    protected String getKey(Publication publication, String area) {
-        return publication.getId() + ":" + area;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getSiteStructure(org.apache.lenya.cms.publication.DocumentFactory,
-     *      org.apache.lenya.cms.publication.Publication, java.lang.String)
-     */
-    public SiteStructure getSiteStructure(DocumentFactory map, Publication publiation, String area)
-            throws SiteException {
-        return getTree(map, publiation, area);
-    }
-
-    /**
-     * @see org.apache.lenya.cms.site.SiteManager#getAvailableLocator(DocumentFactory,
-     *      org.apache.lenya.cms.publication.DocumentLocator)
-     */
-    public DocumentLocator getAvailableLocator(DocumentFactory factory, DocumentLocator locator)
-            throws SiteException {
-        return DocumentLocator.getLocator(locator.getPublicationId(),
-                locator.getArea(),
-                computeUniquePath(factory, locator),
-                locator.getLanguage());
-    }
-
-    /**
-     * compute an unique document id
-     * @param factory The factory.
-     * @param locator The locator.
-     * @return the unique documentid
-     * @throws SiteException if an error occurs.
-     */
-    protected String computeUniquePath(DocumentFactory factory, DocumentLocator locator)
-            throws SiteException {
-        String path = locator.getPath();
-
-        Publication pub;
-        try {
-            pub = factory.getPublication(locator.getPublicationId());
-        } catch (PublicationException e) {
-            throw new SiteException(e);
-        }
-        SiteTree tree = getTree(factory, pub, locator.getArea());
-
-        String suffix = null;
-        int version = 0;
-        String idwithoutsuffix = null;
-
-        if (tree.contains(path)) {
-            int n = path.lastIndexOf("/");
-            String lastToken = "";
-            String substring = path;
-            if ((n < path.length()) && (n > 0)) {
-                lastToken = path.substring(n);
-                substring = path.substring(0, n);
-            }
-
-            int l = lastToken.length();
-            int index = lastToken.lastIndexOf("-");
-            if (0 < index && index < l) {
-                suffix = lastToken.substring(index + 1);
-                idwithoutsuffix = substring + lastToken.substring(0, index);
-                version = Integer.parseInt(suffix);
-            } else {
-                idwithoutsuffix = substring + lastToken;
-            }
-
-            while (tree.contains(path)) {
-                version = version + 1;
-                path = idwithoutsuffix + "-" + version;
-            }
-        }
-
-        return path;
-    }
-
-    public boolean isVisibleInNav(Document document) throws SiteException {
-        SiteTree tree = getTree(document);
-        try {
-            return tree.getNode(document.getPath()).isVisible();
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    protected String getPath(DocumentFactory factory, Publication pub, String area, String uuid,
-            String language) throws SiteException {
-        SiteTree tree = getTree(factory, pub, area);
-        SiteNode node = tree.getByUuid(uuid, language).getNode();
-        if (node == null) {
-            throw new SiteException("No node found for [" + pub.getId() + ":" + area + ":" + uuid
-                    + ":" + language + "]");
-        }
-        return node.getPath();
-    }
-
-    protected String getUUID(DocumentFactory factory, Publication pub, String area, String path)
-            throws SiteException {
-        SiteTree tree = getTree(factory, pub, area);
-        SiteNode node = tree.getNode(path);
-        if (node == null) {
-            throw new SiteException("No node found for [" + pub.getId() + ":" + area + ":" + path
-                    + "]");
-        }
-        return node.getUuid();
-    }
-
-    protected boolean contains(DocumentFactory factory, DocumentLocator locator)
-            throws SiteException {
-        Publication pub;
-        try {
-            pub = factory.getPublication(locator.getPublicationId());
-        } catch (PublicationException e) {
-            throw new SiteException(e);
-        }
-        SiteTree tree = getTree(factory, pub, locator.getArea());
-        if (tree.contains(locator.getPath())) {
-            SiteNode node = tree.getNode(locator.getPath());
-            return node.hasLink(locator.getLanguage());
-        } else {
-            return false;
-        }
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingLink.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingLink.java
deleted file mode 100644
index 816c84d..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingLink.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.AbstractLink;
-
-/**
- * Site tree link which delegates all operations to a shared link.
- */
-public class DelegatingLink extends AbstractLink {
-    
-    /**
-     * @param factory The document factory.
-     * @param node The node which this link belongs to.
-     * @param label The label.
-     * @param language The language.
-     */
-    public DelegatingLink(DocumentFactory factory, DelegatingNode node, String label, String language) {
-        super(factory, node, label, language);
-    }
-
-    public void delete() {
-        throw new UnsupportedOperationException();
-    }
-
-    public void setLabel(String label) {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingNode.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingNode.java
deleted file mode 100644
index 71d493e..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingNode.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-
-/**
- * Site tree node which delegates all operations to a shared tree node.
- */
-public class DelegatingNode implements TreeNode {
-    
-    private SiteNode node;
-    private DelegatingSiteTree tree;
-
-    /**
-     * @param tree The tree.
-     * @param delegate The delegate node.
-     */
-    public DelegatingNode(DelegatingSiteTree tree, SiteNode delegate) {
-        this.node = delegate;
-        this.tree = tree;
-    }
-
-    public void delete() {
-        throw new UnsupportedOperationException();
-    }
-    
-    private List children;
-    private List preOrder;
-    
-    public SiteNode[] getChildren() {
-        if (this.children == null) {
-            SiteNode[] delegateChildren = this.node.getChildren();
-            this.children = new ArrayList();
-            for (int i = 0; i < delegateChildren.length; i++) {
-                this.children.add(this.tree.getNode(delegateChildren[i]));
-            }
-        }
-        return (SiteNode[]) this.children.toArray(new SiteNode[this.children.size()]);
-    }
-
-    public String getHref() {
-        return this.node.getHref();
-    }
-
-    public String[] getLanguages() {
-        return this.node.getLanguages();
-    }
-
-    public Link getLink(String language) throws SiteException {
-        return this.tree.getLink(this.node.getLink(language));
-    }
-
-    public String getName() {
-        return this.node.getName();
-    }
-
-    public SiteNode getParent() throws SiteException {
-        return this.tree.getNode(this.node.getParent());
-    }
-
-    public String getPath() {
-        return this.node.getPath();
-    }
-
-    public SiteStructure getStructure() {
-        return this.tree;
-    }
-
-    public String getSuffix() {
-        return this.node.getSuffix();
-    }
-
-    public String getUuid() {
-        return this.node.getUuid();
-    }
-
-    public boolean hasLink(String language) {
-        return this.node.hasLink(language);
-    }
-
-    public boolean hasLink() {
-        return this.node.hasLink();
-    }
-
-    public boolean isTopLevel() {
-        return this.node.isTopLevel();
-    }
-
-    public boolean isVisible() {
-        return this.node.isVisible();
-    }
-
-    public void setVisible(boolean visibleInNav) {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode addChild(String name, boolean visible) {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode addChild(String nodeName, String followingNodeName, boolean visible) {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteTreeImpl getTree() {
-        throw new UnsupportedOperationException();
-    }
-
-    public void moveDown(String name) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void moveUp(String name) {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode[] preOrder() {
-        if (this.preOrder == null) {
-            SiteNode[] delegates = ((TreeNode) this.node).preOrder();
-            this.preOrder = new ArrayList();
-            for (int i = 0; i < delegates.length; i++) {
-                this.preOrder.add(this.tree.getNode(delegates[i]));
-            }
-        }
-        return (SiteNode[]) this.preOrder.toArray(new SiteNode[this.preOrder.size()]);
-    }
-
-    public SiteTreeNode[] getNextSiblings() {
-        SiteNode[] delegates = ((TreeNode) this.node).getNextSiblings();
-        SiteTreeNode[] nodes = new SiteTreeNode[delegates.length];
-        for (int i = 0; i < delegates.length; i++) {
-            nodes[i] = this.tree.getNode(delegates[i]);
-        }
-        return nodes;
-    }
-
-    public SiteTreeNode[] getPrecedingSiblings() {
-        SiteNode[] delegates = ((TreeNode) this.node).getPrecedingSiblings();
-        SiteTreeNode[] nodes = new SiteTreeNode[delegates.length];
-        for (int i = 0; i < delegates.length; i++) {
-            nodes[i] = this.tree.getNode(delegates[i]);
-        }
-        return nodes;
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java
deleted file mode 100644
index 8f6eee3..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTree;
-
-/**
- * Site tree implementation which delegates all operations to a shared site tree.
- */
-public class DelegatingSiteTree implements SiteStructure, SiteTree {
-    
-    private SiteTreeImpl tree;
-    private Area area;
-    private ServiceManager manager;
-    private Map links = new HashMap();
-    private Map nodes = new HashMap();
-    private List nodeList;
-    private List topLevelNodes;
-    private List preOrder;
-    private String sourceUri;
-
-    /**
-     * @param manager The service manager.
-     * @param area The area which this tree belongs to.
-     * @param tree The tree to delegate to.
-     */
-    public DelegatingSiteTree(ServiceManager manager, Area area, SiteTreeImpl tree) {
-        this.tree = tree;
-        this.area = area;
-        this.manager = manager;
-    }
-
-    public Link add(String path, Document doc) throws SiteException {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode add(String path) throws SiteException {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode add(String path, String followingSiblingPath) throws SiteException {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean contains(String path) {
-        return this.tree.contains(path);
-    }
-
-    public boolean contains(String path, String language) {
-        return this.tree.contains(path, language);
-    }
-
-    public boolean containsByUuid(String uuid, String language) {
-        return this.tree.containsByUuid(uuid, language);
-    }
-
-    public boolean containsInAnyLanguage(String uuid) {
-        return this.tree.containsInAnyLanguage(uuid);
-    }
-
-    public String getArea() {
-        return this.area.getName();
-    }
-    
-    public Link getByUuid(String uuid, String language) throws SiteException {
-        Link delegate = this.tree.getByUuid(uuid, language);
-        return getLink(delegate);
-    }
-
-    protected Link getLink(Link delegate) {
-        Link link = (Link) this.links.get(delegate);
-        if (link == null) {
-            link = new DelegatingLink(this.area.getPublication().getFactory(), getNode(delegate.getNode()),
-                    delegate.getLabel(), delegate.getLanguage());
-        }
-        return link;
-    }
-    
-    protected DelegatingNode getNode(SiteNode delegate) {
-        DelegatingNode node = (DelegatingNode) this.nodes.get(delegate);
-        if (node == null) {
-            node = new DelegatingNode(this, delegate);
-            this.nodes.put(delegate, node);
-        }
-        return node;
-    }
-
-    public SiteNode getNode(String path) throws SiteException {
-        return getNode(this.tree.getNode(path));
-    }
-
-    public SiteNode[] getNodes() {
-        if (this.nodeList == null) {
-            SiteNode[] delegates = this.tree.getNodes();
-            this.nodeList = new ArrayList();
-            for (int i = 0; i < delegates.length; i++) {
-                this.nodeList.add(getNode(delegates[i]));
-            }
-        }
-        return (SiteNode[]) this.nodeList.toArray(new SiteNode[this.nodeList.size()]);
-    }
-
-    public Publication getPublication() {
-        return this.area.getPublication();
-    }
-
-    public SiteNode[] getTopLevelNodes() {
-        if (this.topLevelNodes == null) {
-            SiteNode[] delegates = this.tree.getTopLevelNodes();
-            this.topLevelNodes = new ArrayList();
-            for (int i = 0; i < delegates.length; i++) {
-                this.topLevelNodes.add(getNode(delegates[i]));
-            }
-        }
-        return (SiteNode[]) this.topLevelNodes.toArray(new SiteNode[this.topLevelNodes.size()]);
-    }
-
-    public Session getSession() {
-        return this.area.getPublication().getSession();
-    }
-
-    private NodeFactory nodeFactory;
-    
-    protected NodeFactory getNodeFactory() {
-        if (this.nodeFactory == null) {
-            try {
-                this.nodeFactory = (NodeFactory) this.manager.lookup(NodeFactory.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException("Creating repository node failed: ", e);
-            }
-        }
-        return this.nodeFactory;
-    }
-
-    public Node getRepositoryNode() {
-        try {
-            return (Node) getSession().getRepositoryItem(getNodeFactory(), getSourceUri());
-        } catch (RepositoryException e) {
-            throw new RuntimeException("Creating repository node failed: ", e);
-        }
-    }
-
-    protected String getSourceUri() {
-        if (this.sourceUri == null) {
-            String baseUri = this.area.getPublication().getContentURI(this.area.getName());
-            this.sourceUri = baseUri + "/sitetree.xml";
-        }
-        return this.sourceUri;
-    }
-
-    public void moveDown(String path) throws SiteException {
-        throw new UnsupportedOperationException();
-    }
-
-    public void moveUp(String path) throws SiteException {
-        throw new UnsupportedOperationException();
-    }
-
-    public SiteNode[] preOrder() {
-        if (this.preOrder == null) {
-            SiteNode[] delegates = this.tree.preOrder();
-            this.preOrder = new ArrayList();
-            for (int i = 0; i < delegates.length; i++) {
-                this.preOrder.add(getNode(delegates[i]));
-            }
-        }
-        return (SiteNode[]) this.preOrder.toArray(new SiteNode[this.preOrder.size()]);
-    }
-
-    public void save() throws RepositoryException {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/RootNode.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/RootNode.java
deleted file mode 100644
index af845c0..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/RootNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * Root node.
- */
-public class RootNode extends TreeNodeImpl {
-    
-    private SiteTreeImpl tree;
-
-    /**
-     * @param tree The tree.
-     * @param logger The logger.
-     */
-    public RootNode(SiteTreeImpl tree, Logger logger) {
-        super(null, "", false, logger);
-        this.tree = tree;
-    }
-
-    public SiteTreeImpl getTree() {
-        return this.tree;
-    }
-
-    public String getPath() {
-        return "";
-    }
-
-    public SiteNode[] preOrder() {
-        List preOrder = new ArrayList();
-        SiteNode[] children = getChildren();
-        for (int i = 0; i < children.length; i++) {
-            TreeNode child = (TreeNode) children[i];
-            preOrder.addAll(Arrays.asList(child.preOrder()));
-        }
-        return (SiteNode[]) preOrder.toArray(new SiteNode[preOrder.size()]);
-    }
-
-    protected void deleteIfEmpty() {
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
deleted file mode 100644
index 67e79ac..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.repository.SharedItemStore;
-import org.apache.lenya.cms.site.tree.SiteTree;
-
-/**
- * Factory for sitetree objects.
- * 
- * @version $Id: SiteTreeFactory.java 179568 2005-06-02 09:27:26Z jwkaltz $
- */
-public class SiteTreeFactory extends AbstractLogEnabled implements RepositoryItemFactory {
-
-    protected ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public SiteTreeFactory(ServiceManager manager, Logger logger) {
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        String[] snippets = key.split(":");
-        String publicationId = snippets[0];
-        String areaName = snippets[1];
-        SiteTree tree;
-        try {
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
-            Publication publication = factory.getPublication(publicationId);
-            Area  area = publication.getArea(areaName);
-            
-            if (session.isModifiable() || session instanceof SharedItemStore) {
-                tree = new SiteTreeImpl(this.manager, area, getLogger());
-            }
-            else {
-                SharedItemStore store = null;
-                try {
-                    store = (SharedItemStore) this.manager.lookup(SharedItemStore.ROLE);
-                    SiteTreeImpl sharedTree = (SiteTreeImpl) store.getRepositoryItem(this, key);
-                    tree = new DelegatingSiteTree(this.manager, area, sharedTree);
-                }
-                finally {
-                    if (store != null) {
-                        this.manager.release(store);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-        return tree;
-    }
-
-    public String getItemType() {
-        return SiteTree.IDENTIFIABLE_TYPE;
-    }
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java
deleted file mode 100644
index 8bd746a..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.NodeFactory;
-import org.apache.lenya.cms.repository.Persistable;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * Simple site tree implementation.
- */
-public class SiteTreeImpl extends AbstractLogEnabled implements SiteStructure, SiteTree, Persistable {
-
-    private Area area;
-    protected ServiceManager manager;
-    private RootNode root;
-
-    /**
-     * @param manager The service manager.
-     * @param area The area.
-     * @param logger The logger.
-     */
-    public SiteTreeImpl(ServiceManager manager, Area area, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-        this.area = area;
-        this.manager = manager;
-        initRoot();
-    }
-
-    protected void initRoot() {
-        this.root = new RootNode(this, getLogger());
-        nodeAdded(root);
-    }
-
-    private String sourceUri;
-
-    protected String getSourceUri() {
-        if (this.sourceUri == null) {
-            String baseUri = this.area.getPublication().getContentURI(this.area.getName());
-            this.sourceUri = baseUri + "/sitetree.xml";
-        }
-        return this.sourceUri;
-    }
-
-    private long lastModified = -1;
-    private boolean loading = false;
-
-    protected static final String NAMESPACE = "http://apache.org/cocoon/lenya/sitetree/1.0";
-
-    private static final boolean DEFAULT_VISIBILITY = true;
-
-    private boolean loaded = false;
-
-    protected synchronized void load() {
-
-        if (this.loaded) {
-            return;
-        }
-
-        Node repoNode = getRepositoryNode();
-
-        try {
-            repoNode.setPersistable(this);
-            
-            // lastModified check is necessary for clustering, but can cause 404s
-            // because of the 1s file system last modification granularity
-            if (repoNode.exists() /* && repoNode.getLastModified() > this.lastModified */) {
-                long lastModified = repoNode.getLastModified();
-                org.w3c.dom.Document xml = DocumentHelper.readDocument(repoNode.getInputStream());
-
-                NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "", xml);
-                Assert.isTrue("document element is site", xml.getDocumentElement().getLocalName()
-                        .equals("site"));
-                this.loading = true;
-                reset();
-                loadNodes(this.root, helper, xml.getDocumentElement());
-                this.loading = false;
-                this.lastModified = lastModified;
-            }
-
-            if (!repoNode.exists() && this.lastModified > -1) {
-                reset();
-                this.lastModified = -1;
-            }
-
-            this.loaded = true;
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        checkInvariants();
-    }
-
-    protected void reset() {
-        this.path2node.clear();
-        this.uuidLanguage2link.clear();
-        initRoot();
-    }
-
-    protected RootNode getRoot() {
-        load();
-        return this.root;
-    }
-
-    protected void loadNodes(TreeNode parent, NamespaceHelper helper, Element element) {
-        Element[] nodeElements = helper.getChildren(element, "node");
-        for (int n = 0; n < nodeElements.length; n++) {
-            String name = nodeElements[n].getAttribute("id");
-            boolean visible = DEFAULT_VISIBILITY;
-            if (nodeElements[n].hasAttribute("visibleinnav")) {
-                String visibleString = nodeElements[n].getAttribute("visibleinnav");
-                visible = Boolean.valueOf(visibleString).booleanValue();
-            }
-            TreeNodeImpl node = (TreeNodeImpl) parent.addChild(name, visible);
-            if (nodeElements[n].hasAttribute("uuid")) {
-                String uuid = nodeElements[n].getAttribute("uuid");
-                node.setUuid(uuid);
-            }
-            loadLinks(node, helper, nodeElements[n]);
-            loadNodes(node, helper, nodeElements[n]);
-        }
-    }
-
-    protected void loadLinks(TreeNodeImpl node, NamespaceHelper helper, Element element) {
-        Element[] linkElements = helper.getChildren(element, "label");
-        for (int l = 0; l < linkElements.length; l++) {
-            String lang = linkElements[l].getAttribute("xml:lang");
-            String label = DocumentHelper.getSimpleElementText(linkElements[l]);
-            node.addLink(lang, label);
-        }
-    }
-
-    public synchronized void save() throws RepositoryException {
-        if (loading || !changed) {
-            return;
-        }
-        try {
-            Node repoNode = getRepositoryNode();
-            NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "", "site");
-
-            int revision = getRevision(repoNode) + 1;
-            helper.getDocument().getDocumentElement().setAttribute("revision",
-                    Integer.toString(revision));
-
-            saveNodes(getRoot(), helper, helper.getDocument().getDocumentElement());
-            helper.save(repoNode.getOutputStream());
-            this.lastModified = repoNode.getLastModified();
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-
-    }
-
-    protected int getRevision(Node repoNode) {
-        int revision = 0;
-        if (repoNode.getHistory().getRevisionNumbers().length > 0) {
-            revision = repoNode.getHistory().getLatestRevision().getNumber();
-        }
-        return revision;
-    }
-
-    protected void saveNodes(TreeNode parent, NamespaceHelper helper, Element parentElement)
-            throws SiteException {
-        SiteNode[] children = parent.getChildren();
-        for (int i = 0; i < children.length; i++) {
-            Element nodeElement = helper.createElement("node");
-            nodeElement.setAttribute("id", children[i].getName());
-            String uuid = children[i].getUuid();
-            if (uuid != null) {
-                nodeElement.setAttribute("uuid", uuid);
-            }
-            nodeElement.setAttribute("visibleinnav", Boolean.toString(children[i].isVisible()));
-            saveLinks(children[i], helper, nodeElement);
-            saveNodes((TreeNode) children[i], helper, nodeElement);
-            parentElement.appendChild(nodeElement);
-        }
-    }
-
-    protected void saveLinks(SiteNode node, NamespaceHelper helper, Element nodeElement)
-            throws SiteException {
-        String[] languages = node.getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            Link link = node.getLink(languages[i]);
-            Element linkElement = helper.createElement("label", link.getLabel());
-            linkElement.setAttribute("xml:lang", languages[i]);
-            nodeElement.appendChild(linkElement);
-        }
-    }
-
-    public Link add(String path, Document doc) throws SiteException {
-
-        if (containsByUuid(doc.getUUID(), doc.getLanguage())) {
-            throw new SiteException("The document [" + doc + "] is already contained!");
-        }
-
-        TreeNodeImpl node;
-        if (contains(path)) {
-            node = getTreeNode(path);
-            if (node.getUuid() == null) {
-                node.setUuid(doc.getUUID());
-            } else if (!node.getUuid().equals(doc.getUUID())) {
-                throw new SiteException("The node already has a different UUID!");
-            }
-        } else {
-            node = (TreeNodeImpl) add(path);
-            node.setUuid(doc.getUUID());
-        }
-        return node.addLink(doc.getLanguage(), "");
-    }
-
-    protected TreeNodeImpl getTreeNode(String path) throws SiteException {
-        return (TreeNodeImpl) getNode(path);
-    }
-
-    public SiteNode add(String path) throws SiteException {
-        String parentPath = getParentPath(path);
-        String nodeName = path.substring(parentPath.length() + 1);
-        if (!contains(parentPath)) {
-            add(parentPath);
-        }
-        return getTreeNode(parentPath).addChild(nodeName, DEFAULT_VISIBILITY);
-    }
-
-    public SiteNode add(String path, String followingSiblingPath) throws SiteException {
-        String parentPath = getParentPath(path);
-        String nodeName = path.substring(parentPath.length() + 1);
-
-        if (!followingSiblingPath.startsWith(parentPath + "/")) {
-            throw new SiteException("Invalid following sibling path [" + followingSiblingPath + "]");
-        }
-
-        String followingNodeName = followingSiblingPath.substring(parentPath.length() + 1);
-
-        if (!contains(parentPath)) {
-            add(parentPath);
-        }
-        return getTreeNode(parentPath).addChild(nodeName, followingNodeName, DEFAULT_VISIBILITY);
-    }
-
-    protected String getParentPath(String path) {
-        int lastIndex = path.lastIndexOf("/");
-        String parentPath = path.substring(0, lastIndex);
-        return parentPath;
-    }
-
-    private Map path2node = new HashMap();
-    private Map uuidLanguage2link = new HashMap();
-
-    protected void nodeAdded(SiteNode node) {
-        String path = node.getPath();
-        Assert.notNull("path", path);
-        if (node != this.root) {
-            Assert.isTrue("path not empty", path.length() > 0);
-        }
-        this.path2node.put(path, node);
-    }
-
-    protected void linkAdded(Link link) {
-        if (link.getNode().getUuid() != null) {
-            this.uuidLanguage2link.put(getKey(link), link);
-        }
-    }
-
-    protected String getKey(Link link) {
-        String uuid = link.getDocument().getUUID();
-        Assert.notNull("uuid", uuid);
-        String language = link.getLanguage();
-        Assert.notNull("language", language);
-        return getKey(uuid, language);
-    }
-
-    protected String getKey(String uuid, String language) {
-        Assert.notNull("uuid", uuid);
-        Assert.notNull("language", language);
-        return uuid + ":" + language;
-    }
-
-    protected void nodeRemoved(String path) {
-        Assert.notNull("path", path);
-        Assert.isTrue("path [" + path + "] contained", this.path2node.containsKey(path));
-        this.path2node.remove(path);
-    }
-
-    protected Map getUuidLanguage2Link() {
-        load();
-        return this.uuidLanguage2link;
-    }
-
-    protected Map getPath2Node() {
-        load();
-        return this.path2node;
-    }
-
-    public boolean contains(String path) {
-        load();
-        Assert.notNull("path", path);
-        return this.path2node.containsKey(path);
-    }
-
-    public boolean containsByUuid(String uuid, String language) {
-        Assert.notNull("uuid", uuid);
-        Assert.notNull("language", language);
-        return getUuidLanguage2Link().containsKey(getKey(uuid, language));
-    }
-
-    public boolean containsInAnyLanguage(String uuid) {
-        Assert.notNull("uuid", uuid);
-        Set set = getUuidLanguage2Link().keySet();
-        String[] keys = (String[]) set.toArray(new String[set.size()]);
-        for (int i = 0; i < keys.length; i++) {
-            if (keys[i].startsWith(uuid + ":")) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public String getArea() {
-        return this.area.getName();
-    }
-
-    public Link getByUuid(String uuid, String language) throws SiteException {
-        Assert.notNull("uuid", uuid);
-        Assert.notNull("language", language);
-        String key = getKey(uuid, language);
-        if (!getUuidLanguage2Link().containsKey(key)) {
-            throw new SiteException("No link for [" + key + "]");
-        }
-        return (Link) getUuidLanguage2Link().get(key);
-    }
-
-    protected void checkInvariants() {
-        if (true) {
-            return;
-        }
-        for (Iterator paths = this.path2node.keySet().iterator(); paths.hasNext();) {
-            String path = (String) paths.next();
-            SiteNode node = (SiteNode) this.path2node.get(path);
-            String uuid = node.getUuid();
-            if (uuid != null) {
-                String[] langs = node.getLanguages();
-                for (int i = 0; i < langs.length; i++) {
-                    String key = getKey(uuid, langs[i]);
-                    Assert.isTrue("contains link for [" + key + "]", this.uuidLanguage2link
-                            .containsKey(key));
-                }
-            }
-        }
-        for (Iterator keys = this.uuidLanguage2link.keySet().iterator(); keys.hasNext();) {
-            String key = (String) keys.next();
-            Link link = (Link) this.uuidLanguage2link.get(key);
-            Assert.isTrue("contains path for [" + key + "]", this.path2node.containsKey(link
-                    .getNode().getPath()));
-        }
-
-    }
-
-    public SiteNode getNode(String path) throws SiteException {
-        Assert.notNull("path", path);
-        if (!getPath2Node().containsKey(path)) {
-            throw new SiteException("No node for path [" + path + "]");
-        }
-        return (SiteNode) this.path2node.get(path);
-    }
-
-    public SiteNode[] getNodes() {
-        return getRoot().preOrder();
-    }
-
-    public Publication getPublication() {
-        return this.area.getPublication();
-    }
-
-    public Session getSession() {
-        return this.area.getPublication().getFactory().getSession();
-    }
-    
-    private NodeFactory nodeFactory;
-    private boolean changed = false;
-    
-    protected NodeFactory getNodeFactory() {
-        if (this.nodeFactory == null) {
-            try {
-                this.nodeFactory = (NodeFactory) manager.lookup(NodeFactory.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException("Creating repository node failed: ", e);
-            }
-        }
-        return this.nodeFactory;
-    }
-
-    public Node getRepositoryNode() {
-        try {
-            return (Node) getSession().getRepositoryItem(getNodeFactory(), getSourceUri());
-        } catch (RepositoryException e) {
-            throw new RuntimeException("Creating repository node failed: ", e);
-        }
-    }
-
-    public SiteNode[] getTopLevelNodes() {
-        return getRoot().getChildren();
-    }
-
-    protected void linkRemoved(String uuid, String language) {
-        Assert.notNull("uuid", uuid);
-        Assert.notNull("language", language);
-        String key = getKey(uuid, language);
-        Assert.isTrue("contained", this.uuidLanguage2link.containsKey(key));
-        this.uuidLanguage2link.remove(key);
-    }
-
-    protected String getPath() {
-        return "";
-    }
-
-    /**
-     * @return The nodes in pre-order enumeration.
-     */
-    public SiteNode[] preOrder() {
-        return getRoot().preOrder();
-    }
-
-    public void moveDown(String path) throws SiteException {
-        TreeNode node = getTreeNode(path);
-        TreeNode parent = getParent(node);
-        parent.moveDown(node.getName());
-
-    }
-
-    public void moveUp(String path) throws SiteException {
-        TreeNode node = getTreeNode(path);
-        TreeNode parent = getParent(node);
-        parent.moveUp(node.getName());
-    }
-
-    /**
-     * @param node A node.
-     * @return The parent of the node, which is the root node for top level nodes.
-     * @throws SiteException if an error occurs.
-     */
-    protected TreeNode getParent(TreeNode node) throws SiteException {
-        TreeNode parent;
-        if (node.isTopLevel()) {
-            parent = getRoot();
-        } else {
-            parent = (TreeNode) node.getParent();
-        }
-        return parent;
-    }
-
-    public boolean contains(String path, String language) {
-        if (contains(path)) {
-            SiteNode node;
-            try {
-                node = getNode(path);
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-            return node.hasLink(language);
-        }
-        return false;
-    }
-
-    protected void changed() {
-        if (!this.loading) {
-            this.changed = true;
-        }
-    }
-
-    public boolean isModified() {
-        return this.changed;
-    }
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeLink.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeLink.java
deleted file mode 100644
index 5645d65..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeLink.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.AbstractLink;
-import org.apache.lenya.cms.site.SiteNode;
-
-/**
- * SiteTree link.
- */
-public class SiteTreeLink extends AbstractLink {
-    
-    protected SiteTreeLink(DocumentFactory factory, SiteNode node,
-            String label, String language) {
-        super(factory, node, label, language);
-    }
-
-    public void delete() {
-        TreeNodeImpl node = (TreeNodeImpl) getNode();
-        node.removeLink(getLanguage());
-    }
-    
-    public void save() {
-        TreeNodeImpl node = (TreeNodeImpl) getNode();
-        node.changed();
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNode.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNode.java
deleted file mode 100644
index 6593b48..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNode.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-
-/**
- * A parent for nodes.
- */
-public interface TreeNode extends SiteNode, SiteTreeNode {
-
-    /**
-     * @return The children.
-     */
-    SiteNode[] getChildren();
-    
-    /**
-     * @return Preorder enumeration.
-     */
-    SiteNode[] preOrder();
-
-    /**
-     * @param name The name.
-     * @param visible The navigation visibility.
-     * @return A site node.
-     */
-    SiteNode addChild(String name, boolean visible);
-
-    /**
-     * @param nodeName
-     * @param followingNodeName
-     * @param visible The navigation visibility.
-     * @return A site node.
-     */
-    SiteNode addChild(String nodeName, String followingNodeName, boolean visible);
-    
-    /**
-     * @return The tree.
-     */
-    SiteTreeImpl getTree();
-
-    /**
-     * @return The path.
-     */
-    String getPath();
-
-    /**
-     * @param name The name.
-     */
-    void moveDown(String name);
-
-    /**
-     * @param name The name.
-     */
-    void moveUp(String name);
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNodeImpl.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNodeImpl.java
deleted file mode 100644
index 99ecced..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeNodeImpl.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.util.StringUtil;
-
-/**
- * Site tree node.
- */
-public class TreeNodeImpl extends AbstractLogEnabled implements TreeNode {
-
-    private TreeNode parent;
-    private String name;
-
-    /**
-     * A top level node.
-     * @param parent The parent.
-     * @param name The name.
-     * @param visible The navigation visibility.
-     * @param logger The logger.
-     */
-    public TreeNodeImpl(TreeNode parent, String name, boolean visible, Logger logger) {
-        ContainerUtil.enableLogging(this, logger);
-        Assert.notNull("name", name);
-        this.name = name;
-        this.parent = parent;
-        this.isVisible = visible;
-    }
-
-    /**
-     * Sets the UUID.
-     * @param uuid The UUID.
-     */
-    protected void setUuid(String uuid) {
-        Assert.notNull("uuid", uuid);
-        if (this.language2link.keySet().size() > 0) {
-            throw new RuntimeException("Can't set the UUID if the node has links.");
-        }
-        
-        if (this.uuid != null) {
-            String[] languages = getLanguages();
-            for (int i = 0; i < languages.length; i++) {
-                getTree().linkRemoved(this.uuid, languages[i]);
-            }
-        }
-        
-        this.uuid = uuid;
-        
-        String[] languages = getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            try {
-                getTree().linkAdded(getLink(languages[i]));
-            } catch (SiteException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    public void delete() {
-        deleteInternal();
-        changed();
-    }
-
-    protected void deleteInternal() {
-        String[] languages = getLanguages();
-        for (int i = 0; i < languages.length; i++) {
-            removeLinkInternal(languages[i]);
-        }
-        SiteNode[] children = getChildren();
-        for (int i = 0; i < children.length; i++) {
-            ((TreeNodeImpl) children[i]).deleteInternal();
-        }
-        ((TreeNodeImpl) this.parent).removeChild(getName());
-    }
-
-    private Map language2link = new HashMap();
-    private String uuid;
-    private boolean isVisible;
-
-    public String[] getLanguages() {
-        Set languages = this.language2link.keySet();
-        return (String[]) languages.toArray(new String[languages.size()]);
-    }
-
-    public Link getLink(String language) throws SiteException {
-        Assert.notNull("language", language);
-        if (!this.language2link.containsKey(language)) {
-            throw new SiteException("No link contained for language [" + language + "]");
-        }
-        return (Link) this.language2link.get(language);
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public SiteNode getParent() throws SiteException {
-        if (isTopLevel()) {
-            throw new SiteException("This is a top level node.");
-        }
-        return (SiteNode) this.parent;
-    }
-
-    public String getPath() {
-        return this.parent.getPath() + "/" + getName();
-    }
-
-    public SiteStructure getStructure() {
-        return getTree();
-    }
-
-    public String getUuid() {
-        return this.uuid;
-    }
-
-    public boolean hasLink(String language) {
-        Assert.notNull("language", language);
-        return this.language2link.containsKey(language);
-    }
-
-    public boolean isTopLevel() {
-        return this.parent instanceof RootNode;
-    }
-
-    public boolean isVisible() {
-        return this.isVisible;
-    }
-
-    public void setVisible(boolean visibleInNav) {
-        this.isVisible = visibleInNav;
-        changed();
-    }
-
-    protected void changed() {
-        getTree().changed();
-    }
-
-    public SiteTreeNode[] getPrecedingSiblings() {
-        SiteNode[] children = this.parent.getChildren();
-        int pos = Arrays.asList(children).indexOf(this);
-        List siblings = new ArrayList();
-        for (int i = 0; i < pos ; i++) {
-            siblings.add(children[i]);
-        }
-        return (SiteTreeNode[]) siblings.toArray(new TreeNodeImpl[siblings.size()]);
-    }
-
-    public SiteTreeNode[] getNextSiblings() {
-        SiteNode[] children = this.parent.getChildren();
-        int pos = Arrays.asList(children).indexOf(this);
-        List siblings = new ArrayList();
-        for (int i = pos + 1; i < children.length; i++) {
-            siblings.add(children[i]);
-        }
-        return (SiteTreeNode[]) siblings.toArray(new TreeNodeImpl[siblings.size()]);
-    }
-
-    public SiteTreeImpl getTree() {
-        return this.parent.getTree();
-    }
-
-    protected Link addLink(String lang, String label) {
-        Assert.notNull("language", lang);
-        Assert.notNull("label", label);
-        Link link = addLinkInternal(lang, label);
-        changed();
-        return link;
-    }
-
-    protected Link addLinkInternal(String lang, String label) {
-        Assert.notNull("language", lang);
-        Assert.notNull("label", label);
-        if (this.language2link.containsKey(lang)) {
-            throw new RuntimeException("The language [" + lang + "] is already contained.");
-        }
-        DocumentFactory factory = getTree().getPublication().getFactory();
-        Link link = new SiteTreeLink(factory, this, label, lang);
-        this.language2link.put(lang, link);
-        getTree().linkAdded(link);
-        return link;
-    }
-
-    protected void removeLink(String language) {
-        removeLinkInternal(language);
-        deleteIfEmpty();
-        changed();
-    }
-
-    protected void removeLinkInternal(String language) {
-        Assert.notNull("language", language);
-        this.language2link.remove(language);
-        getTree().linkRemoved(getUuid(), language);
-    }
-
-    protected void deleteIfEmpty() {
-        if (isEmpty()) {
-            deleteInternal();
-        }
-    }
-
-    protected boolean isEmpty() {
-        return this.language2link.isEmpty() && this.name2child.isEmpty();
-    }
-
-    public String toString() {
-        return getPath() + "[" + StringUtil.join(getLanguages(), ",") + "]";
-    }
-
-    private List children = new ArrayList();
-
-    public SiteNode[] getChildren() {
-        return (SiteNode[]) this.children.toArray(new SiteNode[this.children.size()]);
-    }
-
-    public SiteNode[] preOrder() {
-        List preOrder = new ArrayList();
-        preOrder.add(this);
-        SiteNode[] children = getChildren();
-        for (int i = 0; i < children.length; i++) {
-            TreeNode child = (TreeNode) children[i];
-            preOrder.addAll(Arrays.asList(child.preOrder()));
-        }
-        return (SiteNode[]) preOrder.toArray(new SiteNode[preOrder.size()]);
-    }
-
-    protected void removeChild(String name) {
-        Assert.notNull("name", name);
-        if (!this.name2child.containsKey(name)) {
-            throw new RuntimeException("The node [" + name + "] is not contained!");
-        }
-        SiteNode node = (SiteNode) this.name2child.get(name);
-        this.name2child.remove(node.getName());
-        this.children.remove(node);
-        getTree().nodeRemoved(getPath() + "/" + name);
-        deleteIfEmpty();
-    }
-
-    private Map name2child = new HashMap();
-
-    public SiteNode addChild(String name, boolean visible) {
-        Assert.notNull("name", name);
-        return addChild(name, this.children.size(), visible);
-    }
-
-    public SiteNode addChild(String name, String followingNodeName, boolean visible) {
-        Assert.notNull("name", name);
-        Assert.notNull("following node name", followingNodeName);
-        SiteNode followingSibling = getChild(followingNodeName);
-        int pos = this.children.indexOf(followingSibling);
-        return addChild(name, pos, visible);
-    }
-
-    protected SiteNode addChild(String name, int pos, boolean visible) {
-        Assert.notNull("name", name);
-
-        if (this.name2child.containsKey(name)) {
-            throw new RuntimeException("The child [" + name + "] is already contained.");
-        }
-
-        SiteNode node = new TreeNodeImpl(this, name, visible, getLogger());
-        this.children.add(pos, node);
-        this.name2child.put(name, node);
-        getTree().nodeAdded(node);
-        getTree().changed();
-        return node;
-    }
-
-    protected SiteNode getChild(String name) {
-        Assert.notNull("name", name);
-        if (this.name2child.containsKey(name)) {
-            return (SiteNode) this.name2child.get(name);
-        } else {
-            throw new RuntimeException("No such child [" + name + "]");
-        }
-    }
-
-    protected int getPosition(SiteNode child) {
-        Assert.notNull("child", child);
-        Assert.isTrue("contains", this.children.contains(child));
-        return this.children.indexOf(child);
-    }
-
-    public void moveDown(String name) {
-        SiteNode child = getChild(name);
-        int pos = getPosition(child);
-        Assert.isTrue("not last", pos < this.children.size() - 1);
-        this.children.remove(child);
-        this.children.add(pos + 1, child);
-        changed();
-    }
-
-    public void moveUp(String name) {
-        SiteNode child = getChild(name);
-        int pos = getPosition(child);
-        Assert.isTrue("not first", pos > 0);
-        this.children.remove(child);
-        this.children.add(pos - 1, child);
-        changed();
-    }
-
-    public String getHref() {
-        return null;
-    }
-
-    public String getSuffix() {
-        return null;
-    }
-
-    public boolean hasLink() {
-        return false;
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeSiteManager.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeSiteManager.java
deleted file mode 100644
index 695e1ad..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/TreeSiteManager.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree2;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.lenya.cms.publication.Area;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentException;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentLocator;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
-import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-
-/**
- * Tree-based site manager.
- */
-public class TreeSiteManager extends AbstractSiteManager {
-
-    /**
-     * Returns the sitetree for a specific area of this publication. Sitetrees are created on demand
-     * and are cached.
-     * 
-     * @param area The area.
-     * @return A site tree.
-     * @throws SiteException if an error occurs.
-     */
-    protected SiteTree getTree(Area area) throws SiteException {
-
-        String key = getKey(area);
-        SiteTree sitetree;
-        RepositoryItemFactory factory = new SiteTreeFactory(this.manager, getLogger());
-        try {
-            sitetree = (SiteTree) area.getPublication().getFactory().getSession()
-                    .getRepositoryItem(factory, key);
-        } catch (Exception e) {
-            throw new SiteException(e);
-        }
-
-        return sitetree;
-    }
-
-    /**
-     * @param area The area.
-     * @return The key to store sitetree objects in the identity map.
-     */
-    protected String getKey(Area area) {
-        return area.getPublication().getId() + ":" + area.getName();
-    }
-
-    public void add(String path, Document doc) throws SiteException {
-        getTree(doc.area()).add(path, doc);
-    }
-
-    public boolean contains(Document doc) throws SiteException {
-        return getTree(doc.area()).containsByUuid(doc.getUUID(), doc.getLanguage());
-    }
-
-    public boolean containsInAnyLanguage(Document doc) throws SiteException {
-        return getTree(doc.area()).containsInAnyLanguage(doc.getUUID());
-    }
-
-    public void copy(Document srcDoc, Document destDoc) throws SiteException {
-        SiteTree destinationTree = getTree(destDoc.area());
-
-        try {
-            TreeNodeImpl sourceNode = (TreeNodeImpl) srcDoc.getLink().getNode();
-
-            SiteTreeNode[] siblings = sourceNode.getNextSiblings();
-            SiteNode parent = sourceNode.getParent();
-            String parentId = "";
-            if (parent != null) {
-                parentId = parent.getPath();
-            }
-            TreeNodeImpl sibling = null;
-            String siblingPath = null;
-
-            // same UUID -> insert at the same position
-            if (srcDoc.getUUID().equals(destDoc.getUUID())) {
-                for (int i = 0; i < siblings.length; i++) {
-                    String path = parentId + "/" + siblings[i].getName();
-                    sibling = (TreeNodeImpl) destinationTree.getNode(path);
-                    if (sibling != null) {
-                        siblingPath = path;
-                        break;
-                    }
-                }
-            }
-
-            if (!sourceNode.hasLink(srcDoc.getLanguage())) {
-                // the node that we're trying to publish
-                // doesn't have this language
-                throw new SiteException("The node " + srcDoc.getPath()
-                        + " doesn't contain a label for language " + srcDoc.getLanguage());
-            }
-
-            String destPath = destDoc.getPath();
-
-            Link link = sourceNode.getLink(srcDoc.getLanguage());
-            SiteNode destNode = destinationTree.getNode(destPath);
-            if (destNode == null) {
-                if (siblingPath == null) {
-                    // called for side effect of add, not return result
-                    destNode = destinationTree.add(destPath);
-                } else {
-                    // called for side effect of add, not return result
-                    destNode = destinationTree.add(destPath, siblingPath);
-                }
-                destinationTree.add(destPath, destDoc);
-            } else {
-                destDoc.getLink().setLabel(link.getLabel());
-            }
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    public DocumentLocator getAvailableLocator(DocumentFactory factory, DocumentLocator locator)
-            throws SiteException {
-        return DocumentLocator.getLocator(locator.getPublicationId(), locator.getArea(),
-                computeUniquePath(factory, locator), locator.getLanguage());
-    }
-
-    /**
-     * compute an unique document id
-     * @param factory The factory.
-     * @param locator The locator.
-     * @return the unique documentid
-     * @throws SiteException if an error occurs.
-     */
-    protected String computeUniquePath(DocumentFactory factory, DocumentLocator locator)
-            throws SiteException {
-        String path = locator.getPath();
-
-        Publication pub;
-        SiteTree tree;
-        try {
-            pub = factory.getPublication(locator.getPublicationId());
-            tree = getTree(pub.getArea(locator.getArea()));
-        } catch (PublicationException e) {
-            throw new SiteException(e);
-        }
-
-        String suffix = null;
-        int version = 0;
-        String idwithoutsuffix = null;
-
-        if (tree.contains(path)) {
-            int n = path.lastIndexOf("/");
-            String lastToken = "";
-            String substring = path;
-            lastToken = path.substring(n);
-            substring = path.substring(0, n);
-
-            int l = lastToken.length();
-            int index = lastToken.lastIndexOf("-");
-            if (0 < index && index < l && lastToken.substring(index + 1).matches("[\\d]*")) {
-                suffix = lastToken.substring(index + 1);
-                idwithoutsuffix = substring + lastToken.substring(0, index);
-                version = Integer.parseInt(suffix);
-            } else {
-                idwithoutsuffix = substring + lastToken;
-            }
-
-            while (tree.contains(path)) {
-                version = version + 1;
-                path = idwithoutsuffix + "-" + version;
-            }
-        }
-
-        return path;
-    }
-
-    public Document[] getDocuments(DocumentFactory factory, Publication pub, String area)
-            throws SiteException {
-        Area areaObj;
-        try {
-            areaObj = pub.getArea(area);
-        } catch (PublicationException e) {
-            throw new SiteException(e);
-        }
-        SiteTree tree = getTree(areaObj);
-        SiteNode[] preOrder = tree.preOrder();
-        List docs = new ArrayList();
-        for (int i = 0; i < preOrder.length; i++) {
-            String[] langs = preOrder[i].getLanguages();
-            for (int l = 0; l < langs.length; l++) {
-                docs.add(preOrder[i].getLink(langs[l]).getDocument());
-            }
-        }
-        return (Document[]) docs.toArray(new Document[docs.size()]);
-    }
-
-    public DocumentLocator[] getRequiredResources(DocumentFactory map, DocumentLocator loc)
-            throws SiteException {
-        List ancestors = new ArrayList();
-        DocumentLocator locator = loc;
-        while (locator.getParent() != null) {
-            DocumentLocator parent = locator.getParent();
-            ancestors.add(parent);
-            locator = parent;
-        }
-        return (DocumentLocator[]) ancestors.toArray(new DocumentLocator[ancestors.size()]);
-    }
-
-    public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
-            throws SiteException {
-        NodeSet nodes = new NodeSet(this.manager);
-        SiteTree tree = (SiteTree) resource.getStructure();
-
-        TreeNode node = (TreeNode) tree.getNode(resource.getPath());
-        if (node != null) {
-            SiteNode[] preOrder = node.preOrder();
-
-            // exclude original resource (does not require itself)
-            for (int i = 1; i < preOrder.length; i++) {
-                TreeNode descendant = (TreeNode) preOrder[i];
-                nodes.add(descendant);
-            }
-        }
-
-        return nodes.getNodes();
-    }
-
-    public SiteStructure getSiteStructure(DocumentFactory map, Publication publication, String area)
-            throws SiteException {
-        try {
-            return getTree(publication.getArea(area));
-        } catch (PublicationException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    public boolean isVisibleInNav(Document document) throws SiteException {
-        try {
-            return document.getLink().getNode().isVisible();
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-    public boolean requires(DocumentFactory map, SiteNode depending, SiteNode required)
-            throws SiteException {
-        return depending.getPath().startsWith(required.getPath() + "/");
-    }
-
-    public void set(String path, Document document) throws SiteException {
-        if (contains(document)) {
-            throw new SiteException("The document [" + document + "] is already contained!");
-        }
-        SiteTreeImpl tree = (SiteTreeImpl) getTree(document.area());
-        TreeNodeImpl node = (TreeNodeImpl) tree.getNode(path);
-        node.setUuid(document.getUUID());
-        tree.changed();
-    }
-
-    public void setVisibleInNav(Document document, boolean visibleInNav) throws SiteException {
-        try {
-            document.getLink().getNode().setVisible(visibleInNav);
-        } catch (DocumentException e) {
-            throw new SiteException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/usecases/Nudge.java b/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/usecases/Nudge.java
deleted file mode 100644
index a679fb5..0000000
--- a/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/usecases/Nudge.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-
-/**
- * Nudge a document one position up or down.
- * 
- * @version $Id: Nudge.java 179568 2005-06-02 09:27:26Z jwkaltz $
- */
-public class Nudge extends DocumentUsecase {
-
-    protected static final String MESSAGE_AREA = "nudge-error-area";
-    protected static final String MESSAGE_DIRECTION = "nudge-error-direction";
-    protected static final String MESSAGE_DIRECTION_UNKNOWN = "nudge-error-direction-unknown";
-    protected static final String MESSAGE_ISLIVE = "nudge-error-islive";
-    protected static final String DIRECTION = "direction";
-    protected static final String UP = "up";
-    protected static final String DOWN = "down";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-
-        if (hasErrors()) {
-            return;
-        }
-
-        Document doc = getSourceDocument();
-        SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA).getSite();
-        if (liveSite.contains(doc.getPath())) {
-            addErrorMessage(MESSAGE_ISLIVE);
-        }
-
-        Publication publication = doc.getPublication();
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(doc.getFactory(), publication,
-                    doc.getArea());
-            if (structure instanceof SiteTree) {
-
-                SiteTreeNode node = (SiteTreeNode) doc.getLink().getNode();
-                SiteTreeNode[] siblings = null;
-
-                String direction = getParameterAsString(DIRECTION);
-                if (direction.equals(UP)) {
-                    siblings = node.getPrecedingSiblings();
-                } else if (direction.equals(DOWN)) {
-                    siblings = node.getNextSiblings();
-                } else {
-                    addErrorMessage(MESSAGE_DIRECTION_UNKNOWN, new String[] { direction });
-                }
-
-                if (siblings != null && siblings.length == 0) {
-                    addErrorMessage(MESSAGE_DIRECTION);
-                }
-            } else {
-                addErrorMessage(MESSAGE_AREA);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        Node[] nodes = new Node[0];
-        if(getSourceDocument() != null) {
-            Node node = getSourceDocument().area().getSite().getRepositoryNode();
-            nodes = new Node[] { node };
-        }
-        return nodes;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        Publication publication = getSourceDocument().getPublication();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(
-                    getSourceDocument().getFactory(), publication, getSourceDocument().getArea());
-            if (structure instanceof SiteTree) {
-
-                SiteTree tree = (SiteTree) structure;
-                String direction = getParameterAsString(DIRECTION);
-                if (direction.equals(UP)) {
-                    tree.moveUp(getSourceDocument().getPath());
-                } else if (direction.equals(DOWN)) {
-                    tree.moveDown(getSourceDocument().getPath());
-                } else {
-                    throw new IllegalArgumentException("The direction [" + direction
-                            + "] is not supported.");
-                }
-            } else {
-                throw new IllegalStateException("This operation is only supported for site trees.");
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
-
-    }
-}
diff --git a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/ConcurrentModificationTest.java b/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/ConcurrentModificationTest.java
deleted file mode 100644
index 2d4f364..0000000
--- a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/ConcurrentModificationTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.tree;
-
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.SiteStructure;
-
-/**
- * Test for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42602">42602</a>.
- */
-public class ConcurrentModificationTest extends AbstractAccessControlTest {
-    
-    public void testConcurrentModification() throws Exception {
-        
-        String pubId = "test";
-        String area = "authoring";
-        
-        Session lenyaSession = login("lenya");
-        DocumentFactory lenyaFactory = DocumentUtil.createDocumentFactory(getManager(), lenyaSession);
-        Publication lenyaPub = lenyaFactory.getPublication(pubId);
-        
-        SiteStructure lenyaSite = lenyaPub.getArea(area).getSite();
-        lenyaSite.getRepositoryNode().lock();
-        
-        Session aliceSession = login("alice");
-        DocumentFactory aliceFactory = DocumentUtil.createDocumentFactory(getManager(), aliceSession);
-        Publication alicePub = aliceFactory.getPublication(pubId);
-        
-        SiteStructure aliceSite = alicePub.getArea(area).getSite();
-        aliceSite.getRepositoryNode().lock();
-        
-        SiteNode lenyaNode = lenyaSite.getNodes()[1];
-        lenyaNode.setVisible(!lenyaNode.isVisible());
-        lenyaSession.commit();
-        
-        SiteNode aliceNode = aliceSite.getNodes()[2];
-        aliceNode.setVisible(!aliceNode.isVisible());
-        try {
-            aliceSession.commit();
-            assertTrue("No exception raised", false);
-        }
-        catch (Exception ignore) {
-        }
-        
-    }
-    
-
-}
diff --git a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/DefaultSiteTreeTest.java b/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/DefaultSiteTreeTest.java
deleted file mode 100644
index 9d9f858..0000000
--- a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/DefaultSiteTreeTest.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.site.tree;
-
-import junit.framework.TestCase;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.site.tree.DefaultSiteTree;
-import org.apache.lenya.cms.site.tree.SiteTreeNode;
-
-/**
- * Test class for the default site tree
- */
-public class DefaultSiteTreeTest extends AbstractAccessControlTest {
-
-    private DefaultSiteTree siteTree = null;
-
-    /**
-     * @see TestCase#setUp()
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-        Publication pub = getPublication("test");
-        this.siteTree = new DefaultSiteTree(getFactory(),
-                pub,
-                "test",
-                getManager(),
-                getLogger());
-        ContainerUtil.enableLogging(this.siteTree, getLogger());
-
-        this.siteTree.getRepositoryNode().lock();
-
-        this.siteTree.addNode("/foo", "foo-uuid", true, null, null, false);
-        this.siteTree.addNode("/index", "index-uuid", true, null, null, false);
-        this.siteTree.addNode("/foo/bar", "foo-bar-uuid", true, "http://exact.biz", "suffix", true);
-        this.siteTree.addNode("/foo/lala", "foo-lala-uuid", true, null, null, false);
-    }
-
-    /**
-     * @see TestCase#tearDown()
-     */
-    public void tearDown() throws Exception {
-        super.tearDown();
-        this.siteTree.getRepositoryNode().unlock();
-    }
-
-    /**
-     * Test for void DefaultSiteTree(String)
-     */
-    final public void testDefaultSiteTreeString() {
-        // TODO Implement DefaultSiteTree().
-    }
-
-    /**
-     * Test for void DefaultSiteTree(File)
-     */
-    final public void testDefaultSiteTreeFile() {
-        // TODO Implement DefaultSiteTree().
-    }
-
-    /**
-     * Test for void addNode(String, String, Label[])
-     * 
-     * @throws SiteException if an error occurs
-     */
-    final public void testAddNodeStringStringLabelArray() throws SiteException {
-        String uuid = "12345";
-        this.siteTree.addNode("/foo", "tutorial", uuid, true);
-        this.siteTree.addLabel("/foo", "en", "Tutorial");
-        SiteNode node = this.siteTree.getNode("/foo/tutorial");
-        assertNotNull(node);
-        assertEquals(node.getName(), "tutorial");
-        assertEquals(node.getUuid(), uuid);
-    }
-
-    /**
-     * Test for void addNode(SiteTreeNode)
-     */
-    final public void testAddNodeSiteTreeNode() {
-        // TODO Implement addNode().
-    }
-
-    /**
-     * Test for void addNode(String, Label[], String, String, boolean)
-     * 
-     * @throws SiteException if an error occurs
-     */
-    final public void testAddNodeStringLabelArrayStringStringboolean() throws SiteException {
-        this.siteTree.addNode("/foo/ding", "foo-ding-uuid", true, null, null, false);
-        this.siteTree.addLabel("/foo/ding", "en", "Doh");
-        this.siteTree.addLabel("/foo/ding", "de", "Ding");
-
-        assertNotNull(this.siteTree.getNode("/foo/ding"));
-        assertEquals(this.siteTree.getNode("/foo/ding").getName(), "ding");
-    }
-
-    /**
-     * Test for void addNode(String, String, Label[], String, String, boolean)
-     * @throws SiteException if an error occurs
-     */
-    final public void testAddNodeStringStringLabelArrayStringStringboolean() throws SiteException {
-
-        String uuid = "123";
-
-        this.siteTree.addNode("/foo", "baz", uuid, true, null, null, false);
-
-        assertNotNull(this.siteTree.getNode("/foo/baz"));
-        assertEquals(this.siteTree.getNode("/foo/baz").getName(), "baz");
-    }
-
-    /**
-     * Test addLabel
-     * @throws SiteException
-     */
-    final public void testAddLabel() throws SiteException {
-        this.siteTree.addLabel("/foo/bar", "en", "Tutorial");
-        String[] labels = ((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLanguages();
-        assertEquals(labels.length, 1);
-        Link label = ((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLink("en");
-        assertNotNull(label);
-        assertEquals(label.getLabel(), "Tutorial");
-    }
-
-    /**
-     * Test removeLabel
-     * @throws SiteException
-     */
-    final public void testRemoveLabel() throws SiteException {
-        this.siteTree.addLabel("/foo/bar", "de", "Hello");
-        if (!this.siteTree.getNode("/foo/bar").hasLink("en")) {
-            this.siteTree.addLabel("/foo/bar", "en", "World");
-        }
-        assertEquals(((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLanguages().length, 2);
-
-        this.siteTree.removeLabel("/foo/bar", "de");
-        assertEquals(((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLanguages().length, 1);
-
-        assertEquals(((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLanguages()[0],
-                "en");
-
-        this.siteTree.addLabel("/foo/bar", "de", "Foo");
-        assertEquals(((SiteTreeNode) this.siteTree.getNode("/foo/bar")).getLanguages().length, 2);
-    }
-
-    /**
-     * Test removeNode
-     * 
-     * @throws SiteException if an error occurs
-     */
-    final public void testRemoveNode() throws SiteException {
-
-        this.siteTree.addNode("/hi", "hi-uuid", true, null, null, false);
-
-
-        this.siteTree.addNode("/hi/ho", "hi-ho-uuid", true, null, null, false);
-
-        assertNotNull(this.siteTree.getNode("/hi/ho"));
-
-        this.siteTree.removeNode("/hi");
-
-        assertFalse(this.siteTree.contains("/hi/ho"));
-        assertFalse(this.siteTree.contains("/hi"));
-    }
-
-    /**
-     * Test getNode
-     * @throws SiteException
-     * 
-     */
-    final public void testGetNode() throws SiteException {
-        assertNotNull(this.siteTree.getNode("/foo/bar"));
-        assertFalse(this.siteTree.contains("/foo/bar/baz"));
-    }
-
-    /**
-     * Test save
-     * 
-     */
-    final public void testSave() {
-        // TODO Implement save().
-    }
-
-    /**
-     * Test moving a node up
-     * @throws RepositoryException 
-     */
-    final public void testMoveUp() throws RepositoryException {
-        this.siteTree.moveUp("/foo/lala");
-        this.siteTree.save();
-        assertNotNull(this.siteTree.getNode("/foo/lala"));
-    }
-
-    /**
-     * Test moving a node down
-     * @throws RepositoryException 
-     */
-    final public void testMoveDown() throws RepositoryException {
-        this.siteTree.moveDown("/foo");
-        this.siteTree.save();
-        assertNotNull(this.siteTree.getNode("/foo"));
-    }
-
-    /**
-     * Test the import of a subtree
-     * @throws PublicationException
-     * @throws RepositoryException
-     */
-    final public void testImportSubtree() throws PublicationException, RepositoryException {
-        Publication pub = getPublication("test");
-        DefaultSiteTree newSiteTree = new DefaultSiteTree(getFactory(),
-                pub,
-                "test1",
-                getManager(),
-                getLogger());
-        ContainerUtil.enableLogging(newSiteTree, getLogger());
-
-        newSiteTree.getRepositoryNode().lock();
-
-        newSiteTree.addNode("/root", "root-uuid", true, null, null, false);
-        newSiteTree.addLabel("/root", "en", "root");
-        newSiteTree.addNode("/root/foo", "root-foo-uuid", true, null, null, false);
-        newSiteTree.addLabel("/root/foo", "en", "foo");
-        newSiteTree.addNode("/root/subtree",
-                "root-subtree-uuid",
-                true,
-                "http://exact.biz",
-                "suffix",
-                true);
-        newSiteTree.addLabel("/root/subtree", "en", "subtree");
-        newSiteTree.addNode("/root/subtree/child",
-                "root-subtree-child-uuid",
-                true,
-                null,
-                null,
-                false);
-        newSiteTree.addLabel("/root/subtree/child", "en", "child");
-        SiteTreeNode node = (SiteTreeNode) newSiteTree.getNode("/root/subtree");
-        assertNotNull(node);
-        SiteTreeNode parentNode = (SiteTreeNode) this.siteTree.getNode("/foo/lala");
-        assertNotNull(parentNode);
-
-        newSiteTree.getRepositoryNode().unlock();
-    }
-}
diff --git a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java b/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java
deleted file mode 100644
index 90c9efa..0000000
--- a/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id$  */
-
-package org.apache.lenya.cms.site.tree;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.lenya.ac.impl.AbstractAccessControlTest;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.Link;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.tree.DefaultSiteTree;
-
-import junit.framework.TestCase;
-
-/**
- * Tests the site tree
- */
-public class SiteTreeNodeImplTest extends AbstractAccessControlTest {
-
-    private SiteTreeNodeImpl node = null;
-    private DefaultSiteTree siteTree = null;
-
-    /**
-     * @see TestCase#setUp()
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-        Publication pub = getPublication("test");
-        this.siteTree = new DefaultSiteTree(getFactory(), pub, "testArea", getManager(), getLogger());
-        ContainerUtil.enableLogging(siteTree, getLogger());
-        
-        siteTree.getRepositoryNode().lock();
-        
-        if (siteTree.contains("/foo")) {
-            siteTree.removeNode("/foo");
-        }
-        
-        siteTree.addNode("/foo", "foo-uuid", true, null, null, false);
-        siteTree.addLabel("/foo", "en", "Foo");
-        
-        siteTree.addNode("/foo/bar", "foo-bar-uuid", true, "http://exact.biz", "suffix", true);
-        siteTree.addLabel("/foo/bar", "en", "Bar");
-        siteTree.addLabel("/foo/bar", "de", "Stab");
-
-        this.node = (SiteTreeNodeImpl) siteTree.getNode("/foo/bar");
-    }
-
-    /**
-     * @see TestCase#tearDown()
-     */
-    public void tearDown() throws Exception {
-        super.tearDown();
-        this.siteTree.getRepositoryNode().unlock();
-    }
-
-    /**
-     * Test getAbsoluteId
-     * 
-     */
-    final public void testGetAbsoluteId() {
-        assertEquals(this.node.getPath(), "/foo/bar");
-    }
-
-    /**
-     * Test getId
-     * 
-     */
-    final public void testGetId() {
-        assertEquals(this.node.getName(), "bar");
-    }
-
-    /**
-     * Test getLabels
-     * @throws SiteException 
-     * 
-     */
-    final public void testGetLabels() throws SiteException {
-        String[] languages = this.node.getLanguages();
-        assertEquals(languages.length, 2);
-    }
-
-    /**
-     * Test getLabel
-     * @throws SiteException 
-     * 
-     */
-    final public void testGetLabel() throws SiteException {
-        Link label = this.node.getLink("en");
-        assertNotNull(label);
-        assertEquals(label.getLabel(), "Bar");
-    }
-
-    /**
-     * Test addLabel
-     * @throws SiteException 
-     * 
-     */
-    final public void testAddLabel() throws SiteException {
-        this.node.addLabel("it", "Barolo");
-        Link label = this.node.getLink("it");
-        assertNotNull(label);
-        assertEquals(label.getLabel(), "Barolo");
-        assertFalse(this.node.hasLink("ch"));
-    }
-
-    /**
-     * Test removeLabel
-     * @throws SiteException 
-     * 
-     */
-    final public void testRemoveLabel() throws SiteException {
-        assertNotNull(this.node.getLink("en"));
-        this.node.removeLabel("en");
-        assertFalse(this.node.hasLink("en"));
-    }
-
-    /**
-     * Test getHref
-     * 
-     */
-    final public void testGetHref() {
-        assertEquals(this.node.getHref(), "http://exact.biz");
-    }
-
-    /**
-     * Test getSuffix
-     * 
-     * 
-     */
-    final public void testGetSuffix() {
-        assertEquals(this.node.getSuffix(), "suffix");
-    }
-
-    /**
-     * Test hasLink
-     * 
-     */
-    final public void testHasLink() {
-        assertTrue(this.node.hasLink());
-    }
-
-}
diff --git a/trunk/src/modules/sitetree/resources/i18n/cmsui.xml b/trunk/src/modules/sitetree/resources/i18n/cmsui.xml
deleted file mode 100644
index beff7da..0000000
--- a/trunk/src/modules/sitetree/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <!-- Nudge document -->

-  <message key="nudge-error-direction-unknown">The direction {0} is not supported!</message>

-  <message key="nudge-error-direction">Cannot move the node in this direction.</message>

-  <message key="nudge-error-area">This operation can only be invoked on site trees.</message>

-  <message key="nudge-error-islive">Cannot move the node when a language version is published.</message>

-  

-</catalogue>

diff --git a/trunk/src/modules/sitetree/resources/i18n/cmsui_de.xml b/trunk/src/modules/sitetree/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 7012f3b..0000000
--- a/trunk/src/modules/sitetree/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <!-- Nudge document -->

-  <message key="nudge-error-direction-unknown">Die Richtung {0} wird nicht unterstützt!</message>

-  <message key="nudge-error-direction">Der Knoten kann nicht in diese Richtung verschoben werden.</message>

-  <message key="nudge-error-area">Die Operation kann nur auf Sitetrees angewandt werden.</message>

-  <message key="nudge-error-islive">Der Knoten kann nicht verschoben werden, wenn eine Sprachversion publiziert ist.</message>

-  

-</catalogue>

diff --git a/trunk/src/modules/sitetree/resources/i18n/cmsui_es.xml b/trunk/src/modules/sitetree/resources/i18n/cmsui_es.xml
deleted file mode 100644
index c152cda..0000000
--- a/trunk/src/modules/sitetree/resources/i18n/cmsui_es.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-  $Id: cmsui_es.xml 410620 2006-05-31 18:10:54Z thorsten $

-

-  @translators

-	Salvador Cobrero <salvador_cobrero_jimenez at dmr-consulting dot com>

-	David Pinelo <david dot pinelo at juntadeandalucia dot es>

-	Thorsten Scherler <thorsten at apache dot org>

-  J. Cayetano Delgado <jcdelgado at ingenia dot es>

-

--->

-

-<catalogue xml:lang="es" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <!-- Nudge document -->

-  <message key="nudge-error-direction-unknown">La dirección {0} no está soportada!</message>

-  <message key="nudge-error-direction">No puedo mover el nodo en esta dirección.</message>

-  <message key="nudge-error-area">Esta operación solo puede ser llamada en los árboles del sitio.</message>

-

-</catalogue>

-

diff --git a/trunk/src/modules/sitetree/resources/i18n/cmsui_fr.xml b/trunk/src/modules/sitetree/resources/i18n/cmsui_fr.xml
deleted file mode 100644
index c07f0fb..0000000
--- a/trunk/src/modules/sitetree/resources/i18n/cmsui_fr.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- 

-	$Id: cmsui_fr.xml 370106 2006-01-18 10:17:36Z edith $ 

-	@translators Olivier Lange <wire at petit-atelier dot ch>

-	-->

-

-<catalogue xml:lang="fr" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <!-- Nudge document -->

-  <message key="nudge-error-direction-unknown">La direction {0} n'est pas soutenue!</message>

-  <message key="nudge-error-direction">Le nouyau ne peut pas &#234;tre déplacé dans cette direction.</message>

-  <message key="nudge-error-area">Cette opération ne peut &#234;tre invoquée que sur une arborescence du site (Site tree).</message>

-

-</catalogue>

diff --git a/trunk/src/modules/sitetree/resources/icons/default.gif b/trunk/src/modules/sitetree/resources/icons/default.gif
deleted file mode 100644
index 9a2f1f9..0000000
--- a/trunk/src/modules/sitetree/resources/icons/default.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/sitetree/resources/icons/folder-closed.gif b/trunk/src/modules/sitetree/resources/icons/folder-closed.gif
deleted file mode 100644
index f3ba4b2..0000000
--- a/trunk/src/modules/sitetree/resources/icons/folder-closed.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/sitetree/resources/icons/folder.gif b/trunk/src/modules/sitetree/resources/icons/folder.gif
deleted file mode 100644
index 18a43b1..0000000
--- a/trunk/src/modules/sitetree/resources/icons/folder.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/sitetree/resources/javascript/lenyatree.js b/trunk/src/modules/sitetree/resources/javascript/lenyatree.js
deleted file mode 100644
index a58dcfc..0000000
--- a/trunk/src/modules/sitetree/resources/javascript/lenyatree.js
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-
-/*
-  The following variables must be set:
-  WEBAPP_BASE_PATH - path to the web application root, including the trailing slash
-  AREA_BASE_PATH - path to the area root, without the trailing slash
-  PUBLICATION_ID
-  PIPELINE_PATH
-  IMAGE_PATH
-  SHOW_LOADING_HINT (optional)
-  SHOW_ICONS (optional)
-*/
-  
-var xmlhttp;
-var SHOW_LOADING_HINT = false;
-var SHOW_ICONS = true;
-
-/******************************************
- *  LenyaNode 
- ******************************************/
-
-function LenyaNode(id, parent) {
-    this.id = id;
-    this.parent = parent;
-    this.items = {};
-    this.isfolder = false;
-    this.label = '';
-};
-
-LenyaNode.prototype = new Node;
-
-LenyaNode.prototype.addItems = function(items) {
-    this.items = {};
-    this.itemids = [];
-    for (var i = items.length - 1; i >= 0; i--) {
-        var item = items[i];
-        this.items[item.id] = item;
-        this.itemids.unshift(item.id);
-    };
-};
-
-LenyaNode.prototype.isCollection = function() {
-    return this.isfolder;
-};
-
-LenyaNode.prototype.getStyle = function() {
-    if (this.tree.root == this) {
-        return 'lenya-info-root';
-    } else {
-        return 'treenode_label';
-    }
-}
-
-LenyaNode.prototype.loadSubTree = function(handler) {
-    // display a 'loading' that the tree is being loaded
-    if (SHOW_LOADING_HINT) {
-        var div = this.tree.doc.createElement('div');
-        var text = this.tree.doc.createTextNode('loading...');
-        div.appendChild(text);
-        this.element.firstChild.firstChild.firstChild.lastChild.appendChild(div);
-    }
-    var url = this.getLoadSubTreeURL();
-    var callback = function (xml, item) {
-        item.subTreeLoaded(xml);
-    }
-    loadAsyncXML(url, callback, this);
-}
-
-LenyaNode.prototype.getLoadSubTreeURL = function() {
-    var path = this.getPath();
-    return encodeURI(AREA_BASE_PATH + PIPELINE_PATH + '?path='+path+'&lenya.module=sitetree');
-}
-
-
-LenyaNode.prototype.subTreeLoaded = function(xml) {
-    // remove the 'loading' hint
-    if (SHOW_LOADING_HINT) {
-        var td = this.element.firstChild.firstChild.firstChild.lastChild;
-        td.removeChild(td.lastChild);
-    }
-    
-    var root = xml.documentElement;
-
-    var children = root.childNodes;
-    var items=[];
-    for (var i = 0; i < children.length; i++) {
-        if (this.canAcceptNode(children[i])) {
-            items.push(this.createNewNode(children[i]));
-        } 
-    }
-    //handler(items);
-    this._continueOpen(items);
-}
-
-LenyaNode.prototype.canAcceptNode = function(item) {
-    if (getTagName(item) == "nav:node") return true;
-    return false;
-}
-
-LenyaNode.prototype.addNodesRec = function(parentNode) {
-    var children = parentNode.childNodes;
-    var items = [];
-    var nodes = [];
-    var item;
-    for (var i = 0; i < children.length; i++) {
-       if (this.canAcceptNode(children[i])) {
-          this.reopen = true; // this causes the parent to unfold
-          item = this.createNewNode(children[i]);
-          items.push(item);
-          item.addNodesRec(children[i]); 
-       } 
-    }
-    this.addItems(items);
-}
-
-LenyaNode.prototype.createNewNode = function(node) {
-    var newItem = new LenyaNode(node.getAttribute('id'), this);
-    newItem.init();
-    var isfolder = node.getAttribute('folder') =='true' ? true : false;
-    newItem.isfolder = isfolder;
-    return newItem;
-}
-
-//workaround for http://issues.apache.org/bugzilla/show_bug.cgi?id=35227
-function getTagName(element) {
-    var tagName = element.tagName;
-    var prefix = element.prefix;
-
-    if(tagName.indexOf(prefix + ':') == -1) {
-        tagName = prefix + ':' + tagName;
-    }
-    return tagName;
-}
-
-
-/******************************************
- *  LenyaTree 
- ******************************************/
- 
-function LenyaTree(doc, treeElement) {
-    this.doc = doc;
-    this.treeElement = treeElement;
-    this.selected = null;
-};
-
-LenyaTree.prototype = new Tree;
-
-LenyaTree.prototype.init = function(id) {
-    this.root = new LenyaNode(id);
-    this.root.tree = this;
-    this.root.depth = 0;
-    this.root.reopen = false;
-    this.root.isfolder = true;
-    this._currentId = 0;
-};
-
-LenyaTree.prototype.getItems = function(item, handler, allow_cache) {
-    if (item.tree.root == item) {
-        alert('getTtems() of root called. This should not happen, loadInitialTree should be called first.');
-    } else {
-        item.loadSubTree(handler);
-    }
-};
-
-LenyaTree.prototype.loadInitialTree = function(path) {
-    var url = this.getLoadInitialTreeURL(path);
-    callback = function(fragment, param) {
-        var tree = param[0];
-        var path = param[1];
-        tree.initialTreeLoaded(fragment);
-        var selectedItem = tree.getItemByPath(path);
-        if (selectedItem != false) {
-            tree.select(selectedItem);
-        }
-    }
-    var param = new Array(this, path);
-    loadAsyncXML(url, callback, param);
-};
-
-LenyaTree.prototype.getLoadInitialTreeURL = function(path) {
-    return encodeURI(AREA_BASE_PATH + PIPELINE_PATH + '?path='+path+'&lenya.module=sitetree');
-}
-
-LenyaTree.prototype.initialTreeLoaded = function(xml) {
-    var root = xml.documentElement;
-    var children = root.childNodes;
-    var items=[];
-    var item;
-    for (var i = 0; i < children.length; i++) {
-        if (this.canAcceptNode(children[i])) {
-            item = this.createNewNode(children[i]);
-            items.push(item);
-            //item.addNodesRec(children[i]);
-        }
-    }
-    this.root.addItems(items);
-    this.root.open();
-}
-
-LenyaTree.prototype.canAcceptNode = function(item) {
-    if (getTagName(item) == "nav:site") return true;
-    return false;
-}
-
-LenyaTree.prototype.createNewNode = function(node) {
-    var newItem = new LenyaNode(node.getAttribute('id'), this.root);
-    newItem.init();
-    return newItem;
-}
-
-/* LenyaTree.prototype.getIcon = function(item) {
-    // don't use an icon for root and area nodes
-    if (item.depth<2) return this.doc.createTextNode('');
-
-    var img = this.doc.createElement('img');
-    img.setAttribute('src', IMAGE_PATH + 'document.gif');
-    return img;
-}; */
-
-/* return an img object that represents the file type */
-LenyaTree.prototype.getIcon = function(item) {
-
-    if (SHOW_ICONS) {
-        var steps = new Array();
-        steps = item.getPath().split('/');
-        if (steps.length < 2) {
-            return this.doc.createTextNode('');
-        }
-        else {
-            var href;
-            if (steps.length < 4) {
-                href = AREA_BASE_PATH + "/folder";
-            }
-            else if(item.href == "") {
-                href = AREA_BASE_PATH + "/default";
-            }
-            else {
-                href = item.href;
-            }
-            var img = this.doc.createElement('img');
-            var language = CHOSEN_LANGUAGE;
-            img.setAttribute('src', href + '.gif?lenya.module=sitetree');
-            img.setAttribute('alt', '');
-            return img;
-        }
-    } else {
-        return this.doc.createTextNode('');
-    }
-};
-
-/* creates the item name and any icons and such */
-LenyaTree.prototype.createItemLine = function(item) {
-    var div = this.doc.createElement('div');
-    var span = this.doc.createElement('span');
-    var icon = this.getIcon(item);
-    if (icon.nodeType == 1) {
-        icon.className = 'treenode_icon';
-    };
-    div.appendChild(icon);
-    
-    var text = this.doc.createTextNode(item.label ? item.label : item.id);
-    
-    span.className = item.getStyle();
-    
-    span.appendChild(text);
-    div.appendChild(span);
-    
-    return div;
-};
-
-LenyaTree.prototype.createItemHtml = function(item) {
-    var div = this.doc.createElement('div');
-    div.className = 'treenode';
-
-    // place a reference to the item on the div
-    div.treeitem = item;
-    
-    var table = this.doc.createElement('table');
-    div.appendChild(table);
-    var tbody = this.doc.createElement('tbody');
-    table.appendChild(tbody);
-    var tr = this.doc.createElement('tr');
-    tbody.appendChild(tr);
-
-    // add the lines:
-    this.addLines(item, tr);
-
-    // add the opensign
-    var td1 = this.doc.createElement('td');
-    tr.appendChild(td1);
-    item.opensign = this.getCloseSign(item);
-    item.opensign.className = 'treenode_sign';
-
-    if (this.getSignType(item) == 'T') {
-        // if the label of this item is too long the line will wrap
-        // by setting the background image we get a continuos line
-        td1.style.backgroundImage = 'url('+IMAGE_PATH+'vertical-line.gif)';
-    }
-
-    td1.appendChild(item.opensign);
-
-    // add the label
-    var td2 = this.doc.createElement('td');
-    tr.appendChild(td2);
-    td2.className = 'lenya-info-label-td';
-    var line = this.createItemLine(item);
-    td2.appendChild(line);
-
-    addEventHandler(line, 'click', this.handleItemClick, this, item);
-    addEventHandler(item.opensign, 'click', this.handleItemSignClick, 
-                    this, item);
-    if (this.selected == item.getPath()) {
-        this.unselect();
-        this.select(item);
-        div.className = 'selected_node';
-    };
-
-    return div;
-};
-
-/* decide if the [+] or [-] sign is 'L' or '|-' type */
-LenyaTree.prototype.getSignType = function(item) {
-    if (item.tree.root != item) {
-        if (isLastChild(item.parent, item)) {
-            return 'L';
-        } else {
-            return 'T';
-        }
-    }
-    return 'X';  // invalid type
-};
-
-/* get the [+] sign for a collection or resource */
-LenyaTree.prototype.getCloseSign = function(item) {
-    var opensign = this.doc.createElement('img');
-    opensign.className = 'treenode_sign';
-    
-    if (item.tree.root == item) {
-        // the root needs no opensign
-        opensign.setAttribute('src', IMAGE_PATH+'empty.gif');
-        opensign.setAttribute('width', '0');
-    } else {
-        var suffix = this.getSignType(item);
-        if (item.isCollection()) {
-            opensign.setAttribute('src', IMAGE_PATH+'closed-collection-'+suffix+'.gif');
-        } else {
-            opensign.setAttribute('src', IMAGE_PATH+'non-collection-'+suffix+'.gif');
-        };
-    }
-    return opensign;
-};
-
-/* get the [-] sign for a collection */
-LenyaTree.prototype.getOpenSign = function(item) {
-    var opensign = this.doc.createElement('img');
-    opensign.className = 'treenode_sign';
-
-    if (item.tree.root == item) {
-        // the root needs no opensign
-        opensign.setAttribute('src', IMAGE_PATH+'empty.gif');
-        opensign.setAttribute('width', '0');
-    } else {
-        var suffix = this.getSignType(item);
-        opensign.setAttribute('src', IMAGE_PATH+'opened-collection-'+suffix+'.gif');
-    }
-    return opensign;
-};
-
-/* add the lines of an item (the edges of the tree) */
-LenyaTree.prototype.addLines = function(item, parentElement) {
-    var linesStr = this.computeLinesString(item);
-    // linesStr is in the reverse order
-    for (var i=linesStr.length-1; i>0; i--) {
-        var td = this.doc.createElement('td');
-        var img = this.doc.createElement('img');
-        
-        var imageName = '';
-        if (linesStr.charAt(i)=='I') {
-            imageName = 'vertical-line.gif';
-            // if the label of this item is too long the line will wrap
-            // by setting the background image we get a continuos line
-            td.style.backgroundImage = 'url('+IMAGE_PATH+'vertical-line.gif)';
-        } else {
-            imageName = 'empty.gif';
-        }
-        img.setAttribute('src', IMAGE_PATH+imageName);
-        img.className = 'treenode_sign';
-
-        td.appendChild(img);
-        parentElement.appendChild(td);
-    }
-}
-
-/* computes the lines of an item as a string (the edges of the tree)
-     E: ' ' empty
-     I: '|' vertical line
-     L: 'L' 
-     T: '|-'
-*/
-LenyaTree.prototype.computeLinesString = function(item) {
-    var lines = ''
-    
-    if (item.tree.root == item) return lines;
-    
-    // first level, decide T or L
-    if (isLastChild(item.parent, item)) {
-        lines += 'L';
-    } else {
-        lines += 'T';
-    }
-    item = item.parent;
-
-    // subsequent levels, decide I or E
-    while (item.tree.root != item) {
-        if (isLastChild(item.parent, item)) {
-            lines += 'E'; // empty
-        } else {
-            lines += 'I'; // vertical line
-        }
-        item = item.parent;
-    }
-    
-    return lines;
-}
-
-LenyaTree.prototype.handleItemClick = function(item, event) {
-    alert('you clicked on '+item.id);
-    // do something useful here
-};
-
-// helper function
-function isLastChild(parent, child) {
-    // this should be a method of Node
-    for (var i=0; i<parent.itemids.length-1; i++) {
-        if (parent.itemids[i] == child.id) return false;
-    };
-    return true;
-}
-
-
-/******************************************
- *  Dynamic loading functions 
- ******************************************/
-
-function loadSyncXML(url) {
-    if (xmlhttp==null) createXMLHttp();
-    
-    //alert('loading '+url);
-    // do synchronous loading 
-    xmlhttp.open("GET",url,false);  
-    xmlhttp.setRequestHeader('Accept','text/xml');
-    
-    xmlhttp.send(null);
-    
-    //alert('result: '+xmlhttp.responseText);
-    
-    var xml = xmlhttp.responseXML;
-    if (xml == null || xml.documentElement == null) {
-        alert('Error: could not load response xml for url: '+url);
-        return null;
-    }
-    return xml;
-}
-
-function loadAsyncXML(url, callbackFunction, callbackParam) {
-    if (xmlhttp==null) createXMLHttp();
-    
-    //alert('loading '+url);
-    // do asynchronous loading 
-    xmlhttp.open("GET",url,true);  
-    xmlhttp.setRequestHeader('Accept','text/xml');
-    
-    xmlhttp.onreadystatechange = function () {
-        if (xmlhttp.readyState == 4) {
-            var xml = xmlhttp.responseXML;
-            if (xml == null || xml.documentElement == null) {
-                alert('Error: could not load response xml for url: '+url);
-                return null;
-            }
-            callbackFunction(xml, callbackParam);
-        }
-    };
-    
-    xmlhttp.send(null);
-}
-
-function loadAsyncText(url, callbackFunction, callbackParam) {
-    if (xmlhttp==null) createXMLHttp();
-    
-    //alert('loading '+url);
-    // do asynchronous loading 
-    xmlhttp.open("GET",url,true);  
-    
-    xmlhttp.onreadystatechange = function () {
-        if (xmlhttp.readyState == 4) {
-            var text = xmlhttp.responseText;
-            if (text == null) {
-                alert('Error: could not load response text for url: '+url);
-                return null;
-            }
-            callbackFunction(text, callbackParam);
-        }
-    };
-    
-    xmlhttp.send(null);
-}
-
-function updateElement(placeholder, url) {
-    var callback = function (fragment) {
-        var div = document.getElementById(placeholder);
-        div.innerHTML = fragment;
-    }
-    loadAsyncText(url, callback);
-}
-
-// create the xmlhttp object
-function createXMLHttp() {
-    /*@cc_on @*/
-    /*@if (@_jscript_version >= 5)
-    // JScript gives us Conditional compilation, we can cope with old IE versions.
-    // and security blocked creation of the objects.
-     try {
-      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
-     } catch (e) {
-      try {
-       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
-      } catch (E) {
-       xmlhttp = false;
-      }
-     }
-    @end @*/
-    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
-      xmlhttp = new XMLHttpRequest();
-    }
-}
-
-/*******************************************
- * Misc
- *******************************************/
-
-function stripPrefix(s) {
-    if (s.indexOf(':')==-1) return s; 
-    return s.split(':')[1];
-}
diff --git a/trunk/src/modules/sitetree/resources/javascript/navtree.js b/trunk/src/modules/sitetree/resources/javascript/navtree.js
deleted file mode 100644
index 6e5840e..0000000
--- a/trunk/src/modules/sitetree/resources/javascript/navtree.js
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-/*
-Required variables: see lenyatree.js
-*/
-
-/******************************************
- *  NavNode 
- ******************************************/
-
-function NavNode(id, parent) {
-    this.id = id;
-    this.parent = parent;
-    this.items = {};
-    this.isfolder = false;
-    this.uuid = '';
-    this.href = '';
-    this.label = '';
-    this.area = '';
-    this.path = '';
-    this.isprotected = true;
-    this.existsChosenLanguage = true;
-    this.langSuffix = '';
-};
-
-NavNode.prototype = new LenyaNode;
-
-NavNode.prototype.createNewNode = function(node)
-{
-    var newItem = new NavNode(node.getAttribute('id'), this);
-    newItem.init();
-  
-    newItem.isfolder = isNodeFolder(node);
-    newItem.area = this.area;
-    newItem.path = node.getAttribute('path');
-    newItem.uuid = node.getAttribute('uuid');
-    newItem.isprotected = isNodeProtected(node);
-    newItem.href = node.getAttribute('href');
-    newItem.label = getLabel(node);
-    newItem.existsChosenLanguage = existsChosenLanguage(node);
-    newItem.langSuffix = node.getAttribute('language-suffix');
-  
-    return newItem;
-}
-
-NavNode.prototype.getBasePath = function() {
-    var path = this.path != '/' ? this.path : '' ;
-    return path;
-}
-
-NavNode.prototype.getLoadSubTreeURL = function() {
-    area = this.area;
-    var path = this.getBasePath();
-    return encodeURI(AREA_BASE_PATH + PIPELINE_PATH + '?area='+area+'&path='+path+'&language='+CHOSEN_LANGUAGE+'&areas='+ALL_AREAS+'&lenya.module=sitetree');
-}
-
-NavNode.prototype.getStyle = function() {
-    if (this.tree.root == this) {
-        return 'lenya-info-root';
-    } else if (this.parent == this.tree.root) {
-        return 'lenya-info-area';
-    } else if (this.isprotected) {
-        return 'lenya-info-protected';
-    } else if (this.path == CUT_DOCUMENT_ID) {
-        return 'lenya-info-cut';
-    } else if (!this.existsChosenLanguage) {
-        return 'lenya-info-nolanguage';
-    } else {
-        return 'treenode_label';
-    }
-}
-
-function getLabel(node) {
-    var cs = node.childNodes;
-    var l = cs.length;
-    // lenya generates the xml and is responsible to insert the label
-    // of the correct language
-    for (var i = 0; i < l; i++) {
-       if (getTagName(cs[i]) =='nav:label') {
-          if (cs[i].hasChildNodes()) {
-              return cs[i].firstChild.nodeValue;
-          }
-          else {
-              return "[no title]";
-          }
-       } 
-    }
-    return '';
-}
-
-function isNodeProtected(node) {
-    var prot = node.getAttribute('protected');
-    if (prot == 'true') return true;
-    return false;
-}
-
-function isNodeFolder(node) {
-    var isfolder = node.getAttribute('folder');
-    if (isfolder == 'true') return true;
-    return false;
-}
-
-// check if the node has a label of the chosen language
-function existsChosenLanguage(node) {
-    var children = node.childNodes;
-    for (var i = 0; i < children.length; i++) {
-       var lang = children[i].getAttribute('xml:lang');
-       if (!lang) {
-           var lang = children[i].getAttribute('lang');
-       }
-       if (getTagName(children[i]) == 'nav:label' && lang == CHOSEN_LANGUAGE) {
-          return true;
-       } 
-    }
-    return false;
-}
-
-/******************************************
- *  NavTree 
- ******************************************/
- 
-function NavTree(doc, treeElement) {
-    this.doc = doc;
-    this.treeElement = treeElement;
-    this.selected = null;
-};
-
-NavTree.prototype = new LenyaTree;
-
-NavTree.prototype.init = function(id, label) {
-    this.root = new NavNode(id);
-    this.root.tree = this;
-    this.root.depth = 0;
-    this.root.reopen = false;
-    this.root.isprotected = false;
-    this.root.isfolder = true;
-    this.root.label = label;
-    this._currentId = 0;
-};
-
-NavTree.prototype.loadInitialTree = function(area, path) {
-    var url = encodeURI(AREA_BASE_PATH + PIPELINE_PATH + '?area='+area+'&path='+path+'&language='+CHOSEN_LANGUAGE+'&initial=true&areas='+ALL_AREAS+'&lenya.module=sitetree');
-    
-    callback = function(fragment, param) {
-        var tree = param[0];
-        var area = param[1];
-        var path = param[2];
-        tree.initialTreeLoaded(fragment);
-        var selectedItem = tree.getItemByPath(PUBLICATION_ID+'/'+area+path)
-        if (selectedItem != false) {
-            tree.select(selectedItem);
-        }
-    }
-    
-    var param = new Array(this, area, path);
-    loadAsyncXML(url, callback, param);
-};
-
-NavTree.prototype.initialTreeLoaded = function(xml)
-{
-  var root = xml.documentElement;
-  var children = root.childNodes;
-  var items=[];
-  var item;
-  for (var i = 0; i < children.length; i++) {
-     if (getTagName(children[i]) == "nav:site") {
-        item = this.addLoadedSite(children[i]);
-        items.push(item);
-        item.addNodesRec(children[i]);
-     }
-  }
-  this.root.addItems(items);
-  this.root.open();
-}
-
-NavTree.prototype.addLoadedSite = function(site)
-{
-  var langSuffix = '';
-  if (CHOSEN_LANGUAGE!=DEFAULT_LANGUAGE) langSuffix = '_'+CHOSEN_LANGUAGE;
-
-  var siteArea = site.getAttribute('area');
-  var newSite = new NavNode(siteArea, this.root);
-  newSite.init();
-  
-  newSite.isfolder = isNodeFolder(site);
-  newSite.area = siteArea;
-  newSite.path = '/';
-  newSite.isprotected = isNodeProtected(site);
-  newSite.href = site.getAttribute('href') + "/" + langSuffix;
-  newSite.langSuffix = langSuffix;
-  newSite.label = site.getAttribute('label');
-  
-  return newSite;
-}
-
-NavTree.prototype.handleItemClick = function(item, event) {
-    if (!item.isprotected) { // && item.root!=item) {
-        href = encodeURI(item.href + "?lenya.usecase=tab.overview"); 
-        window.location = href;
-    }
-};
-
-/*
-  overriding this function because of a bug in lenya:
-  the area cannot be clickable because lenya expects
-  a document for the area.
-*/
-NavTree.prototype.createItemHtml = function(item) {
-    var div = this.doc.createElement('div');
-    div.className = 'treenode';
-
-    // place a reference to the item on the div
-    div.treeitem = item;
-    
-    var table = this.doc.createElement('table');
-    div.appendChild(table);
-    var tbody = this.doc.createElement('tbody');
-    table.appendChild(tbody);
-    var tr = this.doc.createElement('tr');
-    tbody.appendChild(tr);
-
-    // add the lines:
-    this.addLines(item, tr);
-
-    // add the opensign
-    var td1 = this.doc.createElement('td');
-    tr.appendChild(td1);
-    item.opensign = this.getCloseSign(item);
-    item.opensign.className = 'treenode_sign';
-
-    if (this.getSignType(item) == 'T') {
-        // if the label of this item is too long the line will wrap
-        // by setting the background image we get a continuos line
-        td1.style.backgroundImage = 'url('+IMAGE_PATH+'vertical-line.gif)';
-    }
-
-    td1.appendChild(item.opensign);
-    
-    // add the label
-    var td2 = this.doc.createElement('td');
-    tr.appendChild(td2);
-    td2.className = 'lenya-info-label-td';
-    var line = this.createItemLine(item);
-    td2.appendChild(line);
-    
-    // make root node not clickable
-    if (item.depth > 0) {
-      addEventHandler(line, 'click', this.handleItemClick, this, item);
-    }
-    addEventHandler(item.opensign, 'click', this.handleItemSignClick, 
-                    this, item);
-
-    if (this.selected == item.getPath()) {
-        this.unselect();
-        this.select(item);
-        div.className = 'selected_node';
-    };
-
-    return div;
-};
-
diff --git a/trunk/src/modules/sitetree/resources/javascript/tree.js b/trunk/src/modules/sitetree/resources/javascript/tree.js
deleted file mode 100644
index 0f911ed..0000000
--- a/trunk/src/modules/sitetree/resources/javascript/tree.js
+++ /dev/null
@@ -1,563 +0,0 @@
-/*****************************************************************************
- *
- * Copyright (c) 2004 Guido Wesdorp. All rights reserved.
- *
- * This software is distributed under the terms of the tree.js
- * License. See LICENSE.txt for license text.
- *
- *  E-mail: johnny@debris.demon.nl
- *
- *****************************************************************************/
-
-/*
-Copyright (c) 2004, Guido Wesdorp
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-
-    * 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.
-
-    * Neither the name of tree.js nor the names of its contributors may
-      be used to endorse or promote products derived from this
-      software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS 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 COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 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.
-*/
-
-function Node(id, parent) {
-    this.id = id;
-    this.parent = parent;
-    // this is just here for show, will be overwritten in init()
-    this.items = {};
-};
-
-Node.prototype.init = function() {
-    this.depth = this.parent.depth + 1;
-    this.tree = this.parent.tree;
-    this.reopen = false;
-    this.items = {};
-};
-
-Node.prototype.open = function(reload, endhandler) {
-    if (!this.isCollection()) {
-        if (reload) {
-            this.reloadSingle();
-        };
-        return;
-    };
-    if (!reload && this.opened) {
-        return;
-    };
-    this.opened = true;
-    var newopensign = this.tree.getOpenSign(this);
-    this.opensign.parentNode.replaceChild(newopensign, this.opensign);
-    this.opensign = newopensign;
-    addEventHandler(this.opensign, 'click', this.tree.handleItemSignClick, 
-                    this.tree, this);
-    if (!this.itemids || this.itemids.length==0) {
-        // get the items, getItems() should be defined on the subclass
-        this.tree.doc.getElementsByTagName('body')[0].style.cursor = 'wait';
-        this.element.className = this.element.className;
-        this.tree.getItems(this, this._continueOpen, !reload, endhandler);
-    } else {
-      
-        for (var itemid in this.items) {
-            var item = this.items[itemid];
-            item.render();
-            if (item.reopen) {
-                item.open();
-            };
-        };
-        if (endhandler) {
-            endhandler();
-        };
-    };
-};
-
-Node.prototype._continueOpen = function(items, endhandler) {
-    this.items = {};
-    this.itemids = [];
-    for (var i = items.length - 1; i >= 0; i--) {
-        var item = items[i];
-        this.items[item.id] = item;
-        this.itemids.unshift(item.id);
-        item.render();
-        if (item.reopen) {
-            item.open();
-        };
-    };
-
-    this.tree.doc.getElementsByTagName('body')[0].style.cursor = 'default';
-    if (endhandler) {
-        endhandler();
-    };
-};
-
-Node.prototype.reloadSingle = function() {
-    /* called on opening a non-collection item with a reload arg
-
-        can be overridden in subclasses
-    */
-};
-
-Node.prototype.close = function(reopen_when_opening_parent) {
-    if (!this.opened || !this.isCollection()) {
-        return;
-    };
-    this.reopen = reopen_when_opening_parent;
-    var newopensign = this.tree.getCloseSign(this);
-    this.opensign.parentNode.replaceChild(newopensign, this.opensign);
-    this.opensign = newopensign;
-    this.opened = false;
-    addEventHandler(this.opensign, 'click', this.tree.handleItemSignClick, 
-                    this.tree, this);
-    for (var itemid in this.items) {
-        var item = this.items[itemid];
-        item.close(true);
-        this.tree.unrenderItem(item);
-    };
-};
-
-Node.prototype.reload = function() {
-    this.itemids = null;
-    var currel = this.element;
-    this.element = this.tree.createItemHtml(this);
-    currel.parentNode.replaceChild(this.element, currel);
-    if (this.opened) {
-        this.close();
-        this.open(true);
-    };
-};
-
-Node.prototype.render = function() {
-    this.tree.renderItem(this);
-};
-
-Node.prototype.isCollection = function() {
-    return true;
-};
-
-Node.prototype.getPath = function() {
-    var parentpath;
-    if (this.parent) {
-        parentpath = this.parent.getPath();
-    } else {
-        parentpath =  '';
-    }
-    return parentpath + '/' + this.id;
-};
-
-Node.prototype.setSelectClass = function() {
-    if (this.element) {
-        this.element.className = 'selected_node';
-    };
-};
-
-Node.prototype.unsetSelectClass = function() {
-    if (this.element) {
-        this.element.className = 'unselected_node';
-    };
-};
-
-Node.prototype.getItemByPath = function(path) {
-    /* return an item by its path 
-    
-        path should be relative from the current item, excluding 
-        the current item's id
-    */
-    var item = null;
-    for (var itemid in this.items) {
-        // see if the path starts with the next item id
-        if (path.indexOf(itemid + '/') == 0 || path == itemid) {
-            item = this.items[itemid];
-            break;
-        };
-    };
-    if (!item) {
-        return false;
-    };
-    if (path == item.id) {
-        return item;
-    } else {
-        return item.getItemByPath(path.substr(item.id.length+1));
-    };
-    return false;
-};
-
-function Tree(doc, treeElement) {
-    this.doc = doc;
-    this.treeElement = treeElement;
-    this.selected = null;
-};
-
-Tree.prototype.init = function(id) {
-    this.root = new Node(id);
-    this.root.tree = this;
-    this.root.depth = 0;
-    this.root.reopen = false;
-    this._currentId = 0;
-    // addEventHandler(this.doc, 'contextmenu', 
-    //        this.createContextMenu, this);
-    //addEventHandler(this.doc, 'mouseup', this.removeContextMenu, this);
-};
-
-Tree.prototype.getItems = function(item, handler, reload, endhandler) {
-    /* this should be overridden in subclasses */
-    var items = [];
-    var ids = ['foo', 'bar', 'baz'];
-    for (var i=0; i < ids.length; i++) {
-        var child = new Node(ids[i], item);
-        child.init();
-        items.push(child);
-    };
-    handler.call(item, items, endhandler);
-};
-
-Tree.prototype.render = function() {
-    var element = this.createItemHtml(this.root);
-    this.root.element = element;
-    element.tree_item = this.root;
-    this.doc.getElementsByTagName('body')[0].style.cursor = 'default';
-    this.treeElement.appendChild(element);
-};
-
-Tree.prototype.renderItem = function(item) {
-    var element = this.createItemHtml(item);
-    this.doc.getElementsByTagName('body')[0].style.cursor = 'default';
-    item.element = element;
-    element.tree_item = item;
-    if (item.parent.element.nextSibling) {
-        item.parent.element.parentNode.insertBefore(item.element, 
-                                    item.parent.element.nextSibling);
-    } else {
-        item.parent.element.parentNode.appendChild(item.element);
-    };
-};
-
-Tree.prototype.createItemHtml = function(item) {
-    /* you may want to override this */
-    var div = this.doc.createElement('div');
-    div.style.whiteSpace = 'nowrap';
-    div.className = 'treenode';
-    
-    // place a reference to the item on the div
-    div.treeitem = item;
-
-    var space = '';
-    for (var i=0; i < item.depth; i++) {
-        space += '\xa0\xa0\xa0';
-    };
-    var text = this.doc.createTextNode(space);
-    div.appendChild(text);
-    
-    item.opensign = this.getCloseSign(item);
-    item.opensign.className = 'treenode_opensign';
-    div.appendChild(item.opensign);
-
-    // the actual icon and name are generated from another method
-    // to improve extending
-    var line = this.createItemLine(item);
-    div.appendChild(line);
-    
-    addEventHandler(line, 'click', this.handleItemClick, this, item);
-    addEventHandler(item.opensign, 'click', this.handleItemSignClick, 
-                    this, item);
-
-    if (this.selected == item.getPath()) {
-        this.unselect();
-        this.select(item);
-        div.className = 'selected_node';
-    };
-
-    return div;
-};
-
-Tree.prototype.createItemLine = function(item) {
-    var div = this.doc.createElement('div');
-    /* creates the item name and any icons and such */
-    var span = this.doc.createElement('span');
-    var icon = this.getIcon(item);
-    if (icon.nodeType == 1) {
-        icon.className = 'treenode_icon';
-    };
-    div.appendChild(icon);
-    
-    var text = this.doc.createTextNode(item.name ? item.name : item.id);
-    span.className = 'treenode_label';
-    span.appendChild(text);
-    div.appendChild(span);
-    
-    return div;
-};
-
-Tree.prototype.unrenderItem = function(item) {
-    if (item.element) {
-        item.element.parentNode.removeChild(item.element);
-        delete item.element;
-    };
-};
-
-Tree.prototype.handleItemClick = function(item, event) {
-    if (item.skip_next_click) {
-        item.skip_next_click = false;
-        return;
-    };
-    this.select(item);
-    if (!item.opened) {
-        item.open();
-    } else {
-        item.close();
-    };
-    if (item.element && item.element.scrollIntoView) {
-        item.element.scrollIntoView();
-    };
-};
-
-Tree.prototype.select = function(item) {
-    this.unselect();
-    this.selected = item.getPath();
-    item.setSelectClass();
-};
-
-Tree.prototype.unselect = function() {
-    if (typeof(this.selected) == 'string') {
-        var item = this.getItemByPath(this.selected);
-        item.unsetSelectClass();
-    };
-};
-
-Tree.prototype.handleItemSignClick = function(item, event) {
-    if (!item.opened) {
-        item.open();
-    } else {
-        item.close();
-    };
-    if (event.preventDefault) {
-        event.preventDefault();
-    } else {
-        event.returnValue = false;
-    };
-};
-
-Tree.prototype.createUniqueId = function() {
-    this._currentId++;
-    return this._currentId.toString();
-};
-
-Tree.prototype.createContextMenu = function(event) {
-    var clickel = event.target;
-    var item = clickel.tree_item;
-    if (!item) {
-        return;
-    };
-    if (!this.contextmenu) {
-        var contextels = this.getContextMenuElements();
-        this.renderContextMenu(item, contextels, event);
-    };
-    if (event.preventDefault) {
-        event.preventDefault();
-    } else {
-        event.returnValue = false;
-    };
-    return false;
-};
-
-Tree.prototype.getContextMenuElements = function() {
-    /* you will probably want to override this
-
-        this should return a mapping (object) from context menu
-        entry (string) to the name of a method on the Node object
-        (also a string), the method will be called when the element
-        is clicked
-    */
-    return {'open': 'open',
-            'close': 'close'};
-};
-
-Tree.prototype.renderContextMenu = function(item, elements, event) {
-    /* you may want to override this 
-        
-        item is the item clicked on
-        elements should be a mapping from menu element (string) to 
-        the name of a method located on the clicked Node
-    
-    */
-    var menu = this.doc.createElement('div');
-    menu.style.position = 'absolute';
-    menu.className = 'contextmenu';
-    addEventHandler(menu, 'click', this.removeContextMenu, this);
-    for (var el in elements) {
-        var div = this.doc.createElement('div');
-        var text = this.doc.createTextNode(el);
-        div.appendChild(text);
-        addEventHandler(div, 'click', item[elements[el]], item);
-        menu.appendChild(div);
-    };
-    this._positionMenu(event, menu);
-    this.doc.getElementsByTagName('body')[0].appendChild(menu);
-    this.contextmenu = menu;
-};
-
-Tree.prototype.removeContextMenu = function() {
-    if (!this.contextmenu) {
-        return;
-    };
-    this.contextmenu.parentNode.removeChild(this.contextmenu);
-    delete this.contextmenu;
-};
-
-Tree.prototype.getCloseSign = function(item) {
-    /* get the open sign for a collection or resource */
-    var opensign = this.doc.createElement('img');
-    if (item.isCollection()) {
-        opensign.setAttribute('src', 'images/closed-collection.png');
-    } else {
-        opensign.setAttribute('src', 'images/non-collection.png');
-    };
-    return opensign;
-};
-
-Tree.prototype.getOpenSign = function(item) {
-    /* get the close sign for a collection */
-    var opensign = this.doc.createElement('img');
-    opensign.setAttribute('src', 'images/opened-collection.png');
-    return opensign;
-};
-
-Tree.prototype.getIcon = function(item) {
-    /* return an img object that represents the file type */
-    return this.doc.createTextNode('\xa0');
-};
-
-//Root.prototype.getPath = function() {
-//    return '/' + this.id;  // FIXME
-//};
-
-Tree.prototype._positionMenu = function(event, menu) {
-    var left = event.layerX;
-    var top = event.layerY;
-    menu.style.left = left + 'px';
-    menu.style.top = top + 'px';
-};
-
-Tree.prototype.getItemByPath = function(path) {
-    /* return an item by its path 
-    
-        path should be relative from the current item, excluding 
-        the current item's id
-    */
-    // if the path starts with a slash, remove it
-    if (path.charAt(0) == '/') {
-        path = path.substr(1);
-    };
-    if (path == this.root.id) {
-        return this.root;
-    }
-    if (path.indexOf(this.root.id) == 0) {
-        path = path.substr(this.root.id.length+1);
-        return this.root.getItemByPath(path);
-    } else {
-        return false;
-    }
-};
-
-// Copied from helpers.js to not have a dependency
-function ContextFixer(func, context) {
-    /* Make sure 'this' inside a method points to its class */
-    this.func = func;
-    this.context = context;
-    this.args = arguments;
-    var self = this;
-    
-    this.execute = function() {
-        /* execute the method */
-        var args = new Array();
-        // the first arguments will be the extra ones of the class
-        for (var i=0; i < self.args.length - 2; i++) {
-            args.push(self.args[i + 2]);
-        };
-        // the last are the ones passed on to the execute method
-        for (var i=0; i < arguments.length; i++) {
-            args.push(arguments[i]);
-        };
-        return self.func.apply(self.context, args);
-    };
-};
-
-// this is used to make sure that all registered event handlers get a unique
-// id, this id will be returned by addEventHandler and can be used to remove
-// the event handler later on
-// of course you *must never* change this id!
-LAST_HANDLER_ID = 0;
-
-// a mapping from id to handler (required because the handlers are wrapped
-// before they're registered, and the mapped version is not available to the
-// client, while it is required for de-registering the event later on
-// needless to say this should never be touched...
-ID_TO_HANDLER = {};
-
-function addEventHandler(element, event, method, context) {
-    /* method to add an event handler for both IE and Mozilla */
-    var wrappedmethod = new ContextFixer(method, context);
-    
-    // store it, return the id, that can be used to de-register the
-    // handler later on
-    var id = LAST_HANDLER_ID++;
-    ID_TO_HANDLER[id] = wrappedmethod;
-    
-    var args = new Array(null, null);
-    for (var i=4; i < arguments.length; i++) {
-        args.push(arguments[i]);
-    };
-    wrappedmethod.args = args;
-    try {
-        if (element.addEventListener) {
-            element.addEventListener(event, wrappedmethod.execute, false);
-        } else if (element.attachEvent) {
-            element.attachEvent("on" + event, wrappedmethod.execute);
-        } else {
-            throw "Unsupported browser!";
-        };
-    } catch(e) {
-        alert('exception ' + e.message + ' while registering an event handler for element ' + element + ', event ' + event + ', method ' + method);
-    };
-
-    return id;
-};
-
-function removeEventHandler(element, event, id) {
-    /* method to remove an event handler for both IE and Mozilla */
-    var method = ID_TO_HANDLER[id].execute;
-    if (element.removeEventListener) {
-        element.removeEventListener(event, method, false);
-    } else if (element.detachEvent) {
-        element.detachEvent("on" + event, method);
-    } else {
-        throw "Unsupported browser!";
-    };
-};
-
-String.prototype.strip = function() {
-    var stripspace = /^\s*([\s\S]*?)\s*$/;
-    return stripspace.exec(this)[1];
-};
-
diff --git a/trunk/src/modules/sitetree/resources/schemas/sitetree.xsd b/trunk/src/modules/sitetree/resources/schemas/sitetree.xsd
deleted file mode 100644
index aa83724..0000000
--- a/trunk/src/modules/sitetree/resources/schemas/sitetree.xsd
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: sitetree.xsd 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN"
-    "http://www.w3.org/2001/XMLSchema.dtd">
-<xs:schema targetNamespace="http://apache.org/cocoon/lenya/sitetree/1.0" xmlns="http://apache.org/cocoon/lenya/sitetree/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
-	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-	<xs:element name="site">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="node">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="label" minOccurs="0" maxOccurs="unbounded"/>
-				<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
-			</xs:sequence>
-			<xs:attribute name="id" type="xs:string" use="required"/>
-			<xs:attribute name="href" type="xs:string" use="optional"/>
-			<xs:attribute name="suffix" type="xs:string" use="optional"/>
-			<xs:attribute name="link" type="xs:string" use="optional"/>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="label">
-		<xs:complexType>
-			<xs:simpleContent>
-				<xs:extension base="xs:string">
-					<xs:attribute ref="xml:lang"/>
-				</xs:extension>
-			</xs:simpleContent>
-		</xs:complexType>
-	</xs:element>
-</xs:schema>
diff --git a/trunk/src/modules/sitetree/sitemap.xmap b/trunk/src/modules/sitetree/sitemap.xmap
deleted file mode 100644
index ed240b5..0000000
--- a/trunk/src/modules/sitetree/sitemap.xmap
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: navigation.xmap 208680 2005-06-30 20:28:59Z chestnut $ -->
-
-<!--
-This sitemap creates default navigation components.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:components>
-    <map:matchers default="wildcard">
-      <map:matcher name="language" logger="sitemap.matcher.wildcardrequestparameter" src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">
-        <parameter-name>lenya.language</parameter-name>
-      </map:matcher>
-      <map:matcher name="tab" logger="sitemap.matcher.wildcardrequestparameter" src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">
-        <parameter-name>lenya.info-tab</parameter-name>
-      </map:matcher>
-    </map:matchers>
-    <map:transformers default="xslt">
-      <map:transformer logger="lenya.sitemap.transformer.uuid2url" name="uuid2url-sitetree"
-        src="org.apache.lenya.cms.cocoon.transformation.UuidToUrlTransformer">
-        <urls type="relative"/>
-        <transform namespace="http://apache.org/cocoon/lenya/navigation/1.0" element="node" attribute="href"/>
-      </map:transformer>
-      <map:transformer logger="lenya.sitemap.transformer.proxy" name="proxy-sitetree"
-          src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer">
-        <transform namespace="http://apache.org/cocoon/lenya/navigation/1.0" element="site" attribute="href"/>
-        <transform namespace="http://apache.org/cocoon/lenya/navigation/1.0" element="node" attribute="href"/>
-      </map:transformer>
-    </map:transformers>
-  </map:components>
-  
-  <!-- =========================== Pipelines ================================ -->
-  
-  <map:resources>
-    
-    <map:resource name="i18n">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>
-    </map:resource>
-  
-  </map:resources>
-  
-  <map:pipelines>
-  
-    <map:pipeline type="caching">
-      
-      <!-- sitetree -->
-      <!-- pattern: sitetree/{1:pub-id}/{2:area}/{3:default-language}/{4:language}/{5:path}.xml -->
-      <map:match pattern="sitetree/*/*/*/*/**.xml">
-        <map:generate src="lenya://lenya/pubs/{1}/content/{2}/sitetree.xml"/>
-        <map:transform src="fallback://lenya/modules/sitetree/xslt/navigation/sitetree2nav.xsl">
-          <map:parameter name="currentPath" value="/{5}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="chosenlanguage" value="{4}"/>
-          <map:parameter name="defaultlanguage" value="{3}"/>
-        </map:transform>       
-        <map:serialize type="xml"/>
-      </map:match>
-    
-      <!-- navigation element -->  
-      <!-- pattern: {1:nav-element}/{2:pub-id}/{3:area}/{4:default-language}/{5:language}/{6:path}.xml -->
-      <map:match pattern="*/*/*/*/*/**.xml">
-        <map:generate src="cocoon:/sitetree/{2}/{3}/{4}/{5}/{6}.xml"/>
-        <map:transform src="fallback://lenya/modules/sitetree/xslt/navigation/{1}.xsl">
-          <map:parameter name="area" value="{3}"/>
-          <map:parameter name="root" value="/{2}/{3}/"/>
-          <map:parameter name="chosenlanguage" value="{5}"/>
-          <map:parameter name="defaultlanguage" value="{4}"/>
-        </map:transform>       
-        <map:serialize type="xml"/>
-      </map:match>
-    
-    </map:pipeline>
-  
-    <!-- usecases -->
-    <!-- Sitetree Javascript array -->
-    <map:pipeline type="noncaching">
-      
-      <!-- {publication-id}/{area}/sitetree.xml -->
-      <map:match pattern="*/*/sitetree.xml">
-        <map:generate src="lenya://lenya/pubs/{1}/content/{2}/sitetree.xml"/>
-        <map:call resource="i18n"/>
-        <map:transform type="access-control-sitetree">
-          <map:parameter name="publication-id" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:transform src="fallback://lenya/modules/sitetree/xslt/info/sitetree2areatree.xsl">
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {publication-id}/{area}/info-sitetree -->
-      <map:match pattern="*/*/sitetree-fragment.xml">
-        <map:generate type="sitetree-fragment">
-          <map:parameter name="areas" value="{request-param:areas}"/>
-          <map:parameter name="area" value="{request-param:area}"/>
-          <map:parameter name="path" value="{request-param:path}"/>
-          <map:parameter name="initial" value="{request-param:initial}"/>
-          <map:parameter name="mimetype" value="{request-param:mimetype}"/>
-        </map:generate>
-        <!-- <map:call resource="i18n"/> -->
-        <map:transform type="access-control-sitetree">
-          <map:parameter name="publication-id" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:act type="set-header">
-          <map:parameter name="Cache-Control" value="pre-check=0" />
-          <map:parameter name="Expires" value="-1" />
-        </map:act>
-        <map:transform src="fallback://lenya/modules/sitetree/xslt/navigation/sitetree2nav.xsl" label="navtree">
-          <map:parameter name="chosenlanguage" value="{request-param:language}"/>
-          <map:parameter name="defaultlanguage" value="{page-envelope:default-language}"/>
-          <map:parameter name="extension" value="html"/>
-        </map:transform>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <map:transform type="uuid2url-sitetree"/>
-        <map:transform type="proxy-sitetree"/>
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>
-    
-    <!-- Sitetree Javascript   -->
-    <map:pipeline>
-      <map:match pattern="*/*/*.js">
-        <map:read src="resources/javascript/{3}.js"/>
-        <map:serialize type="text"/>
-      </map:match>
-    </map:pipeline>
-    
-    <!-- Resource type icons -->
-    <map:pipeline>
-      
-      <map:match pattern="*/*/folder.gif">
-        <map:read src="fallback://lenya/modules/sitetree/resources/icons/folder.gif"/>
-      </map:match>
-
-      <map:match pattern="*/*/default.gif">
-        <map:read src="fallback://lenya/modules/sitetree/resources/icons/default.gif"/>
-      </map:match> 
- 
-      <map:match pattern="*/*/**.gif">
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test"
-            value="{resource-type:{doc-info:{1}:{2}:{page-envelope:document-uuid}:{page-envelope:document-language}:resourceType}:supportsFormat:icon}"/>
-          <map:when test="true">
-            <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language},area={2},pub={1}?format=icon"/>
-          </map:when>
-          <map:otherwise>
-            <map:read src="fallback://lenya/modules/sitetree/resources/icons/default.gif"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/sitetree/targets/test-build.xml b/trunk/src/modules/sitetree/targets/test-build.xml
deleted file mode 100644
index 486a745..0000000
--- a/trunk/src/modules/sitetree/targets/test-build.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: test-build.xml 209293 2005-07-05 16:19:18Z andreas $ -->
-
-<project name="module-sitetree-test">
-  
-  <target name="test">
-    <junit printsummary="yes" showoutput="true" haltonerror="on" haltonfailure="on">
-      <classpath>
-        <fileset dir="${build.webapp}/WEB-INF/lib" includes="*.jar, endorsed/*.jar"/>
-        <path location="${build.webapp}/WEB-INF/classes"/>
-        <path location="${build.test}"/>
-      </classpath>
-      <formatter type="plain" usefile="false" />
-      <formatter type="xml" />
-      <sysproperty key="junit.test.loglevel" value="${junit.test.loglevel}"/>
-      <sysproperty key="contextRoot" value="${basedir}/build/lenya/webapp"/>
-      <sysproperty key="tempDir" value="${basedir}/build/lenya/temp"/>
-      <test name="org.apache.lenya.cms.site.tree.SiteTreeNodeImplTest" todir="${junit.dir}"/>
-      <test name="org.apache.lenya.cms.site.tree.DefaultSiteTreeTest" todir="${junit.dir}"/>
-    </junit>
-  </target>
-  
-</project>
-  
\ No newline at end of file
diff --git a/trunk/src/modules/sitetree/test/canoo/test.xml b/trunk/src/modules/sitetree/test/canoo/test.xml
deleted file mode 100644
index 3b6fda2..0000000
--- a/trunk/src/modules/sitetree/test/canoo/test.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">
-
-<project name="sitetree" basedir="." default="main">
-  
-  <import file="../../../../modules/development/test/canoo/macros.xml"/>
-    
-  <target name="main">
-    <webtest name="sitetree.nudge">
-      &doConfig;
-      <steps>
-        <doLogin username="lenya" password="levi"/>
-        
-        <verifyXPath xpath="//div[@class = 'menublock-1' and ./div/a[@href='/default/authoring/links.html'] and following-sibling::div[@class='menublock-1' and ./div/a[@href='/default/authoring/features.html']]]"/>
-        
-        <invoke url="links.html?lenya.usecase=sitetree.nudge&amp;direction=down"/>
-        <invoke url="index.html"/>
-        <verifyXPath xpath="//div[@class = 'menublock-1' and ./div/a[@href='/default/authoring/features.html'] and following-sibling::div[@class='menublock-1' and ./div/a[@href='/default/authoring/links.html']]]"/>
-
-        <invoke url="links.html?lenya.usecase=sitetree.nudge&amp;direction=up"/>
-        <invoke url="index.html"/>
-        <verifyXPath xpath="//div[@class = 'menublock-1' and ./div/a[@href='/default/authoring/links.html'] and following-sibling::div[@class='menublock-1' and ./div/a[@href='/default/authoring/features.html']]]"/>
-        
-        <doLogout/>
-      </steps>
-    </webtest>
-  </target>
-</project>
diff --git a/trunk/src/modules/sitetree/xslt/info/sitetree2areatree.xsl b/trunk/src/modules/sitetree/xslt/info/sitetree2areatree.xsl
deleted file mode 100644
index 25e8cfa..0000000
--- a/trunk/src/modules/sitetree/xslt/info/sitetree2areatree.xsl
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: sitetree2areatree.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<!--
-        Adds an area attribute to a sitetree root element.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:s="http://apache.org/cocoon/lenya/sitetree/1.0"
-    >
-
-<xsl:param name="area"/>
-   
-<xsl:template match="s:site">
-	<s:site area="{$area}">
-		<xsl:copy-of select="@*"/>
-		<xsl:apply-templates/>
-	</s:site>
-</xsl:template>
-	
-
-<xsl:template match="@*|node()">
-	<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/sitetree/xslt/navigation/breadcrumb.xsl b/trunk/src/modules/sitetree/xslt/navigation/breadcrumb.xsl
deleted file mode 100644
index 72fc155..0000000
--- a/trunk/src/modules/sitetree/xslt/navigation/breadcrumb.xsl
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: breadcrumb.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  exclude-result-prefixes="nav"
-  >
-  
-  <xsl:template match="nav:site">
-    <div id="breadcrumb">
-      <xsl:apply-templates select="nav:node"/>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="nav:node">
-    <xsl:if test="descendant-or-self::nav:node[@current = 'true']">
-      <xsl:call-template name="separator"/>
-      <xsl:call-template name="step"/>
-      <xsl:apply-templates select="nav:node"/>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template name="step">
-    <xsl:choose>
-      <xsl:when test="@current = 'true'">
-        <xsl:apply-templates select="nav:label"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <a href="{@href}"><xsl:apply-templates select="nav:label"/></a>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  
-  <xsl:template match="nav:label">
-    <xsl:value-of select="."/>
-  </xsl:template>
-  
-  
-  <xsl:template name="separator">
-    &#x00BB;
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/sitetree/xslt/navigation/menu.xsl b/trunk/src/modules/sitetree/xslt/navigation/menu.xsl
deleted file mode 100644
index bb8e4ee..0000000
--- a/trunk/src/modules/sitetree/xslt/navigation/menu.xsl
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-    xmlns="http://www.w3.org/1999/xhtml"
-    exclude-result-prefixes="nav"
-    >
-    
-
-<xsl:template match="nav:site">
-  <div id="menu">
-    <xsl:apply-templates select="nav:node"/>
-  </div>
-</xsl:template>
-
-<xsl:template match="nav:node[@visibleinnav = 'false']"/>
-
-<xsl:template match="nav:node">
-  <xsl:choose>
-    <xsl:when test="descendant-or-self::nav:node[@current = 'true']">
-      <div class="menublock-selected-{count(ancestor-or-self::nav:node)}">
-        <xsl:call-template name="item"/>
-        <xsl:apply-templates select="nav:node"/>
-      </div>
-    </xsl:when>
-    <xsl:otherwise>
-      <div class="menublock-{count(ancestor-or-self::nav:node)}">
-        <xsl:call-template name="item"/>
-        <xsl:apply-templates select="nav:node"/>
-      </div>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-
-<xsl:template name="item">
-    <xsl:choose>
-      <xsl:when test="@current = 'true'">
-        <xsl:call-template name="item-selected"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:call-template name="item-default"/>
-      </xsl:otherwise>
-    </xsl:choose>
-</xsl:template>
-
-
-<xsl:template name="item-default">
-  <div class="menuitem-{count(ancestor-or-self::nav:node)}">
-    <a href="{@href}"><xsl:apply-templates select="nav:label"/></a>
-  </div>
-</xsl:template>
-    
-    
-<xsl:template name="item-selected">
-  <div class="menuitem-selected-{count(ancestor-or-self::nav:node)}">
-    <xsl:apply-templates select="nav:label"/>
-  </div>
-</xsl:template>
-
-
-<xsl:template match="nav:label">
-  <xsl:value-of select="."/>
-</xsl:template>
-    
-    
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/sitetree/xslt/navigation/search.xsl b/trunk/src/modules/sitetree/xslt/navigation/search.xsl
deleted file mode 100644
index 01dde15..0000000
--- a/trunk/src/modules/sitetree/xslt/navigation/search.xsl
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: search.xsl 76019 2004-11-16 20:13:32Z gregor $ -->
-
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  exclude-result-prefixes="nav"
-  >
-  
-  <xsl:template match="nav:site">
-    <div id="search">
-      <form action="?" id="form-search">
-        <p>
-          <input class="searchfield" type="text" name="queryString" alt="Search field"/>
-          <select name="lenya.usecase">
-            <option selected="true" value="lucene.search">Internal</option>
-            <option value="lucene.externalOpensearch">External</option>
-          </select>
-          <input type="hidden" value="20" name="pageLength"/>
-          <input class="searchsubmit" type="submit" value="Go" name="input-go"/>
-        </p>
-      </form>
-    </div>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/sitetree/xslt/navigation/sitetree2nav.xsl b/trunk/src/modules/sitetree/xslt/navigation/sitetree2nav.xsl
deleted file mode 100644
index e7aa708..0000000
--- a/trunk/src/modules/sitetree/xslt/navigation/sitetree2nav.xsl
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: sitetree2nav.xsl 153044 2005-02-09 09:32:59Z michi $ -->
-
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:tree="http://apache.org/cocoon/lenya/sitetree/1.0"
-    xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    exclude-result-prefixes="tree">
-
-  <xsl:param name="chosenlanguage"/>
-  <xsl:param name="defaultlanguage"/>
-  <xsl:param name="currentPath"/>
-  
-  <!--
-    Force a specific extension for node URLs. This bypasses resolving the actual extension.
-    We're setting this to 'html' by default because resolving the actual extension is quite expensive.
-  -->
-  <xsl:param name="extension">html</xsl:param>
-
-
-  <xsl:template match="tree:fragment">
-    <nav:fragment>
-      <xsl:copy-of select="@*"/>
-      <xsl:choose>
-        <xsl:when test="@base">
-          <xsl:apply-templates>
-            <xsl:with-param name="parentPath" select="@base"/>
-          </xsl:apply-templates>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:apply-templates/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </nav:fragment>
-  </xsl:template>
-
-
-  <xsl:template match="tree:site">
-    <nav:site href="/{/tree:fragment/@publication}/{@area}" label="{@area}-area" i18n:attr="label">
-      <xsl:copy-of select="@*[local-name() != 'label']"/>
-      <xsl:apply-templates/>
-    </nav:site>
-  </xsl:template>
-
-
-<!--
-Resolves the existing language of a node, preferrably
-the default language.
--->
-  <xsl:template name="resolve-existing-language">
-    <xsl:choose>
-      <xsl:when test="tree:label[lang($chosenlanguage)]">
-        <xsl:value-of select="$chosenlanguage"/>
-      </xsl:when>
-      <xsl:when test="tree:label[lang($defaultlanguage)]">
-        <xsl:value-of select="$defaultlanguage"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="tree:label/@xml:lang"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-
-<!--
-Apply nodes recursively
--->
-  <xsl:template match="tree:node[not(@visible = 'false')]">
-
-    <!-- base path of parent node -->
-    <xsl:param name="parentPath" select="''"/>
-
-    <xsl:variable name="existinglanguage">
-      <xsl:call-template name="resolve-existing-language"/>
-    </xsl:variable>
-
-    <nav:node>
-
-      <xsl:copy-of select="@id"/>
-      <xsl:copy-of select="@visibleinnav"/>
-      <xsl:copy-of select="@protected"/>
-      <xsl:copy-of select="@folder"/>
-      <xsl:copy-of select="@uuid"/>
-      
-      <!-- base path - for all nodes -->
-
-      <xsl:variable name="path" select="concat($parentPath, '/', @id)"/>
-      <xsl:attribute name="path"><xsl:value-of select="$path"/></xsl:attribute>
-
-      <!-- suffix - only when @href is not present -->
-
-      <xsl:variable name="extensionParam">
-        <xsl:choose>
-          <xsl:when test="$extension">
-            <xsl:text>?uuid2url.extension=</xsl:text><xsl:value-of select="$extension"/>
-          </xsl:when>
-          <xsl:when test="@suffix">
-            <xsl:text>?uuid2url.extension=</xsl:text><xsl:value-of select="@suffix"/>
-          </xsl:when>
-        </xsl:choose>
-      </xsl:variable>
-      
-      <xsl:variable name="area" select="ancestor::tree:fragment/@area"/>
-      <xsl:variable name="areaParam">
-        <xsl:if test="$area">
-          <xsl:text>,area=</xsl:text><xsl:value-of select="$area"/>
-        </xsl:if>
-      </xsl:variable>
-
-      <xsl:if test="$currentPath = $path">
-        <xsl:attribute name="current">true</xsl:attribute>
-      </xsl:if>
-
-      <xsl:attribute name="href">
-        <xsl:choose>
-          <xsl:when test="@href">
-            <xsl:value-of select="@href"/>
-          </xsl:when>
-          <xsl:when test="@uuid">
-            <xsl:text>lenya-document:</xsl:text>
-            <xsl:value-of select="@uuid"/>
-            <xsl:text>,lang=</xsl:text><xsl:value-of select="$existinglanguage"/>
-            <xsl:value-of select="$areaParam"/>
-            <xsl:value-of select="$extensionParam"/>
-          </xsl:when>
-        </xsl:choose>
-      </xsl:attribute>
-
-      <xsl:if test="@mimetype">
-        <xsl:attribute name="mimetype">
-          <xsl:value-of select="@mimetype"/>
-        </xsl:attribute>
-      </xsl:if>
-
-      <xsl:choose>
-        <xsl:when test="tree:label[lang($existinglanguage)]">
-          <xsl:apply-templates select="tree:label[lang($existinglanguage)]"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:apply-templates select="tree:label[1]"/>
-        </xsl:otherwise>
-      </xsl:choose>
-
-      <xsl:apply-templates select="tree:node">
-        <xsl:with-param name="parentPath" select="$path"/>
-      </xsl:apply-templates>
-
-    </nav:node>
-  </xsl:template>
-
-
-  <xsl:template match="tree:label">
-    <nav:label>
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-    </nav:label>
-  </xsl:template>
-
-
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/sitetree/xslt/navigation/tabs.xsl b/trunk/src/modules/sitetree/xslt/navigation/tabs.xsl
deleted file mode 100644
index bdf1c7f..0000000
--- a/trunk/src/modules/sitetree/xslt/navigation/tabs.xsl
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: tabs.xsl 189880 2005-06-10 02:36:09Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-    xmlns="http://www.w3.org/1999/xhtml"
-    exclude-result-prefixes="nav"
-    >
-
-
-<xsl:template match="nav:site">
-
-  <div id="tabs">
-
-    <xsl:call-template name="pre-separator"/>
-    <xsl:for-each select="nav:node">
-      <xsl:if test="position() &gt; 1 and @visibleinnav = 'true'">
-        <xsl:call-template name="separator"/>
-      </xsl:if>
-      
-      <xsl:choose>
-        <xsl:when test="@visibleinnav = 'false'"/>
-        <xsl:when test="descendant-or-self::nav:node[@current = 'true']">
-          <xsl:call-template name="tab-selected"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="tab"/>
-        </xsl:otherwise>
-      </xsl:choose>
-        
-    </xsl:for-each>
-    <xsl:call-template name="post-separator"/>
-  </div>
-</xsl:template>
-
-
-<xsl:template name="tab">
-  <xsl:call-template name="label"/>
-</xsl:template>
-
-
-<xsl:template name="tab-selected">
-  <xsl:call-template name="label">
-    <xsl:with-param name="suffix">-selected</xsl:with-param>
-  </xsl:call-template>
-</xsl:template>
-
-
-<xsl:template name="label">
-  <xsl:param name="suffix"/>
-  <a class="tab{$suffix}">
-    <xsl:if test="not(@current = 'true')">
-      <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
-    </xsl:if>
-    <span><xsl:apply-templates select="nav:label"/></span>
-  </a>
-</xsl:template>
-
-
-<xsl:template match="nav:label">
-  <xsl:value-of select="."/>
-</xsl:template>
-
-
-<xsl:template name="pre-separator">
-</xsl:template>
-
-
-<xsl:template name="separator">
-   <xsl:text>&#160;</xsl:text>
-</xsl:template>
-
-
-<xsl:template name="post-separator">
-</xsl:template>
-
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/sourcerepository/config/cocoon-xconf/sourcenodefactory.xconf b/trunk/src/modules/sourcerepository/config/cocoon-xconf/sourcenodefactory.xconf
deleted file mode 100644
index 621802a..0000000
--- a/trunk/src/modules/sourcerepository/config/cocoon-xconf/sourcenodefactory.xconf
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xconf xpath="/cocoon" unless="/cocoon/component[@class = 'org.apache.lenya.cms.repository.SourceNodeFactory']">
-  <component
-    logger="lenya.nodefactory.source"
-    role="org.apache.lenya.cms.repository.NodeFactory"
-    class="org.apache.lenya.cms.repository.SourceNodeFactory"/>
-</xconf>
\ No newline at end of file
diff --git a/trunk/src/modules/sourcerepository/config/module.xml b/trunk/src/modules/sourcerepository/config/module.xml
deleted file mode 100644
index fe279fa..0000000
--- a/trunk/src/modules/sourcerepository/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.sourcerepository</id>
-  <export package="org.apache.lenya.cms.repository"/>
-  <depends module="org.apache.lenya.modules.ac"/>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Repository Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Lenya Repository API (Draft)</description>
-</module>
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ContentSourceWrapper.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ContentSourceWrapper.java
deleted file mode 100644
index ecc9061..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ContentSourceWrapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-
-/**
- * Content source wrapper.
- */
-public class ContentSourceWrapper extends SourceWrapper {
-
-    /**
-     * Ctor.
-     * @param node
-     * @param sourceURI
-     * @param manager
-     * @param logger
-     */
-    public ContentSourceWrapper(SourceNode node, String sourceURI, ServiceManager manager, Logger logger) {
-        super(node, sourceURI, manager, logger);
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/MetaSourceWrapper.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/MetaSourceWrapper.java
deleted file mode 100644
index e6caa8a..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/MetaSourceWrapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.MetaDataOwner;
-
-/**
- * Provides access to a meta data source.
- */
-public class MetaSourceWrapper extends SourceWrapper implements MetaDataOwner {
-
-    protected static final String LENYA_META_SUFFIX = "meta";
-
-    /**
-     * Ctor.
-     * @param node
-     * @param sourceURI
-     * @param manager
-     * @param logger
-     */
-    public MetaSourceWrapper(SourceNode node, String sourceURI, ServiceManager manager,
-            Logger logger) {
-        super(node, sourceURI + "." + LENYA_META_SUFFIX, manager, logger);
-        this.handler = new ModifiableMetaDataHandler(manager, this);
-    }
-    
-    private ModifiableMetaDataHandler handler;
-
-    public MetaData getMetaData(String namespaceUri) throws MetaDataException {
-        return this.handler.getMetaData(namespaceUri);
-    }
-
-    public String[] getMetaDataNamespaceUris() throws MetaDataException {
-        return this.handler.getMetaDataNamespaceUris();
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
deleted file mode 100644
index 96be144..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.io.OutputStream;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * Modifiable meta data handler.
- */
-public class ModifiableMetaDataHandler extends SourceNodeMetaDataHandler implements Persistable {
-    
-    private MetaSourceWrapper sourceWrapper;
-    private boolean changed = false;
-    
-    /**
-     * @param manager The service manager.
-     * @param sourceWrapper The source wrapper.
-     */
-    public ModifiableMetaDataHandler(ServiceManager manager, MetaSourceWrapper sourceWrapper) {
-        super(manager, sourceWrapper.getRealSourceUri());
-        this.sourceWrapper = sourceWrapper;
-        try {
-            this.sourceWrapper.getNode().setPersistable(this);
-        } catch (RepositoryException e) {
-            throw new RuntimeException(e);
-        }
-    }
-    
-
-    public void save() throws RepositoryException {
-        if (!changed) {
-            return;
-        }
-        try {
-            NamespaceHelper helper = new NamespaceHelper(META_DATA_NAMESPACE, "", ELEMENT_METADATA);
-            Collection namespaces = this.namespace2metamap.keySet();
-            for (Iterator i = namespaces.iterator(); i.hasNext();) {
-                String namespace = (String) i.next();
-
-                Element setElement = helper.createElement(ELEMENT_SET);
-                setElement.setAttribute(ATTRIBUTE_NAMESPACE, namespace);
-                helper.getDocument().getDocumentElement().appendChild(setElement);
-
-                Map map = getMetaDataMap(namespace);
-                Collection keys = map.keySet();
-                for (Iterator keyIterator = keys.iterator(); keyIterator.hasNext();) {
-                    String key = (String) keyIterator.next();
-
-                    Element elementElement = helper.createElement(ELEMENT_ELEMENT);
-                    elementElement.setAttribute(ATTRIBUTE_KEY, key);
-
-                    List values = (List) map.get(key);
-                    for (Iterator valueIterator = values.iterator(); valueIterator.hasNext();) {
-                        String value = (String) valueIterator.next();
-                        if (!value.equals("")) {
-                            Element valueElement = helper.createElement(ELEMENT_VALUE, value);
-                            elementElement.appendChild(valueElement);
-                        }
-                    }
-                    if (elementElement.hasChildNodes()) {
-                        setElement.appendChild(elementElement);
-                    }
-                }
-            }
-            OutputStream oStream = this.sourceWrapper.getOutputStream();
-            DocumentHelper.writeDocument(helper.getDocument(), oStream);
-            if (oStream != null) {
-                oStream.flush();
-                try {
-                    oStream.close();
-                } catch (Throwable t) {
-                    throw new RuntimeException("Could not write meta XML: ", t);
-                }
-            }
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    protected void addValue(String namespaceUri, String key, String value) throws MetaDataException {
-        List values = getValueList(namespaceUri, key);
-        values.add(value);
-        changed();
-    }
-
-    protected void removeAllValues(String namespaceUri, String key) throws MetaDataException {
-        List values = getValueList(namespaceUri, key);
-        values.clear();
-        changed();
-    }
-
-    protected void setValue(String namespaceUri, String key, String value) throws MetaDataException {
-        List values = getValueList(namespaceUri, key);
-        values.clear();
-        values.add(value);
-        changed();
-    }
-
-    private void changed() {
-        this.changed = true;
-    }
-
-    public boolean isModified() {
-        return this.changed;
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
deleted file mode 100644
index df6ca5b..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Collection;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.TraversableSource;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.observation.DocumentEvent;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
-import org.apache.lenya.cms.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.RCML;
-import org.apache.lenya.cms.rc.RevisionControlException;
-import org.apache.lenya.transaction.Lock;
-import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.transaction.Transactionable;
-
-/**
- * A repository node.
- * 
- * @version $Id$
- */
-public class SourceNode extends AbstractLogEnabled implements Node, Transactionable {
-
-    protected ServiceManager manager;
-
-    private ContentSourceWrapper contentSource;
-    private MetaSourceWrapper metaSource;
-
-    /**
-     * Ctor.
-     * 
-     * @param session
-     * @param sourceUri
-     * @param manager
-     * @param logger
-     */
-    public SourceNode(Session session, String sourceUri, ServiceManager manager, Logger logger) {
-        this.manager = manager;
-        enableLogging(logger);
-        this.session = session;
-
-        this.contentSource = new ContentSourceWrapper(this, sourceUri, manager, logger);
-        this.metaSource = new MetaSourceWrapper(this, sourceUri, manager, logger);
-    }
-
-    protected ContentSourceWrapper getContentSource() {
-        return this.contentSource;
-    }
-
-    protected MetaSourceWrapper getMetaSource() {
-        return this.metaSource;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#deleteTransactionable()
-     */
-    public void deleteTransactionable() throws RepositoryException {
-        this.contentSource.deleteTransactionable();
-        this.metaSource.deleteTransactionable();
-        getRcml().delete();
-    }
-
-    protected String getUserId() {
-        String userId = null;
-        Identity identity = getSession().getIdentity();
-        if (identity != null) {
-            User user = identity.getUser();
-            if (user != null) {
-                userId = user.getId();
-            }
-        }
-        return userId;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#checkin()
-     */
-    public void checkin() throws RepositoryException {
-        RCML rcml = getRcml();
-        synchronized (rcml) {
-            try {
-                if (!rcml.isCheckedOutBySession(getSession())) {
-                    throw new RepositoryException("Cannot check in node [" + getSourceURI()
-                            + "]: not checked out by this session!");
-                }
-                rcml.checkIn(this, exists(), getSession().isDirty(this));
-            } catch (Exception e) {
-                throw new RepositoryException(e);
-            }
-        }
-    }
-
-    public void forceCheckIn() throws RepositoryException {
-        RCML rcml = getRcml();
-        synchronized (rcml) {
-            try {
-                if (!rcml.isCheckedOut()) {
-                    throw new RepositoryException("Cannot check in node [" + getSourceURI()
-                            + "]: not checked out!");
-                }
-                rcml.checkIn(this, false, false);
-            } catch (Exception e) {
-                throw new RepositoryException(e);
-            }
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#isCheckedOut()
-     */
-    public boolean isCheckedOut() throws RepositoryException {
-        try {
-            return getRcml().isCheckedOut();
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public boolean isCheckedOutBySession(Session session) throws RepositoryException {
-        try {
-            return getRcml().isCheckedOutBySession(session);
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public void checkout(boolean restrictedToSession) throws RepositoryException {
-
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("SourceNode::checkout() called, sourceURI [" + getSourceURI() + "]");
-
-        RCML rcml = getRcml();
-        synchronized (rcml) {
-            try {
-                if (rcml.isCheckedOut() && !rcml.isCheckedOutBySession(getSession())) {
-                    throw new RepositoryException("The node [" + this
-                            + "] is already checked out by another session!");
-                }
-                if (!rcml.isCheckedOut()) {
-                    rcml.checkOut(this, restrictedToSession);
-                }
-            } catch (RevisionControlException e) {
-                throw new RepositoryException(e);
-            }
-        }
-    }
-
-    public void checkout() throws RepositoryException {
-        checkout(true);
-    }
-
-    private Lock lock;
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#hasChanged()
-     */
-    public boolean hasChanged() throws RepositoryException {
-        try {
-            int currentVersion = getCurrentRevisionNumber();
-            int lockVersion = getLock().getVersion();
-            return currentVersion > lockVersion;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    protected int getCurrentRevisionNumber() throws RepositoryException {
-        CheckInEntry entry;
-        try {
-            entry = getRcml().getLatestCheckInEntry();
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        }
-        if (entry == null) {
-            return 0;
-        } else {
-            return entry.getVersion();
-        }
-    }
-
-    /**
-     * @return The document node, if this is a meta data node, or the node itself otherwise.
-     * @throws ServiceException
-     * @throws RepositoryException
-     */
-    protected Node getDocumentNode() throws ServiceException, RepositoryException {
-        Node node;
-        String sourceUri = getSourceURI();
-        if (sourceUri.endsWith(".meta")) {
-            String documentSourceUri = sourceUri
-                    .substring(0, sourceUri.length() - ".meta".length());
-            NodeFactory factory = null;
-            try {
-                factory = (NodeFactory) this.manager.lookup(NodeFactory.ROLE);
-                node = (Node) factory.buildItem(getSession(), documentSourceUri);
-            } finally {
-                if (factory != null) {
-                    this.manager.release(factory);
-                }
-            }
-        } else {
-            node = this;
-        }
-        return node;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#createTransactionable()
-     */
-    public void createTransactionable() throws RepositoryException {
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#lock()
-     */
-    public synchronized void lock() throws RepositoryException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Locking [" + this + "]");
-        }
-        try {
-            int currentRev = getCurrentRevisionNumber();
-            int contentLoadRev = getContentSource().getLoadRevision();
-            int contentRev = contentLoadRev == -1 ? currentRev : contentLoadRev;
-
-            int metaLoadRev = getMetaSource().getLoadRevision();
-            int metaRev = metaLoadRev == -1 ? currentRev : metaLoadRev;
-
-            int lockRev = Math.min(contentRev, metaRev);
-            this.lock = getSession().createLock(this, lockRev);
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#getLock()
-     */
-    public Lock getLock() {
-        return this.lock;
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#unlock()
-     */
-    public void unlock() throws RepositoryException {
-        this.lock = null;
-        try {
-            getSession().removeLock(this);
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.transaction.Transactionable#isLocked()
-     */
-    public boolean isLocked() throws RepositoryException {
-        return this.lock != null;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "node " + getSourceURI();
-    }
-
-    /**
-     * 
-     */
-    public Collection getChildren() throws RepositoryException {
-        SourceResolver resolver = null;
-        TraversableSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(this.contentSource.getRealSourceUri());
-            Collection children = source.getChildren();
-            java.util.Iterator iterator = children.iterator();
-            java.util.Vector newChildren = new java.util.Vector();
-            while (iterator.hasNext()) {
-                TraversableSource child = (TraversableSource) iterator.next();
-                newChildren.add(new SourceNode(getSession(),
-                        getSourceURI() + "/" + child.getName(), this.manager, getLogger()));
-            }
-            return newChildren;
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    /**
-     * 
-     */
-    public boolean isCollection() throws RepositoryException {
-        SourceResolver resolver = null;
-        TraversableSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(this.contentSource.getRealSourceUri());
-            return source.isCollection();
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.repository.Node#getSourceURI()
-     */
-    public String getSourceURI() {
-        return this.contentSource.getSourceUri();
-    }
-
-    private Session session;
-
-    /**
-     * @see org.apache.lenya.cms.repository.Node#getSession()
-     */
-    public Session getSession() {
-        return this.session;
-    }
-
-    public void registerDirty() throws RepositoryException {
-        try {
-            if (!getSession().isDirty(this)) {
-                getSession().registerDirty(this);
-                enqueueEvent(DocumentEvent.CHANGED);
-            }
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    protected void enqueueEvent(Object descriptor) {
-        RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, this, getLogger(),
-                descriptor);
-        getSession().enqueueEvent(event);
-    }
-
-    public void registerRemoved() throws RepositoryException {
-        try {
-            getSession().registerRemoved(this);
-            enqueueEvent(DocumentEvent.REMOVED);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    private RCML rcml;
-    private Persistable persistable;
-
-    protected synchronized RCML getRcml() {
-        if (this.rcml == null) {
-            SourceNodeRcmlFactory factory = SourceNodeRcmlFactory.getInstance();
-            this.rcml = factory.getRcml(this, this.manager);
-        }
-        return this.rcml;
-    }
-
-    public History getHistory() {
-        return new SourceNodeHistory(this, this.manager, getLogger());
-    }
-
-    public MetaData getMetaData(String namespaceUri) throws MetaDataException {
-        return this.metaSource.getMetaData(namespaceUri);
-    }
-
-    public boolean exists() throws RepositoryException {
-        return this.contentSource.exists();
-    }
-
-    public OutputStream getOutputStream() throws RepositoryException {
-        return this.contentSource.getOutputStream();
-    }
-
-    public long getContentLength() throws RepositoryException {
-        return this.contentSource.getContentLength();
-    }
-
-    public InputStream getInputStream() throws RepositoryException {
-        return this.contentSource.getInputStream();
-    }
-
-    public long getLastModified() throws RepositoryException {
-
-        if (!exists()) {
-            throw new RepositoryException("The node [" + this + "] does not exist!");
-        }
-
-        long contentLastModified = this.contentSource.getLastModified();
-        long metaLastModified = 0;
-        if (this.metaSource.exists()) {
-            metaLastModified = this.metaSource.getLastModified();
-        }
-
-        return Math.max(contentLastModified, metaLastModified);
-    }
-
-    public String getMimeType() throws RepositoryException {
-        return this.contentSource.getMimeType();
-    }
-
-    public String[] getMetaDataNamespaceUris() throws MetaDataException {
-        return this.metaSource.getMetaDataNamespaceUris();
-    }
-
-    public synchronized void saveTransactionable() throws TransactionException {
-        if (!isCheckedOut()) {
-            throw new RepositoryException("Cannot save node [" + getSourceURI()
-                    + "]: not checked out!");
-        }
-        this.contentSource.saveTransactionable();
-        this.metaSource.saveTransactionable();
-    }
-
-    public void delete() throws RepositoryException {
-        this.contentSource.delete();
-        this.metaSource.delete();
-        registerRemoved();
-    }
-
-    public String getCheckoutUserId() throws RepositoryException {
-        RCML rcml = getRcml();
-        synchronized (rcml) {
-            try {
-                if (!rcml.isCheckedOut()) {
-                    throw new RepositoryException("The node [" + this + "] is not checked out!");
-                }
-                return rcml.getLatestEntry().getIdentity();
-            } catch (RevisionControlException e) {
-                throw new RepositoryException(e);
-            }
-        }
-    }
-
-    public void copyRevisionsFrom(Node source) throws RepositoryException {
-        try {
-            boolean wasLocked = isLocked();
-            if (wasLocked) {
-                unlock();
-            }
-            getRcml().copyFrom(this, source);
-            if (wasLocked) {
-                // this is a hack: update the lock revision to the latest copied revision to avoid
-                // the "node has changed" error
-                this.lock = getSession().createLock(this, getCurrentRevisionNumber());
-            }
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        } catch (TransactionException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public void rollback(int revisionNumber) throws RepositoryException {
-        try {
-            long time = getHistory().getRevision(revisionNumber).getTime();
-            getRcml().restoreBackup(this, time);
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public boolean isCheckedOutBySession() throws TransactionException {
-        return isCheckedOutBySession(getSession());
-    }
-
-    public void setPersistable(Persistable item) throws RepositoryException {
-        this.persistable = item;
-    }
-
-    public Persistable getPersistable() {
-        return this.persistable;
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeFactory.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeFactory.java
deleted file mode 100644
index 506fc7e..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-
-/**
- * Factory to create source nodes.
- * 
- * @version $Id$
- */
-public class SourceNodeFactory extends AbstractLogEnabled implements NodeFactory, Serviceable,
-        ThreadSafe {
-
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     */
-    public SourceNodeFactory() {
-    }
-
-    public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        Node node = new SourceNode(session, key, this.manager, getLogger());
-        return node;
-    }
-
-    public String getItemType() {
-        return Node.IDENTIFIABLE_TYPE;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeHistory.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeHistory.java
deleted file mode 100644
index 4e8c074..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeHistory.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.util.Vector;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.RCML;
-
-/**
- * Revision history implementation.
- */
-public class SourceNodeHistory extends AbstractLogEnabled implements History {
-
-    private SourceNode node;
-    private ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param node The node which the history belongs to.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public SourceNodeHistory(SourceNode node, ServiceManager manager, Logger logger) {
-        this.node = node;
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    public Revision getLatestRevision() {
-        try {
-            int[] numbers = getRevisionNumbers();
-            if (numbers.length > 0) {
-                return getRevision(numbers[0]);
-            }
-            else {
-                throw new RepositoryException("There is no revision for node [" + this.node + "] yet.");
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public Revision getRevision(int number) throws RepositoryException {
-        return new SourceNodeRevision(this.node, number, this.manager, getLogger());
-    }
-
-    public int[] getRevisionNumbers() {
-        RCML rcml = this.node.getRcml();
-        try {
-            Vector entries = rcml.getBackupEntries();
-            int[] numbers = new int[entries.size()];
-            for (int i = 0; i < entries.size(); i++) {
-                CheckInEntry entry = (CheckInEntry) entries.get(i);
-                numbers[i] = entry.getVersion();
-            }
-            return numbers;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java
deleted file mode 100644
index 78fe130..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.metadata.Element;
-import org.apache.lenya.cms.metadata.ElementSet;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.MetaDataRegistry;
-
-/**
- * Source-node-based meta data.
- */
-public class SourceNodeMetaData extends AbstractLogEnabled implements MetaData {
-
-    private String namespaceUri;
-    private ServiceManager manager;
-    private SourceNodeMetaDataHandler handler;
-
-    /**
-     * Ctor.
-     * @param namespaceUri The namespace URI.
-     * @param handler The meta data handler.
-     * @param manager The service manager.
-     */
-    public SourceNodeMetaData(String namespaceUri, SourceNodeMetaDataHandler handler,
-            ServiceManager manager) {
-        this.namespaceUri = namespaceUri;
-        this.handler = handler;
-        this.manager = manager;
-    }
-
-    protected String getNamespaceUri() {
-        return this.namespaceUri;
-    }
-
-    protected SourceNodeMetaDataHandler getHandler() {
-        return this.handler;
-    }
-
-    private ElementSet elementSet;
-
-    public ElementSet getElementSet() {
-        if (this.elementSet == null) {
-            try {
-                MetaDataRegistry registry = (MetaDataRegistry) this.manager
-                        .lookup(MetaDataRegistry.ROLE);
-                this.elementSet = registry.getElementSet(this.namespaceUri);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-
-        }
-        return this.elementSet;
-    }
-
-    public String[] getValues(String key) throws MetaDataException {
-        String[] values = getHandler().getValues(this.namespaceUri, key);
-        if (values.length == 0) {
-            checkKey(key);
-        }
-        return values;
-    }
-
-    public String getFirstValue(String key) throws MetaDataException {
-        String[] values = getValues(key);
-        if (values.length == 0) {
-            checkKey(key);
-            return null;
-        } else {
-            return values[0];
-        }
-    }
-    
-    /**
-     * Cache for better performance.
-     */
-    private Set availableKeys;
-    
-    protected Set availableKeys() {
-        if (this.availableKeys == null) {
-            this.availableKeys = new HashSet(Arrays.asList(getAvailableKeys()));
-        }
-        return this.availableKeys;
-    }
-
-    public String[] getAvailableKeys() {
-        Element[] elements;
-        elements = getElementSet().getElements();
-        String[] keys = new String[elements.length];
-        for (int i = 0; i < elements.length; i++) {
-            keys[i] = elements[i].getName();
-        }
-        return keys;
-    }
-
-    protected void checkKey(String key) throws MetaDataException {
-        if (!isValidAttribute(key)) {
-            throw new MetaDataException("The meta data element set ["
-                    + getElementSet().getNamespaceUri() + "] does not support the key [" + key
-                    + "]!");
-        }
-    }
-
-    public void setValue(String key, String value) throws MetaDataException {
-        checkKey(key);
-        if (value == null) {
-            throw new MetaDataException("The value for key [" + key + "] must not be null.");
-        }
-        getHandler().setValue(this.namespaceUri, key, value);
-    }
-
-    public void addValue(String key, String value) throws MetaDataException {
-        checkKey(key);
-        if (!getElementSet().getElement(key).isMultiple() && getValues(key).length > 0) {
-            throw new MetaDataException("The element [" + key
-                    + "] doesn't support multiple values!");
-        }
-        getHandler().addValue(this.namespaceUri, key, value);
-    }
-
-    public void replaceBy(MetaData other) throws MetaDataException {
-        Element[] elements = getElementSet().getElements();
-        for (int i = 0; i < elements.length; i++) {
-            if (elements[i].getActionOnCopy() == Element.ONCOPY_COPY) {
-                replaceBy(other, elements[i]);
-            } else if (elements[i].getActionOnCopy() == Element.ONCOPY_DELETE) {
-                String key = elements[i].getName();
-                removeAllValues(key);
-            }
-        }
-    }
-
-    protected void replaceBy(MetaData other, Element element) throws MetaDataException {
-        String key = element.getName();
-        removeAllValues(key);
-        String[] values = other.getValues(key);
-        for (int j = 0; j < values.length; j++) {
-            addValue(key, values[j]);
-        }
-    }
-
-    public void forcedReplaceBy(MetaData other) throws MetaDataException {
-        Element[] elements = getElementSet().getElements();
-        for (int i = 0; i < elements.length; i++) {
-            replaceBy(other, elements[i]);
-        }
-    }
-
-    public String[] getPossibleKeys() {
-        return getAvailableKeys();
-    }
-
-    public boolean isValidAttribute(String key) {
-        return availableKeys().contains(key);
-    }
-
-    public long getLastModified() throws MetaDataException {
-        try {
-            return getHandler().getLastModified();
-        } catch (RepositoryException e) {
-            throw new MetaDataException(e);
-        }
-    }
-
-    public void removeAllValues(String key) throws MetaDataException {
-        checkKey(key);
-        getHandler().removeAllValues(this.namespaceUri, key);
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
deleted file mode 100644
index 2e54a09..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.metadata.ElementSet;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.MetaDataOwner;
-import org.apache.lenya.cms.metadata.MetaDataRegistry;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Handles the meta data of source nodes.
- */
-public class SourceNodeMetaDataHandler implements MetaDataOwner {
-
-    private ServiceManager manager;
-    private String sourceUri;
-
-    /**
-     * @param manager The service manager.
-     * @param sourceUri The soure URI.
-     */
-    public SourceNodeMetaDataHandler(ServiceManager manager, String sourceUri) {
-        this.manager = manager;
-        this.sourceUri = sourceUri;
-    }
-
-    private Map namespace2metadata = new HashMap();
-
-    public MetaData getMetaData(String namespaceUri) throws MetaDataException {
-
-        MetaData meta = (MetaData) this.namespace2metadata.get(namespaceUri);
-        if (meta == null) {
-            
-            MetaDataRegistry registry = null;
-            try {
-                registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-                if (!registry.isRegistered(namespaceUri)) {
-                    throw new MetaDataException("The namespace [" + namespaceUri
-                            + "] is not registered!");
-                }
-            } catch (ServiceException e) {
-                throw new MetaDataException(e);
-            } finally {
-                if (registry != null) {
-                    this.manager.release(registry);
-                }
-            }
-            
-            synchronized (this) {
-                meta = new SourceNodeMetaData(namespaceUri, this, this.manager);
-                this.namespace2metadata.put(namespaceUri, meta);
-            }
-        }
-        return meta;
-    }
-
-    protected Map namespace2metamap = null;
-
-    protected synchronized Map getMetaDataMap(String namespaceUri) throws MetaDataException {
-        if (this.namespace2metamap == null) {
-            loadMetaData();
-        }
-        Map map = (Map) this.namespace2metamap.get(namespaceUri);
-        if (map == null) {
-            map = new HashMap();
-            this.namespace2metamap.put(namespaceUri, map);
-        }
-        return map;
-    }
-
-    protected static final String META_DATA_NAMESPACE = "http://apache.org/lenya/metadata/1.0";
-    protected static final String ELEMENT_METADATA = "metadata";
-    protected static final String ELEMENT_SET = "element-set";
-    protected static final String ELEMENT_ELEMENT = "element";
-    protected static final String ELEMENT_VALUE = "value";
-    protected static final String ATTRIBUTE_NAMESPACE = "namespace";
-    protected static final String ATTRIBUTE_KEY = "key";
-
-    protected synchronized void loadMetaData() throws MetaDataException {
-
-        if (this.namespace2metamap != null) {
-            throw new IllegalStateException("The meta data have already been loaded!");
-        }
-
-        try {
-            this.namespace2metamap = new HashMap();
-            if (SourceUtil.exists(this.sourceUri, this.manager)) {
-                Document xml = SourceUtil.readDOM(this.sourceUri, this.manager);
-                if (!xml.getDocumentElement().getNamespaceURI().equals(META_DATA_NAMESPACE)) {
-                    loadLegacyMetaData(xml);
-                } else {
-                    NamespaceHelper helper = new NamespaceHelper(META_DATA_NAMESPACE, "", xml);
-                    Element[] setElements = helper.getChildren(xml.getDocumentElement(),
-                            ELEMENT_SET);
-                    for (int setIndex = 0; setIndex < setElements.length; setIndex++) {
-                        String namespace = setElements[setIndex].getAttribute(ATTRIBUTE_NAMESPACE);
-                        Element[] elementElements = helper.getChildren(setElements[setIndex],
-                                ELEMENT_ELEMENT);
-                        Map element2values = new HashMap();
-                        for (int elemIndex = 0; elemIndex < elementElements.length; elemIndex++) {
-                            String key = elementElements[elemIndex].getAttribute(ATTRIBUTE_KEY);
-                            Element[] valueElements = helper.getChildren(
-                                    elementElements[elemIndex], ELEMENT_VALUE);
-                            List values = new ArrayList();
-                            for (int valueIndex = 0; valueIndex < valueElements.length; valueIndex++) {
-                                String value = DocumentHelper
-                                        .getSimpleElementText(valueElements[valueIndex]);
-                                values.add(value);
-                            }
-                            element2values.put(key, values);
-                        }
-                        this.namespace2metamap.put(namespace, element2values);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw new MetaDataException(e);
-        }
-    }
-
-    protected void loadLegacyMetaData(Document xml) throws MetaDataException {
-        NamespaceHelper helper = new NamespaceHelper(PageEnvelope.NAMESPACE, "", xml);
-
-        Element metaElement = helper.getFirstChild(xml.getDocumentElement(), "meta");
-
-        Element internalElement = helper.getFirstChild(metaElement, "internal");
-
-        Element[] internalElements = helper.getChildren(internalElement);
-        for (int i = 0; i < internalElements.length; i++) {
-            String value = DocumentHelper.getSimpleElementText(internalElements[i]);
-            String key = internalElements[i].getLocalName();
-
-            if (key.equals("workflowVersion")) {
-                List values = getValueList("http://apache.org/lenya/metadata/workflow/1.0", key);
-                values.add(value);
-            } else {
-                List values = getValueList("http://apache.org/lenya/metadata/document/1.0", key);
-                values.add(value);
-            }
-        }
-
-        NamespaceHelper dcHelper = new NamespaceHelper(DublinCore.DC_NAMESPACE, "", xml);
-        Element dcElement = helper.getFirstChild(metaElement, "dc");
-
-        if (dcElement != null) {
-            MetaDataRegistry registry = null;
-            try {
-                registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-                ElementSet dcElementSet = registry.getElementSet(DublinCore.DC_NAMESPACE);
-                ElementSet dcTermSet = registry.getElementSet(DublinCore.DCTERMS_NAMESPACE);
-
-                Element[] dcElements = dcHelper.getChildren(dcElement);
-                for (int i = 0; i < dcElements.length; i++) {
-                    String value = DocumentHelper.getSimpleElementText(dcElements[i]);
-
-                    String key = dcElements[i].getLocalName();
-
-                    if (dcElementSet.containsElement(key)) {
-                        List values = getValueList(DublinCore.DC_NAMESPACE, key);
-                        values.add(value);
-                    } else if (dcTermSet.containsElement(key)) {
-                        List values = getValueList(DublinCore.DCTERMS_NAMESPACE, key);
-                        values.add(value);
-                    } else {
-                        throw new RepositoryException("The dublin core key [" + key
-                                + "] is not supported.");
-                    }
-                }
-            } catch (MetaDataException e) {
-                throw e;
-            } catch (Exception e) {
-                throw new MetaDataException(e);
-            } finally {
-                if (registry != null) {
-                    this.manager.release(registry);
-                }
-            }
-        }
-
-    }
-
-    protected String[] getValues(String namespaceUri, String key, int revisionNumber)
-            throws MetaDataException {
-        List values = getValueList(namespaceUri, key);
-        return (String[]) values.toArray(new String[values.size()]);
-    }
-
-    protected String[] getValues(String namespaceUri, String key) throws MetaDataException {
-        List values = getValueList(namespaceUri, key);
-        return (String[]) values.toArray(new String[values.size()]);
-    }
-
-    protected List getValueList(String namespaceUri, String key) throws MetaDataException {
-        Map map = getMetaDataMap(namespaceUri);
-        List values = (List) map.get(key);
-        if (values == null) {
-            synchronized (this) {
-                values = new ArrayList();
-                map.put(key, values);
-            }
-        }
-        return values;
-    }
-
-    protected void addValue(String namespaceUri, String key, String value) throws MetaDataException {
-        throw new IllegalStateException("Operation not supported");
-    }
-
-    protected void removeAllValues(String namespaceUri, String key) throws MetaDataException {
-        throw new IllegalStateException("Operation not supported");
-    }
-
-    protected void setValue(String namespaceUri, String key, String value) throws MetaDataException {
-        throw new IllegalStateException("Operation not supported");
-    }
-
-    public String[] getMetaDataNamespaceUris() throws MetaDataException {
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-            return registry.getNamespaceUris();
-        } catch (ServiceException e) {
-            throw new MetaDataException(e);
-        } finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-    }
-
-    protected long getLastModified() throws RepositoryException {
-        try {
-            return SourceUtil.getLastModified(this.sourceUri, this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java
deleted file mode 100644
index 6486e1d..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: RCML.java 473861 2006-11-12 03:51:14Z gregor $  */
-
-package org.apache.lenya.cms.repository;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.CheckOutEntry;
-import org.apache.lenya.cms.rc.RCML;
-import org.apache.lenya.cms.rc.RCMLEntry;
-import org.apache.lenya.cms.rc.RevisionControlException;
-import org.apache.lenya.util.Assert;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Handle with the RCML file
- */
-public class SourceNodeRCML implements RCML {
-
-    protected static final String NAMESPACE = "";
-
-    private boolean dirty = false;
-    private int maximalNumberOfEntries = 5;
-    private Vector entries;
-
-    private ServiceManager manager;
-
-    private String contentSourceUri;
-    private String metaSourceUri;
-
-    private static Map ELEMENTS = new HashMap();
-    protected static final String ELEMENT_CHECKIN = "CheckIn";
-    protected static final String ELEMENT_CHECKOUT = "CheckOut";
-    protected static final String ELEMENT_BACKUP = "Backup";
-    protected static final String ELEMENT_TIME = "Time";
-    protected static final String ELEMENT_VERSION = "Version";
-    protected static final String ELEMENT_IDENTITY = "Identity";
-    protected static final String ELEMENT_XPSREVISIONCONTROL = "XPSRevisionControl";
-    protected static final String ELEMENT_SESSION = "session";
-
-    protected static final String ATTR_BACKUP = "backup";
-    protected static final String ATTR_TIME = "time";
-    protected static final String ATTR_VERSION = "version";
-    protected static final String ATTR_IDENTITY = "identity";
-    protected static final String ATTR_SESSION = "session";
-
-    {
-        ELEMENTS.put(new Short(ci), ELEMENT_CHECKIN);
-        ELEMENTS.put(new Short(co), ELEMENT_CHECKOUT);
-    }
-
-    /**
-     * @param contentSourceUri The content source URI.
-     * @param metaSourceUri The meta source URI.
-     * @param manager The service manager.
-     */
-    public SourceNodeRCML(String contentSourceUri, String metaSourceUri, ServiceManager manager) {
-        this.maximalNumberOfEntries = 200;
-        this.maximalNumberOfEntries = (2 * this.maximalNumberOfEntries) + 1;
-        this.manager = manager;
-        this.contentSourceUri = contentSourceUri;
-        this.metaSourceUri = metaSourceUri;
-    }
-
-    protected static final String RCML_EXTENSION = ".rcml";
-
-    private static final String ALL_SESSIONS = "unrestricted";
-
-    protected String getRcmlSourceUri() {
-        return this.contentSourceUri + RCML_EXTENSION;
-    }
-
-    /**
-     * Call the method write, if the document is dirty
-     * 
-     * @throws IOException if an error occurs
-     * @throws Exception if an error occurs
-     */
-    protected void finalize() throws IOException, Exception {
-        if (this.isDirty()) {
-            write();
-        }
-    }
-
-    /**
-     * Write the XML RCML-document in the RCML-file.
-     * @throws RevisionControlException if an error occurs
-     */
-    public synchronized void write() throws RevisionControlException {
-        NamespaceHelper helper = saveToXml();
-        Assert.notNull("XML document", helper);
-        try {
-            SourceUtil.writeDOM(helper.getDocument(), getRcmlSourceUri(), this.manager);
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        }
-        clearDirty();
-    }
-
-    /**
-     * Write a new entry for a check out or a check in the RCML-File made by the user with identity
-     * at time
-     * @param node The node.
-     * @param type co for a check out, ci for a check in
-     * @param time
-     * @param backup Create backup element (only considered for check-in entries).
-     * @param newVersion If the revision number shall be increased (only considered for check-in
-     *        entries).
-     * @param restrictedToSession If the check-out is restricted to the session (only considered for
-     *        check-out entries).
-     * @throws RevisionControlException if an error occurs
-     */
-    public synchronized void checkOutIn(Node node, short type, long time, boolean backup,
-            boolean newVersion, boolean restrictedToSession) throws RevisionControlException {
-
-        String identity = node.getSession().getIdentity().getUser().getId();
-
-        Vector entries = getEntries();
-        if (entries.size() == 0) {
-            if (type == ci) {
-                throw new IllegalStateException("Can't check in - not checked out.");
-            }
-        } else {
-            RCMLEntry latestEntry = getLatestEntry();
-            if (type == latestEntry.getType()) {
-                String elementName = (String) ELEMENTS.get(new Short(type));
-                throw new IllegalStateException("RCML entry type <" + elementName
-                        + "> not allowed twice in a row. Before: [" + latestEntry.getIdentity()
-                        + "], now: [" + identity + "], node: [" + this.contentSourceUri + "]");
-            }
-        }
-
-        String sessionId;
-        if (type == RCML.co && !restrictedToSession) {
-            sessionId = ALL_SESSIONS;
-        }
-        else {
-            sessionId = node.getSession().getId();
-        }
-
-        RCMLEntry entry;
-        switch (type) {
-        case RCML.ci:
-            int version = 0;
-            CheckInEntry latestEntry = getLatestCheckInEntry();
-            if (latestEntry != null) {
-                version = latestEntry.getVersion();
-            }
-            if (newVersion) {
-                version++;
-            }
-            entry = new CheckInEntry(sessionId, identity, time, version, backup);
-            break;
-        case RCML.co:
-            entry = new CheckOutEntry(sessionId, identity, time);
-            break;
-        default:
-            throw new IllegalArgumentException("No such type: [" + type + "]");
-        }
-
-        entries.add(0, entry);
-        setDirty();
-    }
-
-    protected Element saveToXml(NamespaceHelper helper, RCMLEntry entry)
-            throws RevisionControlException {
-        String elementName = (String) ELEMENTS.get(new Short(entry.getType()));
-        Element entryElement = helper.createElement(elementName);
-
-        entryElement.setAttribute(ATTR_IDENTITY, entry.getIdentity());
-        entryElement.setAttribute(ATTR_SESSION, entry.getSessionId());
-        entryElement.setAttribute(ATTR_TIME, Long.toString(entry.getTime()));
-
-        if (entry.getType() == ci) {
-            CheckInEntry checkInEntry = (CheckInEntry) entry;
-            entryElement.setAttribute(ATTR_VERSION, Integer.toString(checkInEntry.getVersion()));
-            if (checkInEntry.hasBackup()) {
-                entryElement.setAttribute(ATTR_BACKUP, "true");
-            }
-        }
-
-        return entryElement;
-    }
-
-    protected NamespaceHelper saveToXml() throws RevisionControlException {
-        try {
-            NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "", ELEMENT_XPSREVISIONCONTROL);
-            Element root = helper.getDocument().getDocumentElement();
-            Vector entries = getEntries();
-            for (Iterator i = entries.iterator(); i.hasNext();) {
-                RCMLEntry entry = (RCMLEntry) i.next();
-                Element element = saveToXml(helper, entry);
-                root.appendChild(element);
-            }
-            return helper;
-        } catch (Exception e) {
-            throw new RevisionControlException("Could create revision control XML ["
-                    + getRcmlSourceUri() + "]", e);
-        }
-    }
-
-    protected Element getLatestElement(NamespaceHelper helper, String type)
-            throws RevisionControlException {
-        Element parent = helper.getDocument().getDocumentElement();
-        return helper.getFirstChild(parent, type);
-    }
-
-    /**
-     * get the latest check out
-     * @return CheckOutEntry The entry of the check out
-     * @throws RevisionControlException if an error occurs
-     */
-    public CheckOutEntry getLatestCheckOutEntry() throws RevisionControlException {
-        return (CheckOutEntry) getLatestEntry(RCML.co);
-    }
-
-    /**
-     * get the latest check in
-     * @return CheckInEntry The entry of the check in
-     * @throws RevisionControlException if an error occurs
-     */
-    public CheckInEntry getLatestCheckInEntry() throws RevisionControlException {
-        return (CheckInEntry) getLatestEntry(RCML.ci);
-    }
-
-    /**
-     * get the latest entry (a check out or check in)
-     * @param type The type.
-     * @return RCMLEntry The entry of the check out/in
-     * @throws RevisionControlException if an error occurs
-     */
-    public RCMLEntry getLatestEntry(short type) throws RevisionControlException {
-        Vector entries = getEntries();
-        for (Iterator i = entries.iterator(); i.hasNext();) {
-            RCMLEntry entry = (RCMLEntry) i.next();
-            if (entry.getType() == type) {
-                return entry;
-            }
-        }
-        return null;
-    }
-
-    public RCMLEntry getLatestEntry() throws RevisionControlException {
-        Vector entries = getEntries();
-        if (entries.isEmpty()) {
-            return null;
-        } else {
-            return (RCMLEntry) entries.firstElement();
-        }
-    }
-
-    protected RCMLEntry getEntry(NamespaceHelper helper, Element element) {
-        if (element.hasAttribute(ATTR_IDENTITY)) {
-            String type = element.getLocalName();
-            String sessionId = element.getAttribute(ATTR_SESSION);
-            String identity = element.getAttribute(ATTR_IDENTITY);
-            String timeString = element.getAttribute(ATTR_TIME);
-            long time = new Long(timeString).longValue();
-            if (type.equals(ELEMENT_CHECKIN)) {
-                String versionString = element.getAttribute(ATTR_VERSION);
-                int version = new Integer(versionString).intValue();
-                boolean backup = element.hasAttribute(ATTR_BACKUP);
-                return new CheckInEntry(sessionId, identity, time, version, backup);
-            } else if (type.equals(ELEMENT_CHECKOUT)) {
-                return new CheckOutEntry(sessionId, identity, time);
-            } else {
-                throw new RuntimeException("Unsupported RCML entry type: [" + type + "]");
-            }
-        } else {
-            return getLegacyEntry(helper, element);
-        }
-    }
-
-    protected RCMLEntry getLegacyEntry(NamespaceHelper helper, Element element) {
-        String type = element.getLocalName();
-        String sessionId = getChildValue(helper, element, ELEMENT_SESSION, "");
-        String identity = getChildValue(helper, element, ELEMENT_IDENTITY);
-        String timeString = getChildValue(helper, element, ELEMENT_TIME);
-        long time = new Long(timeString).longValue();
-        if (type.equals(ELEMENT_CHECKIN)) {
-            String versionString = getChildValue(helper, element, ELEMENT_VERSION);
-            int version = new Integer(versionString).intValue();
-            boolean backup = helper.getChildren(element, ELEMENT_BACKUP).length > 0;
-            return new CheckInEntry(sessionId, identity, time, version, backup);
-        } else if (type.equals(ELEMENT_CHECKOUT)) {
-            return new CheckOutEntry(sessionId, identity, time);
-        } else {
-            throw new RuntimeException("Unsupported RCML entry type: [" + type + "]");
-        }
-    }
-
-    protected String getChildValue(NamespaceHelper helper, Element element, String childName,
-            String defaultValue) {
-        Element child = DocumentHelper.getFirstChild(element, NAMESPACE, childName);
-        if (child == null) {
-            return defaultValue;
-        } else {
-            return DocumentHelper.getSimpleElementText(child);
-        }
-    }
-
-    protected String getChildValue(NamespaceHelper helper, Element element, String childName) {
-        Element child = helper.getFirstChild(element, childName);
-        if (child == null) {
-            throw new RuntimeException("The element <" + element.getNodeName()
-                    + "> has no child element <" + childName + ">. Source URI: ["
-                    + getRcmlSourceUri() + "[");
-        }
-        return DocumentHelper.getSimpleElementText(child);
-    }
-
-    /**
-     * get all check in and check out
-     * @return Vector of all check out and check in entries in this RCML-file
-     * @throws RevisionControlException if an error occurs
-     */
-    public synchronized Vector getEntries() throws RevisionControlException {
-        if (this.entries == null) {
-            this.entries = new Vector();
-            String uri = getRcmlSourceUri();
-            try {
-                if (SourceUtil.exists(uri, this.manager)) {
-                    Document xml = SourceUtil.readDOM(uri, this.manager);
-                    NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "", xml);
-                    Element parent = xml.getDocumentElement();
-                    Element[] elements = helper.getChildren(parent);
-                    for (int i = 0; i < elements.length; i++) {
-                        RCMLEntry entry = getEntry(helper, elements[i]);
-                        entries.add(entry);
-                    }
-                }
-            } catch (Exception e) {
-                throw new RevisionControlException(e);
-            }
-        }
-        return this.entries;
-    }
-
-    /**
-     * get all backup entries
-     * @return Vector of all entries in this RCML-file with a backup
-     * @throws Exception if an error occurs
-     */
-    public synchronized Vector getBackupEntries() throws Exception {
-        Vector entries = getEntries();
-        Vector backupEntries = new Vector();
-        for (Iterator i = entries.iterator(); i.hasNext();) {
-            RCMLEntry entry = (RCMLEntry) i.next();
-            if (entry.getType() == RCML.ci && ((CheckInEntry) entry).hasBackup()) {
-                backupEntries.add(entry);
-            }
-        }
-        return backupEntries;
-    }
-
-    public synchronized void makeBackup(long time) throws RevisionControlException {
-        makeBackup(this.contentSourceUri, time);
-        makeBackup(this.metaSourceUri, time);
-    }
-
-    protected synchronized void makeBackup(String sourceUri, long time)
-            throws RevisionControlException {
-        String backupSourceUri = getBackupSourceUri(sourceUri, time);
-        try {
-            if (SourceUtil.exists(sourceUri, manager)) {
-                SourceUtil.copy(this.manager, sourceUri, backupSourceUri);
-            }
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        }
-    }
-
-    public synchronized void restoreBackup(Node node, long time) throws RevisionControlException {
-        SourceNode sourceNode = (SourceNode) node;
-        restoreBackup(sourceNode.getContentSource(), time);
-        restoreBackup(sourceNode.getMetaSource(), time);
-    }
-
-    protected synchronized void restoreBackup(SourceWrapper wrapper, long time)
-            throws RevisionControlException {
-        String backupSourceUri = getBackupSourceUri(wrapper, time);
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            SourceUtil.copy(resolver, backupSourceUri, wrapper.getOutputStream());
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    protected String getBackupSourceUri(SourceWrapper wrapper, long time) {
-        String uri = wrapper.getRealSourceUri();
-        return getBackupSourceUri(uri, time);
-    }
-
-    protected String getBackupSourceUri(String uri, long time) {
-        return uri + "." + time + ".bak";
-    }
-
-    /**
-     * Prune the list of entries and delete the corresponding backups. Limit the number of entries
-     * to the value maximalNumberOfEntries (2maxNumberOfRollbacks(configured)+1)
-     * @throws RevisionControlException if an error occurs
-     */
-    public synchronized void pruneEntries() throws RevisionControlException {
-        Vector entries = getEntries();
-        RCMLEntry[] array = (RCMLEntry[]) entries.toArray(new RCMLEntry[entries.size()]);
-
-        for (int i = this.maximalNumberOfEntries; i < entries.size(); i++) {
-            // remove the backup file associated with this entry
-            RCMLEntry entry = array[i];
-            if (entry.getType() == ci && ((CheckInEntry) entry).hasBackup()) {
-                long time = entry.getTime();
-                deleteBackup(this.contentSourceUri, time);
-                deleteBackup(this.metaSourceUri, time);
-            }
-            this.entries.remove(entry);
-        }
-        setDirty();
-    }
-
-    protected synchronized void deleteBackup(String sourceUri, long time)
-            throws RevisionControlException {
-        String uri = getBackupSourceUri(sourceUri, time);
-        try {
-            SourceUtil.delete(uri, this.manager);
-            SourceUtil.deleteEmptyCollections(uri, this.manager);
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        }
-    }
-
-    /**
-     * Check if the document is dirty
-     * @return boolean dirty
-     */
-    public boolean isDirty() {
-        return this.dirty;
-    }
-
-    /**
-     * Set the value dirty to true
-     */
-    protected void setDirty() {
-        this.dirty = true;
-    }
-
-    /**
-     * Set the value dirty to false
-     */
-    protected void clearDirty() {
-        this.dirty = false;
-    }
-
-    /**
-     * get the time's value of the backups
-     * @return String[] the times
-     * @throws Exception if an error occurs
-     */
-    public String[] getBackupsTime() throws Exception {
-
-        Vector entries = getEntries();
-        List times = new ArrayList();
-        for (Iterator i = entries.iterator(); i.hasNext();) {
-            RCMLEntry entry = (RCMLEntry) i.next();
-            if (entry.getType() == ci && ((CheckInEntry) entry).hasBackup()) {
-                times.add(Long.toString(entry.getTime()));
-            }
-        }
-        return (String[]) times.toArray(new String[times.size()]);
-
-    }
-
-    /**
-     * Delete the revisions, the RCML source and the collection if the latter is empty.
-     * @return boolean true, if the file was deleted
-     */
-    public synchronized boolean delete() {
-        try {
-            deleteRevisions();
-            SourceUtil.delete(getRcmlSourceUri(), this.manager);
-            SourceUtil.deleteEmptyCollections(getRcmlSourceUri(), this.manager);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return true;
-    }
-
-    /**
-     * delete the revisions
-     * @throws RevisionControlException when somthing went wrong
-     */
-    public synchronized void deleteRevisions() throws RevisionControlException {
-        try {
-            String[] times = getBackupsTime();
-            for (int i = 0; i < times.length; i++) {
-                long time = new Long(times[i]).longValue();
-                deleteBackup(this.contentSourceUri, time);
-                deleteBackup(this.metaSourceUri, time);
-            }
-            this.entries.clear();
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        }
-    }
-
-    public synchronized void copyFrom(Node node, Node otherNode) throws RevisionControlException {
-
-        SourceNode otherSourceNode = (SourceNode) otherNode;
-        SourceNode sourceNode = (SourceNode) node;
-        SourceNodeRCML otherRcml = (SourceNodeRCML) ((SourceNode) otherNode).getRcml();
-
-        try {
-
-            Vector backupEntries = otherRcml.getBackupEntries();
-            for (Iterator i = backupEntries.iterator(); i.hasNext();) {
-                RCMLEntry entry = (RCMLEntry) i.next();
-                long time = entry.getTime();
-                String otherContentUri = otherRcml.getBackupSourceUri(otherSourceNode
-                        .getContentSource(), time);
-                String thisContentUri = this
-                        .getBackupSourceUri(sourceNode.getContentSource(), time);
-                SourceUtil.copy(this.manager, otherContentUri, thisContentUri);
-
-                String otherMetaUri = otherRcml.getBackupSourceUri(otherSourceNode.getMetaSource(),
-                        time);
-                String thisMetaUri = this.getBackupSourceUri(sourceNode.getMetaSource(), time);
-                SourceUtil.copy(this.manager, otherMetaUri, thisMetaUri);
-            }
-
-            this.entries = new Vector();
-            Vector otherEntries = otherRcml.getEntries();
-            for (Iterator i = otherEntries.iterator(); i.hasNext();) {
-                RCMLEntry entry = (RCMLEntry) i.next();
-                RCMLEntry newEntry = null;
-                switch (entry.getType()) {
-                case co:
-                    newEntry = new CheckOutEntry(entry.getSessionId(), entry.getIdentity(), entry
-                            .getTime());
-                    break;
-                case ci:
-                    CheckInEntry ciEntry = (CheckInEntry) entry;
-                    newEntry = new CheckInEntry(ciEntry.getSessionId(), ciEntry.getIdentity(),
-                            ciEntry.getTime(), ciEntry.getVersion(), ciEntry.hasBackup());
-                    break;
-                }
-                this.entries.add(newEntry);
-            }
-
-            write();
-        } catch (Exception e) {
-            throw new RevisionControlException(e);
-        }
-    }
-
-    public synchronized boolean isCheckedOut() throws RevisionControlException {
-        RCMLEntry entry = getLatestEntry();
-        return entry != null && entry.getType() == RCML.co;
-    }
-
-    public synchronized void checkIn(Node node, boolean backup, boolean newVersion)
-            throws RevisionControlException {
-        long time = new Date().getTime();
-
-        if (backup) {
-            makeBackup(time);
-        }
-
-        checkOutIn(node, RCML.ci, time, backup, newVersion, false);
-        pruneEntries();
-        write();
-    }
-
-    public synchronized void checkOut(Node node) throws RevisionControlException {
-        checkOut(node, true);
-    }
-
-    public synchronized void checkOut(Node node, boolean restrictedToSession)
-            throws RevisionControlException {
-        checkOutIn(node, RCML.co, new Date().getTime(), false, false, restrictedToSession);
-        write();
-    }
-
-    public boolean isCheckedOutBySession(Session session) throws RevisionControlException {
-        Vector entries = getEntries();
-        if (entries.size() > 0) {
-            RCMLEntry entry = (RCMLEntry) entries.get(0);
-            String otherSessionId = entry.getSessionId();
-            if (entry.getType() == co) {
-                // not restricted to session
-                if (otherSessionId.equals(ALL_SESSIONS)) {
-                    String otherUserId = entry.getIdentity();
-                    String userId = session.getIdentity().getUser().getId();
-                    return userId.equals(otherUserId);
-                }
-                // restricted to session
-                if (otherSessionId.equals(session.getId())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-    
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRcmlFactory.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRcmlFactory.java
deleted file mode 100644
index e6393cf..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRcmlFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.lenya.cms.rc.RCML;
-
-/**
- * Factory for source node RCML objects.
- */
-public class SourceNodeRcmlFactory {
-
-    private static SourceNodeRcmlFactory instance = new SourceNodeRcmlFactory();
-
-    /**
-     * @return The singleton instance.
-     */
-    public static SourceNodeRcmlFactory getInstance() {
-        return instance;
-    }
-
-    private Map uri2rcml = new WeakHashMap();
-
-    private SourceNodeRcmlFactory() {
-    }
-
-    /**
-     * @param node The node.
-     * @param manager The service manager.
-     * @return An RCML object.
-     */
-    public synchronized RCML getRcml(SourceNode node, ServiceManager manager) {
-        String uri = node.getSourceURI();
-        RCML rcml = (RCML) this.uri2rcml.get(uri);
-        if (rcml == null) {
-            rcml = new SourceNodeRCML(node.getContentSource().getRealSourceUri(), node
-                    .getMetaSource().getRealSourceUri(), manager);
-            this.uri2rcml.put(uri, rcml);
-        }
-        return rcml;
-    }
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
deleted file mode 100644
index 53fcbd5..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.io.InputStream;
-import java.util.Iterator;
-import java.util.Vector;
-
-import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.RCML;
-import org.apache.lenya.cms.rc.RCMLEntry;
-
-/**
- * Revision implementation.
- */
-public class SourceNodeRevision extends AbstractLogEnabled implements Revision {
-
-    private SourceNode node;
-    private int number;
-    private ServiceManager manager;
-    private long time = -1;
-    private String userId;
-
-    /**
-     * @param node The node.
-     * @param number The revision number.
-     * @param manager The service manager.
-     * @param logger The logger.
-     */
-    public SourceNodeRevision(SourceNode node, int number, ServiceManager manager, Logger logger) {
-        this.node = node;
-        this.number = number;
-        this.manager = manager;
-        ContainerUtil.enableLogging(this, logger);
-    }
-
-    public long getTime() {
-        initialize();
-        return this.time;
-    }
-
-    protected void initialize() {
-        try {
-            if (this.time == -1) {
-                SourceNodeRCML rcml = (SourceNodeRCML) this.node.getRcml();
-                Vector entries = rcml.getEntries();
-                for (Iterator i = entries.iterator(); i.hasNext();) {
-                    RCMLEntry entry = (RCMLEntry) i.next();
-                    if (entry.getType() == RCML.ci
-                            && ((CheckInEntry) entry).getVersion() == this.number) {
-                        this.time = entry.getTime();
-                        this.userId = entry.getIdentity();
-                    }
-                }
-            }
-            if (this.time == -1) {
-                throw new RuntimeException("No entry found for [" + this.node.getSourceURI()
-                        + "], revision [" + this.number + "]");
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public InputStream getInputStream() {
-        Source source = null;
-        SourceResolver resolver = null;
-        try {
-            String sourceUri = getSourceURI();
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = resolver.resolveURI(sourceUri);
-            if (source.exists()) {
-                return source.getInputStream();
-            } else {
-                throw new RuntimeException("No check-in entry found for ["
-                        + this.node.getSourceURI() + "], revision [" + this.number + "]");
-            }
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    public String getSourceURI() {
-        SourceNodeRCML rcml = (SourceNodeRCML) this.node.getRcml();
-        String sourceUri = rcml.getBackupSourceUri(this.node.getContentSource(), getTime());
-        return sourceUri;
-    }
-
-    public int getNumber() {
-        return this.number;
-    }
-
-    public MetaData getMetaData(String namespaceUri) throws MetaDataException {
-        return getMetaDataHandler().getMetaData(namespaceUri);
-    }
-
-    private SourceNodeMetaDataHandler metaDataHandler = null;
-
-    protected SourceNodeMetaDataHandler getMetaDataHandler() {
-        if (this.metaDataHandler == null) {
-            this.metaDataHandler = new SourceNodeMetaDataHandler(this.manager, getMetaSourceUri());
-        }
-        return this.metaDataHandler;
-    }
-
-    protected String getMetaSourceUri() {
-        String realSourceUri = SourceWrapper.computeRealSourceUri(this.manager, this.node.getSession(), 
-                this.node.getSourceURI(), getLogger());
-        return realSourceUri + ".meta." + getTime() + ".bak";
-    }
-
-    public String[] getMetaDataNamespaceUris() throws MetaDataException {
-        return getMetaDataHandler().getMetaDataNamespaceUris();
-    }
-
-    public boolean exists() throws RepositoryException {
-        try {
-            return SourceUtil.exists(getSourceURI(), this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public long getContentLength() throws RepositoryException {
-        try {
-            return SourceUtil.getContentLength(getSourceURI(), this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public long getLastModified() throws RepositoryException {
-        try {
-            return SourceUtil.getLastModified(getSourceURI(), this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public String getMimeType() throws RepositoryException {
-        try {
-            return SourceUtil.getMimeType(getSourceURI(), this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    public String getUserId() {
-        initialize();
-        return this.userId;
-    }
-
-}
diff --git a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java b/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
deleted file mode 100644
index 4c96bc2..0000000
--- a/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.repository;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.util.Date;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.Logger;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.excalibur.source.ModifiableSource;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.TraversableSource;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.RevisionControlException;
-import org.apache.lenya.util.Assert;
-
-/**
- * Provide access to a source.
- */
-public class SourceWrapper extends AbstractLogEnabled {
-
-    private SourceNode node;
-    private String sourceUri;
-    protected ServiceManager manager;
-
-    /**
-     * Ctor.
-     * @param node
-     * @param sourceUri
-     * @param manager
-     * @param logger
-     */
-    public SourceWrapper(SourceNode node, String sourceUri, ServiceManager manager, Logger logger) {
-
-        Assert.notNull("node", node);
-        this.node = node;
-
-        Assert.notNull("source URI", sourceUri);
-        this.sourceUri = sourceUri;
-
-        Assert.notNull("service manager", manager);
-        this.manager = manager;
-
-        enableLogging(logger);
-    }
-
-    protected static final String FILE_PREFIX = "file:/";
-    protected static final String CONTEXT_PREFIX = "context://";
-
-    protected SourceNode getNode() {
-        return this.node;
-    }
-
-    private String realSourceUri;
-
-    /**
-     * Returns the URI of the actual source which is used.
-     * 
-     * @return A string.
-     */
-    protected String getRealSourceUri() {
-        if (this.realSourceUri == null) {
-            this.realSourceUri = computeRealSourceUri(this.manager, getNode().getSession(),
-                    this.sourceUri, getLogger());
-        }
-        return this.realSourceUri;
-    }
-
-    protected static final String computeRealSourceUri(ServiceManager manager, Session session,
-            String sourceUri, Logger logger) {
-        String contentDir = null;
-        String publicationId = null;
-        try {
-            String pubBase = Node.LENYA_PROTOCOL + Publication.PUBLICATION_PREFIX_URI + "/";
-            String publicationsPath = sourceUri.substring(pubBase.length());
-            int firstSlashIndex = publicationsPath.indexOf("/");
-            publicationId = publicationsPath.substring(0, firstSlashIndex);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(manager, session);
-            Publication pub = factory.getPublication(publicationId);
-            contentDir = pub.getContentDir();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        String contentBaseUri = null;
-        String urlID = sourceUri.substring(Node.LENYA_PROTOCOL.length());
-
-        // Substitute e.g. "lenya://lenya/pubs/PUB_ID/content" by "contentDir"
-        String filePrefix = urlID.substring(0, urlID.indexOf(publicationId)) + publicationId;
-        String tempString = urlID.substring(filePrefix.length() + 1);
-        String fileMiddle = tempString.substring(0, tempString.indexOf("/"));
-        String fileSuffix = tempString.substring(fileMiddle.length() + 1, tempString.length());
-        String uriSuffix;
-        if (new File(contentDir).isAbsolute()) {
-            // Absolute
-            contentBaseUri = FILE_PREFIX + contentDir;
-            uriSuffix = File.separator + fileSuffix;
-        } else {
-            // Relative
-            contentBaseUri = CONTEXT_PREFIX + contentDir;
-            uriSuffix = "/" + fileSuffix;
-        }
-
-        String realSourceUri = contentBaseUri + uriSuffix;
-
-        if (logger.isDebugEnabled()) {
-            try {
-                if (!SourceUtil.exists(contentBaseUri, manager)) {
-                    logger.debug("The content directory [" + contentBaseUri + "] does not exist. "
-                            + "It will be created as soon as documents are added.");
-                }
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            } catch (MalformedURLException e) {
-                throw new RuntimeException(e);
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-            logger.debug("Real Source URI: " + realSourceUri);
-        }
-
-        return realSourceUri;
-    }
-
-    /**
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.transaction.Transactionable#deleteTransactionable()
-     */
-    public void deleteTransactionable() throws RepositoryException {
-        try {
-            if (!getNode().isCheckedOut()) {
-                throw new RuntimeException("Cannot delete source [" + getSourceUri()
-                        + "]: not checked out!");
-            } else {
-                this.data = null;
-                SourceUtil.delete(getRealSourceUri(), this.manager);
-            }
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
-    }
-
-    byte[] data = null;
-
-    /**
-     * @return An input stream.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getInputStream()
-     */
-    public synchronized InputStream getInputStream() throws RepositoryException {
-        loadData();
-        if (this.data == null) {
-            throw new RuntimeException(this + " does not exist!");
-        }
-        return new ByteArrayInputStream(this.data);
-    }
-
-    /**
-     * @return A boolean value.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#exists()
-     */
-    public boolean exists() throws RepositoryException {
-        if (this.deleted == true) {
-            return false;
-        } else if (this.data != null) {
-            return true;
-        } else {
-            try {
-                return SourceUtil.exists(getRealSourceUri(), this.manager);
-            } catch (Exception e) {
-                throw new RepositoryException(e);
-            }
-        }
-    }
-
-    private boolean deleted;
-    private int loadRevision = -1;
-
-    protected void delete() {
-        this.deleted = true;
-    }
-
-    /**
-     * Loads the data from the real source.
-     * 
-     * @throws RepositoryException if an error occurs.
-     */
-    protected synchronized void loadData() throws RepositoryException {
-
-        if (this.deleted || this.data != null) {
-            return;
-        }
-
-        ByteArrayOutputStream out = null;
-        InputStream in = null;
-        SourceResolver resolver = null;
-        TraversableSource source = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            source = (TraversableSource) resolver.resolveURI(getRealSourceUri());
-
-            if (source.exists() && !source.isCollection()) {
-                byte[] buf = new byte[4096];
-                out = new ByteArrayOutputStream();
-                in = source.getInputStream();
-                int read = in.read(buf);
-
-                while (read > 0) {
-                    out.write(buf, 0, read);
-                    read = in.read(buf);
-                }
-
-                this.data = out.toByteArray();
-                this.mimeType = source.getMimeType();
-            }
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-            try {
-                if (in != null)
-                    in.close();
-                if (out != null)
-                    out.close();
-            } catch (Exception e) {
-                throw new RepositoryException(e);
-            }
-
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                this.manager.release(resolver);
-            }
-        }
-        this.loadRevision = this.node.getCurrentRevisionNumber();
-    }
-
-    /**
-     * Store the source URLs which are currently written.
-     */
-    private static Map lockedUris = new WeakHashMap();
-
-    /**
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.transaction.Transactionable#saveTransactionable()
-     */
-    protected synchronized void saveTransactionable() throws RepositoryException {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Saving [" + this + "] to source [" + getRealSourceUri() + "]");
-        }
-
-        if (this.data != null) {
-
-            String realSourceUri = getRealSourceUri();
-            Object lock = lockedUris.get(realSourceUri);
-            if (lock == null) {
-                lock = new Object();
-                lockedUris.put(realSourceUri, lock);
-            }
-
-            synchronized (lock) {
-                saveTransactionable(realSourceUri);
-            }
-        }
-    }
-
-    protected void saveTransactionable(String realSourceUri) throws RepositoryException {
-        SourceResolver resolver = null;
-        ModifiableSource source = null;
-        InputStream in = null;
-        OutputStream out = null;
-
-        try {
-            resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (ModifiableSource) resolver.resolveURI(realSourceUri);
-
-            out = source.getOutputStream();
-
-            byte[] buf = new byte[4096];
-            in = new ByteArrayInputStream(this.data);
-            int read = in.read(buf);
-
-            while (read > 0) {
-                out.write(buf, 0, read);
-                read = in.read(buf);
-            }
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-
-            try {
-                if (in != null) {
-                    in.close();
-                }
-                if (out != null) {
-                    out.flush();
-                    out.close();
-                }
-            } catch (Throwable t) {
-                throw new RuntimeException("Could not close streams: ", t);
-            }
-
-            if (resolver != null) {
-                if (source != null) {
-                    resolver.release(source);
-                }
-                manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Output stream.
-     */
-    private class NodeOutputStream extends ByteArrayOutputStream {
-        /**
-         * @see java.io.OutputStream#close()
-         */
-        public synchronized void close() throws IOException {
-            SourceWrapper.this.data = super.toByteArray();
-            SourceWrapper.this.lastModified = new Date().getTime();
-            try {
-                SourceWrapper.this.getNode().registerDirty();
-            } catch (RepositoryException e) {
-                throw new RuntimeException(e);
-            }
-            super.close();
-        }
-    }
-
-    /**
-     * @return The content length.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getContentLength()
-     */
-    public long getContentLength() throws RepositoryException {
-        loadData();
-        return this.data.length;
-    }
-
-    private long lastModified = -1;
-
-    /**
-     * @return The last modification date.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getLastModified()
-     */
-    public long getLastModified() throws RepositoryException {
-        try {
-            CheckInEntry entry = this.node.getRcml().getLatestCheckInEntry();
-            if (entry != null) {
-                this.lastModified = entry.getTime();
-            }
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        }
-        return this.lastModified;
-    }
-
-    private String mimeType;
-
-    /**
-     * @return A string.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getMimeType()
-     */
-    public String getMimeType() throws RepositoryException {
-        loadData();
-        return this.mimeType;
-    }
-
-    /**
-     * @return The source URI.
-     */
-    public String getSourceUri() {
-        return this.sourceUri;
-    }
-
-    /**
-     * @return An output stream.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getOutputStream()
-     */
-    public synchronized OutputStream getOutputStream() throws RepositoryException {
-        if (getLogger().isDebugEnabled())
-            getLogger().debug("Get OutputStream for " + getSourceUri());
-        loadData();
-        return new NodeOutputStream();
-    }
-    
-    protected int getLoadRevision() {
-        return this.loadRevision;
-    }
-
-}
diff --git a/trunk/src/modules/svg/config/cocoon-xconf/protocol-handlers.xconf b/trunk/src/modules/svg/config/cocoon-xconf/protocol-handlers.xconf
deleted file mode 100644
index 1c94a3f..0000000
--- a/trunk/src/modules/svg/config/cocoon-xconf/protocol-handlers.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.modules.svg.SiteProtocolHandler']">
-
-  <component logger="lenya.modules.svg"
-    role="org.apache.lenya.modules.svg.SiteProtocolHandler"
-    class="org.apache.lenya.modules.svg.ProtocolHandler">
-    <parameter name="protocol" value="site"/>
-  </component>
-
-  <component logger="lenya.modules.svg"
-    role="org.apache.lenya.modules.svg.LenyaDocumentProtocolHandler"
-    class="org.apache.lenya.modules.svg.ProtocolHandler">
-    <parameter name="protocol" value="lenya-document"/>
-  </component>
-  
-</xconf>
diff --git a/trunk/src/modules/svg/config/module.xml b/trunk/src/modules/svg/config/module.xml
deleted file mode 100644
index c62ea9f..0000000
--- a/trunk/src/modules/svg/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.svg</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>SVG image rendering</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>The SVG module generates the rounded corners for
-  the Lenya dialogs, and re-scales pixel-based GIF, JPG and PNG images on the
-  fly, depending on height and width query parameters. It uses Batik.</description>
-</module>
diff --git a/trunk/src/modules/svg/dummy.xml b/trunk/src/modules/svg/dummy.xml
deleted file mode 100644
index c9cbff9..0000000
--- a/trunk/src/modules/svg/dummy.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns:svg="http://www.w3.org/2000/svg">
-  This is a dummy file
-</svg>
\ No newline at end of file
diff --git a/trunk/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java b/trunk/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java
deleted file mode 100644
index f1d31db..0000000
--- a/trunk/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.lenya.modules.svg;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Iterator;
-
-import org.apache.avalon.framework.activity.Startable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.batik.util.ParsedURL;
-import org.apache.batik.util.ParsedURLData;
-import org.apache.batik.util.ParsedURLProtocolHandler;
-import org.apache.cocoon.CascadingIOException;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
-
-/**
- * Batik URL protocol handler for protocols which are handled by the SourceResolver.
- */
-public class ProtocolHandler extends AbstractLogEnabled implements ParsedURLProtocolHandler,
-        ThreadSafe, Startable, Component, Serviceable, Parameterizable {
-
-    protected static final String PARAM_PROTOCOL = "protocol";
-
-    public static final String ROLE = ProtocolHandler.class.getName();
-    
-    private SourceResolver resolver;
-    private ServiceManager manager;
-
-    private String protocol;
-
-    public ParsedURLData parseURL(String urlStr) {
-        if (this.resolver == null) {
-            throw new IllegalStateException("Please call setResolver() first!");
-        }
-        return new ParsedUrlData(getProtocolHandled(), this.resolver, urlStr);
-    }
-
-    public ParsedURLData parseURL(ParsedURL basepurl, String urlStr) {
-        return parseURL(urlStr);
-    }
-
-    static class ParsedUrlData extends ParsedURLData {
-
-        private Source source;
-        private SourceResolver resolver;
-        private String url;
-
-        public ParsedUrlData(String protocol, SourceResolver resolver, String url) {
-            this.url = url;
-            this.protocol = protocol;
-            this.resolver = resolver;
-            try {
-                this.source = resolver.resolveURI(url);
-                this.contentType = this.source.getMimeType();
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-        /**
-         * Open a stream for the data. If the thread-local
-         * <code>SourceResolver</code> exists, then use it, otherwise fall
-         * back to <code>SourceHandler</code>.
-         */
-        protected InputStream openStreamInternal(String userAgent, Iterator mimeTypes,
-                Iterator encodingTypes) throws IOException {
-            try {
-                return this.source.getInputStream();
-            } catch (Exception e) {
-                throw new CascadingIOException("Cannot open URL " + this.url, e);
-            } finally {
-                this.resolver.release(this.source);
-            }
-        }
-
-    }
-
-    public void start() throws Exception {
-        this.resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-        ParsedURL.registerHandler(this);
-    }
-
-    public void stop() throws Exception {
-    }
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    public String getProtocolHandled() {
-        return this.protocol;
-    }
-
-    public void parameterize(Parameters params) throws ParameterException {
-        this.protocol = params.getParameter(PARAM_PROTOCOL);
-    }
-
-}
diff --git a/trunk/src/modules/svg/shape/corner.js b/trunk/src/modules/svg/shape/corner.js
deleted file mode 100644
index d9dc0d4..0000000
--- a/trunk/src/modules/svg/shape/corner.js
+++ /dev/null
@@ -1,70 +0,0 @@
-
-function corner() {
-
-    var where = cocoon.parameters["where"];
-    var r = cocoon.parameters["radius"];
-    var x;
-    var y;
-    var width;
-    var height;
-    
-    if (where == "topLeft") {
-        x = r;
-        y = r;
-        width = r;
-        height = r;
-    }
-    else if (where == "topRight") {
-        x = 0;
-        y = r;
-        width = r;
-        height = r;
-    }
-    else if (where == "bottomLeft") {
-        x = r;
-        y = 0;
-        width = r;
-        height = r;
-    }
-    else if (where == "bottomRight") {
-        x = 0;
-        y = 0;
-        width = r;
-        height = r;
-    }
-    else if (where == "top") {
-        x = r;
-        y = 0;
-        width = 1;
-        height = r;
-    }
-    else if (where == "right") {
-        x = 0;
-        y = r;
-        width = r;
-        height = 1;
-    }
-    else if (where == "left") {
-        x = r;
-        y = 0;
-        width = r;
-        height = 1;
-    }
-    else if (where == "bottom") {
-        x = 0;
-        y = 0;
-        width = 1;
-        height = r;
-    }
-
-    cocoon.sendPage("view/corner", {
-        "backgroundColor" : cocoon.parameters["backgroundColor"],
-        "lineColor" : cocoon.parameters["lineColor"],
-        "x" : x,
-        "y" : y,
-        "r" : r,
-        "width" : width,
-        "height" : height
-    });
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/svg/shape/corner.jx b/trunk/src/modules/svg/shape/corner.jx
deleted file mode 100644
index 43beab2..0000000
--- a/trunk/src/modules/svg/shape/corner.jx
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  width="${width}" height="${height}">
-  
-  <svg:circle
-    cx="${x}" cy="${y}" r="${r}"
-    stroke="${lineColor}" stroke-width="1" fill="${backgroundColor}"/>
-  
-  <jx:if test="${rectangle}">
-    <svg:rect x="0" y="" width="" height=""
-      fill="" stroke-width="0"/>
-  </jx:if>
-  
-</svg>
\ No newline at end of file
diff --git a/trunk/src/modules/svg/shape/tab.js b/trunk/src/modules/svg/shape/tab.js
deleted file mode 100644
index 556a354..0000000
--- a/trunk/src/modules/svg/shape/tab.js
+++ /dev/null
@@ -1,44 +0,0 @@
-
-function tab() {
-
-    var where = cocoon.parameters["where"];
-    var r = cocoon.parameters["radius"];
-    var x;
-    var y;
-    var width;
-    var height = 50;
-    var maxWidth = 1500;
-    
-    if (where == "topLeft") {
-        x = r;
-        y = r;
-        width = maxWidth;
-    }
-    else if (where == "topRight") {
-        x = -1;
-        y = r;
-        width = r;
-    }
-    else if (where == "bottomLeft") {
-        x = r;
-        y = height - r - 1;
-        width = maxWidth;
-    }
-    else if (where == "bottomRight") {
-        x = -1;
-        y = height - r - 1;
-        width = r;
-    }
-
-    cocoon.sendPage("view/tab", {
-        "backgroundColor" : cocoon.parameters["backgroundColor"],
-        "lineColor" : cocoon.parameters["lineColor"],
-        "where" : where,
-        "x" : x,
-        "y" : y,
-        "r" : r,
-        "width" : width,
-        "height" : height
-    });
-
-}
\ No newline at end of file
diff --git a/trunk/src/modules/svg/shape/tab.jx b/trunk/src/modules/svg/shape/tab.jx
deleted file mode 100644
index 7e42a5c..0000000
--- a/trunk/src/modules/svg/shape/tab.jx
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns="http://www.w3.org/2000/svg"
-  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:xlink="http://www.w3.org/1999/xlink"
-  width="${width}" height="${height}">
-  
-  <defs>
-    <clipPath id="circlePath">
-      <jx:choose>
-        <jx:when test="${y == r}">
-          <rect x="0" y="0" width="${r}" height="${r}"/>
-        </jx:when>
-        <jx:otherwise>
-          <rect x="0" y="${y + 1}" width="${r}" height="${r}"/>
-        </jx:otherwise>
-      </jx:choose>
-    </clipPath>
-  </defs>
-
-  <!-- disabled, works with Mac OS X
-  <svg:rect x="${x - r}" y="0" width="${width + r + 1}" height="${height - 1}"
-    fill="${backgroundColor}" stroke="${lineColor}" stroke-width="2"/>
-  -->
-  
-  <svg:rect x="${x - r}" y="0" width="${width + r}" height="${height - 1}"
-    fill="${backgroundColor}" stroke="${lineColor}" stroke-width="1"/>
-    
-  <jx:choose>
-    <jx:when test="${y == r}">
-      <svg:rect x="0" y="${y - r}" width="${r}" height="${r}" fill="#FFFFFF" stroke-width="0"/>
-    </jx:when>
-    <jx:otherwise>
-      <svg:rect x="0" y="${y + 1}" width="${r}" height="${r}" fill="#FFFFFF" stroke-width="0"/>
-    </jx:otherwise>
-  </jx:choose>
-  
-  <g clip-path="url(#circlePath)">
-    <svg:circle
-      cx="${x}" cy="${y}" r="${r}"
-      stroke="${lineColor}" stroke-width="1" fill="${backgroundColor}"/>
-  </g>
-  
-</svg>
\ No newline at end of file
diff --git a/trunk/src/modules/svg/sitemap.xmap b/trunk/src/modules/svg/sitemap.xmap
deleted file mode 100644
index c116cc4..0000000
--- a/trunk/src/modules/svg/sitemap.xmap
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-  

-  <map:flow language="javascript">

-    <map:script src="shape/corner.js"/>

-    <map:script src="shape/tab.js"/>

-  </map:flow>

-  

-  <map:pipelines>

-    

-    <map:pipeline>

-      <!-- enable client side caching of resources -->

-      <map:parameter name="expires" value="{global:pipeline-expiration}"/>
-      

-      <!--

-        Views for shape flowscripts.

-      -->

-      <map:match pattern="view/*">

-        <map:generate type="jx" src="shape/{1}.jx"/>

-        <map:serialize type="xml"/>

-      </map:match>

-      

-      <!--

-        Internal pipeline to generate shape SVGs.

-        shape/{type}-{where}-{radius}-{backgroundColor}-{lineColor}

-        example: shape/corner-topLeft-5-FF0000-000000

-      -->

-      <map:match pattern="shape/*-*-*-*-*.svg">

-        <map:call function="{1}">

-          <map:parameter name="where" value="{2}"/>

-          <map:parameter name="radius" value="{3}"/>

-          <map:parameter name="backgroundColor" value="#{4}"/>

-          <map:parameter name="lineColor" value="#{5}"/>

-        </map:call>

-      </map:match>

-      

-      <!--

-        This matches a shape URL.

-        {type}-{where}-{radius}-{backgroundColor}-{lineColor}

-        example: corner-topLeft-5-FF0000-000000

-      -->

-      <map:match pattern="*-*-*-*-*.png">

-        <map:generate src="cocoon:/shape/{1}-{2}-{3}-{4}-{5}.svg"/>

-        <map:serialize type="svg2png"/>

-      </map:match>
-      
-    </map:pipeline>
-    
-    <map:pipeline type="noncaching">
-      

-      <!--

-        image resizing pipelines

-      -->

-      <!-- {pubId}/{area}/{path}.{extension} -->

-      <map:match pattern="*/*/**.*">

-        

-        <map:match type="regexp" pattern="(.*\.)(gif|GIF|Gif)$"> 

-          <map:act type="resource-exists-enhanced">

-            <map:parameter name="url" value="fallback://resources/{../2}/{../3}.{../4}"/>

-            <map:parameter name="type" value="file"/>

-            <map:read src="fallback://resources/{../../2}/{../../3}.{../../4}" mime-type="image/gif" />

-          </map:act>

-          <map:act type="resource-exists-enhanced">

-            <map:parameter name="url" value="fallback://resources/shared/{../3}.{../4}"/>

-            <map:parameter name="type" value="file"/>

-            <map:read src="fallback://resources/shared/{../../3}.{../../4}" mime-type="image/gif" />

-          </map:act>

-          <map:act type="language-exists">

-            <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}" mime-type="image/gif"/>

-          </map:act>  

-        </map:match>

-        

-        <map:generate src="dummy.xml"/>

-        <map:act type="resource-exists">

-          <map:parameter name="url" value="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language},pub={1},area={2}"/>

-          <map:transform src="xslt/scale.xsl">
-            <map:parameter name="url" value="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language},pub={../1},area={../2}{link:rev}"/>
-            <map:parameter name="width" value="{request-param:width}"/>

-            <map:parameter name="height" value="{request-param:height}"/>

-          </map:transform>

-        </map:act>
-        <map:act type="resource-exists-enhanced">

-          <map:parameter name="url" value="fallback://resources/shared/{3}.{4}"/>

-          <map:parameter name="type" value="file"/>

-          <map:transform src="xslt/scale.xsl">

-            <map:parameter name="url" value="{fallback:resources/shared/{../3}.{../4}}"/>

-            <map:parameter name="revision" value="{request-param:lenya.revision}"/>
-            <map:parameter name="width" value="{request-param:width}"/>

-            <map:parameter name="height" value="{request-param:height}"/>

-          </map:transform>

-        </map:act>
-        <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$">
-          <map:serialize type="svg2jpeg"/>

-        </map:match>

-        <map:match type="regexp" pattern="(.*\.)(png|PNG|Png)$"> 

-          <map:serialize type="svg2png"/>

-        </map:match>

-        <map:match type="regexp" pattern="(.*\.)(tif|TIF|Tif)$"> 

-          <map:serialize type="svg2tiff"/>

-        </map:match> 

-      </map:match>

-      

-    </map:pipeline>

-    

-  </map:pipelines>

-</map:sitemap>

diff --git a/trunk/src/modules/svg/xslt/image2svg.xsl b/trunk/src/modules/svg/xslt/image2svg.xsl
deleted file mode 100644
index f9f7659..0000000
--- a/trunk/src/modules/svg/xslt/image2svg.xsl
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  
-  <xsl:template match="xhtml:img[@height and @width]/@src">
-    <xsl:attribute name="src">
-      <!-- if the src attribute already contains a querystring, cut it off. otherwise, multiple
-           querystrings can accumulate! 
-           NB: substring-before returns the empty string if the needle is not found.
-      -->
-      <xsl:choose>
-        <xsl:when test="contains(.,'?')">
-           <xsl:value-of select="substring-before(.,'?')"/>
-        </xsl:when>
-        <xsl:otherwise>
-           <xsl:value-of select="."/>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:text>?</xsl:text>
-      <xsl:text>lenya.module=svg&amp;</xsl:text>
-      <xsl:if test="string(../@height)">
-        <xsl:text>height=</xsl:text><xsl:value-of select="../@height"/><xsl:text>&amp;</xsl:text>
-      </xsl:if>
-      <xsl:if test="string(../@width)">
-        <xsl:text>width=</xsl:text><xsl:value-of select="../@width"/>
-      </xsl:if>         
-    </xsl:attribute>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/svg/xslt/scale.xsl b/trunk/src/modules/svg/xslt/scale.xsl
deleted file mode 100644
index 568b88c..0000000
--- a/trunk/src/modules/svg/xslt/scale.xsl
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:svg="http://www.w3.org/2000/svg"
-  xmlns:xlink="http://www.w3.org/1999/xlink">
-  
-  <xsl:param name="url"/>
-  <xsl:param name="height"/>
-  <xsl:param name="width"/>
-  
-  <xsl:template match="/">
-    <svg width="{$width}" height="{$height}" version="1.1">
-      <image x="0" y="0" width="{$width}" height="{$height}" xlink:href="{$url}" preserveAspectRatio="none"/>        
-    </svg>
-  </xsl:template>
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/tinymce/TODO b/trunk/src/modules/tinymce/TODO
deleted file mode 100644
index 48c79c3..0000000
--- a/trunk/src/modules/tinymce/TODO
+++ /dev/null
@@ -1,13 +0,0 @@
-TinyMCE integration: TODO
-
-* make java usecase handler generic and share with other editors
-* when done, move these generic usecases into the editors module
-* fix wysiwyg: some of the css styles are not properly passed to the editor
-content (font-size and font-family)
-* add onunload handler to avoid data loss if the user accidentally clicks
-on a link or closes the window (confirmation dialog like bxe) - done by
-jragaller (patch in bugzilla), needs to be made generic
-* allow multiple resource types to be edited with different valid_elements
-settings.
-* allow multiple editable areas.
-
diff --git a/trunk/src/modules/tinymce/config/cocoon-xconf/usecase-tinymce-edit.xconf b/trunk/src/modules/tinymce/config/cocoon-xconf/usecase-tinymce-edit.xconf
deleted file mode 100644
index 85b8360..0000000
--- a/trunk/src/modules/tinymce/config/cocoon-xconf/usecase-tinymce-edit.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'tinymce.edit']">
-
-  <component-instance name="tinymce.edit" logger="lenya.publication"
-                      class="org.apache.lenya.cms.editors.tinymce.TinyMce">
-    <transaction policy="pessimistic"/>
-    <view uri="/modules/tinymce/tinymce.edit" menu="false"/>
-  </component-instance>
-    
-</xconf>
diff --git a/trunk/src/modules/tinymce/config/menu.xsp b/trunk/src/modules/tinymce/config/menu.xsp
deleted file mode 100644
index d211fff..0000000
--- a/trunk/src/modules/tinymce/config/menu.xsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <menu>
-    <menus>
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-            if ("xhtml".equals(doctype) || "homepage".equals(doctype)) {
-                <block info="false">
-                  <item wf:event="edit" uc:usecase="tinymce.edit" href="?"><i18n:text>With TinyMCE</i18n:text></item>
-                </block>
-            }
-          </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/tinymce/config/module.xml b/trunk/src/modules/tinymce/config/module.xml
deleted file mode 100644
index fb56a4b..0000000
--- a/trunk/src/modules/tinymce/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.tinymce</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.resource"/>
-  <depends module="org.apache.lenya.modules.editors"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.5.1</version>
-  <name>TinyMCE Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Module for the TinyMCE WYSIWYG XHTML editor. Work in
-  progress.</description>
-</module>
diff --git a/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java b/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java
deleted file mode 100644
index c740f10..0000000
--- a/trunk/src/modules/tinymce/java/src/org/apache/lenya/cms/editors/tinymce/TinyMce.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.lenya.cms.editors.tinymce;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.Schema;
-import org.apache.lenya.xml.ValidationUtil;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-/**
- * TinyMce Usecase
- * 
- * since there is no really tinymce-specific code in here, most methods should
- * eventually be moved into DocumentUsecase and shared across all editor usecases.
- */
-
-public class TinyMce extends DocumentUsecase {
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected org.apache.lenya.cms.repository.Node[] getNodesToLock() throws UsecaseException {
-        org.apache.lenya.cms.repository.Node[] objects = { getSourceDocument().getRepositoryNode() };
-        return objects;
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Request request = ContextHelper.getRequest(this.context);
-        setParameter("host", "http://" + request.getServerName() + ":" + request.getServerPort());
-        setParameter("requesturi", request.getRequestURI());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
-     */
-    protected void doCheckPreconditions() throws Exception {
-        super.doCheckPreconditions();
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
-                getLogger());
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        String content = getXmlString(getEncoding());
-
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(content);
-        }
-
-        saveDocument(getEncoding(), content);
-    }
-
-    protected String getEncoding() {
-        Request request = ContextHelper.getRequest(this.context);
-        String encoding = request.getCharacterEncoding();
-        return encoding;
-    }
-
-    protected String getXmlString(String encoding) {
-        // Get namespaces
-        String namespaces = removeRedundantNamespaces(getParameterAsString("tinymce.namespaces"));
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(namespaces);
-        }
-        // Aggregate content
-        String content = "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>\n"
-                + "<html xmlns=\"http://www.w3.org/1999/xhtml\" " + namespaces + ">\n"
-                + "  <head><title></title></head>\n" + "  <body>\n"
-                + getParameterAsString("tinymce.content") + "  </body>\n" + "</html>\n";
-        return content;
-    }
-
-
-    public void advance() throws UsecaseException {
-        clearErrorMessages();
-        try {
-            Document xml = getXml();
-            if (xml != null) {
-                validate(xml);
-            }
-            if (!hasErrors()) {
-                SourceUtil.writeDOM(xml, getSourceDocument().getOutputStream());
-                deleteParameter("content");
-            }
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-        if (hasErrors()) {
-            return;
-        }
-
-        Document xml = getXml();
-        if (xml != null) {
-            validate(xml);
-        }
-    }
-
-    protected void validate(Document xml) throws Exception {
-        ResourceType resourceType = getSourceDocument().getResourceType();
-        Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xml, schema, new UsecaseErrorHandler(this));
-    }
-
-    protected Document getXml() throws ParserConfigurationException, IOException {
-        String encoding = getEncoding();
-        String xmlString = getXmlString(encoding);
-
-        Document xml = null;
-        try {
-            xml = DocumentHelper.readDocument(xmlString, encoding);
-        } catch (SAXException e) {
-            addErrorMessage("error-document-form", new String[] { e.getMessage() });
-        }
-        return xml;
-    }
-
-   /**
-     * Save the content to the document source. After saving, the XML is
-     * validated. If validation errors occur, the usecase transaction is rolled
-     * back, so the changes are not persistent. If the validation succeeded, the
-     * workflow event is invoked.
-     * @param encoding The encoding to use.
-     * @param content The content to save.
-     * @throws Exception if an error occurs.
-     */
-    protected void saveDocument(String encoding, String content) throws Exception {
-        saveXMLFile(encoding, content, getSourceDocument());
-
-        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), getSourceDocument(),
-                getEvent());
-    }
-
-    /**
-     * Save the XML file
-     * @param encoding The encoding
-     * @param content The content
-     * @param document The source
-     * @throws FileNotFoundException if the file was not found
-     * @throws UnsupportedEncodingException if the encoding is not supported
-     * @throws IOException if an IO error occurs
-     */
-    private void saveXMLFile(String encoding, String content,
-            org.apache.lenya.cms.publication.Document document)
-            throws FileNotFoundException, UnsupportedEncodingException, IOException {
-        Writer writer = null;
-
-        try {
-            writer = new OutputStreamWriter(document.getOutputStream(), encoding);
-            writer.write(content, 0, content.length());
-        } catch (FileNotFoundException e) {
-            getLogger().error("File not found " + e.toString());
-        } catch (UnsupportedEncodingException e) {
-            getLogger().error("Encoding not supported " + e.toString());
-        } catch (IOException e) {
-            getLogger().error("IO error " + e.toString());
-        } finally {
-            // close all streams
-            if (writer != null)
-                writer.close();
-        }
-    }
-
-    /**
-     * Remove redundant namespaces
-     * @param namespaces The namespaces to remove
-     * @return The namespace string without the removed namespaces
-     */
-    private String removeRedundantNamespaces(String namespaces) {
-        String[] namespace = namespaces.split(" ");
-
-        String ns = "";
-        for (int i = 0; i < namespace.length; i++) {
-            if (ns.indexOf(namespace[i]) < 0) {
-                ns = ns + " " + namespace[i];
-            } else {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Redundant namespace: " + namespace[i]);
-                }
-            }
-        }
-        return ns;
-    }
-
-    /**
-     * Add namespaces
-     * @param namespaces The namespaces to add
-     * @param content The content to add them to
-     * @return The content with the added namespaces
-     */
-/*    private String addNamespaces(String namespaces, String content) {
-        int i = content.indexOf(">");
-        return content.substring(0, i) + " " + namespaces + content.substring(i);
-    }
-*/
-
-    protected String getEvent() {
-        return "edit";
-    }
-
-}
diff --git a/trunk/src/modules/tinymce/menus.xmap b/trunk/src/modules/tinymce/menus.xmap
deleted file mode 100644
index 56e1d05..0000000
--- a/trunk/src/modules/tinymce/menus.xmap
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/tinymce/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/tinymce/resources/README b/trunk/src/modules/tinymce/resources/README
deleted file mode 100644
index 69047fc..0000000
--- a/trunk/src/modules/tinymce/resources/README
+++ /dev/null
@@ -1,2 +0,0 @@
-The directory layout under resources/ may look a little strange, 
-but it's consistent with the layout in the bxe and fckeditor modules.
diff --git a/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_ARCHIVE_HERE b/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_ARCHIVE_HERE
deleted file mode 100644
index e69de29..0000000
--- a/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_ARCHIVE_HERE
+++ /dev/null
diff --git a/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_LANGUAGEPACKS_HERE b/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_LANGUAGEPACKS_HERE
deleted file mode 100644
index e69de29..0000000
--- a/trunk/src/modules/tinymce/resources/UNPACK_TINYMCE_LANGUAGEPACKS_HERE
+++ /dev/null
diff --git a/trunk/src/modules/tinymce/resources/css/editor_content.css b/trunk/src/modules/tinymce/resources/css/editor_content.css
deleted file mode 100644
index a7cb70f..0000000
--- a/trunk/src/modules/tinymce/resources/css/editor_content.css
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-  use this file to add additional styling for the editor area 
-*/
-
-
-p:after {
-  /* add pilcrow sign to make paragraphs visible */
-  content:"\00B6";
-}
-
-br:before {
-  /* add hooked left arrow to make line breaks visible.
-     line breaks can be generated with CTRL-Enter.
-     Firefox does not render this, IE neither. */
-  content:"\21B5";
-}
-
diff --git a/trunk/src/modules/tinymce/resources/i18n/cmsui.xml b/trunk/src/modules/tinymce/resources/i18n/cmsui.xml
deleted file mode 100644
index fbb613e..0000000
--- a/trunk/src/modules/tinymce/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  <message key="tinymce.edit">Edit with TinyMCE</message>
-  <message key="With TinyMCE">With TinyMCE</message>

-</catalogue>

diff --git a/trunk/src/modules/tinymce/resources/i18n/cmsui_de.xml b/trunk/src/modules/tinymce/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 5610520..0000000
--- a/trunk/src/modules/tinymce/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-  <message key="tinymce.edit">Mit TinyMCE bearbeiten</message>

-  <message key="With TinyMCE">Mit TinyMCE</message>
-</catalogue>

diff --git a/trunk/src/modules/tinymce/resources/javascript/insertAsset.js b/trunk/src/modules/tinymce/resources/javascript/insertAsset.js
deleted file mode 100644
index a9eb7a8..0000000
--- a/trunk/src/modules/tinymce/resources/javascript/insertAsset.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-   ext = ''; 
-
-   function insertAsset(nodeid) {
-      var src = document.forms['image'].assetName.value;
-      var title = document.forms['image'].caption.value;
-      var type = document.forms['image'].type.value;
-      var size = document.forms['image'].assetSize.value;
-      var win = window.top.opener.tinyMCE.getWindowArg("window");
-      win.document.getElementById('alt').value = title;
-      win.document.getElementById('src').value = src;
-      window.top.close() ;
-    }
-   
-   function insertImage(nodeid) { 
-      // var link = document.forms['image'].link.value;
-      var link = '';
-      var src = document.forms['image'].assetName.value;
-      var title = document.forms['image'].caption.value;
-      var type = document.forms['image'].type.value;
-      var height = document.forms['image'].height.value;
-      var width = document.forms['image'].width.value;
-      var win = window.top.opener.tinyMCE.getWindowArg("window");
-      win.document.getElementById('alt').value = title;
-      win.document.getElementById('src').value = src;
-      if(height > 0 && width > 0) {
-         win.document.getElementById('width').value = width;
-         win.document.getElementById('height').value = height;
-     } else {
-        win.getImageData();
-     }
-     window.top.close() ;
-   }
-
-   function insertCaption(name, caption, type, size) { 
-     document.forms['image'].assetName.value = name;
-     document.forms['image'].caption.value = caption;
-     document.forms['image'].type.value = type;
-     document.forms['image'].assetSize.value = size;
-     focus(); 
-   } 
-
-   function insertData(name, caption, type, size, height, width) { 
-     var ratio = 1;
-     if (width != 0) {
-       ratio = height / width;
-     }
-     document.forms['image'].assetName.value = name;
-     document.forms['image'].caption.value = caption;
-     document.forms['image'].type.value = type;
-     document.forms['image'].assetSize.value = size;
-     document.forms['image'].height.value = height;
-     document.forms['image'].width.value = width;
-     document.forms['image'].ratio.value = ratio;
-     focus(); 
-   } 
-
-   function scaleHeight(width) {
-     var ratio = document.forms['image'].ratio.value;
-     document.forms['image'].height.value = width * ratio;
-     focus(); 
-   } 
-  
-   function scaleWidth(height) {
-     var ratio = document.forms['image'].ratio.value;
-     document.forms['image'].width.value = height * ratio;
-     focus(); 
-   } 
-  
diff --git a/trunk/src/modules/tinymce/resources/javascript/tiny_config.js b/trunk/src/modules/tinymce/resources/javascript/tiny_config.js
deleted file mode 100644
index 90d98db..0000000
--- a/trunk/src/modules/tinymce/resources/javascript/tiny_config.js
+++ /dev/null
@@ -1,131 +0,0 @@
-  /*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-/* 
-these are the configuration settings for TinyMCE. a complete list 
-of options can be found in the excellent manual at
-http://tinymce.moxiecode.com/tinymce/docs/reference_configuration.html
-*/
-
-
-currentURL = location.href.replace(/\?.*$/,"");
-
-config = {
-
-    /* enable customizable theme */
-    theme : "advanced",
-    
-    /* only the element whose ID is listed under "elements" will be editable */
-    mode : "exact",
-    elements : "tinymce.content",
-    
-    /* enable plugins for custom save function, fullscreen editing
-       and search-and-replace. */
-    //plugins : "save,fullscreen,searchreplace,table,contextmenu,simplebrowser,xhtmlxtras",
-    plugins : "searchreplace,table,contextmenu,simplebrowser",
-        
-    /* grey out the "save" button unless there are unsaved changes: */
-    //save_enablewhendirty : false,
-    
-    /* some special settings for fullscreen mode (they override the 
-       settings further down) */
-/*
-    fullscreen_new_window : true,
-
-    fullscreen_settings : {
-        auto_resize : false,
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_statusbar_location : "bottom"
-    },
-*/    
-    /* auto-resize the editing area. docs say this is "experimental"! */
-    auto_resize : true,
-    
-    /* characters that should be replaced by named XHTML entities.
-       cocoon does not define entities by default, so we use none. */
-    entities : "",
-    
-    /* do not make unicode references, output all special characters unchanged. */
-    entity_encoding : "raw",
-    
-    /* keep linebreaks, don't put everything on one line. this is 
-       important for advanced users who want to use the source editor. */
-    remove_linebreaks : false,
-    
-    /* prettyprint sourcecode on saving FIXME: test. does this do anything? */
-    apply_source_formatting : true,
-    
-    /* if the user inserts a table into a p, split p to create correct code.
-       for nested lists, the inner list is correctly placed in a &lt;li/&gt; */
-    fix_list_elements: true,
-    fix_table_elements: true,
-    
-    /* force all stray text nodes into a <p/> element. */
-    forced_root_block: "p",
-    
-    /* let tinymce do the layout by itself */
-    theme_advanced_layout_manager : "SimpleLayout",
-    
-    /* the toolbar is placed at the top of the editable area. */
-    theme_advanced_toolbar_location : "top",
-    
-    /* the statusbar is placed at the bottom. it displays the element path. */
-    theme_advanced_statusbar_location : "bottom",
-    
-    /* the following items define the function buttons your users get to see.
-       for a complete list, see
-       http://wiki.moxiecode.com/index.php/TinyMCE:Control_reference */
-    
-    theme_advanced_buttons1 :
-            "save,undo,redo,search,replace,separator," + 
-            "cleanup,code,charmap,visualaid,fullscreen,separator," + 
-            "formatselect,styleselect",
-    
-    theme_advanced_buttons2 : 
-            "bold,italic,underline,strikethrough,sub,sup,removeformat,separator," +
-            "bullist,numlist,table,separator," + 
-            "indent,outdent,separator," + 
-            "anchor,link,unlink,image,separator," +
-            "help",
-    
-    /* three button rows are active by default. override. */
-    theme_advanced_buttons3 : "",
-/*
-    //for xhtmlxtras, use this:
-    theme_advanced_buttons3 : "cite,ins,del,abbr,acronym,attribs",
-*/    
-    /* the following items define the elements presented in the "Format" dropdown. 
-       the default setting is very restrictive to enforce a corporate design and clean
-       code at the expense of flexibility. */
-    theme_advanced_blockformats : "p,h1,h2,h3,h4,h5,h6",
-    
-    
-    /*    Lenya/TinyMCE glue code    */
-
-    /* the simplebrowser plugin is used to wire the generic editors.insertFOO usecases into TinyMCE */
-    plugin_simplebrowser_browselinkurl : currentURL + '?lenya.usecase=editors.insertLink',
-    plugin_simplebrowser_browseimageurl : currentURL + '?lenya.usecase=editors.insertImage',
-    plugin_simplebrowser_browseflashurl : '',
-    
-    /* this callback can override arbitrary tinymce commands. neato!
-       currently used hooks are "insert image", "insert link" and "save". 
-       the handler sits in tiny_lenya_glue.js. */
-    execcommand_callback : "LenyaExecCommandHandler",
-    
-    /* insert custom save handler to do some extra clean-up. */
-    save_callback : "LenyaSaveContent"
-};
diff --git a/trunk/src/modules/tinymce/resources/javascript/tiny_lenya_glue.js b/trunk/src/modules/tinymce/resources/javascript/tiny_lenya_glue.js
deleted file mode 100644
index 8a10f3f..0000000
--- a/trunk/src/modules/tinymce/resources/javascript/tiny_lenya_glue.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-
-function LenyaExecCommandHandler(editor_id, elm, command, user_interface, value) {
-var linkElm, imageElm, inst;
-
-/*
-  switch (command) {
-
-    case "mceSave":
-      
-      alert("mceSave callback invoked. This does not yet do anything.");
-      return true;
-      
-  }
-*/
-  return false; // Pass to next handler in chain
-}
-
-
-
-function LenyaSaveContent(element_id, html, body) {
-  // Do some custom HTML cleanup
-  // this is necessary since tinymce inserts &nbsp; entities into
-  // empty <p>s and <td>s regardless of the "entity_encoding" setting,
-  // and these will break Lenya as they are not defined by default.
-  html = html.replace(/&nbsp;/g, "&#160;");
-  return html;
-}
-
-
-/* interface to generic editor usecases */
-
-org.apache.lenya.editors.setObjectData = function(objectData) {
-  TinyMCE_SimpleBrowserPlugin.browserCallback(objectData);
-}
-
-org.apache.lenya.editors.getObjectData = function() {
-  var currentURL = TinyMCE_SimpleBrowserPlugin.options['curl'];
-  return new org.apache.lenya.editors.ObjectData({
-    url : currentURL ? currentURL : ""
-  });
-}
diff --git a/trunk/src/modules/tinymce/resources/javascript/tiny_valid_elements.js b/trunk/src/modules/tinymce/resources/javascript/tiny_valid_elements.js
deleted file mode 100644
index f48916a..0000000
--- a/trunk/src/modules/tinymce/resources/javascript/tiny_valid_elements.js
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-/*
-   this has been put in a separate file so that users can override it
-   depending on the current document type. this does not yet work, since
-   this file is referenced statically in xslt/page2edit.xsl.
-   a solution might be to put it in some place that is not caught by
-   the global module resources pipeline and handle the overriding
-   in the tinymce module sitemap.
-*/
-
-lenya_valid_elements = ""
-+"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name"
-  +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"
-  +"|shape<circle?default?poly?rect|style|tabindex|title|target|type],"
-+"abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase"
-  +"|height|hspace|id|name|object|style|title|vspace|width],"
-+"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref"
-  +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"
-  +"|shape<circle?default?poly?rect|style|tabindex|title|target],"
-+"base[href|target],"
-+"basefont[color|face|id|size],"
-+"bdo[class|dir<ltr?rtl|id|lang|style|title],"
-+"big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
-  +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
-  +"|onmouseover|onmouseup|style|title],"
-+"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink],"
-+"br[class|clear<all?left?none?right|id|style|title],"
-+"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur"
-  +"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"
-  +"|value],"
-+"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
-  +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
-  +"|valign<baseline?bottom?middle?top|width],"
-+"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl"
-  +"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
-  +"|valign<baseline?bottom?middle?top|width],"
-+"dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
-+"del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
-+"em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"font[class|color|dir<ltr?rtl|face|id|lang|size|style|title],"
-+"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang"
-  +"|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"
-  +"|style|title|target],"
-+"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"
-  +"|noresize<noresize|scrolling<auto?no?yes|src|style|title],"
-+"frameset[class|cols|id|onload|onunload|rows|style|title],"
-+"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"head[dir<ltr?rtl|lang|profile],"
-+"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|size|style|title|width],"
-+"html[dir<ltr?rtl|lang|version],"
-+"iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
-  +"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
-  +"|title|width],"
-+"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height"
-  +"|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|src|style|title|usemap|vspace|width],"
-+"input[accept|accesskey|align<bottom?left?middle?right?top|alt"
-  +"|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang"
-  +"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
-  +"|readonly<readonly|size|src|style|tabindex|title"
-  +"|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text"
-  +"|usemap|value],"
-+"ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"isindex[class|dir<ltr?rtl|id|lang|prompt|style|title],"
-+"kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick"
-  +"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
-  +"|onmouseover|onmouseup|style|title],"
-+"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang"
-  +"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"
-  +"|value],"
-+"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type],"
-+"map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme],"
-+"noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"object[align<bottom?left?middle?right?top|archive|border|class|classid"
-  +"|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name"
-  +"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"
-  +"|vspace|width],"
-+"ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|start|style|title|type],"
-+"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick"
-  +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
-  +"|onmouseover|onmouseup|selected<selected|style|title|value],"
-+"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|style|title],"
-+"param[id|name|type|value|valuetype<DATA?OBJECT?REF],"
-+"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
-  +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
-  +"|onmouseover|onmouseup|style|title|width],"
-+"q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
-+"samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"script[charset|defer|language|src|type],"
-+"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name"
-  +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"
-  +"|tabindex|title],"
-+"small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title],"
-+"strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"style[dir<ltr?rtl|lang|media|title|type],"
-+"sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title],"
-+"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class"
-  +"|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"
-  +"|style|summary|title|width],"
-+"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id"
-  +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
-  +"|valign<baseline?bottom?middle?top],"
-+"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
-  +"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
-  +"|style|title|valign<baseline?bottom?middle?top|width],"
-+"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name"
-  +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
-  +"|readonly<readonly|rows|style|tabindex|title],"
-+"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
-  +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
-  +"|valign<baseline?bottom?middle?top],"
-+"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
-  +"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
-  +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
-  +"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
-  +"|style|title|valign<baseline?bottom?middle?top|width],"
-+"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
-  +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
-  +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
-  +"|valign<baseline?bottom?middle?top],"
-+"title[dir<ltr?rtl|lang],"
-+"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class"
-  +"|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title|valign<baseline?bottom?middle?top],"
-+"tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
-+"u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
-  +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
-+"ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
-  +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
-  +"|onmouseup|style|title|type],"
-+"var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
-  +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
-  +"|title]"
\ No newline at end of file
diff --git a/trunk/src/modules/tinymce/resources/misc/download.xml b/trunk/src/modules/tinymce/resources/misc/download.xml
deleted file mode 100644
index b01e1a2..0000000
--- a/trunk/src/modules/tinymce/resources/misc/download.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<page:page
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-<page:head/>
-<page:title>TinyMCE not found</page:title>
-<page:body>
-  <h1>No TinyMCE installation was found on your system.</h1>
-  <p>
-    Due to license incompatibilites, TinyMCE (released under the GPL) cannot
-    be distributed with Lenya (released under the Apache License 2.0), although
-    it is perfectly legal for you to use them together.
-  </p>
-  <p>
-    Please <a href="http://tinymce.moxiecode.com/download.php">download the 
-    TinyMCE editor from moxiecode.com</a>.<br />
-    Unpack the zip archive or tarball in your Lenya source tree under
-    <code>$LENYA-SRC/src/modules/tinymce/resources</code>. Alternatively, you can
-    install it to <code>$PUB_HOME/lenya/modules/tinymce/resources</code> 
-    (if you prefer not to have external code in your Lenya source tree), 
-    since all calls to this code are fallback-enabled.
-  </p>
-  <p>
-    By default, TinyMCE comes with an English localization only. If you prefer
-    another language, you can 
-    <a href="http://tinymce.moxiecode.com/language.php">download additional
-    language catalogues</a>. Unpack them in the same location.
-  </p>
-  <p>
-    Depending on the setting of the "modules.copy" option in 
-    <code>local.build.properties</code> you will have to rebuild Lenya before
-    you can use TinyMCE.
-  </p>
-  <p>
-    No further setup is required, but if you want to fine-tune TinyMCE, edit 
-    <code>modules/tinymce/resources/javascript/tiny_config.js</code>.<br/>
-    Refer to the excellent 
-    <a href="http://tinymce.moxiecode.com/tinymce/docs/index.html">TinyMCE
-    documentation</a> for details.
-  </p>
-  <p>
-    Thanks to the crew at moxiecode for a capable, exceptionally clean,
-    well-packaged and extensively documented open-source editor! Enjoy.
-  </p>
-</page:body>
-</page:page>
diff --git a/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/editor_plugin.js b/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/editor_plugin.js
deleted file mode 100644
index 5ffd018..0000000
--- a/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/editor_plugin.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-tinyMCE.importPluginLanguagePack('simplebrowser', 'en');
-
-var TinyMCE_SimpleBrowserPlugin = {
-	options : {},
-	getInfo : function() {
-		return {
-			longname : '',
-			author : '',
-			authorurl : '',
-			infourl : '',
-			version : ""
-		};
-	},
-
-	initInstance : function(inst) {
-		// You can take out plugin specific parameters
-		//alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false));
-		tinyMCE.settings['file_browser_callback'] = "TinyMCE_SimpleBrowserPlugin_browse";
-		TinyMCE_SimpleBrowserPlugin.options = {
-			width : tinyMCE.getParam("plugin_simplebrowser_width", '800'),
-			height : tinyMCE.getParam("plugin_simplebrowser_height", '600'),
-			browseimageurl : tinyMCE.getParam("plugin_simplebrowser_browseimageurl", false),
-			browselinkurl : tinyMCE.getParam("plugin_simplebrowser_browselinkurl", false),
-			browseflashurl : tinyMCE.getParam("plugin_simplebrowser_browseflashurl", false)
-		}
-	},
-
-	browse : function(field_name, current_url, type, win) {
-		switch(type.toLowerCase()) {
-			case 'image':
-				if(TinyMCE_SimpleBrowserPlugin.options['browseimageurl']) {
-					TinyMCE_SimpleBrowserPlugin.openServerBrowser(field_name, current_url, type, win, TinyMCE_SimpleBrowserPlugin.options['browseimageurl']);
-				} else {
-					alert("Image browser URL not set.");
-				}
-				break;
-			case 'flash':
-				if(TinyMCE_SimpleBrowserPlugin.options['browseflashurl']) {
-					TinyMCE_SimpleBrowserPlugin.openServerBrowser(field_name, current_url, type, win, TinyMCE_SimpleBrowserPlugin.options['browseflashurl']);
-				} else {
-					alert("Flash browser URL not set.");
-				}
-				break;
-			default:
-				if(TinyMCE_SimpleBrowserPlugin.options['browselinkurl']) {
-					TinyMCE_SimpleBrowserPlugin.openServerBrowser(field_name, current_url, type, win, TinyMCE_SimpleBrowserPlugin.options['browselinkurl']);
-				} else {
-					alert("Link browser URL not set.");
-				}
-		}
-	},
-
-	openServerBrowser : function(field_name, current_url, link_type, win, browse_url)
-	{
-			TinyMCE_SimpleBrowserPlugin.options['field'] = field_name;
-			TinyMCE_SimpleBrowserPlugin.options['curl'] = current_url;
-			TinyMCE_SimpleBrowserPlugin.options['type'] = link_type;
-			TinyMCE_SimpleBrowserPlugin.options['target'] = win;
-
-		var sOptions = "toolbar=no,scrollbars=yes,status=no,resizable=yes,dependent=yes";
-		sOptions += ",width=" + TinyMCE_SimpleBrowserPlugin.options['width'];
-		sOptions += ",height=" + TinyMCE_SimpleBrowserPlugin.options['height'];
-		if (tinyMCE.isMSIE)	{
-			// The following change has been made otherwise IE will open the file 
-			// browser on a different server session (on some cases):
-			// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-			// by Simone Chiaretta.
-			var oWindow = window.open(browse_url, "TinyMCESimpleBrowserWindow", sOptions ) ;
-			oWindow.opener = window;
-		} else {
-			window.open(browse_url, "TinyMCESimpleBrowserWindow", sOptions );
-		}
-	},
-
-	browserCallback : function(returnValue) {
-		if(!returnValue) return;
-		TinyMCE_SimpleBrowserPlugin.options['target'].document.forms[0].elements[TinyMCE_SimpleBrowserPlugin.options['field']].value = returnValue.url;
-		
-		// the following checks are necessary because this script is used
-		// for image insertion AND link insertion (where the returnValue.width (height and title)  are null)
-		if (returnValue.width != null) {
-		    TinyMCE_SimpleBrowserPlugin.options['target'].document.forms[0].elements.width.value = returnValue.width;
-		}
-		if (returnValue.height != null) {
-		    TinyMCE_SimpleBrowserPlugin.options['target'].document.forms[0].elements.height.value = returnValue.height;
-		}
-		if ((returnValue.title != null) && (TinyMCE_SimpleBrowserPlugin.options['target'].document.forms[0].elements.alt != null)) {    		
-    		TinyMCE_SimpleBrowserPlugin.options['target'].document.forms[0].elements.alt.value = returnValue.title;
-		}
-	}
-};
-
-function TinyMCE_SimpleBrowserPlugin_browse(field_name, current_url, type, win) {
-	TinyMCE_SimpleBrowserPlugin.browse(field_name, current_url, type, win)
-};
-
-tinyMCE.addPlugin("simplebrowser", TinyMCE_SimpleBrowserPlugin);
\ No newline at end of file
diff --git a/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/langs/en.js b/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/langs/en.js
deleted file mode 100644
index 2a71534..0000000
--- a/trunk/src/modules/tinymce/resources/tinymce/jscripts/tiny_mce/plugins/simplebrowser/langs/en.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-*/
-
-tinyMCE.addToLang('simplebrowser',{});
diff --git a/trunk/src/modules/tinymce/sitemap.xmap b/trunk/src/modules/tinymce/sitemap.xmap
deleted file mode 100644
index 05ddfd0..0000000
--- a/trunk/src/modules/tinymce/sitemap.xmap
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-
-<!-- TinyMCE integration module sitemap -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline internal-only="yes">
-
-      <!-- when editing, the page should look exactly like the original, and since
-           we cannot know anything about the pipelines used for rendering, we must
-           delegate the job to the publication's own sitemap. -->
-
-      <map:match pattern="tinymce.delegateToPubSitemap/**">
-        <map:mount src="{fallback:{page-envelope:publication-id}:sitemap.xmap}" uri-prefix="tinymce.delegateToPubSitemap"/>
-      </map:match>
-
-      <!-- the usecase framework provides error and info messages. since we bypass
-           the jxtemplate view mechanism, we must include them by hand. -->
-
-      <map:match pattern="tinymce.getUsecaseMessages">
-        <map:generate type="jx" src="fallback://lenya/modules/usecase/templates/messages.jx"/>
-        <map:transform type="i18n">
-          <map:param name="locale" value="[request:locale}"/>
-        </map:transform>
-        <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-
-    <map:pipeline>
-
-      <!-- this is the view of the usecase (see config/cocoon-xconf/usecase-tinymce-edit.xconf) -->
-
-      <map:match pattern="tinymce.edit">
-        <!-- check if TinyMCE is installed -->
-        <map:select type="resource-exists">
-          <!-- render page with tinymce inserted -->
-          <map:when test="fallback://lenya/modules/tinymce/resources/tinymce/jscripts/tiny_mce/tiny_mce.js">
-            <map:aggregate element="tinymceWrapper">
-              <map:part src="cocoon:/tinymce.delegateToPubSitemap/authoring{page-envelope:document-url}"/>
-              <map:part src="cocoon:/tinymce.getUsecaseMessages"/>
-            </map:aggregate>
-            <!-- Check for language pack to render TinyMCE according to the 
-                 requested locale. If it does not exist, fall back to English. --> 
-            <map:select type="resource-exists">
-              <map:when test="fallback://lenya/modules/tinymce/resources/tinymce/jscripts/tiny_mce/langs/{request:locale}.js">
-                <map:transform src="fallback://lenya/modules/tinymce/xslt/page2edit.xsl">
-                  <!-- the proxy path is set manually, since the document has already been
-                       though the proxy transformer in the publication sitemap, and we can't
-                       use it again, as that would yield duplicate proxy paths. -->
-                  <map:parameter name="proxyPath" value="{proxy:}"/>
-                  <map:parameter name="continuationId" value="{flow-continuation:id}"/>
-                  <map:parameter name="usecaseName" value="{request-param:lenya.usecase}"/>
-                  <map:parameter name="publicationId" value="{page-envelope:publication-id}"/>
-                  <map:parameter name="locale" value="{request:locale}"/>
-                </map:transform>
-              </map:when>
-              <map:otherwise>
-                <map:transform src="fallback://lenya/modules/tinymce/xslt/page2edit.xsl">
-                  <map:parameter name="proxyPath" value="{proxy:}"/>
-                  <map:parameter name="continuationId" value="{flow-continuation:id}"/>
-                  <map:parameter name="usecaseName" value="{request-param:lenya.usecase}"/>
-                  <map:parameter name="publicationId" value="{page-envelope:publication-id}"/>
-                  <map:parameter name="locale" value="en"/>
-                </map:transform>
-              </map:otherwise>
-            </map:select>
-          </map:when>
-          <!-- TinyMCE is not installed - generate info page for the user -->
-          <map:otherwise>
-            <map:generate src="fallback://lenya/modules/tinymce/resources/misc/download.xml"/>
-          </map:otherwise>
-        </map:select>
-        <map:transform type="i18n">      
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xhtml"/>
-      </map:match>
-
-    </map:pipeline>
-
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/tinymce/xslt/page2edit.xsl b/trunk/src/modules/tinymce/xslt/page2edit.xsl
deleted file mode 100644
index 5bc31d5..0000000
--- a/trunk/src/modules/tinymce/xslt/page2edit.xsl
+++ /dev/null
@@ -1,256 +0,0 @@
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  exclude-result-prefixes="#default i18n"
->
-
-<!--
-  this stylesheet inserts the tinymce javascript code into the
-  rendered page after the last header tag, and puts a form and 
-  textarea into the div#body tag.
--->
-
-<xsl:param name="proxyPath" select="'tinymce.ERROR'"/>
-<xsl:param name="continuationId" select="'tinymce.ERROR'"/>
-<xsl:param name="usecaseName" select="'tinymce.ERROR'"/>
-<xsl:param name="publicationId" select="'tinymce.ERROR'" />
-<xsl:param name="locale" select="'tinymce.ERROR'"/>
-
-
-<!--
-  check sitemap parameters.
-  the <tinymceWrapper/> is the document element set by the aggregator.
--->
-<xsl:template match="tinymceWrapper">
-  <xsl:if test="$proxyPath='tinymce.ERROR'">
-    <xsl:message terminate="yes">
-      <i18n:text>Missing proxyPath parameter!</i18n:text>
-      <i18n:text>Check your tinymce sitemap.</i18n:text>
-    </xsl:message>
-  </xsl:if>
-  <xsl:if test="$continuationId='tinymce.ERROR'">
-    <xsl:message terminate="yes">
-      <i18n:text>Missing continuationId parameter!</i18n:text>
-      <i18n:text>Check your tinymce sitemap.</i18n:text>
-    </xsl:message>
-  </xsl:if>
-  <xsl:if test="$usecaseName='tinymce.ERROR'">
-    <xsl:message terminate="yes">
-      <i18n:text>Missing usecaseName parameter!</i18n:text>
-      <i18n:text>Check your tinymce sitemap.</i18n:text>
-    </xsl:message>
-  </xsl:if>
-  <xsl:if test="$publicationId='tinymce.ERROR'">
-    <xsl:message terminate="yes">
-      <i18n:text>Missing publicationId parameter!</i18n:text>
-      <i18n:text>Check your tinymce sitemap.</i18n:text>
-    </xsl:message>
-  </xsl:if>
-  <xsl:if test="$locale='tinymce.ERROR'">
-    <xsl:message terminate="yes">
-      <i18n:text>Missing locale parameter!</i18n:text>
-      <i18n:text>Check your tinymce sitemap.</i18n:text>
-    </xsl:message>
-  </xsl:if>
-
-  <xsl:apply-templates select="xhtml:html"/>
-</xsl:template>
-
-
-<!-- 
-  add tinymce code and configuration to the header.
-  FIXME: can we get proper whitespace in the output
-  without making the template so verbose?
-  FIXME: modularize config some more so users can fallback-override more easily.
- -->
-<xsl:template match="xhtml:html/xhtml:head/xhtml:*[last()]">
-  <xsl:call-template name="identity"/>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>special code for tinymce.edit usecase view</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>without the space between opening and closing script tag, Firefox tends to interpret the whole page as a comment or something :(</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>the tinymce code:</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript" 
-          src="{$proxyPath}/{$publicationId}/modules/tinymce/tinymce/jscripts/tiny_mce/tiny_mce.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>custom event handlers for lenya:</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>the main configuration of tinymce:</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript"
-          src="{$proxyPath}/{$publicationId}/modules/tinymce/javascript/tiny_config.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>allowed XHTML elements in tinymce:</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript"
-          src="{$proxyPath}/{$publicationId}/modules/tinymce/javascript/tiny_valid_elements.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript" 
-          src="{$proxyPath}/{$publicationId}/modules/editors/javascript/org.apache.lenya.editors.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <xsl:comment>catch backspace key - it maps to "back in history" in some popular 
-  browsers under windows, which can confuse users and lead to data loss</xsl:comment>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript" 
-          src="{$proxyPath}/{$publicationId}/modules/editors/javascript/disablebackspace.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" 
-          type="text/javascript" 
-          src="{$proxyPath}/{$publicationId}/modules/tinymce/javascript/tiny_lenya_glue.js"
-  >&#160;</script>
-  <xsl:text>
-  </xsl:text>
-  <script language="javascript" type="text/javascript">
-  <xsl:text>
-
-/* 
-   include valid elements from tiny_valid_elements.js (extra file so that you can override it per-doctype)
-   FIXME: not yet done, this needs to be resolved via a special pipeline!
-
- */
-
-   config['valid_elements'] = lenya_valid_elements;
-
-
-/* some dynamic configuration that depends on pipeline information */
-
-    /* pass the locale of the current request to TinyMCE, so that it is properly localized */
-
-    config['language'] = "</xsl:text>
-    <xsl:value-of select="$locale"/>
-    <xsl:text>";
-
-    /* pass all the stylesheets of the current page (except for those specific
-       to the Lenya authoring GUI) to TinyMCE for true WYSIWYG editing */
-
-    config['content_css'] = "</xsl:text>
-    <xsl:value-of select="$proxyPath"/>
-    <xsl:text>/modules/tinymce/css/editor_content.css</xsl:text>
-    <xsl:for-each select="../xhtml:link[@rel='stylesheet' and not(contains(@href, '/lenya/css/'))]">
-        <xsl:text>,</xsl:text>
-        <xsl:value-of select="@href"/>
-    </xsl:for-each>
-
-    <xsl:text>";
-
-    tinyMCE.init(config);
-
-    </xsl:text>
-
-    </script>
-</xsl:template>
-
-<!--
-  insert lenya cms default.css before the first header element, so that 
-  publication-specific styles will override it. (used to format the usecase
- messages.)
--->
-<xsl:template match="xhtml:html/xhtml:head/xhtml:*[1]">
-  <link rel="stylesheet" type="text/css" href="/lenya/css/default.css"/>
-  <xsl:call-template name="identity"/>
-</xsl:template>
-
-<!-- 
-  a textarea is inserted into the <div id="body"/> element. 
-  it will become the editor instance. the contents of <div id="body"/>
-  are then copied into the textarea.
-  before the textarea, we insert any usecase info and error messages.
--->
-<xsl:template match="xhtml:html/xhtml:body//xhtml:div[@id='body']">
-<!-- copy the div#body and all attributes that might be in it -->
-<xsl:copy>
-  <xsl:for-each select="@*">
-    <xsl:copy/>
-  </xsl:for-each>
-    <!-- insert usecase messages, if any -->
-    <xsl:apply-templates select="/tinymceWrapper/xhtml:div[@class='lenya-error']"/>
-  <xsl:if test="not(/tinymceWrapper/xhtml:div[@class = 'lenya-error']/*)">
-    <!-- insert tinymce form hook -->
-      <xsl:comment>special code for the tinymce.edit usecase view</xsl:comment>
-      <xsl:text>
-      </xsl:text>
-      <form method="post" enctype="multipart/form-data">
-          <xsl:text>
-          </xsl:text>
-          <input type="hidden" name="lenya.continuation" value="{$continuationId}"/>
-          <xsl:text>
-          </xsl:text>
-          <input type="hidden" name="lenya.usecase" value="{$usecaseName}"/>		
-          <xsl:text>
-          </xsl:text>
-          <input type="hidden" name="tinymce.namespaces" value=""/>
-          <xsl:text>
-          </xsl:text>
-          <textarea id="tinymce.content" name="tinymce.content" style="width:100%">
-            <xsl:choose>
-              <!-- firefox bug workaround: prevent <textarea/> from collapsing if empty -->
-              <xsl:when test=".//*">
-                <xsl:apply-templates/>
-              </xsl:when>
-              <xsl:otherwise>
-                <xsl:text>&#160;</xsl:text>
-              </xsl:otherwise>
-            </xsl:choose>
-          </textarea>
-          <xsl:text>
-          </xsl:text>
-          <input i18n:attr="value" type="submit" name="submit" value="Save"/>		
-          <xsl:text>
-          </xsl:text>
-          <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>		
-          <xsl:text>
-      </xsl:text>
-      </form>
-    </xsl:if>
-    <xsl:text>
-    </xsl:text>
-</xsl:copy>
-</xsl:template>
-
-<xsl:template match="/tinymceWrapper/xhtml:div[@class='lenya-error']">
-  <xsl:copy>
-    <xsl:for-each select="@*">
-      <xsl:copy/>
-    </xsl:for-each>
-    <div>
-       <p><strong>Usecase messages for "<xsl:value-of select="$usecaseName"/>":</strong></p>
-       <xsl:apply-templates/>
-    </div>
-  </xsl:copy>
-</xsl:template>
-
-<xsl:template match="@*|node()" name="identity">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/usecasedocument/config/cocoon-xconf/modules.xconf b/trunk/src/modules/usecasedocument/config/cocoon-xconf/modules.xconf
deleted file mode 100644
index 682ed68..0000000
--- a/trunk/src/modules/usecasedocument/config/cocoon-xconf/modules.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'usecase-document']">
-
-  <component-instance logger="core.modules.input.usecase-document" name="usecase-document"
-    class="org.apache.lenya.cms.cocoon.components.modules.input.UsecaseDocumentModule"/>
-  
-</xconf>
diff --git a/trunk/src/modules/usecasedocument/config/cocoon-xconf/resource-type-usecase.xconf b/trunk/src/modules/usecasedocument/config/cocoon-xconf/resource-type-usecase.xconf
deleted file mode 100644
index 66f3f25..0000000
--- a/trunk/src/modules/usecasedocument/config/cocoon-xconf/resource-type-usecase.xconf
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'usecase']">
-  
-  <component-instance name="usecase"
-    logger="lenya.resourcetypes.usecase"
-    class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-      namespace="http://relaxng.org/ns/structure/0.9"
-      uri="fallback://lenya/modules/usecasedocument/resources/schemas/usecase.rng"
-    />
-    <sample 
-      mime-type="application/xml"
-      uri="fallback://lenya/modules/usecasedocument/samples/usecase.xml"
-    />
-    <format name="xhtml" uri="cocoon://modules/usecasedocument/usecase.xml"/>
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules/usecasedocument/config/cocoon-xconf/usecase-createUsecaseDocument.xconf b/trunk/src/modules/usecasedocument/config/cocoon-xconf/usecase-createUsecaseDocument.xconf
deleted file mode 100644
index 50050ef..0000000
--- a/trunk/src/modules/usecasedocument/config/cocoon-xconf/usecase-createUsecaseDocument.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'usecasedocument.create']">

-    <component-instance name="usecasedocument.create" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.CreateUsecaseDocument">

-      <view uri="modules/usecasedocument/usecases/createUsecaseDocument.jx"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/modules/usecasedocument/config/module.xml b/trunk/src/modules/usecasedocument/config/module.xml
deleted file mode 100644
index 549e3d3..0000000
--- a/trunk/src/modules/usecasedocument/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.usecasedocument</id>
-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.sitemanagement"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Usecase Resource Type</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Resource type which allows to execute usecases in the context of a document.</description>
-</module>
diff --git a/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java b/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java
deleted file mode 100644
index 1556583..0000000
--- a/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.cocoon.components.modules.input;
-
-import java.util.Map;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentUtil;
-import org.apache.lenya.cms.site.usecases.CreateUsecaseDocument;
-import org.apache.lenya.xml.DocumentHelper;
-
-/**
- * Module to retrieve information from a usecase resource type document.
- */
-public class UsecaseDocumentModule extends AbstractInputModule implements Serviceable {
-
-    protected static final String USECASE = "usecase";
-
-    public Object getAttribute(String name, Configuration modeConf, Map objectModel)
-            throws ConfigurationException {
-
-        Object value = null;
-        try {
-            if (name.equals(USECASE)) {
-                Request request = ObjectModelHelper.getRequest(objectModel);
-                Document doc = DocumentUtil.getCurrentDocument(this.manager, request);
-                org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(doc.getInputStream());
-                String usecaseName = xmlDoc.getDocumentElement().getAttribute(CreateUsecaseDocument.ATTRIBUTE_NAME);
-                value = usecaseName;
-            }
-        } catch (Exception e) {
-            throw new ConfigurationException("Could not obtain value: ", e);
-        }
-        return value;
-    }
-
-    protected ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java b/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java
deleted file mode 100644
index 816dbd6..0000000
--- a/trunk/src/modules/usecasedocument/java/src/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.site.usecases;
-
-import java.util.Arrays;
-
-import org.apache.lenya.cms.usecase.UsecaseResolver;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Element;
-
-/**
- * <p>
- * Create a usecase document. The document content looks like this:
- * </p>
- * 
- * <pre>
- *   &lt;usecase name=&quot;...&quot;/&gt;
- * </pre>
- */
-public class CreateUsecaseDocument extends CreateDocument {
-
-    protected static final String USECASE = "usecase";
-    protected static final String RESOURCE_TYPE_USECASE = "usecase";
-
-    /**
-     * The namespace for usecase document content.
-     */
-    public static final String NAMESPACE = "http://apache.org/lenya/usecase/1.0";
-
-    /**
-     * The local name of the usecase XML element.
-     */
-    public static final String ELEMENT_USECASE = "usecase";
-
-    /**
-     * The local name of the name attribute.
-     */
-    public static final String ATTRIBUTE_NAME = "name";
-    
-    protected void initParameters() {
-        super.initParameters();
-        setParameter(DOCUMENT_TYPE, RESOURCE_TYPE_USECASE);
-        setParameter(RESOURCE_TYPES, Arrays.asList(new String[0]));
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        super.doCheckExecutionConditions();
-
-        String usecaseName = getParameterAsString(USECASE);
-        if (usecaseName.equals("")) {
-            addErrorMessage("Please enter a usecase name.");
-        } else {
-            UsecaseResolver resolver = null;
-            try {
-                resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-                if (!resolver.isRegistered(getSourceURL(), usecaseName)) {
-                    addErrorMessage("The usecase '" + usecaseName + "' is not registered.");
-                }
-            } finally {
-                if (resolver != null) {
-                    this.manager.release(resolver);
-                }
-            }
-        }
-    }
-
-    protected void doExecute() throws Exception {
-        super.doExecute();
-
-        NamespaceHelper helper = new NamespaceHelper(NAMESPACE, "", ELEMENT_USECASE);
-        Element usecaseElement = helper.getDocument().getDocumentElement();
-        usecaseElement.setAttribute(ATTRIBUTE_NAME, getParameterAsString(USECASE));
-        DocumentHelper.writeDocument(helper.getDocument(), getNewDocument().getOutputStream());
-
-    }
-
-}
diff --git a/trunk/src/modules/usecasedocument/resources/i18n/cmsui.xml b/trunk/src/modules/usecasedocument/resources/i18n/cmsui.xml
deleted file mode 100644
index 4cc0625..0000000
--- a/trunk/src/modules/usecasedocument/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-usecase">Usecase</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/usecasedocument/resources/i18n/cmsui_de.xml b/trunk/src/modules/usecasedocument/resources/i18n/cmsui_de.xml
deleted file mode 100644
index abe9942..0000000
--- a/trunk/src/modules/usecasedocument/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-usecase">Usecase</message>
-  

-</catalogue>

-

diff --git a/trunk/src/modules/usecasedocument/resources/schemas/usecase.rng b/trunk/src/modules/usecasedocument/resources/schemas/usecase.rng
deleted file mode 100644
index f95f287..0000000
--- a/trunk/src/modules/usecasedocument/resources/schemas/usecase.rng
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<element name="usecase" ns="http://apache.org/lenya/usecase/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
-
-  <attribute name="name">
-    <text/>
-  </attribute>
-
-</element>
diff --git a/trunk/src/modules/usecasedocument/samples/usecase.xml b/trunk/src/modules/usecasedocument/samples/usecase.xml
deleted file mode 100644
index 7511395..0000000
--- a/trunk/src/modules/usecasedocument/samples/usecase.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<usecase xmlns="http://apache.org/lenya/usecase/1.0" name="contactform.sendMessage"/>
diff --git a/trunk/src/modules/usecasedocument/sitemap.xmap b/trunk/src/modules/usecasedocument/sitemap.xmap
deleted file mode 100644
index 54496d9..0000000
--- a/trunk/src/modules/usecasedocument/sitemap.xmap
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase.xmap 407452 2006-05-18 04:14:16Z chestnut $ -->
-<!--
-    This sitemap handles calls to usecases which are registered in the
-    usecase framework.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:components>

-    <map:transformers default="xslt">    

-      <map:transformer name="browser-update" src="org.apache.cocoon.ajax.BrowserUpdateTransformer"/>

-    </map:transformers>

-    <map:selectors>

-      <map:selector name="ajax-request" src="org.apache.cocoon.ajax.AjaxRequestSelector"/>

-    </map:selectors>
-  </map:components>
-  
-  <!-- =========================== FlowScript =============================== -->
-
-  <map:flow language="javascript">
-    <map:script src="fallback://lenya/modules/usecase/usecases.js"/>
-  </map:flow>
-  
-  <!-- =========================== Pipelines ================================ -->
-
-  <map:pipelines>
-    
-    <map:pipeline type="noncaching">
-      <map:match pattern="redirect">
-        <map:generate src="context://lenya/content/admin/common/redirect.xsp" type="serverpages"/>
-        <map:transform src="context://lenya/xslt/admin/common/redirect.xsl"/>
-        <map:serialize/>
-      </map:match>
-      
-      <!-- 
-        This internal sitemap fragment renders the usecase, once the
-        executeUsecase() flowscript has completed and issued a redirect,
-        which is matched here.
-        -->
-      <map:match pattern="usecases-view/*/**" internal-only="true">
-        
-        <map:generate type="jx" src="fallback://lenya/{2}"/>
-        <map:transform type="browser-update"/>
-        <map:transform type="cinclude"/>
-        <map:transform type="forms" />
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{page-envelope:document-language}"/>
-        </map:transform>
-        
-        <map:transform src="cocoon://lenya-screen.xsl"/>
-        
-        <!-- Strip xhtml namespace from <head> and <body> element -->
-        <map:transform src="fallback://lenya/xslt/cforms/strip-xhtml-namespace.xsl"/>
-        <map:transform src="fallback://lenya/xslt/cforms/forms-samples-styling.xsl">
-          <map:parameter name="resources-uri" value="{page-envelope:context-prefix}/cforms"/>
-        </map:transform>
-        <map:transform src="fallback://lenya/xslt/cforms/add-xhtml-namespace.xsl"/>
-        
-        <map:transform src="fallback://lenya/modules/xhtml/xslt/xhtml2xhtml.xsl">
-          <map:parameter name="rendertype" value="{request-param:rendertype}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-        </map:transform>
-        
-        <map:serialize type="xml"/>
-
-     </map:match>
-      
-    </map:pipeline>
-
-    <map:pipeline>
-      <map:match type="request-parameter" pattern="lenya.continuation">
-        <map:call continuation="{1}"/>
-      </map:match>
-      <map:match pattern="usecase.xml">
-        <map:call function="executeUsecase">
-          <map:parameter name="usecaseName" value="{usecase-document:usecase}"/>
-        </map:call>
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-	
-</map:sitemap>
diff --git a/trunk/src/modules/usecasedocument/usecases/createUsecaseDocument.jx b/trunk/src/modules/usecasedocument/usecases/createUsecaseDocument.jx
deleted file mode 100644
index 81da311..0000000
--- a/trunk/src/modules/usecasedocument/usecases/createUsecaseDocument.jx
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: create.jx 376630 2006-02-10 10:58:23Z thorsten $ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  
-  <page:title><i18n:text>New Usecase Document</i18n:text></page:title>
-  <page:body>
-    <div class="lenya-box">
-      <div class="lenya-box-title">
-        <i18n:text>New Usecase Document</i18n:text>
-      </div>
-      
-      <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-      
-      <div class="lenya-box-body">
-        <form id="form-create">
-          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-          <table class="lenya-table-noborder">
-            <jx:if test="${!usecase.getParameter('documentIdProvided')}">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <i18n:text>Parent Path</i18n:text>:</td>
-                <td>
-                  <jx:out value="${usecase.getParameter('parentPath')}"/>
-                </td>
-              </tr>
-            </jx:if>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="nodeName"><i18n:text>Node Name</i18n:text>*: </label></td>
-              <td>
-                <jx:choose>
-                  <jx:when test="${usecase.getParameter('documentIdProvided')}">
-                    <jx:out value="${usecase.getParameter('documentId')}"/>
-                  </jx:when>
-                  <jx:otherwise>
-                    <input class="lenya-form-element" type="text" name="nodeName" value="${usecase.getParameter('nodeName')}"/>
-                    <br/> (<i18n:text>No whitespace, no special characters</i18n:text>)
-                  </jx:otherwise>
-                </jx:choose>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="title"><i18n:text>Navigation Title</i18n:text>*: </label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="dublincore.title" value="${usecase.getParameter('dublincore.title')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="visibleinnav"><i18n:text>Document visible in Navigation</i18n:text>*: </label></td>
-              <jx:set var="visible" value="yes"/>
-              <jx:if test="${usecase.getParameter('visibleInNav').equals('false')}">
-                <jx:set var="visible" value="no"/>
-              </jx:if> 
-              <td>
-                <select class="lenya-form-element" name="visibleInNav">
-                  <jx:choose>
-                    <jx:when test="${visible.equals('yes')}">
-                      <option value="true" selected="selected"><i18n:text>yes</i18n:text></option>
-                      <option value="false"><i18n:text>no</i18n:text></option>
-                    </jx:when>
-                    <jx:otherwise>
-                      <option value="true"><i18n:text>yes</i18n:text></option>
-                      <option value="false" selected="selected"><i18n:text>no</i18n:text></option>
-                    </jx:otherwise>
-                  </jx:choose>
-                </select>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="usecase"><i18n:text>Usecase</i18n:text>*: </label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="usecase" value="${usecase.getParameter('usecase')}"/>
-              </td>
-            </tr>
-            <jx:if test="${!usecase.getParameter('documentIdProvided')}">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="relation"><i18n:text>Relation</i18n:text>*: </label>
-                </td>
-                <td>
-                  <jx:forEach var="relation" items="${usecase.getParameter('relations')}">
-                    <jx:choose>
-                      <jx:when test="${relation.equals(usecase.getParameter('relation'))}">
-                        <input type="radio" name="relation" value="${relation}" checked="checked"/><i18n:text>${relation}</i18n:text>
-                      </jx:when>
-                      <jx:otherwise>
-                        <input type="radio" name="relation" value="${relation}"/><i18n:text>${relation}</i18n:text>
-                      </jx:otherwise>
-                    </jx:choose>
-                  </jx:forEach>
-                </td>
-              </tr>
-            </jx:if>
-            <jx:set var="languages" value="${usecase.getParameter('languages')}"/>
-            <jx:choose>
-              <jx:when test="${languages.size() &gt; 1}">            
-                <tr>
-                  <td class="lenya-entry-caption">
-                    <label for="language"><i18n:text>Language</i18n:text>*: </label></td>
-                  <td>
-                    <select class="lenya-form-element" name="language">
-                      <jx:forEach var="language" items="${usecase.getParameter('languages')}">
-                        <option value="${language}">${language}</option>
-                       </jx:forEach>
-                    </select>
-                  </td>
-                </tr>
-              </jx:when>
-              <jx:otherwise>
-                <tr>
-                  <td colspan="2">
-                    <jx:set var="language" value="${languages[0]}"/>
-                    <input type="hidden" name="language" value="${language}"/>
-                  </td>
-                </tr>
-              </jx:otherwise>
-            </jx:choose>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="creator"><i18n:text>Creator</i18n:text>:</label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="creator" value="${usecase.getParameter('creator')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="subject"><i18n:text>Subject</i18n:text>:</label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="subject" value="${usecase.getParameter('subject')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="publisher"><i18n:text>Publisher</i18n:text>:</label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="publisher" value="${usecase.getParameter('publisher')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <i18n:text>Date</i18n:text>:</td>
-              <td>
-                <jx:out value="${usecase.getParameter('date')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption">
-                <label for="rights"><i18n:text>Rights</i18n:text>:</label></td>
-              <td>
-                <input class="lenya-form-element" type="text" name="rights" value="${usecase.getParameter('rights')}"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="myMeta"><i18n:text>My
-                custom metadata</i18n:text>:</label></td>
-              <td>
-                <input type="text" id="myMeta" name="meta.custom.myMeta"
-                  class="lenya-form-element"
-                  value="${usecase.getParameter('meta.custom.myMeta')}"/>
-              </td>
-            </tr>
-            <jx:set var="resourceTypes" value="${usecase.getParameter('resourceTypes')}"/>
-            <jx:if test="${resourceTypes.size()  &gt; 0}">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="sample"><i18n:text>Resource Type</i18n:text>:</label></td>
-                <td>
-                  <select name="doctype">
-                    <jx:forEach var="item" items="${resourceTypes}">
-                      <jx:choose>
-                        <jx:when test="${usecase.getParameter('doctype').equals(item)}">
-                          <option value="${item}" selected="selected">${item}</option>
-                        </jx:when>
-                        <jx:otherwise>
-                          <option value="${item}">${item}</option>
-                        </jx:otherwise>
-                      </jx:choose>
-                    </jx:forEach>
-                  </select>
-                </td>
-              </tr>
-            </jx:if>
-            <jx:set var="samples" value="${usecase.getParameter('samples')}"/>
-            <jx:if test="${samples.size() &gt; 0}">
-              <tr>
-                <td class="lenya-entry-caption">
-                  <label for="sample"><i18n:text>Page Layout</i18n:text>:</label></td>
-                <td>
-                  <jx:forEach var="item" items="${samples}">
-                    <jx:choose>
-                      <jx:when test="${usecase.getParameter('sample').equals(item)}">
-                        <input type="radio" name="sample" value="${item}" checked="checked"/>${item}<br />
-                      </jx:when>
-                      <jx:otherwise>
-                        <input type="radio" name="sample" value="${item}"/>${item}<br />
-                      </jx:otherwise>
-                    </jx:choose>
-                  </jx:forEach>
-                </td>
-              </tr>
-            </jx:if>  
-            <tr>
-              <td class="lenya-entry-caption">* <i18n:text>required fields</i18n:text>
-              </td>
-            </tr>
-            <tr>
-              <td/>
-              <td>
-                <input i18n:attr="value" type="submit" name="submit" value="Create"/>
-                &#160;
-                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
-              </td>
-            </tr>
-          </table>
-        </form>
-      </div>
-    </div>
-  </page:body>
-</page:page>
diff --git a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-delete.xconf b/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-delete.xconf
deleted file mode 100644
index 2310c80..0000000
--- a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-delete.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'webdav.delete']">
-
-    <component-instance name="webdav.delete"
-                        logger="lenya.usecases.delete"
-                        class="org.apache.lenya.cms.site.usecases.Delete">
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-filePropfind.xconf b/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-filePropfind.xconf
deleted file mode 100644
index f1f4e37..0000000
--- a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-filePropfind.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'webdav.filePropfind']">
-
-    <component-instance name="webdav.filePropfind"
-                        logger="lenya.publication"
-                        class="org.apache.lenya.cms.usecases.webdav.FilePropfind">
-      <view uri="usecases/webdav/filePropfind"/>
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-mkcol.xconf b/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-mkcol.xconf
deleted file mode 100644
index 59ba01f..0000000
--- a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-mkcol.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases"
-    unless="/cocoon/usecases/component-instance[@name = 'webdav.mkcol']">
-    <component-instance name="webdav.mkcol" logger="lenya.publication"
-      class="org.apache.lenya.cms.usecases.webdav.Mkcol">
-      <!-- You can configure which resource type and extension the 
-        creation of a webdav collection will trigger in lenya. -->
-      <extension resource-type="xhtml">xml</extension>
-    </component-instance>
-    
-  </xconf>
diff --git a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-propfind.xconf b/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-propfind.xconf
deleted file mode 100644
index 45089dd..0000000
--- a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-propfind.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'webdav.propfind']">
-
-    <component-instance name="webdav.propfind"
-                        logger="lenya.publication"
-                        class="org.apache.lenya.cms.usecases.webdav.Propfind">
-      <view uri="usecases/webdav/propfind"/>
-    </component-instance>
-
-  </xconf>
diff --git a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-put.xconf b/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-put.xconf
deleted file mode 100644
index 3bafcac..0000000
--- a/trunk/src/modules/webdav/config/cocoon-xconf/usecases-webdav-put.xconf
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-  <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'webdav.put']">
-    <component-instance name="webdav.put" logger="lenya.publication"
-      class="org.apache.lenya.cms.usecases.webdav.Put">
-      <!-- You can configure which resource type and extension are connected.
-        The idea is similar to the file system browser dialog that an operation system
-        offers (open with) where you can register applications to open certain file extensions-->
-      <extensions>
-        <extension resource-type="xhtml">xml</extension>
-        <extension resource-type="opendocument">odt</extension>
-        <extension resource-type="xhtml">html</extension>
-        <extension resource-type="xhtml">xhtml</extension>
-        <!--Next extension is a wildcard (all others)-->
-        <extension resource-type="xhtml">*</extension>
-      </extensions>
-    </component-instance>
-  </xconf>
diff --git a/trunk/src/modules/webdav/config/module.xml b/trunk/src/modules/webdav/config/module.xml
deleted file mode 100644
index 9dbdb7d..0000000
--- a/trunk/src/modules/webdav/config/module.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.webdav</id>

-  <depends module="org.apache.lenya.modules.usecase"/>
-  <depends module="org.apache.lenya.modules.sitemanagement"/>
-  <depends module="org.apache.lenya.modules.linking"/>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>WebDAV Module</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>The WebDAV module provides the ability to use WebDAV clients to edit your content in Lenya</description>
-</module>
diff --git a/trunk/src/modules/webdav/java/src/org/apache/cocoon/reading/RequestReader.java b/trunk/src/modules/webdav/java/src/org/apache/cocoon/reading/RequestReader.java
deleted file mode 100644
index 6506e92..0000000
--- a/trunk/src/modules/webdav/java/src/org/apache/cocoon/reading/RequestReader.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.cocoon.reading;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.Context;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Response;
-import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.environment.http.HttpEnvironment;
-import org.xml.sax.SAXException;
-
-
-/**
- * The <code>RequestReader</code> component is used to serve binary data
- * from the Http request
- */ 
-public class RequestReader extends AbstractReader {
-
-  protected int bufferSize = 512;
-
-  protected Response response;
-
-  protected HttpServletRequest httpRequest;
-
-  /**
-   * Setup the reader The resource is opened to get an
-   * <code>HttpServletRequest</code>
-   */
-  public void setup(SourceResolver resolver, Map objectModel, String src,
-      Parameters par) throws ProcessingException, SAXException, IOException {
-    super.setup(resolver, objectModel, src, par);
-
-    this.response = ObjectModelHelper.getResponse(objectModel);
-
-    this.httpRequest = (HttpServletRequest) objectModel
-        .get(HttpEnvironment.HTTP_REQUEST_OBJECT);
-
-    if (httpRequest == null) {
-      throw new ProcessingException(
-          "This feature is only available in an http environment.");
-    }
-  }
-
-  /**
-   * Recyclable
-   */
-  public void recycle() {
-    this.httpRequest = null;
-    super.recycle();
-  }
-
-  protected void processStream(InputStream inputStream) throws IOException,
-      ProcessingException {
-
-    byte[] buffer = new byte[bufferSize];
-    int length = -1;
-
-    long contentLength = httpRequest.getContentLength();
-
-    if (contentLength != -1) {
-      response.setHeader("Content-Length", Long.toString(contentLength));
-    }
-
-    while ((length = inputStream.read(buffer)) > -1) {
-      out.write(buffer, 0, length);
-    }
-    out.flush();
-  }
-
-  /**
-   * Generates the requested resource.
-   */
-  public void generate() throws IOException, ProcessingException {
-    try {
-      InputStream inputStream = httpRequest.getInputStream();
-
-      try {
-        processStream(inputStream);
-      } finally {
-        if (inputStream != null) {
-          inputStream.close();
-        }
-      }
-
-    } catch (IOException e) {
-      getLogger()
-          .debug(
-              "Received an IOException, assuming client severed connection on purpose");
-    }
-  }
-
-  /**
-   * Returns the mime-type of the resource in process.
-   */
-  public String getMimeType() {
-    Context ctx = ObjectModelHelper.getContext(objectModel);
-    if (ctx != null) {
-      final String mimeType = ctx.getMimeType(source);
-      if (mimeType != null) {
-        return mimeType;
-      }
-    }
-    return null;
-  }
-}
diff --git a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/FilePropfind.java b/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/FilePropfind.java
deleted file mode 100644
index efdc2c1..0000000
--- a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/FilePropfind.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecases.webdav;
-
-import java.text.SimpleDateFormat;
-import java.util.Vector;
-
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.usecases.SiteUsecase;
-
-/**
- * Usecase to display the overview tab in the site area for a document.
- * 
- */
-public class FilePropfind extends SiteUsecase {
-
-    protected static final String DOCUMENT = "document";
-    protected static final String DOCUMENTS = "documents";
-    protected static final String SOURCEURL = "sourceURL";
-    protected static final String DATEFORMAT = "dateFormat";
-    protected static final String RC = "rc";
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Vector docs = new Vector();
-        Vector checkedOut = new Vector();
-
-        String request = getSourceURL();
-
-        try {
-
-            Document doc = getTargetDocument(false);
-            docs.add(doc);
-            
-            Node node = doc.getRepositoryNode();
-            if (node.isCheckedOut()) {
-                checkedOut.add(node.getCheckoutUserId());
-            }
-            else {
-                checkedOut.add(null);
-            }
-
-            setParameter(DOCUMENTS, docs);
-            setParameter(RC, checkedOut);
-            setParameter(SOURCEURL, request);
-            SimpleDateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss zzz");
-            setParameter(DATEFORMAT, format);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * @return The area without the "info-" prefix.
-     */
-    public String getArea() {
-        URLInformation info = new URLInformation(getSourceURL());
-        return info.getArea();
-    }
-
-    /**
-     * Returns the document to be redirected to after the usecase has been completed. If the
-     * parameter <code>success</code> is false, the source document is returned (override this
-     * method to change this behaviour).
-     * @param success If the usecase was successfully completed.
-     * @return A document.
-     */
-    protected Document getTargetDocument(boolean success) {
-        Document document = (Document) getParameter(TARGET_DOCUMENT);
-        if (document == null) {
-            document = getSourceDocument();
-        }
-        return document;
-    }
-
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(),
-                        getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
-}
diff --git a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Mkcol.java b/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Mkcol.java
deleted file mode 100644
index 6df72fb..0000000
--- a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Mkcol.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecases.webdav;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.site.usecases.Create;
-
-/**
- * Supports WebDAV PUT.
- * 
- */
-public class Mkcol extends Create {
-    // default is xhtml and xml but you can override it with the config
-    protected String TYPE = "xhtml";
-    protected String EXTENSION = "xml";
-    protected static final String ATTRIBUTE_TYPE = "resource-type";
-    protected static final String ELEMENT_EXTENSION = "extension";
-
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        Configuration typeConfig = config.getChild(ELEMENT_EXTENSION, false);
-        if (typeConfig != null) {
-            this.EXTENSION = typeConfig.getValue();
-            this.TYPE = typeConfig.getAttribute(ATTRIBUTE_TYPE);
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        // super.doExecute();
-        SourceResolver resolver = null;
-        ResourceType resourceType = null;
-
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            Document doc = getSourceDocument();
-            // sanity check
-            if (doc == null)
-                throw new IllegalArgumentException("illegal usage, source document may not be null");
-
-            if (!doc.exists()) {
-                DocumentManager documentManager = null;
-                ServiceSelector selector = null;
-                try {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-
-                    documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-                    DocumentFactory map = getDocumentFactory();
-                    String path = doc.getPath();
-
-                    resourceType = (ResourceType) selector.select(TYPE);
-                    ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
-                    doc = documentManager.add(map, resourceType, sample.getUri(), getPublication(), doc
-                            .getArea(), path, doc.getLanguage(), EXTENSION, doc.getName(), true);
-                    doc.setMimeType(sample.getMimeType());
-
-                    setMetaData(doc);
-                } finally {
-                    if (documentManager != null) {
-                        this.manager.release(documentManager);
-                    }
-                    if (selector != null) {
-                        if (resourceType != null) {
-                            selector.release(resourceType);
-                        }
-                        this.manager.release(selector);
-                    }
-                }
-            }
-
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    /**
-     * Sets the meta data of the created document.
-     * 
-     * @param document The document.
-     * @throws MetaDataException if an error occurs.
-     */
-    protected void setMetaData(Document document) throws MetaDataException {
-
-        if (document == null)
-            throw new IllegalArgumentException("parameter document may not be null");
-
-        MetaData dcMetaData = document.getMetaData(DublinCore.DC_NAMESPACE);
-        dcMetaData.setValue(DublinCore.ELEMENT_TITLE, document.getName());
-        dcMetaData.setValue(DublinCore.ELEMENT_CREATOR, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_PUBLISHER, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_SUBJECT, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_DATE, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_RIGHTS, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_LANGUAGE, document.getLanguage());
-    }
-
-    protected String getNewDocumentName() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    protected String getNewDocumentPath() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    protected String getDocumentTypeName() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    protected String getSourceExtension() {
-        return EXTENSION;
-    }
-
-    protected boolean createVersion() {
-        return false;
-    }
-
-}
diff --git a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java b/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java
deleted file mode 100644
index 3700135..0000000
--- a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecases.webdav;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Vector;
-
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.usecases.SiteUsecase;
-
-/**
- * Usecase to provide WebDAV propfind support for a document.
- * 
- */
-public class Propfind extends SiteUsecase {
-
-    protected static final String DOCUMENT = "document";
-    protected static final String DOCUMENTS = "documents";
-    protected static final String SOURCEURL = "sourceURL";
-    protected static final String DATEFORMAT = "dateFormat";
-    protected static final String RC = "rc";
-
-    /**
-     * Ctor.
-     */
-    public Propfind() {
-        super();
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-     */
-    protected void initParameters() {
-        super.initParameters();
-
-        Publication _publication = this.getPublication();
-
-        ServiceSelector siteManagerSelector = null;
-        SiteManager siteManager = null;
-        Vector docs = new Vector();
-        Vector checkedOut = new Vector();
-
-        String request = getSourceURL();
-        if (request.endsWith(".html"))
-            request = request.substring(0, request.indexOf(".html"));
-        if (!request.endsWith("/"))
-            request = request + "/";
-        if (request.indexOf("webdav") > -1) {
-            request = request.replaceFirst("webdav", "authoring");
-        }
-        try {
-
-            siteManagerSelector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE
-                    + "Selector");
-            siteManager = (SiteManager) siteManagerSelector.select(_publication.getSiteManagerHint());
-            Document[] documents = siteManager.getDocuments(getDocumentFactory(),
-                    _publication,
-                    Publication.AUTHORING_AREA);
-
-            for (int i = 0; i < documents.length; i++) {
-                String test = documents[i].getCanonicalWebappURL().replaceFirst("/[^/]*.html", "");
-                if (!test.endsWith("/"))
-                    test = test + "/";
-                if (test.equals(request)) {
-                    docs.add(documents[i]);
-
-                    Node node = documents[i].getRepositoryNode();
-                    if (node.isCheckedOut()) {
-                        checkedOut.add(node.getCheckoutUserId());
-                    }
-                    else {
-                        checkedOut.add(null);
-                    }
-                }
-            }
-
-            setParameter(DOCUMENTS, docs);
-            setParameter(RC, checkedOut);
-            setParameter(SOURCEURL, request);
-            SimpleDateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss zzz");
-            setParameter(DATEFORMAT, format);
-            Date rootModDate = new Date();
-            setParameter("rootModDate", rootModDate);
-            String defaultLang = _publication.getDefaultLanguage();
-            setParameter("defaultLang", defaultLang);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (siteManagerSelector != null) {
-                if (siteManager != null) {
-                    siteManagerSelector.release(siteManager);
-                }
-                this.manager.release(siteManagerSelector);
-            }
-        }
-    }
-
-    /**
-     * @return The area without the "info-" prefix.
-     */
-    public String getArea() {
-        return Publication.AUTHORING_AREA;
-    }
-
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(),
-                        getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
-}
diff --git a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java b/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java
deleted file mode 100644
index c488b85..0000000
--- a/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Put.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.cms.usecases.webdav;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.cocoon.source.SourceUtil;
-import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.metadata.MetaDataException;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
-import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.NodeSet;
-import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.cms.site.SiteUtil;
-import org.apache.lenya.cms.site.usecases.CreateDocument;
-import org.apache.lenya.cms.usecase.UsecaseException;
-import org.apache.lenya.cms.usecase.xml.UsecaseErrorHandler;
-import org.apache.lenya.cms.workflow.WorkflowUtil;
-import org.apache.lenya.cms.workflow.usecases.UsecaseWorkflowHelper;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.Schema;
-import org.apache.lenya.xml.ValidationUtil;
-
-/**
- * Supports WebDAV PUT.
- * @version $Id: $
- */
-public class Put extends CreateDocument {
-    
-    // registeredExtensions contain all known extension matching to a certain resource-type.
-    private HashMap registeredExtensions = new HashMap();
-    // default is xhtml and xml but you can override it with the config
-    protected String TYPE = "xhtml";
-    protected String EXTENSION = "*";
-    protected static final String ATTRIBUTE_TYPE = "resource-type";
-    protected static final String ELEMENT_ROOT = "extensions";
-    protected static final String ELEMENT_EXTENSION = "extension";
-    protected static final String EVENT = "lenya.event";
-    
-    private boolean fallback = false;
-
-    public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
-        Configuration extensionsConfig = config.getChild(ELEMENT_ROOT, false);
-        if (extensionsConfig != null) {
-            Configuration[] extensions = extensionsConfig.getChildren(ELEMENT_EXTENSION);
-            for (int i = 0; i < extensions.length; i++) {
-                Configuration extension = extensions[i];
-                // add extension to register (key: extension,value: resource-type)
-                if (extension != null)
-                    registeredExtensions.put(extension.getValue(), extension
-                            .getAttribute(ATTRIBUTE_TYPE));
-            }
-        } else {
-            registeredExtensions.put(this.EXTENSION, this.TYPE);
-        }
-    }
-
-    protected void doCheckExecutionConditions() throws Exception {
-        String event = getParameterAsString(EVENT);
-        if (event != null) {
-            Document doc = getSourceDocument();
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, event, doc,
-                    getLogger());
-        }
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
-     */
-    protected void doExecute() throws Exception {
-        SourceResolver resolver = null;
-
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            Document doc = getSourceDocument();
-            String extension = getSourceExtension();
-            // sanity check
-            if (doc == null)
-                throw new IllegalArgumentException("illegal usage, source document may not be null");
-
-            // create new doc from PUT input
-            if (!doc.exists()) {
-                DocumentManager documentManager = null;
-                ServiceSelector selector = null;
-                ResourceType resourceType = null;
-                try {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-
-                    documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-                    DocumentFactory map = getDocumentFactory();
-                    String path = doc.getPath();
-                    // lookupResourceType(extension)
-                    resourceType = lookUpExtension(extension, selector);
-                    ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
-                    doc = documentManager.add(map, resourceType, sample.getUri(), getPublication(), doc
-                            .getArea(), path, doc.getLanguage(), extension, doc.getName(), true);
-                    doc.setMimeType(sample.getMimeType());
-                    setMetaData(doc);
-                } finally {
-                    if (documentManager != null) {
-                        this.manager.release(documentManager);
-                    }
-                    if (selector != null) {
-                        if (resourceType != null) {
-                            selector.release(resourceType);
-                        }
-                        this.manager.release(selector);
-                    }
-                }
-            }
-
-            String sourceUri = "cocoon:/request/PUT/" + extension;
-            org.w3c.dom.Document xmlDoc = SourceUtil.readDOM(sourceUri, manager);
-
-            // validate if a schema is provided and we are not using any fallback
-            if (doc.getResourceType().getSchema() != null & fallback == false) {
-                validateDoc(resolver, xmlDoc, doc);
-            }
-
-            if (!hasErrors()) {
-                try {
-                    DocumentHelper.writeDocument(xmlDoc, doc.getOutputStream());
-                } catch (Exception e) {
-                    addErrorMessage("invalid source xml. Full exception: " + e);
-                }
-            }
-
-            String event = getParameterAsString(EVENT);
-            if (event != null) {
-                WorkflowUtil.invoke(this.manager, getSession(), getLogger(), doc, event);
-            }
-
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
-        }
-    }
-
-    private ResourceType lookUpExtension(String extension, ServiceSelector selector)
-            throws ServiceException {
-        ResourceType resourceType;
-        String resourceTypeName = (String) registeredExtensions.get(extension);
-        if (resourceTypeName == null || resourceTypeName.equals("")) {
-            resourceTypeName = (String) registeredExtensions.get(this.EXTENSION);
-            this.fallback = true;
-        }
-        if (selector.isSelectable(resourceTypeName)) {
-            resourceType = (ResourceType) selector.select(resourceTypeName);
-        } else {
-            // using a fallback resource type
-            // FIXME this resource tye should be a more generic one like "media-assets" or "bin"
-            resourceType = (ResourceType) selector.select(this.TYPE);
-            this.fallback = true;
-        }
-        return resourceType;
-    }
-
-    private void validateDoc(SourceResolver resolver, org.w3c.dom.Document xmlDoc, Document doc)
-            throws Exception {
-        ResourceType resourceType = doc.getResourceType();
-        Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
-    }
-
-    /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
-     */
-    protected Node[] getNodesToLock() throws UsecaseException {
-        try {
-            Document doc = getSourceDocument();
-            List nodes = new ArrayList();
-
-            NodeSet set = SiteUtil.getSubSite(this.manager, doc.getLink().getNode());
-            Document[] documents = set.getDocuments();
-            for (int i = 0; i < documents.length; i++) {
-                nodes.add(documents[i].getRepositoryNode());
-            }
-
-            SiteStructure structure = getSourceDocument().area().getSite();
-            nodes.add(structure.getRepositoryNode());
-            return (Node[]) nodes.toArray(new Node[nodes.size()]);
-
-        } catch (Exception e) {
-            throw new UsecaseException(e);
-        }
-    }
-
-    /**
-     * Sets the meta data of the created document.
-     * 
-     * @param document The document.
-     * @throws MetaDataException if an error occurs.
-     */
-    protected void setMetaData(Document document) throws MetaDataException {
-
-        if (document == null)
-            throw new IllegalArgumentException("parameter document may not be null");
-
-        MetaData dcMetaData = document.getMetaData(DublinCore.DC_NAMESPACE);
-        dcMetaData.setValue(DublinCore.ELEMENT_TITLE, document.getName());
-        dcMetaData.setValue(DublinCore.ELEMENT_CREATOR, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_PUBLISHER, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_SUBJECT, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_DATE, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_RIGHTS, "");
-        dcMetaData.setValue(DublinCore.ELEMENT_LANGUAGE, document.getLanguage());
-    }
-
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(), getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
-    protected String getSourceExtension() {
-        String destinationUri = getParameterAsString(SOURCE_URL);
-        String extension = null;
-        if (destinationUri.indexOf(".") > 0) {
-            extension = destinationUri.substring(destinationUri.lastIndexOf(".") + 1,
-                    destinationUri.length());
-        } else {
-            extension = EXTENSION;
-        }
-        return extension;
-    }
-
-    protected String getNewDocumentName() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    protected String getNewDocumentPath() {
-        Document doc = getSourceDocument();
-        return doc.getUUID();
-    }
-
-    protected boolean getVisibleInNav() {
-        return true;
-    }
-
-    protected String getDocumentTypeName() {
-        ResourceType resourceType = null;
-        ServiceSelector selector = null;
-        String docType = "";
-        try {
-            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = lookUpExtension(getSourceExtension(), selector);
-            docType = resourceType.getName();
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                this.manager.release(selector);
-            }
-        }
-        return docType;
-    }
-
-}
diff --git a/trunk/src/modules/webdav/sitemap.xmap b/trunk/src/modules/webdav/sitemap.xmap
deleted file mode 100644
index f06707e..0000000
--- a/trunk/src/modules/webdav/sitemap.xmap
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<!-- =========================== Components ================================ -->
-
-  <map:components>
-    <map:matchers default="wildcard">
-      <map:matcher name="destination" src="org.apache.cocoon.matching.WildcardHeaderMatcher">
-        <header-name>Destination</header-name>
-      </map:matcher>
-    </map:matchers>
-
-    <map:readers default="resource">
-       <map:reader logger="sitemap.reader.requestreader" name="request" pool-max="16" src="org.apache.cocoon.reading.RequestReader"/>
-    </map:readers>
-  
-    <map:serializers default="xhtml"> 
-      <map:serializer name="xml-get" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="text/xml">
-        <encoding>utf-8</encoding>
-        <omit-xml-declaration>yes</omit-xml-declaration>
-      </map:serializer>
-    </map:serializers>
- 
-  </map:components>
-
-<!-- ========================== Flowscript ================================= -->
-
-  <map:flow language="javascript">
-    <map:script src="fallback://lenya/modules/webdav/webdav.js"/>
-  </map:flow>
-
-<!-- =========================== Views ===================================== -->
-
-  <map:views>    
-    <map:view name="content" from-label="content">
-      <map:serialize type="xml" />
-    </map:view>
-  </map:views>
-
-  <map:pipelines>
-    
-    <map:pipeline type="noncaching">
-
-      <map:match pattern="limitResponse.xsl">
-        <map:generate type="file" src="cocoon:/request/generate"/>
-        <map:transform src="fallback://lenya/modules/webdav/xslt/limitResponse.xsl"/>
-        <map:serialize type="xml" status-code="200"/>
-      </map:match>
-      
-      <!-- 
-        This internal sitemap fragment renders the usecase, once the
-        executeUsecase() flowscript has completed and issued a redirect,
-        which is matched here.
-        -->
-      <map:match pattern="view/*/**" internal-only="true">
-        <map:generate type="jx" src="fallback://lenya/modules/webdav/{2}.jx"/>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{request:locale}"/>
-        </map:transform>
-        <map:transform type="xslt" src="fallback://lenya/modules/webdav/xslt/NSclean.xsl"/>
-        <map:select type="request-method">
-          <map:when test="PROPFIND">
-            <map:transform src="cocoon:/limitResponse.xsl" />
-            <map:serialize type="xml" status-code="207"/>
-          </map:when>
-          <map:otherwise>
-            <map:serialize type="xml" status-code="200"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-      
-    </map:pipeline>
-    
-<!-- ========================= Private Resources =========================== -->
-
-    <map:pipeline type="noncaching" internal-only="true">
-      
-      <map:match pattern="request/generate">
-        <map:generate type="stream" />
-        <map:transform type="incoming-proxy"/>
-        <map:transform type="url2uuid"/>
-        <map:serialize type="xml" />
-      </map:match>
-      
-      <!--+ 
-          | If you need to check or change the XML that is being PUT
-          | you can do that here. This is the pipeline that will
-          | generate the input for the PUT method.
-          + -->
-      <map:match pattern="request/PUT/*">    
-        <map:generate type="stream">
-          <map:parameter name="defaultContentType" value="text/xml" />
-        </map:generate>
-        <map:act type="resource-exists" src="fallback://lenya/modules/{page-envelope:document-type}/xslt/clean-{page-envelope:document-type}.xsl">
-          <map:transform src="fallback://lenya/modules/{page-envelope:document-type}/xslt/clean-{page-envelope:document-type}.xsl"/>        
-          <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        </map:act>
-        <map:transform type="incoming-proxy"/>
-        <map:transform type="url2uuid"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-<!-- ========================= Public Resources =========================== -->
-    
-    <map:pipeline type="caching">
-    
-      <!-- Disable caching for webdav/authoring area -->
-      <map:act type="set-header">
-        <map:parameter name="Cache-Control" value="no-cache" />
-      </map:act>    
- 
-      <map:match pattern="webdav">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value=""/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match>
-      <map:match pattern="webdav/**">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value="{1}"/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match>
-      <map:match pattern="authoring/**">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value="{1}"/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match>
-      <map:match pattern="*/authoring/**">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value="{1}"/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match>
-      
-
-      <map:match pattern="{page-envelope:publication-id}">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value=""/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match> 
-      <map:match pattern="{page-envelope:publication-id}/">
-        <map:call function="selectMethod">
-          <map:parameter name="page" value=""/>
-          <map:parameter name="requestURI" value="{request:requestURI}" />
-        </map:call>
-      </map:match>        
-      
-      <map:match pattern="GET/**">
-        <map:call function="get">
-          <map:parameter name="forward" value="{resource-type:format-webdavGET}"/>
-        </map:call>
-      </map:match>
-
-      <map:match pattern="PROPFIND/**.*">
-        <map:match pattern="PROPFIND/**_*.html">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.xml">
-            <map:call function="filePropfind" >
-              <map:parameter name="last-modified" value="{page-envelope:document-lastmodified}"/>
-            </map:call>
-          </map:act>
-        </map:match>
-        <map:match pattern="PROPFIND/**_*.*">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.{3}">
-            <map:call function="filePropfind" >
-              <map:parameter name="last-modified" value="{page-envelope:document-lastmodified}"/>
-            </map:call>
-          </map:act>
-        </map:match>
-        <!-- does not exist -->
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize status-code="404"/>
-      </map:match>
- 
-      <map:match pattern="PROPFIND/**">        
-        <map:call function="propfind" /> 
-      </map:match>
-      
-      <map:match pattern="OPTIONS/**">
-        <map:call function="options">
-          <map:parameter name="uri" value="{request:requestURI}" />
-        </map:call>
-      </map:match>
-
-      <map:match pattern="HEAD/**.*">
-        <map:match pattern="HEAD/**_*.html">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.xml">
-            <map:act type="set-header">
-              <map:parameter name="Last-Modified" value="{page-envelope:document-lastmodified}" />
-              <map:generate src="context://lenya/content/util/empty.xml"/>
-              <map:serialize status-code="200"/>
-            </map:act>
-          </map:act>
-        </map:match>      
-        <map:match pattern="HEAD/**_*.*">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.{3}">
-            <map:act type="set-header">
-              <map:parameter name="Last-Modified" value="{page-envelope:document-lastmodified}" />
-              <map:generate src="context://lenya/content/util/empty.xml"/>
-              <map:serialize status-code="200"/>
-            </map:act>
-          </map:act>
-        </map:match>
-        <!-- doesn't exist -->
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize status-code="404"/>
-      </map:match>
-      
-      <map:match pattern="HEAD/**">
-        <map:call function="propfind" />
-      </map:match>
-      
-    </map:pipeline>
-    
-    <map:pipeline type="noncaching">
-
-      <map:match pattern="checkin">
-        <map:act type="reserved-checkin">
-          <map:generate src="context://lenya/content/util/empty.xml"/>
-          <map:serialize type="xml" status-code="423"/>
-        </map:act>
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize type="xml" status-code="201" />
-      </map:match>
-
-      <map:match pattern="PUT/**">
-        <map:call function="put" />  
-      </map:match> 
-      
-      
-      <map:match pattern="MKCOL/**">
-        <map:call function="mkcol" />
-      </map:match>
-            
-      <map:match pattern="DELETE/**">
-        <map:match pattern="DELETE/**_*.html">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.xml">
-            <map:call function="remove" />
-          </map:act>
-        </map:match>
-        <map:match pattern="DELETE/**_*.*">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.{3}">
-            <map:call function="remove" />
-          </map:act>
-        </map:match>
-        <map:match pattern="DELETE/**">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}">
-            <map:call function="remove" />
-          </map:act>
-        </map:match>
-        <!-- does not exist -->
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize status-code="200"/>
-      </map:match> 
-                        
-      <map:match pattern="LOCK/**">
-        <map:select type="resource-exists">
-          <map:parameter name="prefix" value="lenya://"/>
-          <map:when test="lenya/pubs/{page-envelope:publication-id}/content/authoring/{page-envelope:document-path}">
-            <map:act type="reserved-checkout">
-              <map:generate src="context://lenya/content/util/empty.xml"/>
-              <map:serialize type="xml"  status-code="423"/>
-            </map:act>
-            <map:generate type="file" src="cocoon:/request/generate"/>
-            <map:transform type="xslt" src="fallback://lenya/modules/webdav/xslt/lock.xsl">
-              <map:parameter name="userid" value="{access-control:user-id}"/>
-              <map:parameter name="docid" value="{page-envelope:document-uuid}"/>
-            </map:transform>
-            <map:serialize type="xml" status-code="200" />
-          </map:when>
-          <map:otherwise>
-            <map:generate src="context://lenya/content/util/empty.xml"/>
-            <map:serialize type="xml" status-code="412"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-
-      <map:match pattern="UNLOCK/**">
-        <map:act type="reserved-checkin">
-          <map:generate src="context://lenya/content/util/empty.xml"/>
-          <map:serialize type="xml"  status-code="424"/>
-        </map:act>
-        <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize type="xml" status-code="204" />
-      </map:match>
-      
-    </map:pipeline>
-
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/webdav/usecases/webdav/filePropfind.jx b/trunk/src/modules/webdav/usecases/webdav/filePropfind.jx
deleted file mode 100644
index 2145a9b..0000000
--- a/trunk/src/modules/webdav/usecases/webdav/filePropfind.jx
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<D:multistatus xmlns:D="DAV:" xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:collection="http://apache.org/cocoon/collection/1.0">
-  <jx:set var="sourceURL" value="${usecase.getParameter('sourceURL')}"/>
-  <jx:set var="dateFormat" value="${usecase.getParameter('dateFormat')}"/>
-  <jx:set var="checkedOut" value="${usecase.getParameter('rc')}"/>
-  <jx:forEach var="doc" items="${usecase.getParameter('documents')}"
-    varStatus="status">
-    <jx:if test="${doc.getId()}">
-    <jx:set var="fileExtension" value="${doc.getSourceExtension()}"/>
-    <jx:if test="${doc.getSourceExtension().equals('xml')}">
-        <jx:set var="fileExtension" value="html"/>
-    </jx:if>
-      <D:response>
-        <D:href>${request.getContextPath()}/${doc.getPublication().getId()}/webdav${doc.getPath()}_${doc.getLanguage()}.${fileExtension}</D:href>
-        <D:propstat>
-          <D:prop>
-            <D:displayname>${doc.getName()}_${doc.getLanguage()}.${fileExtension}</D:displayname>
-            <D:getlastmodified>${dateFormat.format(doc.getLastModified())}</D:getlastmodified>
-            <D:creationdate/>
-            <D:getcontenttype>application/xml</D:getcontenttype>
-            <D:getcontentlength>${doc.getFile().length()}</D:getcontentlength>
-            <D:resourcetype/>
-            <D:lockdiscovery>
-              <jx:if test="${checkedOut[status.index] != null}">
-                <D:activelock>
-                  <D:locktype><D:write/></D:locktype>
-                  <D:lockscope><D:exclusive/></D:lockscope>
-                  <D:depth>0</D:depth>
-                  <D:owner><D:href>${checkedOut[status.index].getIdentity()}</D:href></D:owner>
-                  <D:timeout>Infinite</D:timeout>
-                  <D:locktoken>
-                    <D:href>${usecase.getParameter('sourceURL')}</D:href>
-                  </D:locktoken>
-                </D:activelock>
-              </jx:if>
-            </D:lockdiscovery>
-          </D:prop>
-          <D:status>HTTP/1.1 200 OK</D:status>
-        </D:propstat>
-      </D:response>
-    </jx:if>
-  </jx:forEach>
-</D:multistatus>
\ No newline at end of file
diff --git a/trunk/src/modules/webdav/usecases/webdav/propfind.jx b/trunk/src/modules/webdav/usecases/webdav/propfind.jx
deleted file mode 100644
index f2d5c31..0000000
--- a/trunk/src/modules/webdav/usecases/webdav/propfind.jx
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0"?>
-<D:multistatus xmlns:D="DAV:" xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-  xmlns:collection="http://apache.org/cocoon/collection/1.0">
-  <jx:set var="sourceURL" value="${usecase.getParameter('sourceURL')}"/>
-  <jx:set var="dateFormat" value="${usecase.getParameter('dateFormat')}"/>
-  <jx:set var="moddate" value="${usecase.getParameter('rootModDate')}"/>
-  <jx:set var="defaultLang" value="${usecase.getParameter('defaultLang')}"/>
- <!-- returns root webdav directory -->
-  <D:response>
-    <D:href>${request.getContextPath()}${sourceURL.replaceFirst("authoring","webdav")}</D:href>
-    <D:propstat>
-      <D:prop>
-        <D:displayname>webdav</D:displayname>
-        <D:getlastmodified>${dateFormat.format(moddate)}</D:getlastmodified>
-        <D:creationdate></D:creationdate>
-        <D:resourcetype>
-          <D:collection/>
-        </D:resourcetype>
-        <D:getcontenttype>httpd/unix-directory</D:getcontenttype>
-        <D:getcontentlength>0</D:getcontentlength>
-        <D:lockdiscovery/>
-      </D:prop>
-      <D:status>HTTP/1.1 200 OK</D:status>
-    </D:propstat>
-  </D:response>
-  <jx:if test="${request.getHeader('depth') &gt; 0}">
-    <jx:forEach var="doc" items="${usecase.getParameter('documents')}">
-      <!-- FIXME: shouldn't this conditional be doc.exists()? -->
-      <jx:if test="${doc.getId()}">
-        <jx:if test="${doc.getLanguage().equals(defaultLang)}">
-         <!-- create a directory for each document;
-          the language check is to prevent multiple folders appearing with the same name
-          since concepts_en and concepts_de would both produce a folder called concepts -->
-          <D:response>
-            <D:href>${request.getContextPath()}/${doc.getPublication().getId()}/webdav${doc.getPath()}</D:href>
-            <D:propstat>
-              <D:prop>
-                <D:displayname>${doc.getName()}</D:displayname>
-                <D:getlastmodified>${dateFormat.format(doc.getLastModified())}</D:getlastmodified>
-                <D:creationdate></D:creationdate>
-                <D:resourcetype>
-                  <D:collection/>
-                </D:resourcetype>
-                <D:getcontenttype>httpd/unix-directory</D:getcontenttype>
-                <D:getcontentlength>0</D:getcontentlength>
-                <D:lockdiscovery/>
-              </D:prop>
-              <D:status>HTTP/1.1 200 OK</D:status>
-            </D:propstat>
-          </D:response>
-        </jx:if>
-      </jx:if>
-    </jx:forEach>
-    <jx:set var="checkedOut" value="${usecase.getParameter('rc')}"/>
-    <jx:forEach var="doc" items="${usecase.getParameter('documents')}"
-      varStatus="status">
-      <jx:if test="${doc.getId()}">
-      <jx:set var="fileExtension" value="${doc.getSourceExtension()}"/>
-      <jx:if test="${doc.getSourceExtension().equals('xml')}">
-          <jx:set var="fileExtension" value="html"/>
-      </jx:if>
-       <!-- create a file for each document, the href is the path to the file and the 
-        display name is what will appear in the webdav folder -->
-        <D:response>
-          <D:href>${request.getContextPath()}/${doc.getPublication().getId()}/webdav${doc.getPath()}_${doc.getLanguage()}.${fileExtension}</D:href>
-          <D:propstat>
-            <D:prop>
-              <D:displayname>${doc.getName()}_${doc.getLanguage()}.${fileExtension}</D:displayname>
-              <D:getlastmodified>${dateFormat.format(doc.getLastModified())}</D:getlastmodified>
-              <D:creationdate/>
-              <D:getcontenttype>application/xml</D:getcontenttype>
-              <D:getcontentlength>${doc.getFile().length()}</D:getcontentlength>
-              <D:resourcetype/>
-              <D:lockdiscovery>
-              <jx:if test="${checkedOut[status.index] != null}">
-                <D:activelock>
-                  <D:locktype><D:write/></D:locktype>
-                  <D:lockscope><D:exclusive/></D:lockscope>
-                  <D:depth>0</D:depth>
-                  <D:owner><D:href>${checkedOut[status.index].getIdentity()}</D:href></D:owner>
-                  <D:timeout>Infinite</D:timeout>
-                  <D:locktoken>
-                    <D:href>${usecase.getParameter('sourceURL')}</D:href>
-                  </D:locktoken>
-                </D:activelock>
-                </jx:if>
-              </D:lockdiscovery>
-            </D:prop>
-            <D:status>HTTP/1.1 200 OK</D:status>
-          </D:propstat>
-        </D:response>
-      </jx:if>
-    </jx:forEach>
-    <jx:forEach var="asset" items="${usecase.getParameter('assets')}">
-     <!-- similar to documents, a file is created for each asset with an href and display name -->
-      <D:response>
-        <D:href>${request.getContextPath()}/${sourceURL.replaceFirst("authoring","webdav")}${asset.getName()}</D:href>
-        <D:propstat>
-          <D:prop>
-            <D:displayname>${asset.getName()}</D:displayname>
-            <D:getlastmodified>${dateFormat.format(asset.getLastModified())}</D:getlastmodified>
-            <D:creationdate/>
-            <D:getcontenttype>asset.getMimeType()</D:getcontenttype>
-            <D:getcontentlength>${asset.getContentLength()}</D:getcontentlength>
-            <D:resourcetype/>
-            <D:lockdiscovery/>
-          </D:prop>
-          <D:status>HTTP/1.1 200 OK</D:status>
-        </D:propstat>
-      </D:response>
-    </jx:forEach>
-  </jx:if>
-</D:multistatus>
\ No newline at end of file
diff --git a/trunk/src/modules/webdav/usecases/webdav/status.jx b/trunk/src/modules/webdav/usecases/webdav/status.jx
deleted file mode 100644
index 75b727d..0000000
--- a/trunk/src/modules/webdav/usecases/webdav/status.jx
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-<response>

-  <status>${parameters.getParameter("status")}</status>

-  <message>${message}</message>

-</response>

diff --git a/trunk/src/modules/webdav/webdav.js b/trunk/src/modules/webdav/webdav.js
deleted file mode 100644
index afdf8b9..0000000
--- a/trunk/src/modules/webdav/webdav.js
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-/* Helper method to add all request parameters to a usecase */
-function passRequestParameters(flowHelper, usecase) {
-    var names = cocoon.request.getParameterNames();
-    while (names.hasMoreElements()) {
-        var name = names.nextElement();
-        if (!name.equals("lenya.usecase")
-            && !name.equals("lenya.continuation")
-            && !name.equals("submit")) {
-            
-            var value = flowHelper.getRequest(cocoon).get(name);
-            
-            var string = new Packages.java.lang.String();
-            if (string.getClass().isInstance(value)) {
-                usecase.setParameter(name, value);
-            }
-            else {
-                usecase.setPart(name, value);
-            }
-            
-        }
-    }
-}
-
-/* Helper method to add all request headers to a usecase */
-function passRequestHeaders(flowHelper, usecase) {
-    var names = cocoon.request.getHeaderNames();
-    while (names.hasMoreElements()) {
-        var name = names.nextElement();
-        var value = flowHelper.getRequest(cocoon).getHeader(name);
-            
-        var string = new Packages.java.lang.String();
-        if (string.getClass().isInstance(value)) {
-            usecase.setParameter("header-"+name, value);
-        }
-        else {
-            usecase.setPart("header-"+name, value);
-        }
-    }
-}
-
-function selectMethod() {
-  var page = cocoon.parameters["page"];
-  var requestURI = cocoon.parameters["requestURI"];
-  var method = cocoon.request.getMethod();
-  cocoon.sendPage(method+"/"+page, {"requestURI":requestURI});
-}
-
-function sendStatus(sc) {
-  cocoon.sendStatus(sc);
-}
- 
-function mkcol() {
-  var status = executeUsecase("webdav.mkcol");
-  if(status)
-    sendStatus(201);
-  else
-    sendStatus(403);
-}
- 
-function put() {
-  var status = executeUsecase("webdav.put");
-  if(status)
-    sendStatus(204);
-  else {
-    sendStatus(415);
-  }
-}
-
-function remove() {
-  var status = executeUsecase("webdav.delete");
-  sendStatus(200);
-}
-
-function get() {
-  var uri = new java.lang.String(cocoon.parameters["forward"]);
-  var uri = uri.substring(8, uri.length());
-  cocoon.sendPage(uri);
-}
-
-function filePropfind() {
-  var status = executeUsecase("webdav.filePropfind");
-  sendStatus(500);
-}
-
-function propfind() {
-  var status = executeUsecase("webdav.propfind");
-  sendStatus(500);
-}
-
-function options(type) {
-  cocoon.response.setHeader("DAV","1");
-  var options = "";
-  if (type == "file") {
-    options = "OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,PUT,LOCK,UNLOCK";
-  } else {
-    options = "OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK";
-  }
-  cocoon.response.setHeader("Allow",options);
-
-  //interoperability with Windows 2000
-  var w2kDAVDiscoverAgent = "Microsoft Data Access Internet"
-                          + " Publishing Provider Protocol Discovery";
-  if (cocoon.request.getHeader("User-Agent") == w2kDAVDiscoverAgent) {
-      cocoon.response.setHeader("MS-Author-Via","DAV");
-  }
-
-  sendStatus(200);
-}
-
-/*
- * parse the depth header to find out if recursion
- * take place. (used by MOVE and COPY)
- */
-function isRecurse(depth) {
-  var recurse;
-  if (depth == null || depth == '') {
-    recurse = true;
-  }
-  else if (depth == 'Infinity') {
-    recurse = true;
-  }
-  else {
-    recurse = false;
-  }
-  return recurse;
-}
-
-/*
- * convert the overwrite header into a boolean type
- */
-function isOverwrite(header) {
-  var overwrite = true;
-  if (header == 'F') {
-    overwrite = false;
-  }
-  return overwrite;
-}
-
-function executeUsecase(usecaseName) {
-    var view;
-    var proxy;
-    var menu = "nomenu";
-    
-    var usecaseResolver;
-    var usecase;
-    var sourceUrl;
-    
-    var preconditionsOk;
-    
-    if (cocoon.log.isDebugEnabled())
-       cocoon.log.debug("usecases.js::executeUsecase() called, parameter lenya.usecase = [" + usecaseName + "]");
-    
-    try {
-
-        var flowHelper = cocoon.getComponent("org.apache.lenya.cms.cocoon.flow.FlowHelper");
-        var request = flowHelper.getRequest(cocoon);
-        sourceUrl = Packages.org.apache.lenya.util.ServletHelper.getWebappURI(request);
-        
-        usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-        usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-        usecase.setSourceURL(sourceUrl);
-        usecase.setName(usecaseName);
-        view = usecase.getView();
-
-        passRequestParameters(flowHelper, usecase);
-        passRequestHeaders(flowHelper, usecase);
-        usecase.checkPreconditions();
-        preconditionsOk = !usecase.hasErrors();
-        if (preconditionsOk) {
-            usecase.lockInvolvedObjects();
-        }
-        proxy = new Packages.org.apache.lenya.cms.usecase.impl.UsecaseProxy(usecase);
-    }
-    finally {
-        /* done with usecase component, tell usecaseResolver to release it */
-        if (usecaseResolver != null) {
-            if (usecase != null) {
-                usecaseResolver.release(usecase);
-                usecase = undefined;
-            }
-            cocoon.releaseComponent(usecaseResolver);
-        }
-    }
-    
-    var success = false;
-    //var targetUrl;
-    var form;
-    var scriptString;
-    var evalFunc;
-    var generic;
-
-    /*
-     * If the usecase has a view, this means we want to display something 
-     * to the user before proceeding. This also means the usecase consists
-     * several steps; repeated until the user chooses to submit or cancel.
-     *
-     * If the usecase does not have a view, it is simply executed.
-     */
-
-    if (view) {
-        var ready = false;
-        while (!ready) {
-
-            try {
-                var templateUri = view.getTemplateURI();
-                if (templateUri) {
-                    var viewUri = "view/" + menu + "/" + view.getTemplateURI();
-                    if (cocoon.log.isDebugEnabled())
-                        cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", creating view, calling Cocoon with viewUri = [" + viewUri + "]");
-
-                    cocoon.sendPageAndWait(viewUri, {"usecase" : proxy});
-                    
-                }
-                else {
-                    var viewUri = view.getViewURI();
-                    cocoon.sendPage(viewUri);
-                    return;
-                }
-            }
-            catch (exception) {
-                /* if an exception was thrown by the view, allow the usecase to rollback the transition */
-                try {
-                    usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-                    usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-                    proxy.setup(usecase);
-                    usecase.cancel();
-                    throw exception;
-                }
-                finally {
-                    if (usecaseResolver != null) {
-                        if (usecase != null) {
-                            usecaseResolver.release(usecase);
-                            usecase = undefined;
-                        }
-                        cocoon.releaseComponent(usecaseResolver);
-                    }
-                }
-            }
-            
-            if (cocoon.log.isDebugEnabled())
-                cocoon.log.debug("usecases.js::executeUsecase() in usecase " + usecaseName + ", after view, now advancing in usecase");
-        
-            try {
-                usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-                usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-                proxy.setup(usecase);
-            
-                passRequestParameters(flowHelper, usecase);
-                usecase.advance();
-            
-                if (cocoon.request.getParameter("submit")) {
-                    usecase.checkExecutionConditions();
-                    if (! usecase.hasErrors()) {
-                        usecase.execute();
-                        if (! usecase.hasErrors()) {
-                            usecase.checkPostconditions();
-                            if (! usecase.hasErrors()) {
-                                ready = true;
-                                success = true;
-                            }
-                        }
-                    }
-                }
-                else if (cocoon.request.getParameter("cancel")) {
-                    usecase.cancel();
-                    ready = true;
-                }
-                proxy = new Packages.org.apache.lenya.cms.usecase.UsecaseProxy(usecase);
-            }
-            catch (exception) {
-                /* allow usecase to rollback the transition */
-                usecase.cancel();
-                throw exception;
-            }
-            finally {
-                if (usecaseResolver != null) {
-                    if (usecase != null) {
-                        usecaseResolver.release(usecase);
-                        usecase = undefined;
-                    }
-                    cocoon.releaseComponent(usecaseResolver);
-                }
-            }
-        }
-    }
-    else {
-        try {
-            usecaseResolver = cocoon.getComponent("org.apache.lenya.cms.usecase.UsecaseResolver");
-            usecase = usecaseResolver.resolve(sourceUrl, usecaseName);
-            proxy.setup(usecase);
-            
-            if (preconditionsOk) {
-                usecase.checkExecutionConditions();
-                if (!usecase.hasErrors()) {
-                    usecase.execute();
-                    if (! usecase.hasErrors()) {
-                        usecase.checkPostconditions();
-                        if (! usecase.hasErrors()) {
-                            success = true;
-                        }
-                    }
-                }
-            }
-        }
-        catch (exception) {
-            /* allow usecase to rollback the transition */
-            usecase.cancel();
-            throw exception;
-        }
-        finally {
-            usecaseResolver.release(usecase);
-            usecase = undefined;
-            cocoon.releaseComponent(usecaseResolver);
-        }
-    }
-        
-    return success;
-    
-}
diff --git a/trunk/src/modules/webdav/xslt/NSclean.xsl b/trunk/src/modules/webdav/xslt/NSclean.xsl
deleted file mode 100644
index 3189013..0000000
--- a/trunk/src/modules/webdav/xslt/NSclean.xsl
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0" 
-       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-       xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
-       xmlns:collection="http://apache.org/cocoon/collection/1.0"
-       xmlns:D="DAV:"
-       exclude-result-prefixes="jx">
-
-<!-- Identity transformation template -->			
-<xsl:template match="/ | @* | * | comment() | processing-instruction() | text()"> 
-	<xsl:copy> 
-		<xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()"/> 
-	</xsl:copy> 
-</xsl:template> 
-
-<xsl:template match="D:multistatus">
-  <multistatus xmlns="DAV:" xmlns:collection="http://apache.org/cocoon/collection/1.0">
-    <xsl:apply-templates select="@* | * | processing-instruction() | text()"/>
-  </multistatus>
-</xsl:template>
-
-<xsl:template match="D:*">
-  <xsl:element name="{local-name()}" namespace="DAV:">
-    <xsl:apply-templates select="@* | * | processing-instruction() | text()"/>
-  </xsl:element>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/webdav/xslt/init.xsl b/trunk/src/modules/webdav/xslt/init.xsl
deleted file mode 100644
index 9af1ff5..0000000
--- a/trunk/src/modules/webdav/xslt/init.xsl
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-    <xsl:param name="pubid" />
-    <xsl:param name="context" />
-
-	<xsl:template match="/">
-        <D:multistatus xmlns:D="DAV:" xmlns:collection="http://apache.org/cocoon/collection/1.0">
-           <D:response>
-              <D:href><xsl:value-of select="$context" />/<xsl:value-of select="$pubid" />/</D:href>
-
-              <D:propstat>
-                 <D:prop>
-                    <D:displayname><xsl:value-of select="$pubid" /></D:displayname>
-
-                    <D:getlastmodified></D:getlastmodified>
-
-                    <D:creationdate />
-
-                    <D:resourcetype>
-                       <D:collection />
-                    </D:resourcetype>
-
-                    <D:getcontenttype>httpd/unix-directory</D:getcontenttype>
-
-                    <D:getcontentlength>0</D:getcontentlength>
-                 </D:prop>
-
-                 <D:status>HTTP/1.1 200 OK</D:status>
-              </D:propstat>
-           </D:response>
-
-           <D:response>
-              <D:href><xsl:value-of select="$context" />/<xsl:value-of select="$pubid" />/webdav</D:href>
-
-              <D:propstat>
-                 <D:prop>
-                    <D:displayname>webdav</D:displayname>
-
-                    <D:getlastmodified></D:getlastmodified>
-
-                    <D:creationdate />
-
-                    <D:resourcetype>
-                       <D:collection />
-                    </D:resourcetype>
-
-                    <D:getcontenttype>httpd/unix-directory</D:getcontenttype>
-
-                    <D:getcontentlength>0</D:getcontentlength>
-                 </D:prop>
-
-                 <D:status>HTTP/1.1 200 OK</D:status>
-              </D:propstat>
-           </D:response>
-
-
-        </D:multistatus>	
-	</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/webdav/xslt/limitResponse.xsl b/trunk/src/modules/webdav/xslt/limitResponse.xsl
deleted file mode 100644
index 4aa73d0..0000000
--- a/trunk/src/modules/webdav/xslt/limitResponse.xsl
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xso="http://apache.org/cocoon/lenya/xslt/1.0"
-  xmlns:D="DAV:"
-  >
-  
-<xsl:namespace-alias stylesheet-prefix="xso" result-prefix="xsl"/>
-  
-<xsl:template match="/">
-  
-  <xso:stylesheet version="1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    exclude-result-prefixes="xhtml">
-    
-  <xso:output method="xml" indent="yes"/>
-    
-  <xso:template match="node()|@*">
-    <xso:copy>
-      <xso:apply-templates select="node()|@*"/>
-    </xso:copy>
-  </xso:template>
-  
-  <xso:template match="D:displayname">
-    <xsl:if test="//D:prop/D:displayname"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:getlastmodified">
-    <xsl:if test="//D:prop/D:getlastmodified"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:creationdate">
-    <xsl:if test="//D:prop/D:creationdate"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:resourcetype">
-    <xsl:if test="//D:prop/D:resourcetype"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:getcontenttype">
-    <xsl:if test="//D:prop/D:getcontenttype"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:getcontentlength">
-    <xsl:if test="//D:prop/D:getcontentlength"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  <xso:template match="D:lockdiscovery">
-    <xsl:if test="//D:prop/D:lockdiscovery"><xso:copy-of select="."/></xsl:if>
-  </xso:template>
-  
-  </xso:stylesheet>
-  
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/modules/webdav/xslt/lock.xsl b/trunk/src/modules/webdav/xslt/lock.xsl
deleted file mode 100644
index 5df0a8c..0000000
--- a/trunk/src/modules/webdav/xslt/lock.xsl
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-    <xsl:param name="userid"/>
-    <xsl:param name="docid"/>
-
-	<xsl:template match="/">
-        <D:prop xmlns:D="DAV:">
-          <D:lockdiscovery>
-               <D:activelock>
-                    <D:locktype><D:write/></D:locktype>
-                    <D:lockscope><D:exclusive/></D:lockscope>
-                    <D:depth>Infinity</D:depth>
-                    <xsl:if test="//*[local-name()='owner']">
-                        <D:owner><xsl:value-of select="//*[local-name()='owner']"/></D:owner>
-                    </xsl:if>
-                    <D:timeout>Second-604800</D:timeout>
-                    <D:locktoken>
-                         <D:href>
-                           <xsl:value-of select="$docid"/>
-                         </D:href>
-                    </D:locktoken>
-               </D:activelock>
-          </D:lockdiscovery>
-        </D:prop>	
-	</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/config/cocoon-xconf/resource-type-xhtml.xconf b/trunk/src/modules/xhtml/config/cocoon-xconf/resource-type-xhtml.xconf
deleted file mode 100644
index 9a624b0..0000000
--- a/trunk/src/modules/xhtml/config/cocoon-xconf/resource-type-xhtml.xconf
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'xhtml']">
-  
-  <component-instance name="xhtml"
-    logger="lenya.resourcetypes.xhtml"
-    class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-      namespace="http://relaxng.org/ns/structure/0.9"
-      uri="fallback://lenya/modules/xhtml/resources/schemas/xhtml.rng"/>
-    
-    <!-- Default time in seconds until the resource-type has expired -->  
-    <expires seconds="3600" />
-    
-    <samples uri="fallback://lenya/modules/xhtml/samples/samples.xml"/>
-    
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@href"/>
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@data"/>
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@src"/>
-    <format name="xhtml" uri="cocoon://modules/xhtml/xhtml.xml"/>
-    <format name="webdavGET" uri="cocoon://modules/xhtml/davget.xml"/>
-    <format name="luceneIndex" uri="cocoon://modules/xhtml/lucene-index"/>
-    <!-- "xslt-clean" format is used by webDAV (and other editors?) to "clean" xml content before it is validated/saved --> 
-    <format name="xslt-clean" uri="fallback://lenya/modules/xhtml/xslt/clean-xhtml.xsl"/>
-    <format name="icon" uri="cocoon://modules/xhtml/icon"/>
-    
-  </component-instance>
-  
-</xconf>
diff --git a/trunk/src/modules/xhtml/config/menu.xsp b/trunk/src/modules/xhtml/config/menu.xsp
deleted file mode 100644
index d4cf796..0000000
--- a/trunk/src/modules/xhtml/config/menu.xsp
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="site authoring" id="create">
-          <item uc:usecase="sitemanagement.create" href="?doctype=xhtml"><i18n:translate>
-              <i18n:text>New ... Document</i18n:text>
-              <i18n:param><i18n:text>resourceType-xhtml</i18n:text></i18n:param>
-            </i18n:translate>
-          </item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Edit">
-        <xsp:logic>
-          try {
-              Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-              if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                  String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                  if ("xhtml".equals(doctype)) {
-                      <block areas="authoring">
-                        <item uc:usecase="kupu.edit" href="?"><i18n:text>With Kupu</i18n:text></item>
-                        <item uc:usecase="bxe.edit" href="?"><i18n:text>With BXE</i18n:text></item>
-                        <item uc:usecase="editors.forms"><xsp:attribute name="href"><xsp:expr>"?form=" + doctype</xsp:expr></xsp:attribute><i18n:text>With Forms</i18n:text></item>
-                        <item uc:usecase="editors.oneform" href="?"><i18n:text>With one Form</i18n:text></item>
-                      </block>
-                  }
-              }
-          }
-          catch (Exception e) {
-              throw new ProcessingException("Error during menu generation: ", e);
-          }
-        </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/modules/xhtml/config/module.xml b/trunk/src/modules/xhtml/config/module.xml
deleted file mode 100644
index ae7e3f03..0000000
--- a/trunk/src/modules/xhtml/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.xhtml</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>XHTML</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>XHTML-based resource type</description>
-</module>
diff --git a/trunk/src/modules/xhtml/menus.xmap b/trunk/src/modules/xhtml/menus.xmap
deleted file mode 100644
index e09276a..0000000
--- a/trunk/src/modules/xhtml/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://lenya/modules/xhtml/config/menu.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/xhtml/resources/i18n/cmsui.xml b/trunk/src/modules/xhtml/resources/i18n/cmsui.xml
deleted file mode 100644
index bbe0e1d..0000000
--- a/trunk/src/modules/xhtml/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-xhtml">XHTML</message>
-  

-</catalogue>

diff --git a/trunk/src/modules/xhtml/resources/i18n/cmsui_de.xml b/trunk/src/modules/xhtml/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 351b86a..0000000
--- a/trunk/src/modules/xhtml/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446564 2006-09-15 10:13:16Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-xhtml">XHTML</message>

-  

-</catalogue>

diff --git a/trunk/src/modules/xhtml/resources/icons/xhtml.gif b/trunk/src/modules/xhtml/resources/icons/xhtml.gif
deleted file mode 100644
index 35092d0..0000000
--- a/trunk/src/modules/xhtml/resources/icons/xhtml.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml.rng
deleted file mode 100644
index 38199a0..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml.rng
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.rng 168097 2005-05-04 07:49:22Z jwkaltz $ -->
-
-<!--+
-    | XHTML doctype
-    +-->
-
-<!--+
-    | Namespaces:
-    | lenya namespace is required for embedding assets.
-    +-->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-         xmlns="http://relaxng.org/ns/structure/1.0"
-         xmlns:xhtml="http://www.w3.org/1999/xhtml"
-         xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-         >
-
-
-<!-- include Lenya schema, for Lenya assets within xhtml -->
-<include href="fallback://lenya/resources/schemas/lenya.rng"/>
-
-<!-- include original XHTML basic schema -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng">
-<!-- change to this to include XHTML transitional schema 
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml.rng">
--->
-<!-- change to this to include XHTML strict schema 
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/xhtml-strict.rng">
--->
-
-  <define name="html">
-    <element name="html">
-      <ref name="html.attlist"/>
-      <ref name="head"/>
-      <ref name="body"/>
-    </element>
-  </define>
-
-  <define name="html.attlist">
-    <ref name="XHTML.version.attrib"/>
-    <ref name="I18n.attrib"/>
-  </define>
-
-</include>
-
-
-<!-- additional block elements -->
-<define name="Block.class" combine="choice">
-  <choice>
-    <ref name="lenya.asset"/>
-  </choice>
-</define>
-
-
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic-table.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic-table.rng
deleted file mode 100644
index 44d3431..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic-table.rng
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: basic-table.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!--
-  Checks exclusions applying to basic-table module.
-  This schema is intended to be used in addition to xhtml.rng.
--->
-<grammar ns="http://www.w3.org/1999/xhtml" xmlns="http://relaxng.org/ns/structure/1.0">
-  <start>
-    <ref name="normalElement"/>
-  </start>
-  <define name="normalElement">
-    <element>
-      <anyName>
-        <except>
-          <name>table</name>
-        </except>
-      </anyName>
-      <ref name="normalContent"/>
-    </element>
-  </define>
-  <define name="normalContent">
-    <zeroOrMore>
-      <choice>
-        <ref name="normalElement"/>
-        <ref name="tableElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="tableElement">
-    <element name="table">
-      <ref name="tableContent"/>
-    </element>
-  </define>
-  <define name="tableContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>table</name>
-            </except>
-          </anyName>
-          <ref name="tableContent"/>
-        </element>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="anyAttribute">
-    <attribute>
-      <anyName/>
-    </attribute>
-  </define>
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic.rng
deleted file mode 100644
index efe514e..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/basic.rng
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: basic.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!--
-  Checks exclusions applying to "a" and "pre" elements.
-  This schema is intended to be used in addition to xhtml.rng.
--->
-<grammar ns="http://www.w3.org/1999/xhtml" xmlns="http://relaxng.org/ns/structure/1.0">
-  <start>
-    <ref name="normalElement"/>
-  </start>
-  <define name="normalElement">
-    <element>
-      <anyName>
-        <except>
-          <name>a</name>
-          <name>pre</name>
-        </except>
-      </anyName>
-      <ref name="normalContent"/>
-    </element>
-  </define>
-  <define name="normalContent">
-    <zeroOrMore>
-      <choice>
-        <ref name="normalElement"/>
-        <ref name="aElement"/>
-        <ref name="preElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="aElement">
-    <element name="a">
-      <ref name="aContent"/>
-    </element>
-  </define>
-  <define name="aContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>a</name>
-              <name>pre</name>
-            </except>
-          </anyName>
-          <ref name="aContent"/>
-        </element>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="preElement">
-    <element name="pre">
-      <ref name="preContent"/>
-    </element>
-  </define>
-  <define name="preContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>a</name>
-              <name>pre</name>
-              <name>img</name>
-              <name>object</name>
-              <name>applet</name>
-              <name>big</name>
-              <name>small</name>
-              <name>sub</name>
-              <name>sup</name>
-              <name>font</name>
-              <name>basefont</name>
-            </except>
-          </anyName>
-          <ref name="preContent"/>
-        </element>
-        <ref name="aPreElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="aPreElement">
-    <element name="a">
-      <ref name="aPreContent"/>
-    </element>
-  </define>
-  <define name="aPreContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>a</name>
-              <name>pre</name>
-              <name>img</name>
-              <name>object</name>
-              <name>applet</name>
-              <name>big</name>
-              <name>small</name>
-              <name>sub</name>
-              <name>sup</name>
-              <name>font</name>
-              <name>basefont</name>
-            </except>
-          </anyName>
-          <ref name="aPreContent"/>
-        </element>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="anyAttribute">
-    <attribute>
-      <anyName/>
-    </attribute>
-  </define>
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/form.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/form.rng
deleted file mode 100644
index 67ec087..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/exclude/form.rng
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: form.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!--
-  Checks exclusions applying to form and basic-form modules.
-  This schema is intended to be used in addition to xhtml.rng.
--->
-<grammar ns="http://www.w3.org/1999/xhtml" xmlns="http://relaxng.org/ns/structure/1.0">
-  <start>
-    <ref name="normalElement"/>
-  </start>
-  <define name="normalElement">
-    <element>
-      <anyName>
-        <except>
-          <name>form</name>
-          <name>label</name>
-          <name>button</name>
-        </except>
-      </anyName>
-      <ref name="normalContent"/>
-    </element>
-  </define>
-  <define name="normalContent">
-    <zeroOrMore>
-      <choice>
-        <ref name="normalElement"/>
-        <ref name="formElement"/>
-        <ref name="labelElement"/>
-        <ref name="buttonElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="formElement">
-    <element name="form">
-      <ref name="formContent"/>
-    </element>
-  </define>
-  <define name="formContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>form</name>
-              <name>label</name>
-              <name>button</name>
-            </except>
-          </anyName>
-          <ref name="formContent"/>
-        </element>
-        <ref name="labelElement"/>
-        <ref name="buttonElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="labelElement">
-    <element name="label">
-      <ref name="labelContent"/>
-    </element>
-  </define>
-  <define name="labelContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>form</name>
-              <name>label</name>
-              <name>button</name>
-            </except>
-          </anyName>
-          <ref name="labelContent"/>
-        </element>
-        <ref name="buttonElement"/>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="buttonElement">
-    <element name="button">
-      <ref name="buttonContent"/>
-    </element>
-  </define>
-  <define name="buttonContent">
-    <zeroOrMore>
-      <choice>
-        <element>
-          <anyName>
-            <except>
-              <name>a</name>
-              <name>input</name>
-              <name>select</name>
-              <name>textarea</name>
-              <name>label</name>
-              <name>button</name>
-              <name>form</name>
-              <name>isindex</name>
-              <name>fieldset</name>
-              <name>iframe</name>
-            </except>
-          </anyName>
-          <ref name="buttonContent"/>
-        </element>
-        <ref name="anyAttribute"/>
-        <text/>
-      </choice>
-    </zeroOrMore>
-  </define>
-  <define name="anyAttribute">
-    <attribute>
-      <anyName/>
-    </attribute>
-  </define>
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/index.html b/trunk/src/modules/xhtml/resources/schemas/xhtml/index.html
deleted file mode 100644
index e69afa6..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: index.html 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<head>
-<title>Modularization of XHTML in RELAX NG</title>
-</head>
-<body>
-<h1>Modularization of XHTML in RELAX NG</h1>
-
-<p>This directory contains an implementataion in RELAX NG of the
-modularization of XHTML specified by the <a
-href="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410"
->Modularization of XHTML Recommendation</a>.</p>
-
-<p>The RELAX NG schema has not been mechanically derived from the DTDs.
-Rather, it has been hand-crafted so as to produce a good quality RELAX NG
-schema.  However, it may well contain bugs.</p>
-
-<p>The <a href="modules"><code>modules</code></a> directory contains
-all the modules; <a
-href="xhtml-basic.rng"><code>xhtml-basic.rng</code></a> uses the
-modules to implement <a href="http://www.w3.org/TR/xhtml-basic/">XHTML
-Basic</a>; <a
-href="xhtml-strict.rng"><code>xhtml-strict.rng</code></a> uses the
-modules to implement <a href="http://www.w3.org/TR/xhtml1/">XHTML
-1.0</a> strict; <a href="xhtml.rng"><code>xhtml.rng</code></a> uses
-the modules to implement the union of <a
-href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a> transitional and <a
-href="http://www.w3.org/TR/xhtml1/">XHTML 1.0</a> frameset.  You can
-<a href="http://www.thaiopensource.com/download">download</a>
-everything as part of the main Jing distribution.  To create a custom
-version of XHTML, simply copy <code>xhtml.rng</code> and delete the
-inclusions of the modules that you do not want.</p>
-
-<p>The biggest difference between the RELAX NG implementation and the
-DTD implementation is that the RELAX NG implementation does not
-require you to create a model module specific to the combination of
-XHTML modules you are using. Instead, simply include the modules you
-want. The modules take care of redefining the content models
-appropriately.</p>
-
-<p>Note also the following differences:</p>
-
-<ul>
-
-<li>The frames module is used instead of the struct module, rather
-than in addition to it.</li>
-
-<li>In the frames module, the <code>frameset</code> element does not
-restrict the optional <code>noframes</code> element to follow all the
-other child elements. XHTML Modularization is inconsistent with both
-HTML 4.0 and XHTML 1.0 here.</li>
-
-<li>In the basic tables abstract module, the <code>table</code>
-element does not have a <code>width</code> attribute.  The XHTML Rec is
-ambiguous here: the abstract module has the attribute, but the DTD
-does not.</li>
-
-<li>The object and applet modules takes advantage of RELAX NG's
-absence of restrictions on mixed content to enforce the requirement
-that <code>param</code>s precede other content.</li>
-
-<li>The forms module takes advantage of RELAX NG's absence of
-restrictions on mixed content to enforce the requirement that any
-<code>legend</code> precedes other content.</li>
-
-<li>The RELAX NG schema does not enforce exclusions. The HTML 4 DTD
-uses exclusions in several places, for example, to disallow an
-<code>a</code> element from having an <code>a</code> element as a
-descendant. It is not possible to represent this constraint in XML
-DTDs. XHTML Modularization takes the approach of partially
-representing this restriction by, for example, disallowing an
-<code>a</code> element from having an <code>a</code> element as a
-<em>child</em>, without disallowing it from having an <code>a</code>
-element as a non-immediate descendant.  This partial restriction has a
-substantial cost in increasing the complexity and reducing the
-modularity of the schemas. This implementation adopts a different
-approach. The <a href="exclude"><code>exclude</code></a> directory
-contains separate, independent RELAX NG schemas that enforce
-exclusions.  To check use of exclusions, a document should be
-validated against each of these schemas that is applicable <strong>in
-addition to</strong> being validated against the RELAX NG XHTML schema
-proper. The available schemas are as follows:
-
-<dl>
-
-<dt><a href="exclude/basic.rng"><code>exclude/basic.rng</code></a></dt>
-<dd>checks the exclusions relating to <code>a</code> and
-<code>pre</code> elements</dd>
-
-<dt><a
-href="exclude/basic-table.rng"><code>exclude/basic-table.rng</code></a></dt>
-
-<dd>checks the exclusions relating to basic tables module (i.e.
-checks that <code>table</code> elements are not nested)</dd>
-
-<dt><a href="exclude/form.rng"><code>exclude/form.rng</code></a></dt>
-
-<dd>checks the exclusions relating to forms and basic forms modules</dd>
-
-</dl>
-
-</li>
-
-</ul>
-
-<address><a href="mailto:jjc@jclark.com">James Clark</a></address>
-
-</body>
-</html>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/applet.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/applet.rng
deleted file mode 100644
index 6c07a00..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/applet.rng
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: applet.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Applet Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="applet">
-  <element name="applet">
-    <ref name="applet.attlist"/>
-    <!-- No restrictions on mixed content in TREX. -->
-    <zeroOrMore>
-      <ref name="param"/>
-    </zeroOrMore>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="applet.attlist">
-  <ref name="Core.attrib"/>
-  <attribute name="alt">
-    <ref name="Text.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="archive"/>
-  </optional>
-  <optional>
-    <attribute name="code"/>
-  </optional>
-  <optional>
-    <attribute name="codebase">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="object"/>
-  </optional>
-  <attribute name="height">
-    <ref name="Length.datatype"/>
-  </attribute>
-  <attribute name="width">
-    <ref name="Length.datatype"/>
-  </attribute>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="applet"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng
deleted file mode 100644
index 898ecf4..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: attribs.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Common Attributes Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="id.attrib">
-  <optional>
-    <attribute name="id">
-      <ref name="ID.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="class.attrib">
-  <optional>
-    <attribute name="class">
-      <ref name="NMTOKENS.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="title.attrib">
-  <optional>
-    <attribute name="title">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Core.attrib">
-  <ref name="id.attrib"/>
-  <ref name="class.attrib"/>
-  <ref name="title.attrib"/>
-</define>
-
-<define name="lang.attrib">
-  <optional>
-    <attribute name="xml:lang">
-      <ref name="LanguageCode.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="I18n.attrib">
-  <ref name="lang.attrib"/>
-</define>
-
-<define name="Common.attrib">
-  <ref name="Core.attrib"/>
-  <ref name="I18n.attrib"/>
-</define>
-
-<define name="CommonIdRequired.attrib">
-  <attribute name="id">
-    <ref name="ID.datatype"/>
-  </attribute>
-  <ref name="class.attrib"/>
-  <ref name="title.attrib"/>
-  <ref name="I18n.attrib"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/base.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/base.rng
deleted file mode 100644
index 585d7a5..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/base.rng
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: base.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Base Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="base">
-  <element name="base">
-    <ref name="base.attlist"/>
-  </element>
-</define>
-
-<define name="base.attlist">
-  <attribute name="href">
-    <ref name="URI.datatype"/>
-  </attribute>
-</define>
-
-<define name="head.content" combine="interleave">
-  <optional>
-    <ref name="base"/>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng
deleted file mode 100644
index cc475b7..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: basic-form.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-    
-<!-- Simplified Forms Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="form">
-  <element name="form">
-    <ref name="form.attlist"/>
-    <!-- Don't use Block.model, because this gets redefined by the
-	 legacy module. -->
-    <oneOrMore>
-      <ref name="Block.class"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="form.attlist">
-  <ref name="Common.attrib"/>
-  <attribute name="action">
-    <ref name="URI.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="method">
-      <choice>
-	<value>get</value>
-	<value>post</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="enctype">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="label">
-  <element name="label">
-    <ref name="label.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="label.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="for">
-      <ref name="IDREF.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="input">
-  <element name="input">
-    <ref name="input.attlist"/>
-  </element>
-</define>
-
-<define name="input.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="type">
-      <ref name="InputType.class"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="name"/>
-  </optional>
-  <optional>
-    <attribute name="value"/>
-  </optional>
-  <optional>
-    <attribute name="checked">
-      <value>checked</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="size"/>
-  </optional>
-  <optional>
-    <attribute name="maxlength">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="src">
-       <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="InputType.class">
-  <choice>
-    <value>text</value>
-    <value>password</value>
-    <value>checkbox</value>
-    <value>radio</value>
-    <value>submit</value>
-    <value>reset</value>
-    <value>hidden</value>
-  </choice>
-</define>
-
-<define name="select">
-  <element name="select">
-    <ref name="select.attlist"/>
-    <oneOrMore>
-      <ref name="option"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="select.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="name"/>
-  </optional>
-  <optional>
-    <attribute name="size">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="multiple">
-      <value>multiple</value>
-    </attribute>
-  </optional>
-</define>
-   
-<define name="option">
-  <element name="option">
-    <ref name="Common.attrib"/>
-    <optional>
-      <attribute name="selected">
-        <value>selected</value>
-      </attribute>
-    </optional>
-    <optional>
-      <attribute name="value"/>
-    </optional>
-    <text/>
-  </element>
-</define>
-
-<define name="textarea">
-  <element name="textarea">
-    <ref name="textarea.attlist"/>
-  </element>
-</define>
-
-<define name="textarea.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="name"/>
-  </optional>
-  <attribute name="rows">
-    <ref name="Number.datatype"/>
-  </attribute>
-  <attribute name="cols">
-    <ref name="Number.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-  <text/>
-</define>
-
-<define name="Form.class">
-  <ref name="form"/>
-</define>
-
-<define name="Formctrl.class">
-  <choice>
-    <ref name="input"/>
-    <ref name="label"/>
-    <ref name="select"/>
-    <ref name="textarea"/>
-  </choice>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="Form.class"/>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="Formctrl.class"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-table.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-table.rng
deleted file mode 100644
index 2f5ecdf..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/basic-table.rng
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: basic-table.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Basic Tables Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="table">
-  <element name="table">
-    <ref name="table.attlist"/>
-    <optional>
-      <ref name="caption"/>
-    </optional>
-    <oneOrMore>
-      <ref name="tr"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="table.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="summary">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="caption">
-  <element name="caption">
-    <ref name="caption.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="caption.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="tr">
-  <element name="tr">
-    <ref name="tr.attlist"/>
-    <oneOrMore>
-      <choice>
-        <ref name="th"/>
-        <ref name="td"/>
-      </choice>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="tr.attlist">
-  <ref name="Common.attrib"/>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="th">
-  <element name="th">
-    <ref name="th.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="th.attlist">
-  <ref name="Cell.attrib"/>
-</define>
-
-<define name="td">
-  <element name="td">
-    <ref name="td.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="td.attlist">
-  <ref name="Cell.attrib"/>
-</define>
-
-<define name="Cell.attrib">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="abbr">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="axis"/>
-  </optional>
-  <optional>
-    <attribute name="headers">
-      <ref name="IDREFS.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="scope.attrib"/>
-  <optional>
-    <attribute name="rowspan">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="colspan">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="CellHAlign.attrib">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>left</value>
-	<value>center</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="CellVAlign.attrib">
-  <optional>
-    <attribute name="valign">
-      <choice>
-	<value>top</value>
-	<value>middle</value>
-	<value>bottom</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="scope.attrib">
-  <optional>
-    <attribute name="scope">
-      <choice>
-	<value>row</value>
-	<value>col</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="table"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/bdo.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/bdo.rng
deleted file mode 100644
index f515d7c..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/bdo.rng
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: bdo.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Bi-directional Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="bdo">
-  <element name="bdo">
-    <ref name="bdo.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="bdo.attlist">
-  <ref name="Core.attrib"/>
-  <ref name="lang.attrib"/>
-  <ref name="dir.attrib"/>
-</define>
-
-<define name="dir.attrib">
-  <attribute name="dir">
-    <choice>
-      <value>ltr</value>
-      <value>rtl</value>
-    </choice>
-  </attribute>
-</define>
-
-<define name="I18n.attrib" combine="interleave">
-  <optional>
-    <ref name="dir.attrib"/>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="bdo"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/csismap.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/csismap.rng
deleted file mode 100644
index a35f2aa..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/csismap.rng
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: csismap.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Client-side Image Map Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="area">
-  <element name="area">
-    <ref name="area.attlist"/>
-  </element>
-</define>
-
-<define name="area.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="href">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="shape.attrib"/>
-  <ref name="coords.attrib"/>
-  <optional>
-    <attribute name="nohref">
-      <value>nohref</value>
-    </attribute>
-  </optional>
-  <attribute name="alt">
-    <ref name="Text.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="map">
-  <element name="map">
-    <ref name="map.attlist"/>
-    <oneOrMore>
-      <choice>
-        <!-- This does not use Block.mix
-             because loose.dtd doesn't use %Flow; -->
-        <ref name="Block.class"/>
-        <ref name="area"/>
-      </choice>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="map.attlist">
-  <ref name="CommonIdRequired.attrib"/>
-</define>
-
-<define name="a.attlist" combine="interleave">
-  <ref name="shape.attrib"/>
-  <ref name="coords.attrib"/>
-</define>
-
-<define name="img.attlist" combine="interleave">
-  <ref name="usemap.attlist"/>
-</define>
-
-<define name="object.attlist" combine="interleave">
-  <ref name="usemap.attlist"/>
-</define>
-
-<define name="usemap.attlist">
-  <optional>
-    <attribute name="usemap">
-      <ref name="IDREF.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="shape.attrib">
-  <optional>
-    <attribute name="shape">
-      <choice>
-        <value>rect</value>
-        <value>circle</value>
-        <value>poly</value>
-        <value>default</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="coords.attrib">
-  <optional>
-    <attribute name="coords"/>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="map"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng
deleted file mode 100644
index fce2490..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: datatypes.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Datatypes Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-
-<!-- Length defined for cellpadding/cellspacing -->
-
-<!-- nn for pixels or nn% for percentage length -->
-<define name="Length.datatype">
-  <text/>
-</define>
-
-<!-- space-separated list of link types -->
-<define name="LinkTypes.datatype">
-  <ref name="NMTOKENS.datatype"/>
-</define>
-
-<!-- single or comma-separated list of media descriptors -->
-<define name="MediaDesc.datatype">
-  <text/>
-</define>
-
-<!-- pixel, percentage, or relative -->
-<define name="MultiLength.datatype">
-  <text/>
-</define>
-
-<!-- one or more digits (NUMBER) -->
-<define name="Number.datatype">
-  <text/>
-</define>
-
-<!-- integer representing length in pixels -->
-<define name="Pixels.datatype">
-  <text/>
-</define>
-
-<!-- script expression -->
-<define name="Script.datatype">
-  <text/>
-</define>
-
-<!-- textual content -->
-<define name="Text.datatype">
-  <text/>
-</define>
-
-<!-- Imported Datatypes ................................ -->
-
-<!-- a single character from [ISO10646] -->
-<define name="Character.datatype">
-  <text/>
-</define>
-
-<!-- a character encoding, as per [RFC2045] -->
-<define name="Charset.datatype">
-  <text/>
-</define>
-
-<!-- a space separated list of character encodings, as per [RFC2045] -->
-<define name="Charsets.datatype">
-  <text/>
-</define>
-
-<!-- media type, as per [RFC2045] -->
-<define name="ContentType.datatype">
-  <text/>
-</define>
-
-<!-- comma-separated list of media types, as per [RFC2045] -->
-<define name="ContentTypes.datatype">
-  <text/>
-</define>
-
-<!-- date and time information. ISO date format -->
-<define name="Datetime.datatype">
-  <text/>
-</define>
-
-<!-- formal public identifier, as per [ISO8879] -->
-<define name="FPI.datatype">
-  <text/>
-</define>
-
-<!-- a language code, as per [RFC1766] -->
-<define name="LanguageCode.datatype">
-  <data type="language"/>
-</define>
-
-<!-- a Uniform Resource Identifier, see [URI] -->
-<define name="URI.datatype">
-  <data type="anyURI"/>
-</define>
-
-<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
-<define name="URIs.datatype">
-  <text/>
-</define>
-
-<define name="NMTOKEN.datatype">
-  <data type="NMTOKEN"/>
-</define>
-
-<define name="NMTOKENS.datatype">
-  <data type="NMTOKENS"/>
-</define>
-
-<define name="ID.datatype">
-  <data type="ID"/>
-</define>
-
-<define name="IDREF.datatype">
-  <data type="IDREF"/>
-</define>
-
-<define name="IDREFS.datatype">
-  <data type="IDREFS"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/edit.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/edit.rng
deleted file mode 100644
index 182346e..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/edit.rng
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: edit.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Edit Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="del">
-  <element name="del">
-    <ref name="del.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="del.attlist">
-  <ref name="Edit.attrib"/>
-</define>
-
-<define name="ins">
-  <element name="ins">
-    <ref name="ins.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="ins.attlist">
-  <ref name="Edit.attrib"/>
-</define>
-
-<define name="Edit.attrib">
-  <optional>
-    <attribute name="cite">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="datetime">
-      <ref name="Datetime.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Edit.class">
-  <choice>
-    <ref name="del"/>
-    <ref name="ins"/>
-  </choice>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="Edit.class"/>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="Edit.class"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/events.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/events.rng
deleted file mode 100644
index 29a50d8..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/events.rng
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: events.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Events Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="a.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="area.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="form.attlist" combine="interleave">
-  <optional>
-    <attribute name="onreset">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onsubmit">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="body.attlist" combine="interleave">
-  <optional>
-    <attribute name="onload">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onunload">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="label.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="input.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onchange">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onselect">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="select.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onchange">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="textarea.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onchange">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onselect">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="button.attlist" combine="interleave">
-  <optional>
-    <attribute name="onblur">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onfocus">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Events.attrib">
-  <optional>
-    <attribute name="onclick">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="ondblclick">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onmousedown">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onmouseup">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onmouseover">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onmousemove">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onmouseout">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onkeypress">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onkeydown">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="onkeyup">
-      <ref name="Script.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Common.attrib" combine="interleave">
-  <ref name="Events.attrib"/>
-</define>
-
-<define name="CommonIdRequired.attrib" combine="interleave">
-  <ref name="Events.attrib"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/form.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/form.rng
deleted file mode 100644
index 5cfb4fe..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/form.rng
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: form.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Forms Module -->
-<!-- Unlike the DTD implementation, this builds on the basic-form module --><grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<include href="basic-form.rng">
-
-  <define name="select">
-    <element name="select">
-      <ref name="select.attlist"/>
-      <oneOrMore>
-	<choice>
-	  <ref name="option"/>
-	  <ref name="optgroup"/>
-	</choice>
-      </oneOrMore>
-    </element>
-  </define>
-
-</include>
-
-<define name="form.attlist" combine="interleave">
-  <optional>
-    <attribute name="accept-charset">
-      <ref name="Charsets.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accept">
-      <ref name="ContentTypes.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="input.attlist" combine="interleave">
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="readonly">
-      <value>readonly</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="alt"/>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accept">
-      <ref name="ContentTypes.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="InputType.class" combine="choice">
-  <choice>
-    <value>image</value>
-    <value>button</value>
-  </choice>
-</define>
-
-<define name="select.attlist" combine="interleave">
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="option.attlist" combine="interleave">
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="label">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="optgroup">
-  <element name="optgroup">
-    <ref name="optgroup.attlist"/>
-    <oneOrMore>
-      <ref name="option"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="optgroup.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <attribute name="label">
-    <ref name="Text.datatype"/>
-  </attribute>
-</define>
-
-<define name="textarea.attlist" combine="interleave">
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="readonly">
-      <value>readonly</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="fieldset">
-  <element name="fieldset">
-    <ref name="fieldset.attlist"/>
-    <ref name="legend"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="fieldset.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="button">
-  <element name="button">
-    <ref name="button.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="button.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="name"/>
-  </optional>
-  <optional>
-    <attribute name="value"/>
-  </optional>
-  <optional>
-    <attribute name="type">
-      <choice>
-        <value>button</value>
-        <value>submit</value>
-        <value>reset</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="disabled">
-      <value>disabled</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="legend">
-  <element name="legend">
-    <ref name="legend.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="legend.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Form.class" combine="choice">
-  <ref name="fieldset"/>
-</define>
-
-<define name="Formctrl.class" combine="choice">
-  <ref name="button"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/frames.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/frames.rng
deleted file mode 100644
index b3b5e51..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/frames.rng
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: frames.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Frames Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<include href="struct.rng">
-
-  <define name="html">
-    <element name="html">
-      <ref name="html.attlist"/>
-      <ref name="head"/>
-      <ref name="frameset"/>
-    </element>
-  </define>
-
-</include>
-
-<define name="frameset">
-  <element name="frameset">
-    <ref name="frameset.attlist"/>
-    <interleave>
-      <oneOrMore>
-	<choice>
-	  <ref name="frameset"/>
-	  <ref name="frame"/>
-	</choice>
-      </oneOrMore>
-      <optional>
-	<ref name="noframes"/>
-      </optional>
-    </interleave>
-  </element>
-</define>
-
-<define name="frameset.attlist">
-  <ref name="Core.attrib"/>
-  <optional>
-    <attribute name="cols">
-      <ref name="MultiLength.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="rows">
-      <ref name="MultiLength.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="frame">
-  <element name="frame">
-    <ref name="frame.attlist"/>
-  </element>
-</define>
-
-<define name="frame.attlist">
-  <ref name="Core.attrib"/>
-  <optional>
-    <attribute name="longdesc">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="src">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="frameborder">
-      <choice>
-        <value>1</value>
-        <value>0</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="marginwidth">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="marginheight">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="noresize">
-      <value>noresize</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="scrolling">
-      <choice>
-        <value>yes</value>
-        <value>no</value>
-        <value>auto</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="noframes">
-  <element name="noframes">
-    <ref name="noframes.attlist"/>
-    <ref name="body"/>
-  </element>
-</define>
-
-<define name="noframes.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng
deleted file mode 100644
index 2d3b7f7..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: hypertext.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Hypertext Module -->
-<!-- Depends on text module. -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="a">
-  <element name="a">
-    <ref name="a.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="a.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="href">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="charset">
-      <ref name="Charset.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="type">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="hreflang">
-      <ref name="LanguageCode.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="rel">
-      <ref name="LinkTypes.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="rev">
-      <ref name="LinkTypes.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="accesskey">
-      <ref name="Character.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="a"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/iframe.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/iframe.rng
deleted file mode 100644
index bd3ddf4..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/iframe.rng
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: iframe.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Iframe Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="iframe">
-  <element name="iframe">
-    <ref name="iframe.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="iframe.attlist">
-  <ref name="Core.attrib"/>
-  <optional>
-    <attribute name="longdesc">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="src">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="frameborder">
-      <choice>
-        <value>1</value>
-        <value>0</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="height">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="marginwidth">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="marginheight">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="scrolling">
-      <choice>
-        <value>yes</value>
-        <value>no</value>
-        <value>auto</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="iframe"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/image.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/image.rng
deleted file mode 100644
index 066bbe7..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/image.rng
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: image.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Image Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="img">
-  <element name="img">
-    <ref name="img.attlist"/>
-  </element>
-</define>
-
-<define name="img.attlist">
-  <ref name="Common.attrib"/>
-  <attribute name="src">
-    <ref name="URI.datatype"/>
-  </attribute>
-  <attribute name="alt">
-    <ref name="Text.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="longdesc">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="height">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="img"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/inlstyle.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/inlstyle.rng
deleted file mode 100644
index 1ae6aab..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/inlstyle.rng
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: inlstyle.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Inline Style Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="Core.attrib" combine="interleave">
-  <optional>
-    <attribute name="style"/>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/legacy.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/legacy.rng
deleted file mode 100644
index fd93724..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/legacy.rng
+++ /dev/null
@@ -1,521 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: legacy.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Legacy Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="lang.attrib" combine="interleave">
-  <optional>
-    <attribute name="lang">
-      <ref name="LanguageCode.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="basefont">
-  <element name="basefont">
-    <ref name="basefont.attlist"/>
-  </element>
-</define>
-
-<define name="basefont.attlist">
-  <ref name="id.attrib"/>
-  <ref name="Font.attrib"/>
-</define>
-
-<define name="center">
-  <element name="center">
-    <ref name="center.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="center.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="font">
-  <element name="font">
-    <ref name="font.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="font.attlist">
-  <ref name="Core.attrib"/>
-  <ref name="I18n.attrib"/>
-  <ref name="Font.attrib"/>
-</define>
-
-<define name="Font.attrib">
-  <optional>
-    <attribute name="size"/>
-  </optional>
-  <optional>
-    <attribute name="color">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="face"/>
-  </optional>
-</define>
-
-<define name="s">
-  <element name="s">
-    <ref name="s.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="s.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="strike">
-  <element name="strike">
-    <ref name="strike.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="strike.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="u">
-  <element name="u">
-    <ref name="u.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="u.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="dir">
-  <element name="dir">
-    <ref name="dir.attlist"/>
-    <oneOrMore>
-      <ref name="li.noblock"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="dir.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="compact">
-      <value>compact</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="menu">
-  <element name="menu">
-    <ref name="menu.attlist"/>
-    <oneOrMore>
-      <ref name="li.noblock"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="menu.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="compact">
-      <value>compact</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="li.noblock">
-  <element name="li">
-    <ref name="li.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="isindex">
-  <element name="isindex">
-    <ref name="isindex.attlist"/>
-  </element>
-</define>
-
-<define name="isindex.attlist">
-  <ref name="Core.attrib"/>
-  <ref name="I18n.attrib"/>
-  <optional>
-    <attribute name="prompt">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="applet.attlist" combine="interleave">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>top</value>
-	<value>middle</value>
-	<value>bottom</value>
-	<value>left</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="hspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="vspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="body.attlist" combine="interleave">
-  <optional>
-    <attribute name="background">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="bgcolor">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="text">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="link">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="vlink">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="alink">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="br.attlist" combine="interleave">
-  <optional>
-    <attribute name="clear">
-      <choice>
-	<value>left</value>
-	<value>all</value>
-	<value>right</value>
-	<value>none</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="caption.attlist" combine="interleave">
-  <ref name="align.attrib"/>
-</define>
-
-<define name="div.attlist" combine="interleave">
-  <ref name="align.attrib"/>
-</define>
-
-<!-- Not in the CR, but surely an error. -->
-
-<define name="dl.attlist" combine="interleave">
-  <optional>
-    <attribute name="compact">
-      <value>compact</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Heading.attrib" combine="interleave">
-  <ref name="align.attrib"/>
-</define>
-
-<define name="hr.attlist" combine="interleave">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>left</value>
-	<value>center</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="noshade">
-      <value>noshade</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="size">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="img.attlist" combine="interleave">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>top</value>
-	<value>middle</value>
-	<value>bottom</value>
-	<value>left</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="border">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="hspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="vspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="input.attlist" combine="interleave">
-  <ref name="align.attrib"/>
-</define>
-
-<define name="legend.attlist" combine="interleave">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>top</value>
-	<value>bottom</value>
-	<value>left</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="li.attlist" combine="interleave">
-  <optional>
-    <attribute name="type"/>
-  </optional>
-  <optional>
-    <attribute name="value"/>
-  </optional>
-</define>
-
-<define name="object.attlist" combine="interleave">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>top</value>
-	<value>middle</value>
-	<value>bottom</value>
-	<value>left</value>
-	<value>right</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="border">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="hspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="vspace">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="ol.attlist" combine="interleave">
-  <optional>
-    <attribute name="type"/>
-  </optional>
-  <optional>
-    <attribute name="compact">
-      <value>compact</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="start"/>
-  </optional>
-</define>
-
-<define name="p.attlist" combine="interleave">
-  <ref name="align.attrib"/>
-</define>
-
-<define name="pre.attlist" combine="interleave">
-  <optional>
-    <attribute name="width">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="script.attlist" combine="interleave">
-  <optional>
-    <attribute name="language">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="table.attlist" combine="interleave">
-  <ref name="align.attrib"/>
-  <optional>
-    <attribute name="bgcolor">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="tr.attlist" combine="interleave">
-  <optional>
-    <attribute name="bgcolor">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Cell.attrib" combine="interleave">
-  <optional>
-    <attribute name="nowrap">
-      <value>nowrap</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="bgcolor">
-      <ref name="Color.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="height">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="ul.attlist" combine="interleave">
-  <optional>
-    <attribute name="type"/>
-  </optional>
-  <optional>
-    <attribute name="compact">
-      <value>compact</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="align.attrib">
-  <optional>
-    <attribute name="align">
-      <choice>
-	<value>left</value>
-	<value>all</value>
-	<value>right</value>
-	<value>none</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Color.datatype">
-  <text/>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <choice>
-    <ref name="font"/>
-    <ref name="basefont"/>
-    <ref name="s"/>
-    <ref name="strike"/>
-    <ref name="u"/>
-  </choice>
-</define>
-
-<define name="Block.class" combine="choice">
-  <choice>
-    <ref name="center"/>
-    <ref name="isindex"/>
-  </choice>
-</define>
-
-<define name="List.class" combine="choice">
-  <choice>
-    <ref name="dir"/>
-    <ref name="menu"/>
-  </choice>
-</define>
-
-<define name="head.content" combine="interleave">
-  <optional>
-    <ref name="isindex"/>
-  </optional>
-</define>
-
-<define name="Block.mix" combine="choice">
-  <choice>
-    <text/>
-    <ref name="Inline.class"/>
-  </choice>
-</define>
-
-<!-- With the legacy module and the frames modules, the html
-     element can contain either body or frameset. -->
-<define name="frameset" combine="choice">
-  <ref name="body"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/link.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/link.rng
deleted file mode 100644
index 05cceb4..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/link.rng
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: link.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Link Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="link">
-  <element name="link">
-    <ref name="link.attlist"/>
-  </element>
-</define>
-
-<define name="link.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="charset">
-      <ref name="Charset.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="href">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="hreflang">
-      <ref name="LanguageCode.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="type">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="rel">
-      <ref name="LinkTypes.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="rev">
-      <ref name="LinkTypes.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="media">
-      <ref name="MediaDesc.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="head.content" combine="interleave">
-  <zeroOrMore>
-    <ref name="link"/>
-  </zeroOrMore>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/list.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/list.rng
deleted file mode 100644
index 9e0d707..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/list.rng
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: list.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- List Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="dl">
-  <element name="dl">
-    <ref name="dl.attlist"/>
-    <oneOrMore>
-      <choice>
-	<ref name="dt"/>
-	<ref name="dd"/>
-      </choice>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="dl.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="dt">
-  <element name="dt">
-    <ref name="dt.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="dt.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="dd">
-  <element name="dd">
-    <ref name="dd.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="dd.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="ol">
-  <element name="ol">
-    <ref name="ol.attlist"/>
-    <oneOrMore>
-      <ref name="li"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="ol.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="ul">
-  <element name="ul">
-    <ref name="ul.attlist"/>
-    <oneOrMore>
-      <ref name="li"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="ul.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="li">
-  <element name="li">
-    <ref name="li.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>  
-
-<define name="li.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="List.class">
-  <choice>
-    <ref name="ul"/>
-    <ref name="ol"/>
-    <ref name="dl"/>
-  </choice>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="List.class"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/meta.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/meta.rng
deleted file mode 100644
index d8631c4..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/meta.rng
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: meta.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Meta Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="meta">
-  <element name="meta">
-    <ref name="meta.attlist"/>
-  </element>
-</define>
-
-<define name="meta.attlist">
-  <ref name="I18n.attrib"/>
-  <optional>
-    <attribute name="http-equiv">
-      <ref name="NMTOKEN.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="name">
-      <ref name="NMTOKEN.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="content"/>
-  </optional>
-  <optional>
-    <attribute name="scheme"/>
-  </optional>
-</define>
-
-<define name="head.content" combine="interleave">
-  <zeroOrMore>
-    <ref name="meta"/>
-  </zeroOrMore>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/nameident.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/nameident.rng
deleted file mode 100644
index 55a3500..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/nameident.rng
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: nameident.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Name Identification Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="a.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="applet.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="form.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="frame.attrib" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="iframe.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="img.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="map.attlist" combine="interleave">
-  <ref name="name.attlist"/>
-</define>
-
-<define name="name.attlist">
-  <optional>
-    <attribute name="name"/>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/object.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/object.rng
deleted file mode 100644
index cb1af97..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/object.rng
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: object.rng 56344 2004-11-02 04:28:38Z gregor $ -->
-
-<!-- Object Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="object">
-  <element name="object">
-    <ref name="object.attlist"/>
-    <!-- No restrictions on mixed content in TREX. -->
-    <zeroOrMore>
-      <ref name="param"/>
-    </zeroOrMore>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="object.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="href">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="declare">
-      <value>declare</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="classid">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="codebase">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="data">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="type">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="codetype">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="archive">
-      <ref name="URIs.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="standby">
-      <ref name="Text.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="height">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="name"/>
-  </optional>
-  <optional>
-    <attribute name="tabindex">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="object"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/param.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/param.rng
deleted file mode 100644
index 225da3c..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/param.rng
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: param.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Param Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="param">
-  <element name="param">
-    <ref name="param.attlist"/>
-  </element>
-</define>
-
-<define name="param.attlist">
-  <ref name="id.attrib"/>
-  <attribute name="name"/>
-  <optional>
-    <attribute name="value"/>
-  </optional>
-  <optional>
-    <attribute name="valuetype">
-      <choice>
-	<value>data</value>
-	<value>ref</value>
-	<value>object</value>
-      </choice>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="type">
-      <ref name="ContentType.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/pres.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/pres.rng
deleted file mode 100644
index e9fca60..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/pres.rng
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: pres.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="hr">
-  <element name="hr">
-    <ref name="hr.attlist"/>
-  </element>
-</define>
-
-<define name="hr.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="hr"/>
-</define>
-
-<define name="b">
-  <element name="b">
-    <ref name="b.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="b.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="big">
-  <element name="big">
-    <ref name="big.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="big.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="i">
-  <element name="i">
-    <ref name="i.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="i.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="small">
-  <element name="small">
-    <ref name="small.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="small.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="sub">
-  <element name="sub">
-    <ref name="sub.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="sub.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="sup">
-  <element name="sup">
-    <ref name="sup.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="sup.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="tt">
-  <element name="tt">
-    <ref name="tt.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="tt.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <choice>
-    <ref name="b"/>
-    <ref name="big"/>
-    <ref name="i"/>
-    <ref name="small"/>
-    <ref name="sub"/>
-    <ref name="sup"/>
-    <ref name="tt"/>
-  </choice>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ruby.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ruby.rng
deleted file mode 100644
index 0714b37..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ruby.rng
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ruby.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="ruby">
-  <element name="ruby">
-    <ref name="ruby.attlist"/>
-    <choice>
-      <group>
-        <ref name="rb"/>
-        <choice>
-          <ref name="rt"/>
-          <group>
-            <ref name="rp"/>
-            <ref name="rt"/>
-            <ref name="rp"/>
-          </group>
-        </choice>
-      </group>
-      <group>
-        <ref name="rbc"/>
-        <ref name="rtc"/>
-        <optional>
-          <ref name="rtc"/>
-        </optional>
-      </group>
-    </choice>
-  </element>
-</define>
-
-<define name="ruby.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="rbc">
-  <element name="rbc">
-    <ref name="rbc.attlist"/>
-    <oneOrMore>
-      <ref name="rb"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="rbc.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="rtc">
-  <element name="rtc">
-    <ref name="rtc.attlist"/>
-    <oneOrMore>
-      <ref name="rt"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="rtc.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="rb">
-  <element name="rb">
-    <ref name="rb.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="rb.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="rt">
-  <element name="rt">
-    <ref name="rt.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="rt.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="rt">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="rp">
-  <element name="rp">
-    <ref name="rp.attlist"/>
-    <text/>
-  </element>
-</define>
-
-<define name="rp.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="ruby"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/script.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/script.rng
deleted file mode 100644
index 0967e40..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/script.rng
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: script.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Script Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="script">
-  <element name="script">
-    <ref name="script.attlist"/>
-    <text/>
-  </element>
-</define>
-
-<define name="script.attlist">
-  <optional>
-    <attribute name="charset">
-      <ref name="Charset.datatype"/>
-    </attribute>
-  </optional>
-  <attribute name="type">
-    <ref name="ContentType.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="src">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="defer">
-      <value>defer</value>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="xml:space">
-      <value>preserve</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="noscript">
-  <element name="noscript">
-    <ref name="noscript.attlist"/>
-    <ref name="Block.model"/>
-  </element>
-</define>
-
-<define name="noscript.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="head.content" combine="interleave">
-  <zeroOrMore>
-    <ref name="script"/>
-  </zeroOrMore>
-</define>
-
-<define name="Script.class">
-  <choice>
-    <ref name="noscript"/>
-    <ref name="script"/>
-  </choice>
-</define>
-
-<define name="Inline.class" combine="choice">
-  <ref name="Script.class"/>
-</define>
-
-<define name="Block.class" combine="choice">
-  <ref name="Script.class"/>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ssismap.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ssismap.rng
deleted file mode 100644
index b03c6c4..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/ssismap.rng
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: ssismap.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Server-side Image Map Module -->
-<!-- Depends on image module. -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="img.attlist" combine="interleave">
-  <optional>
-    <attribute name="ismap">
-      <value>ismap</value>
-    </attribute>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/struct.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/struct.rng
deleted file mode 100644
index 0ada641..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/struct.rng
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: struct.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- Structure Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<start>
-  <ref name="html"/>
-</start>
-
-<define name="title">
-  <element name="title">
-    <ref name="title.attlist"/>
-    <text/>
-  </element>
-</define>
-
-<define name="title.attlist">
-  <ref name="I18n.attrib"/>
-</define>
-
-<define name="head">
-  <element name="head">
-    <ref name="head.attlist"/>
-    <ref name="head.content"/>
-  </element>
-</define>
-
-<define name="head.attlist">
-  <ref name="I18n.attrib"/>
-  <ref name="profile.attlist"/>
-</define>
-
-<define name="head.content">
-  <ref name="title"/>
-</define>
-
-<define name="profile.attlist">
-  <optional>
-    <attribute name="profile">
-      <ref name="URI.datatype"/>
-    </attribute>     
-  </optional>
-</define>
-
-<define name="body">
-  <element name="body">
-    <ref name="body.attlist"/>
-    <ref name="Block.model"/>
-  </element>
-</define>
-
-<define name="body.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="html">
-  <element name="html">
-    <ref name="html.attlist"/>
-    <ref name="head"/>
-    <ref name="body"/>
-  </element>
-</define>
-
-<define name="html.attlist">
-  <ref name="XHTML.version.attrib"/>
-  <ref name="I18n.attrib"/>
-</define>
-
-<define name="XHTML.version.attrib">
-  <optional>
-    <attribute name="version">
-      <ref name="FPI.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/style.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/style.rng
deleted file mode 100644
index 23b95b7..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/style.rng
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: style.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Style Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="style">
-  <element name="style">
-    <ref name="style.attlist"/>
-    <text/>
-  </element>
-</define>
-
-<define name="style.attlist">
-  <ref name="title.attrib"/>
-  <ref name="I18n.attrib"/>
-  <attribute name="type">
-    <ref name="ContentType.datatype"/>
-  </attribute>
-  <optional>
-    <attribute name="media">
-      <ref name="MediaDesc.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="xml:space">
-      <value>preserve</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="head.content" combine="interleave">
-  <zeroOrMore>
-    <ref name="style"/>
-  </zeroOrMore>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/table.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/table.rng
deleted file mode 100644
index f3bddfa..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/table.rng
+++ /dev/null
@@ -1,276 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: table.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Tables Module -->
-<!-- This builds on the basic tables module, unlike with the DTD
-implementation. -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<include href="basic-table.rng">
-
-  <define name="table">
-    <element name="table">
-      <ref name="table.attlist"/>
-      <optional>
-	<ref name="caption"/>
-      </optional>
-      <choice>
-	<zeroOrMore>
-	  <ref name="col"/>
-	</zeroOrMore>
-	<zeroOrMore>
-	  <ref name="colgroup"/>
-	</zeroOrMore>
-      </choice>
-      <choice>
-	<group>
-	  <optional>
-	    <ref name="thead"/>
-	  </optional>
-	  <optional>
-	    <ref name="tfoot"/>
-	  </optional>
-	  <oneOrMore>
-	    <ref name="tbody"/>
-	  </oneOrMore>
-	</group>
-	<oneOrMore>
-	  <ref name="tr"/>
-	</oneOrMore>
-      </choice>
-    </element>
-  </define>
-
-  <define name="th">
-    <element name="th">
-      <ref name="th.attlist"/>
-      <ref name="Flow.model"/>
-    </element>
-  </define>
-
-  <define name="td">
-    <element name="td">
-      <ref name="td.attlist"/>
-      <ref name="Flow.model"/>
-    </element>
-  </define>
-
-  <define name="CellHAlign.attrib">
-    <optional>
-      <attribute name="align">
-	<choice>
-	  <value>left</value>
-	  <value>center</value>
-	  <value>right</value>
-	  <value>justify</value>
-	  <value>char</value>
-	</choice>
-      </attribute>
-    </optional>
-    <optional>
-      <attribute name="char">
-	<ref name="Character.datatype"/>
-      </attribute>
-    </optional>
-    <optional>
-      <attribute name="charoff">
-	<ref name="Length.datatype"/>
-      </attribute>
-    </optional>
-  </define>
-
-  <define name="CellVAlign.attrib">
-    <optional>
-      <attribute name="valign">
-	<choice>
-	  <value>top</value>
-	  <value>middle</value>
-	  <value>bottom</value>
-	  <value>baseline</value>
-	</choice>
-      </attribute>
-    </optional>
-  </define>
-
-  <define name="scope.attrib">
-    <optional>
-      <attribute name="scope">
-	<choice>
-	  <value>row</value>
-	  <value>col</value>
-	  <value>rowgroup</value>
-	  <value>colgroup</value>
-	</choice>
-      </attribute>
-    </optional>
-  </define>
-
-</include>
-
-<define name="table.attlist" combine="interleave">
-  <optional>
-    <attribute name="width">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="border">
-      <ref name="Pixels.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="frame.attrib"/>
-  <ref name="rules.attrib"/>
-  <optional>
-    <attribute name="cellspacing">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="cellpadding">
-      <ref name="Length.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="col">
-  <element name="col">
-    <ref name="col.attlist"/>
-  </element>
-</define>
-
-<define name="col.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="span">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="MultiLength.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="colgroup">
-  <element name="colgroup">
-    <ref name="colgroup.attlist"/>
-    <zeroOrMore>
-      <ref name="col"/>
-    </zeroOrMore>
-  </element>
-</define>
-
-<define name="colgroup.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="span">
-      <ref name="Number.datatype"/>
-    </attribute>
-  </optional>
-  <optional>
-    <attribute name="width">
-      <ref name="MultiLength.datatype"/>
-    </attribute>
-  </optional>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="tbody">
-  <element name="tbody">
-    <ref name="tbody.attlist"/>
-    <oneOrMore>
-      <ref name="tr"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="tbody.attlist">
-  <ref name="Common.attrib"/>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="thead">
-  <element name="thead">
-    <ref name="thead.attlist"/>
-    <oneOrMore>
-      <ref name="tr"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="thead.attlist">
-  <ref name="Common.attrib"/>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="tfoot">
-  <element name="tfoot">
-    <ref name="tfoot.attlist"/>
-    <oneOrMore>
-      <ref name="tr"/>
-    </oneOrMore>
-  </element>
-</define>
-
-<define name="tfoot.attlist">
-  <ref name="Common.attrib"/>
-  <ref name="CellHAlign.attrib"/>
-  <ref name="CellVAlign.attrib"/>
-</define>
-
-<define name="frame.attrib">
-  <optional>
-    <attribute name="frame">
-      <choice>
-        <value>void</value>
-        <value>above</value>
-        <value>below</value>
-        <value>hsides</value>
-        <value>lhs</value>
-        <value>rhs</value>
-        <value>vsides</value>
-        <value>box</value>
-        <value>border</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-<define name="rules.attrib">
-  <optional>
-    <attribute name="rules">
-      <choice>
-        <value>none</value>
-        <value>groups</value>
-        <value>rows</value>
-        <value>cols</value>
-        <value>all</value>
-      </choice>
-    </attribute>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/target.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/target.rng
deleted file mode 100644
index ccd9c42..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/target.rng
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: target.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Target Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="a.attlist" combine="interleave">
-  <ref name="target.attrib"/>
-</define>
-
-<define name="area.attlist" combine="interleave">
-  <ref name="target.attrib"/>
-</define>
-
-<define name="base.attlist" combine="interleave">
-  <ref name="target.attrib"/>
-</define>
-
-<define name="link.attrib" combine="interleave">
-  <ref name="target.attrib"/>
-</define>
-
-<define name="form.attlist" combine="interleave">
-  <ref name="target.attrib"/>
-</define>
-
-<define name="target.attrib">
-  <optional>
-    <attribute name="target"/>
-  </optional>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/text.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/text.rng
deleted file mode 100644
index 247c77d..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/modules/text.rng
+++ /dev/null
@@ -1,357 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: text.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<!-- Text Module -->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-
-<define name="br">
-  <element name="br">
-    <ref name="br.attlist"/>
-    <empty/>
-  </element>
-</define>
-
-<define name="br.attlist">
-  <ref name="Core.attrib"/>
-</define>
-
-<define name="span">
-  <element name="span">
-    <ref name="span.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="span.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="abbr">
-  <element name="abbr">
-    <ref name="abbr.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="abbr.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="acronym">
-  <element name="acronym">
-    <ref name="acronym.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="acronym.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="cite">
-  <element name="cite">
-    <ref name="cite.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="cite.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="code">
-  <element name="code">
-    <ref name="code.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="code.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="dfn">
-  <element name="dfn">
-    <ref name="dfn.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="dfn.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="em">
-  <element name="em">
-    <ref name="em.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="em.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="kbd">
-  <element name="kbd">
-    <ref name="kbd.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="kbd.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="q">
-  <element name="q">
-    <ref name="q.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="q.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="cite">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="samp">
-  <element name="samp">
-    <ref name="samp.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="samp.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="strong">
-  <element name="strong">
-    <ref name="strong.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="strong.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="var">
-  <element name="var">
-    <ref name="var.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="var.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="div">
-  <element name="div">
-    <ref name="div.attlist"/>
-    <ref name="Flow.model"/>
-  </element>
-</define>
-
-<define name="div.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="p">
-  <element name="p">
-    <ref name="p.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="p.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="address">
-  <element name="address">
-    <ref name="address.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="address.attlist">
-  <ref name="Common.attrib"/>
-</define>
-
-<define name="blockquote">
-  <element name="blockquote">
-    <ref name="blockquote.attlist"/>
-    <ref name="Block.model"/>
-  </element>
-</define>
-
-<define name="blockquote.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="cite">
-      <ref name="URI.datatype"/>
-    </attribute>
-  </optional>
-</define>
-
-<define name="pre">
-  <element name="pre">
-    <ref name="pre.attlist"/>
-    <ref name="Inline.model"/>
-  </element>
-</define>
-
-<define name="pre.attlist">
-  <ref name="Common.attrib"/>
-  <optional>
-    <attribute name="xml:space">
-      <value>preserve</value>
-    </attribute>
-  </optional>
-</define>
-
-<define name="h1">
-  <element name="h1">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
- 
-<define name="h2">
-  <element name="h2">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
- 
-<define name="h3">
-  <element name="h3">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
- 
-<define name="h4">
-  <element name="h4">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
- 
-<define name="h5">
-  <element name="h5">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
-
-<define name="h6">
-  <element name="h6">
-    <ref name="Heading.attrib"/>
-    <ref name="Heading.content"/>
-  </element>
-</define>
-
-<define name="Heading.attrib">
-  <ref name="Common.attrib"/>
-</define>
- 
-<define name="Heading.content">
-  <ref name="Inline.model"/>
-</define>
-
-<define name="Heading.class">
-  <choice>
-    <ref name="h1"/>
-    <ref name="h2"/>
-    <ref name="h3"/>
-    <ref name="h4"/>
-    <ref name="h5"/>
-    <ref name="h6"/>
-  </choice>
-</define>
-
-<define name="Block.class">
-  <choice>
-    <ref name="address"/>
-    <ref name="blockquote"/>
-    <ref name="div"/>
-    <ref name="p"/>
-    <ref name="pre"/>
-    <ref name="Heading.class"/>
-  </choice>
-</define>
-
-<define name="Inline.class">
-  <choice>
-    <ref name="abbr"/>
-    <ref name="acronym"/>
-    <ref name="br"/>
-    <ref name="cite"/>
-    <ref name="code"/>
-    <ref name="dfn"/>
-    <ref name="em"/>
-    <ref name="kbd"/>
-    <ref name="q"/>
-    <ref name="samp"/>
-    <ref name="span"/>
-    <ref name="strong"/>
-    <ref name="var"/>
-  </choice>
-</define>
-
-<define name="Inline.model">
-  <zeroOrMore>
-    <choice>
-      <text/>
-      <ref name="Inline.class"/>
-    </choice>
-  </zeroOrMore>
-</define>
-
-<!-- This is redefined by the legacy module to include inlines. -->
-<define name="Block.mix">
-  <ref name="Block.class"/>
-</define>
-
-<define name="Block.model">
-  <oneOrMore>
-    <ref name="Block.mix"/>
-  </oneOrMore>
-</define>
-
-<define name="Flow.model">
-  <zeroOrMore>
-    <choice>
-      <text/>
-      <ref name="Inline.class"/>
-      <ref name="Block.class"/>
-    </choice>
-  </zeroOrMore>
-</define>
-
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
deleted file mode 100644
index 76a130d..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-basic.rng
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml-basic.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- XHTML Basic -->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-         xmlns="http://relaxng.org/ns/structure/1.0">
-
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/struct.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/text.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/list.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/basic-table.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/image.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/param.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/object.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/meta.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/link.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/base.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/pres.rng"/>
-
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-strict.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-strict.rng
deleted file mode 100644
index 8ae873b..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml-strict.rng
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml-strict.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!-- XHTML Strict -->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-         xmlns="http://relaxng.org/ns/structure/1.0">
-
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/struct.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/text.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/list.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/image.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/ssismap.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/base.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/link.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/meta.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/param.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/object.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/bdo.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/pres.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/edit.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/applet.rng"/>
-<!-- <include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng"/> -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/form.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/style.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/script.rng"/>
-<!-- <include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/basic-table.rng"/> -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/table.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/csismap.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/events.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/inlstyle.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/target.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/iframe.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/nameident.rng"/>
-
-</grammar>
diff --git a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml.rng b/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml.rng
deleted file mode 100644
index 148bef1..0000000
--- a/trunk/src/modules/xhtml/resources/schemas/xhtml/xhtml.rng
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<grammar ns="http://www.w3.org/1999/xhtml"
-         xmlns="http://relaxng.org/ns/structure/1.0">
-
-<!-- XHTML -->
-<!-- This corresponds to the union of transitional and frameset. -->
-
-
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/datatypes.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/attribs.rng"/>
-<!-- <include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/struct.rng"/> -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/frames.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/text.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/hypertext.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/list.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/image.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/ssismap.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/base.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/link.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/meta.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/param.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/object.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/bdo.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/pres.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/edit.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/applet.rng"/>
-<!-- <include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/basic-form.rng"/> -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/form.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/style.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/script.rng"/>
-<!-- <include href="modules/basic-table.rng"/> -->
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/table.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/csismap.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/events.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/inlstyle.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/target.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/iframe.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/nameident.rng"/>
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml/modules/legacy.rng"/>
-
-</grammar>
diff --git a/trunk/src/modules/xhtml/samples/samples.xml b/trunk/src/modules/xhtml/samples/samples.xml
deleted file mode 100644
index 24138a3..0000000
--- a/trunk/src/modules/xhtml/samples/samples.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<samples>
-  <sample 
-    mime-type="application/xhtml+xml"
-    uri="fallback://lenya/modules/xhtml/samples/xhtml.xml"
-  />
-  <sample 
-    name="Two Column Layout" 
-    mime-type="application/xhtml+xml"
-    uri="fallback://lenya/modules/xhtml/samples/xhtml-2col.xml"
-  />
-</samples>
diff --git a/trunk/src/modules/xhtml/samples/xhtml-2col.xml b/trunk/src/modules/xhtml/samples/xhtml-2col.xml
deleted file mode 100644
index 9df30b5..0000000
--- a/trunk/src/modules/xhtml/samples/xhtml-2col.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-      xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-      xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
->
-  <head>
-    <title>New 2-column XHTML document</title>
-  </head>
-  <body>  
-  
-    <h2>New 2-column XHTML document</h2>
-    
-    <p>Here comes the text of your new document...</p>
-    <p>
-     To add real content, use one of the editors listed in the
-     <strong>Edit</strong> menu.
-    </p>
-
-    <div class="column1of2"> 
-      <h3>Column 1</h3>
-      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
-      Fusce volutpat aliquam risus. Proin in dui nec arcu sagittis placerat. 
-      </p>
-   </div>
-
-   <div class="column2of2">
-      <h3>Column 2</h3>
-      <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
-      Fusce volutpat aliquam risus. Proin in dui nec arcu sagittis placerat. 
-      </p>
-    </div>
-
-    <div>
-      <br class="clear" />
-      <br /><br />
-      <br /><br />
-      <br /><br />
-      <br /><br />
-    </div>
-  </body>
-</html>
diff --git a/trunk/src/modules/xhtml/samples/xhtml.xml b/trunk/src/modules/xhtml/samples/xhtml.xml
deleted file mode 100644
index 5fe6a99..0000000
--- a/trunk/src/modules/xhtml/samples/xhtml.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-      xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-      xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
->
-  <head>
-    <title>New XHTML document</title>
-  </head>
-  <body>
-    <h1>New XHTML document</h1>
-    <p>Here comes the text of your new document...</p>
-    <p>
-      To add real content, use one of the editors listed in the
-      <strong>Edit</strong> menu.
-    </p>
-  </body>
-</html>
diff --git a/trunk/src/modules/xhtml/sitemap.xmap b/trunk/src/modules/xhtml/sitemap.xmap
deleted file mode 100644
index d15e11b..0000000
--- a/trunk/src/modules/xhtml/sitemap.xmap
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-<!-- =========================== Components ================================ -->
-
-  <map:components>
-  
-    <map:serializers default="xhtml"> 
-      <map:serializer name="xml-get" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="text/xml">
-        <doctype-public>-//W3C//DTD XHTML 1.0 Strict//EN</doctype-public>
-        <doctype-system>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</doctype-system>
-        <encoding>UTF-8</encoding>
-      </map:serializer>
-    </map:serializers>
- 
-  </map:components>
-
-  <map:pipelines>
-
-    <!-- search pipeline -->
-    <map:pipeline>
-      
-      <!-- {pub-id}/{area}/{uuid}/{language} -->
-      <map:match pattern="metadata/*/*/*/*">
-        <map:generate type="lenyaMetaData" src="lenya-document:{3},pub={1},area={2},lang={4}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {pub-id}/{area}/{uuid}/{language} -->
-      <map:match pattern="lucene-index/*/*/*/*">
-        <map:aggregate element="cmsbody">
-          <map:part src="lenya-document:{3},pub={1},area={2},lang={4}"/>
-          <map:part src="cocoon:/metadata/{1}/{2}/{3}/{4}"/>
-        </map:aggregate>
-  
-        <map:transform src="fallback://lenya/modules/xhtml/xslt/xhtml2index.xsl">
-          <map:parameter name="url" value="{request:requestURI}"/>
-        </map:transform>
-        
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>
-    
-    <map:pipeline>
-
-      <!-- webdav GET matcher -->
-      <map:match pattern="davget.xml">
-        <map:act type="set-header">
-          <map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
-          <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}"/>
-          <map:transform type="uuid2url"/>
-          <map:transform type="proxy">
-            <map:parameter name="urls" value="absolute"/>
-          </map:transform>
-          <map:serialize type="xml-get"/>
-        </map:act>
-      </map:match>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{format}.xml" -->
-      <map:match pattern="*.xml">
-        <map:generate src="cocoon:/{1}.xml/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- {format}.xml/{pubId}/{area}/{uuid}/{language} -->
-      <map:match pattern="*.xml/*/*/*/*">
-        <map:generate src="lenya-document:{4},lang={5}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/xhtml/xslt/xhtml2xhtml.xsl">
-          <map:parameter name="rendertype" value="{request-param:rendertype}"/>
-          <map:parameter name="nodeid" value="{doc-info:{2}:{3}:{4}:{5}:nodeName}"/>
-          <map:parameter name="language" value="{4}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <map:match pattern="icon/*/*/*/*">
-        <map:read src="fallback://lenya/modules/xhtml/resources/icons/xhtml.gif"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/modules/xhtml/xslt/clean-xhtml.xsl b/trunk/src/modules/xhtml/xslt/clean-xhtml.xsl
deleted file mode 100644
index 58d454b..0000000
--- a/trunk/src/modules/xhtml/xslt/clean-xhtml.xsl
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    xmlns="http://www.w3.org/1999/xhtml"
-    >
-
-  <xsl:import href="fallback://lenya/modules/kupu/resources/kupu/apache-lenya/lenya/kupusave.xsl"/>
-  <xsl:import href="fallback://lenya/modules/bxe/xslt/change-object-path-back.xsl"/>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  <!-- Prevents empty titles from interfering with IE during editing -->
-  <xsl:template match="xhtml:title">
-    <xsl:param name="title" select="." />
-    <xsl:choose>
-      <xsl:when test="string-length($title) = 0">
-        <xhtml:title>&#160;</xhtml:title>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:copy>
-          <xsl:apply-templates />
-        </xsl:copy>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-
-
-  <!-- Remove tag that disables Firefox spell check in FCK -->
-  <xsl:template match="xhtml:body[@spellcheck]" >
-    <xsl:copy>
-       <xsl:apply-templates select="@*[name()!='spellcheck']" />
-       <xsl:apply-templates />
-    </xsl:copy>
-  </xsl:template>
-
-  <!-- Unsupported by the schema -->
-  <xsl:template match="@shape|@target|xhtml:u">
-    <xsl:apply-templates />
-  </xsl:template>
-  
-  <xsl:template match="xhtml:b">
-    <xhtml:strong>
-      <xsl:apply-templates />
-    </xhtml:strong>
-  </xsl:template>
-  
-  <xsl:template match="xhtml:i">
-    <xhtml:em>
-      <xsl:apply-templates />
-    </xhtml:em>
-  </xsl:template>
-  
-  <!-- this template converts the img tag to object 
-    for more, see http://www.xml.com/pub/a/2003/07/02/dive.html -->
-  <xsl:template match="xhtml:img">
-    <object>
-      <xsl:attribute name="data">
-        <!-- strip the nodeid out again (it is not saved in the object @data) -->
-        <xsl:choose>
-          <xsl:when test="starts-with(@src, '/')">
-            <xsl:value-of select="@src"/>              
-          </xsl:when>
-          <xsl:when test="starts-with(@src, 'http:') or starts-with(@src, 'https:')">
-            <xsl:value-of select="@src"/>              
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:value-of select="substring-after(@src, '/')"/>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:attribute>
-      <xsl:attribute name="title">
-        <xsl:value-of select="@alt"/>
-      </xsl:attribute>
-      <!-- use the rarely-used ismap to roundtrip the type attribute for the object element -->
-      <xsl:attribute name="type">
-        <xsl:value-of select="@ismap"/>
-      </xsl:attribute>
-      <xsl:if test="string(@height)">
-        <xsl:attribute name="height">
-          <xsl:value-of select="@height"/>
-        </xsl:attribute>
-      </xsl:if> 
-      <xsl:if test="string(@width)">
-        <xsl:attribute name="width">
-          <xsl:value-of select="@width"/>
-        </xsl:attribute>
-      </xsl:if>         
-    </object>
-  </xsl:template>
-  
-  <xsl:template match="lenya:asset">
-    <p>
-      <a href="{@src}" class="lenya.asset"><xsl:apply-templates/></a>
-    </p>
-  </xsl:template>
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/xhtml/xslt/helper-object.xsl b/trunk/src/modules/xhtml/xslt/helper-object.xsl
deleted file mode 100644
index 1bf039a..0000000
--- a/trunk/src/modules/xhtml/xslt/helper-object.xsl
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    exclude-result-prefixes="xhtml lenya"
-    >
-
-<xsl:param name="rendertype" select="''"/>
-<xsl:param name="nodeid"/>
-   <!-- this template converts the object tag to img (for compatiblity with older browsers 
-    for more, see http://www.xml.com/pub/a/2003/07/02/dive.html -->
-   <xsl:template name="object2img">
-      <img border="0">
-        <xsl:attribute name="src">
-          <xsl:choose>
-            <xsl:when test="starts-with(@data, 'lenya-document:')">
-              <xsl:value-of select="@data"/>
-            </xsl:when>
-            <xsl:when test="not(starts-with(@data, '/') or starts-with(@data, 'http://'))">
-              <xsl:value-of select="$nodeid"/>/<xsl:value-of select="@data"/>
-            </xsl:when>
-            <xsl:otherwise>            
-              <xsl:value-of select="@data"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:attribute>
-        <xsl:attribute name="alt">
-          <!-- the overwritten title (stored in @name) has precedence over dc:title -->
-          <xsl:choose>
-            <xsl:when test="@name != ''">
-              <xsl:value-of select="@name"/>
-            </xsl:when>
-            <xsl:when test="@title != ''">
-              <xsl:value-of select="@title"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="dc:metadata/dc:title"/>                    
-            </xsl:otherwise>
-            </xsl:choose>
-        </xsl:attribute>
-         <xsl:if test="string(@height)">
-          <xsl:attribute name="height">
-            <xsl:value-of select="@height"/>
-          </xsl:attribute>
-        </xsl:if> 
-        <xsl:if test="string(@width)">
-          <xsl:attribute name="width">
-            <xsl:value-of select="@width"/>
-          </xsl:attribute>
-        </xsl:if>
-        <xsl:if test="@class">
-          <xsl:attribute name="class">
-            <xsl:value-of select="@class"/>
-          </xsl:attribute>
-        </xsl:if>         
-      </img>
-   </xsl:template>
-  
-  <xsl:template match="xhtml:object" priority="3">
-    <xsl:choose>
-      <xsl:when test="@href != ''">
-        <a href="{@href}">
-          <xsl:call-template name="object2img"/>
-        </a>
-      </xsl:when>
-      <xsl:when test="@type = 'application/x-shockwave-flash'">
-        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
-            <param name="movie" value="{$nodeid}/{@data}"/>
-        </object>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:call-template name="object2img"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>  
-
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/xhtml/xslt/xhtml2index.xsl b/trunk/src/modules/xhtml/xslt/xhtml2index.xsl
deleted file mode 100644
index badf762..0000000
--- a/trunk/src/modules/xhtml/xslt/xhtml2index.xsl
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lucene="http://apache.org/cocoon/lucene/1.0"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:param name="uri"/>
-
-<xsl:variable name="boost" select="number(/descendant-or-self::dc:rights)"/>  
-
-<xsl:template match="/">
-  <!-- attributes of the index and document element will be added by the lucene module -->
-  <lucene:index>
-    <lucene:document>
-      <lucene:field name="url" boost="{$boost}"><xsl:value-of select="$uri"/></lucene:field>
-      <xsl:apply-templates/>
-    </lucene:document>
-  </lucene:index>  
-</xsl:template>
-
-<xsl:template match="dc:rights" priority="1"/>
-
-<xsl:template match="xhtml:body" priority="1">
-  <lucene:field name="body" boost="{$boost}">
-    <xsl:for-each select=".//text()">
-      <xsl:value-of select="concat(normalize-space(.),' ')"/>
-    </xsl:for-each>
-  </lucene:field>
-</xsl:template>
-
-<xsl:template match="dc:title" priority="1">
-  <lucene:field name="title" boost="{$boost}"><xsl:value-of select="."/></lucene:field>
-</xsl:template>
-
-<xsl:template match="dc:description" priority="1">
-  <lucene:field name="description" boost="{$boost}"><xsl:value-of select="."/></lucene:field>
-</xsl:template>
-
-<xsl:template match="dc:subject" priority="1">
-  <lucene:field name="subject" boost="{$boost}"><xsl:value-of select="."/></lucene:field>
-</xsl:template>
-
-<xsl:template match="@*|node()" priority="-1">
-  <xsl:apply-templates/>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/xhtml/xslt/xhtml2xhtml.xsl b/trunk/src/modules/xhtml/xslt/xhtml2xhtml.xsl
deleted file mode 100644
index 0496bf8..0000000
--- a/trunk/src/modules/xhtml/xslt/xhtml2xhtml.xsl
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml2xhtml.xsl 201776 2005-06-25 18:25:26Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:ci="http://apache.org/cocoon/include/1.0" 
-    exclude-result-prefixes="xhtml lenya"
-    >
-    
-<xsl:include href="fallback://lenya/modules/xhtml/xslt/helper-object.xsl"/>
-<xsl:param name="rendertype" select="''"/>
-<xsl:param name="nodeid"/>
-
-<xsl:template match="/xhtml:html">
-  <html>
-    <body>
-      <div id="body">
-        <xsl:if test="$rendertype = 'edit'">
-          <xsl:attribute name="bxe_xpath">/xhtml:html/xhtml:body</xsl:attribute>
-        </xsl:if>
-        <xsl:apply-templates select="xhtml:body/node()"/>
-      </div>
-    </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-  <xsl:template name="substring-after-last">
-    <xsl:param name="input"/>
-    <xsl:param name="substr"/>
-    <xsl:variable name="temp" select="substring-after($input, $substr)"/>
-    <xsl:choose>
-      <xsl:when test="$substr and contains($temp, $substr)">
-        <xsl:call-template name="substring-after-last">
-          <xsl:with-param name="input" select="$temp"/>
-          <xsl:with-param name="susbtr" select="$substr"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$temp"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template match="xhtml:a[@class = 'lenya.asset']">
-    <ci:include src="{@href}?format=downloadLink"/>
-  </xsl:template>
-
- <xsl:template match="dc:metadata"/>
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/modules/xopus/config/cocoon-xconf/input-modules/xopus.xconf b/trunk/src/modules/xopus/config/cocoon-xconf/input-modules/xopus.xconf
deleted file mode 100644
index a101562..0000000
--- a/trunk/src/modules/xopus/config/cocoon-xconf/input-modules/xopus.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->
-<!--
-    This file defines the Xopus context path.
--->
-
-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'xopus']">
-    <component-instance name="xopus" class="org.apache.cocoon.components.modules.input.DefaultsModule">
-      <values>
-        <!-- Same as from (local.)build.properties -->
-        <context>Xopus-2.1.79</context>
-        <path>../../../../tomcat-5.5.x/build/build/webapps/ROOT</path>
-      </values>
-    </component-instance>
-  </xconf>
diff --git a/trunk/src/modules/xopus/config/module.xml b/trunk/src/modules/xopus/config/module.xml
deleted file mode 100644
index a78ad6c..0000000
--- a/trunk/src/modules/xopus/config/module.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<lenya:module xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <lenya:id>org.apache.lenya.modules.xopus</lenya:id>
-  <lenya:depends module="org.apache.lenya.modules.usecase"/>
-  <lenya:depends module="org.apache.lenya.modules.sitemanagement"/>
-  <lenya:package>org.apache.lenya.modules</lenya:package>
-  <lenya:version>0.1-dev</lenya:version>
-  <lenya:name>Xopus Module</lenya:name>
-  <lenya:lenya-version>@lenya.version@</lenya:lenya-version>
-  <lenya:description>Xopus Module</lenya:description>
-</lenya:module>
diff --git a/trunk/src/modules/xopus/resources/schemas/homepage.xsd b/trunk/src/modules/xopus/resources/schemas/homepage.xsd
deleted file mode 100644
index 04b7073..0000000
--- a/trunk/src/modules/xopus/resources/schemas/homepage.xsd
+++ /dev/null
@@ -1,608 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  <xs:element name="html">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="head"/>
-        <xs:element ref="body"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="head">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="head.content"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="body">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="h1"/>
-          <xs:element ref="h2"/>
-          <xs:element ref="p"/>
-          <xs:element ref="table"/>
-          <xs:element ref="h3"/>
-          <xs:element ref="ul"/>
-          <xs:element ref="ol"/>
-          <xs:element ref="div"/>
-          <xs:element ref="a"/>
-        </xs:choice>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-
-  
-<xs:group name="Table.class">
-    <xs:choice>
-      <xs:element ref="table"/>
-    </xs:choice>
-  </xs:group>
-
-  <xs:attributeGroup name="CellVAlign.attrib">
-    <xs:attribute name="valign">
-      <xs:simpleType>
-        <xs:restriction base="xs:NMTOKEN">
-          <xs:enumeration value="top"/>
-          <xs:enumeration value="middle"/>
-          <xs:enumeration value="bottom"/>
-          <xs:enumeration value="baseline"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="CellHAlign.attrib">
-    <xs:attribute name="align">
-      <xs:simpleType>
-        <xs:restriction base="xs:NMTOKEN">
-          <xs:enumeration value="left"/>
-          <xs:enumeration value="center"/>
-          <xs:enumeration value="right"/>
-          <xs:enumeration value="justify"/>
-          <xs:enumeration value="char"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="td.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
-    <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-    <xs:attribute name="width" type="Pixels" use="optional" />
-    <xs:attribute name="height" type="Pixels" use="optional" />
-  </xs:attributeGroup>
-  <xs:complexType name="td.type" mixed="true">
-    <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="td.attlist"/>
-  </xs:complexType>
-  <xs:element name="td" type="td.type"/>
-  <xs:attributeGroup name="th.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
-    <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-    <xs:attribute name="width" type="Pixels" use="optional" />
-    <xs:attribute name="height" type="Pixels" use="optional" />    
-  </xs:attributeGroup>
-  <xs:complexType name="th.type" mixed="true">
-    <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="th.attlist"/>
-  </xs:complexType>
-  <xs:element name="th" type="th.type"/>
-
-  <xs:attributeGroup name="tr.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="tr.content">
-    <xs:choice>
-      <xs:element ref="td"/>
-      <xs:element ref="th"/>
-    </xs:choice>
-  </xs:group>
-  <xs:complexType name="tr.type">
-    <xs:group ref="tr.content" minOccurs="1" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="tr.attlist"/>
-  </xs:complexType>
-  <xs:element name="tr" type="tr.type"/>
-  <xs:group name="tbody.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="tbody.type">
-    <xs:group ref="tbody.content"/>
-  </xs:complexType>
-  <xs:element name="tbody" type="tbody.type"/>
-  <xs:attributeGroup name="tfoot.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="tfoot.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="tfoot.type">
-    <xs:group ref="tfoot.content"/>
-    <xs:attributeGroup ref="tfoot.attlist"/>
-  </xs:complexType>
-  <xs:element name="tfoot" type="tfoot.type"/>
-  <xs:attributeGroup name="thead.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="thead.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="thead.type">
-    <xs:group ref="thead.content"/>
-    <xs:attributeGroup ref="thead.attlist"/>
-  </xs:complexType>
-  <xs:element name="thead" type="thead.type"/>
-  <xs:attributeGroup name="table.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="width" type="Length"/>
-    <xs:attribute name="border" type="Pixels" use="optional" />
-    <xs:attribute name="cellspacing" type="Pixels" use="optional" />
-    <xs:attribute name="cellpadding" type="Pixels" use="optional" />
-  </xs:attributeGroup>
-  <xs:group name="table.content">
-    <xs:sequence>
-      <xs:choice>
-        <xs:sequence>
-          <xs:element ref="thead" minOccurs="0"/>
-          <xs:element ref="tfoot" minOccurs="0"/>
-          <xs:element ref="tbody" maxOccurs="unbounded"/>
-        </xs:sequence>
-      </xs:choice>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="table.type" mixed="true">
-    <xs:group ref="table.content"/>
-    <xs:attributeGroup ref="table.attlist"/>
-  </xs:complexType>
-  <xs:element name="table" type="table.type"/>
-
-  <xs:attributeGroup name="InlPres.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="InlPres.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/>
-    <xs:attributeGroup ref="InlPres.attlist"/>
-  </xs:complexType>
-  <xs:element name="sub" type="InlPres.type"/>
-  <xs:element name="sup" type="InlPres.type"/>
-
-  <xs:attributeGroup name="title.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="title.type" mixed="true">
-    <xs:attributeGroup ref="title.attlist"/>
-  </xs:complexType>
-  <xs:element name="title" type="title.type"/>
-
-  <xs:group name="head.content">
-    <xs:sequence>
-      <xs:element ref="title"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:attributeGroup name="head.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="head.type">
-    <xs:group ref="head.content"/>
-    <xs:attributeGroup ref="head.attlist"/>
-  </xs:complexType>
-  <xs:element name="head" type="head.type"/>
-
-  <!-- <xs:attributeGroup name="body.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="body.type" mixed="true">
-    <xs:group maxOccurs="unbounded" ref="Block.mix"/>
-    <xs:attributeGroup ref="body.attlist"/>
-  </xs:complexType>
-  <xs:element name="body" type="body.type"/> -->
-
-  <!-- <xs:attributeGroup name="html.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="html.type">
-    <xs:sequence>
-      <xs:element ref="lenya:meta" minOccurs="0"/>
-      <xs:element ref="head"/>
-      <xs:element ref="body"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="html.attlist"/>
-  </xs:complexType>
-  <xs:element name="html" type="html.type"/>
- -->
- 
-  <xs:element name="object">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">Object</xopus:name>
-          <xopus:name xml:lang="de">Objekt</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-    <xs:complexType mixed="true">
-      <xs:attribute name="title" type="xs:string"/>
-      <xs:attribute name="href" type="URI" />
-      <xs:attribute name="type" type="xs:string"/>
-      <xs:attribute name="data" type="xs:string" use="required"/>
-    </xs:complexType>
-  </xs:element>  
- 
- 
-<!--   <xs:attributeGroup name="object.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-      <xs:attribute name="title" type="xs:string"/>
-      <xs:attribute name="href" type="URI" use="required"/>
-      <xs:attribute name="type" type="xs:string"/>
-      <xs:attribute name="data" type="xs:string"/>
-  </xs:attributeGroup>
-  <xs:complexType name="object.type">
-    <xs:attributeGroup ref="object.attlist"/>
-  </xs:complexType>
-  <xs:element name="object" type="object.type">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">hallo_obj_en</xopus:name>
-          <xopus:name xml:lang="de">hallo_obj_de</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-  </xs:element>
- -->  
-  <xs:element name="a">
-    <xs:complexType mixed="true">
-      <xs:group minOccurs="0" maxOccurs="unbounded" ref="InlNoAnchor.mix"/>  
-      <!-- <xs:sequence>
-        <xs:element minOccurs="0" ref="img"/>
-      </xs:sequence> -->
-      <xs:attribute name="name" type="xs:string"/>
-      <xs:attribute name="popup" type="xs:boolean"/>
-      <xs:attribute name="href" type="URI" use="required"/>
-      <!-- <xs:attribute name="target" type="TargetType"/> -->
-    </xs:complexType>
-  </xs:element>
-
-  
-  <xs:complexType name="li.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Flow.mix"/>
-  </xs:complexType>
-  <xs:element name="li" type="li.type"/>
-  <xs:attributeGroup name="ol.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="ol.type">
-    <xs:sequence>
-      <xs:element ref="li" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="ol.attlist"/>
-  </xs:complexType>
-  <xs:element name="ol" type="ol.type"/>
-
-  <xs:attributeGroup name="ul.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="ul.type">
-    <xs:sequence>
-      <xs:element ref="li" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="ul.attlist"/>
-  </xs:complexType>
-  <xs:element name="ul" type="ul.type"/>
-
-  <xs:attributeGroup name="link.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="href" type="URI"/>
-    <xs:attribute name="target" type="TargetType"/>
-    <xs:attribute name="name" type="xs:string"/>    
-  </xs:attributeGroup>
-  <xs:complexType name="link.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="InlNoAnchor.mix"/>
-    <xs:attributeGroup ref="link.attlist"/>
-  </xs:complexType>
-  <xs:element name="link" type="link.type"/>
-  
-  <xs:complexType name="br.type"/>
-  <xs:element name="br" type="br.type"/>  
-
-  <xs:complexType name="span.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-  </xs:complexType>
-  <xs:element name="span" type="span.type"/>
-  <xs:element name="b" type="span.type"/>  
-  
-  <xs:complexType name="font.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-    <xs:attribute name="size" type="xs:integer"/>
-    <xs:attribute name="face" type="xs:string"/>
-  </xs:complexType>
-  <xs:element name="font" type="font.type"/>  
-
-  <xs:attributeGroup name="img.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="src" type="URI" use="required"/>
-    <xs:attribute name="width" type="Pixels"/>
-    <xs:attribute name="height" type="Pixels"/>
-  </xs:attributeGroup>
-  <xs:complexType name="img.type">
-    <xs:attributeGroup ref="img.attlist"/>
-  </xs:complexType>
-  <xs:element name="img" type="img.type">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">Image</xopus:name>
-          <xopus:name xml:lang="de">Bild</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-  </xs:element>
-
-  <xs:attributeGroup name="InlPhras.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="InlPhras.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/>
-    <xs:attributeGroup ref="InlPhras.attlist"/>
-  </xs:complexType>
-  <xs:element name="emphasis" type="InlPhras.type"/>
-  <xs:element name="strong" type="InlPhras.type"/>
-  <xs:element name="u" type="InlPhras.type"/>
-
-  <xs:attributeGroup name="div.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="div.type" mixed="true">
-    <xs:group maxOccurs="unbounded" ref="Block.mix"/>
-    <xs:attributeGroup ref="div.attlist"/>
-  </xs:complexType>
-  <xs:element name="div" type="div.type"/>
-
-   <xs:attributeGroup name="p.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="p.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/> 
-    <xs:attributeGroup ref="p.attlist"/>
-  </xs:complexType>
-  <xs:element name="p" type="p.type"/>
- 
-  <xs:complexType name="heading.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-  </xs:complexType>
-  <xs:element name="h1" type="heading.type"/>
-  <xs:element name="h2" type="heading.type"/>
-  <xs:element name="h3" type="heading.type"/>
-  <xs:element name="h4" type="heading.type"/>
-  <xs:element name="h5" type="heading.type"/>
-  <xs:element name="h6" type="heading.type"/>
-
-  <xs:group name="InlPhras.class">
-    <xs:choice>
-      <xs:element ref="emphasis"/>
-      <xs:element ref="strong"/>
-      <!-- <xs:element ref="u"/> -->
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlPres.class">
-    <xs:choice>
-      <xs:element ref="sub"/>
-      <xs:element ref="sup"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Anchor.class">
-    <xs:choice>
-      <xs:element ref="a"/>
-      <!-- <xs:element ref="link"/> -->
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlSpecial.class">
-    <xs:choice>
-      <xs:element ref="img"/>
-      <xs:element ref="object"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.extra">
-    <xs:choice>
-        <xs:element ref="br"/>
-        <!-- <xs:element ref="b"/> -->
-        <xs:element ref="span"/>
-        <xs:element ref="font"/>        
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.class">
-    <xs:choice>
-      <xs:group ref="InlPhras.class"/>
-      <xs:group ref="InlPres.class"/>
-      <xs:group ref="Anchor.class"/>
-      <xs:group ref="InlSpecial.class"/>
-      <xs:group ref="Inline.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlNoAnchor.class">
-    <xs:choice>
-      <xs:group ref="InlPhras.class"/>
-      <xs:group ref="InlPres.class"/>
-      <xs:group ref="InlSpecial.class"/>
-      <xs:group ref="Inline.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlNoAnchor.mix">
-    <xs:choice>
-      <xs:group ref="InlNoAnchor.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.mix">
-    <xs:choice>
-      <xs:group ref="Inline.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Heading.class">
-    <xs:choice>
-      <xs:element ref="h1"/>
-      <xs:element ref="h2"/>
-      <xs:element ref="h3"/>
-      <xs:element ref="h4"/>
-      <xs:element ref="h5"/>
-      <xs:element ref="h6"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="List.class">
-    <xs:choice>
-      <xs:element ref="ul"/>
-      <xs:element ref="ol"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="BlkStruct.class">
-    <xs:choice>
-      <xs:element ref="p"/>
-      <xs:element ref="div"/>
-      <!-- <xs:element ref="link"/> -->      
-    </xs:choice>
-  </xs:group>
-  <xs:group name="BlkSpecial.class">
-    <xs:choice>
-      <xs:element ref="table"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.extra">
-    <xs:choice>
-    <!-- <xs:choice minOccurs="0" maxOccurs="unbounded"> -->
-        <xs:element ref="br"/>
-        <!-- <xs:element ref="b"/> -->
-        <xs:element ref="span"/>
-        <xs:element ref="font"/>        
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.class">
-    <xs:choice>
-      <xs:group ref="BlkStruct.class"/>
-      <xs:group ref="BlkSpecial.class"/>
-      <xs:group ref="Block.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.mix">
-    <xs:choice>
-      <xs:group ref="Heading.class"/>
-      <xs:group ref="List.class"/>
-      <xs:group ref="Block.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Flow.mix">
-    <xs:choice>
-      <xs:group ref="Heading.class"/>
-      <xs:group ref="List.class"/>
-      <xs:group ref="Block.class"/>
-      <xs:group ref="Inline.class"/>
-    </xs:choice>
-  </xs:group>
-
-  <xs:attributeGroup name="id">
-    <xs:attribute name="id" type="xs:ID"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="class">
-    <xs:attribute name="class" type="xs:NMTOKENS"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="title">
-    <xs:attribute name="title" type="xs:string"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Core.extra.attrib">
-    <!-- add your attribute here -->
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Core.attrib">
-    <xs:attributeGroup ref="id"/>
-    <xs:attributeGroup ref="class"/>
-    <xs:attributeGroup ref="title"/>
-    <xs:attributeGroup ref="Core.extra.attrib"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Common.extra">
-    <!-- add your attributes here -->
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Common.attrib">
-    <xs:attributeGroup ref="Core.attrib"/>
-    <xs:attributeGroup ref="Common.extra"/>
-  </xs:attributeGroup>
-
-  <xs:simpleType name="Length">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="LinkTypes">
-    <xs:list itemType="xs:NMTOKEN"/>
-  </xs:simpleType>
-  <xs:simpleType name="MediaDesc">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="MultiLength">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Number">
-    <xs:restriction base="xs:nonNegativeInteger"/>
-  </xs:simpleType>
-  <xs:simpleType name="Pixels">
-    <xs:restriction base="xs:nonNegativeInteger"/>
-  </xs:simpleType>
-  <xs:simpleType name="Script">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Color">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Text">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Character">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Charset">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Charsets">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="ContentType">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="ContentTypes">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Datetime">
-    <xs:restriction base="xs:normalizedString"/>
-  </xs:simpleType>
-  <xs:simpleType name="LanguageCode">
-    <xs:restriction base="xs:NMTOKEN"/>
-  </xs:simpleType>
-  <xs:simpleType name="TargetType">
-    <xs:restriction base="xs:NMTOKEN">
-      <xs:enumeration value="_blank"/>
-      <xs:enumeration value="_top"/>
-      <xs:enumeration value="_self"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="URI">
-    <xs:restriction base="xs:anyURI"/>
-  </xs:simpleType>
-  <xs:simpleType name="URIs">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="MultiLengths">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  
- </xs:schema>
diff --git a/trunk/src/modules/xopus/resources/schemas/xhtml.xsd b/trunk/src/modules/xopus/resources/schemas/xhtml.xsd
deleted file mode 100644
index 04b7073..0000000
--- a/trunk/src/modules/xopus/resources/schemas/xhtml.xsd
+++ /dev/null
@@ -1,608 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  <xs:element name="html">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="head"/>
-        <xs:element ref="body"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="head">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="head.content"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="body">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="h1"/>
-          <xs:element ref="h2"/>
-          <xs:element ref="p"/>
-          <xs:element ref="table"/>
-          <xs:element ref="h3"/>
-          <xs:element ref="ul"/>
-          <xs:element ref="ol"/>
-          <xs:element ref="div"/>
-          <xs:element ref="a"/>
-        </xs:choice>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-
-  
-<xs:group name="Table.class">
-    <xs:choice>
-      <xs:element ref="table"/>
-    </xs:choice>
-  </xs:group>
-
-  <xs:attributeGroup name="CellVAlign.attrib">
-    <xs:attribute name="valign">
-      <xs:simpleType>
-        <xs:restriction base="xs:NMTOKEN">
-          <xs:enumeration value="top"/>
-          <xs:enumeration value="middle"/>
-          <xs:enumeration value="bottom"/>
-          <xs:enumeration value="baseline"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="CellHAlign.attrib">
-    <xs:attribute name="align">
-      <xs:simpleType>
-        <xs:restriction base="xs:NMTOKEN">
-          <xs:enumeration value="left"/>
-          <xs:enumeration value="center"/>
-          <xs:enumeration value="right"/>
-          <xs:enumeration value="justify"/>
-          <xs:enumeration value="char"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="td.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
-    <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-    <xs:attribute name="width" type="Pixels" use="optional" />
-    <xs:attribute name="height" type="Pixels" use="optional" />
-  </xs:attributeGroup>
-  <xs:complexType name="td.type" mixed="true">
-    <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="td.attlist"/>
-  </xs:complexType>
-  <xs:element name="td" type="td.type"/>
-  <xs:attributeGroup name="th.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="rowspan" type="Number" use="optional" default="1"/>
-    <xs:attribute name="colspan" type="Number" use="optional" default="1"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-    <xs:attribute name="width" type="Pixels" use="optional" />
-    <xs:attribute name="height" type="Pixels" use="optional" />    
-  </xs:attributeGroup>
-  <xs:complexType name="th.type" mixed="true">
-    <xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="th.attlist"/>
-  </xs:complexType>
-  <xs:element name="th" type="th.type"/>
-
-  <xs:attributeGroup name="tr.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="tr.content">
-    <xs:choice>
-      <xs:element ref="td"/>
-      <xs:element ref="th"/>
-    </xs:choice>
-  </xs:group>
-  <xs:complexType name="tr.type">
-    <xs:group ref="tr.content" minOccurs="1" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="tr.attlist"/>
-  </xs:complexType>
-  <xs:element name="tr" type="tr.type"/>
-  <xs:group name="tbody.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="tbody.type">
-    <xs:group ref="tbody.content"/>
-  </xs:complexType>
-  <xs:element name="tbody" type="tbody.type"/>
-  <xs:attributeGroup name="tfoot.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="tfoot.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="tfoot.type">
-    <xs:group ref="tfoot.content"/>
-    <xs:attributeGroup ref="tfoot.attlist"/>
-  </xs:complexType>
-  <xs:element name="tfoot" type="tfoot.type"/>
-  <xs:attributeGroup name="thead.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attributeGroup ref="CellHAlign.attrib"/>
-    <xs:attributeGroup ref="CellVAlign.attrib"/>
-  </xs:attributeGroup>
-  <xs:group name="thead.content">
-    <xs:sequence>
-      <xs:element ref="tr" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="thead.type">
-    <xs:group ref="thead.content"/>
-    <xs:attributeGroup ref="thead.attlist"/>
-  </xs:complexType>
-  <xs:element name="thead" type="thead.type"/>
-  <xs:attributeGroup name="table.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="width" type="Length"/>
-    <xs:attribute name="border" type="Pixels" use="optional" />
-    <xs:attribute name="cellspacing" type="Pixels" use="optional" />
-    <xs:attribute name="cellpadding" type="Pixels" use="optional" />
-  </xs:attributeGroup>
-  <xs:group name="table.content">
-    <xs:sequence>
-      <xs:choice>
-        <xs:sequence>
-          <xs:element ref="thead" minOccurs="0"/>
-          <xs:element ref="tfoot" minOccurs="0"/>
-          <xs:element ref="tbody" maxOccurs="unbounded"/>
-        </xs:sequence>
-      </xs:choice>
-    </xs:sequence>
-  </xs:group>
-  <xs:complexType name="table.type" mixed="true">
-    <xs:group ref="table.content"/>
-    <xs:attributeGroup ref="table.attlist"/>
-  </xs:complexType>
-  <xs:element name="table" type="table.type"/>
-
-  <xs:attributeGroup name="InlPres.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="InlPres.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/>
-    <xs:attributeGroup ref="InlPres.attlist"/>
-  </xs:complexType>
-  <xs:element name="sub" type="InlPres.type"/>
-  <xs:element name="sup" type="InlPres.type"/>
-
-  <xs:attributeGroup name="title.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="title.type" mixed="true">
-    <xs:attributeGroup ref="title.attlist"/>
-  </xs:complexType>
-  <xs:element name="title" type="title.type"/>
-
-  <xs:group name="head.content">
-    <xs:sequence>
-      <xs:element ref="title"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:attributeGroup name="head.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="head.type">
-    <xs:group ref="head.content"/>
-    <xs:attributeGroup ref="head.attlist"/>
-  </xs:complexType>
-  <xs:element name="head" type="head.type"/>
-
-  <!-- <xs:attributeGroup name="body.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="body.type" mixed="true">
-    <xs:group maxOccurs="unbounded" ref="Block.mix"/>
-    <xs:attributeGroup ref="body.attlist"/>
-  </xs:complexType>
-  <xs:element name="body" type="body.type"/> -->
-
-  <!-- <xs:attributeGroup name="html.attlist">
-  </xs:attributeGroup>
-  <xs:complexType name="html.type">
-    <xs:sequence>
-      <xs:element ref="lenya:meta" minOccurs="0"/>
-      <xs:element ref="head"/>
-      <xs:element ref="body"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="html.attlist"/>
-  </xs:complexType>
-  <xs:element name="html" type="html.type"/>
- -->
- 
-  <xs:element name="object">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">Object</xopus:name>
-          <xopus:name xml:lang="de">Objekt</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-    <xs:complexType mixed="true">
-      <xs:attribute name="title" type="xs:string"/>
-      <xs:attribute name="href" type="URI" />
-      <xs:attribute name="type" type="xs:string"/>
-      <xs:attribute name="data" type="xs:string" use="required"/>
-    </xs:complexType>
-  </xs:element>  
- 
- 
-<!--   <xs:attributeGroup name="object.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-      <xs:attribute name="title" type="xs:string"/>
-      <xs:attribute name="href" type="URI" use="required"/>
-      <xs:attribute name="type" type="xs:string"/>
-      <xs:attribute name="data" type="xs:string"/>
-  </xs:attributeGroup>
-  <xs:complexType name="object.type">
-    <xs:attributeGroup ref="object.attlist"/>
-  </xs:complexType>
-  <xs:element name="object" type="object.type">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">hallo_obj_en</xopus:name>
-          <xopus:name xml:lang="de">hallo_obj_de</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-  </xs:element>
- -->  
-  <xs:element name="a">
-    <xs:complexType mixed="true">
-      <xs:group minOccurs="0" maxOccurs="unbounded" ref="InlNoAnchor.mix"/>  
-      <!-- <xs:sequence>
-        <xs:element minOccurs="0" ref="img"/>
-      </xs:sequence> -->
-      <xs:attribute name="name" type="xs:string"/>
-      <xs:attribute name="popup" type="xs:boolean"/>
-      <xs:attribute name="href" type="URI" use="required"/>
-      <!-- <xs:attribute name="target" type="TargetType"/> -->
-    </xs:complexType>
-  </xs:element>
-
-  
-  <xs:complexType name="li.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Flow.mix"/>
-  </xs:complexType>
-  <xs:element name="li" type="li.type"/>
-  <xs:attributeGroup name="ol.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="ol.type">
-    <xs:sequence>
-      <xs:element ref="li" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="ol.attlist"/>
-  </xs:complexType>
-  <xs:element name="ol" type="ol.type"/>
-
-  <xs:attributeGroup name="ul.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="ul.type">
-    <xs:sequence>
-      <xs:element ref="li" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attributeGroup ref="ul.attlist"/>
-  </xs:complexType>
-  <xs:element name="ul" type="ul.type"/>
-
-  <xs:attributeGroup name="link.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="href" type="URI"/>
-    <xs:attribute name="target" type="TargetType"/>
-    <xs:attribute name="name" type="xs:string"/>    
-  </xs:attributeGroup>
-  <xs:complexType name="link.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="InlNoAnchor.mix"/>
-    <xs:attributeGroup ref="link.attlist"/>
-  </xs:complexType>
-  <xs:element name="link" type="link.type"/>
-  
-  <xs:complexType name="br.type"/>
-  <xs:element name="br" type="br.type"/>  
-
-  <xs:complexType name="span.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-  </xs:complexType>
-  <xs:element name="span" type="span.type"/>
-  <xs:element name="b" type="span.type"/>  
-  
-  <xs:complexType name="font.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-    <xs:attribute name="size" type="xs:integer"/>
-    <xs:attribute name="face" type="xs:string"/>
-  </xs:complexType>
-  <xs:element name="font" type="font.type"/>  
-
-  <xs:attributeGroup name="img.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-    <xs:attribute name="src" type="URI" use="required"/>
-    <xs:attribute name="width" type="Pixels"/>
-    <xs:attribute name="height" type="Pixels"/>
-  </xs:attributeGroup>
-  <xs:complexType name="img.type">
-    <xs:attributeGroup ref="img.attlist"/>
-  </xs:complexType>
-  <xs:element name="img" type="img.type">
-    <xs:annotation>
-      <xs:appinfo xmlns:xopus="http://www.xopus.com/xmlns/xsd">
-        <xopus:documentation>
-          <xopus:name xml:lang="en">Image</xopus:name>
-          <xopus:name xml:lang="de">Bild</xopus:name>
-        </xopus:documentation>
-      </xs:appinfo>
-    </xs:annotation>
-  </xs:element>
-
-  <xs:attributeGroup name="InlPhras.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="InlPhras.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/>
-    <xs:attributeGroup ref="InlPhras.attlist"/>
-  </xs:complexType>
-  <xs:element name="emphasis" type="InlPhras.type"/>
-  <xs:element name="strong" type="InlPhras.type"/>
-  <xs:element name="u" type="InlPhras.type"/>
-
-  <xs:attributeGroup name="div.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="div.type" mixed="true">
-    <xs:group maxOccurs="unbounded" ref="Block.mix"/>
-    <xs:attributeGroup ref="div.attlist"/>
-  </xs:complexType>
-  <xs:element name="div" type="div.type"/>
-
-   <xs:attributeGroup name="p.attlist">
-    <xs:attributeGroup ref="Common.attrib"/>
-  </xs:attributeGroup>
-  <xs:complexType name="p.type" mixed="true">
-    <xs:group minOccurs="0" maxOccurs="unbounded" ref="Inline.mix"/> 
-    <xs:attributeGroup ref="p.attlist"/>
-  </xs:complexType>
-  <xs:element name="p" type="p.type"/>
- 
-  <xs:complexType name="heading.type" mixed="true">
-    <xs:group ref="Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
-    <xs:attributeGroup ref="class"/>
-  </xs:complexType>
-  <xs:element name="h1" type="heading.type"/>
-  <xs:element name="h2" type="heading.type"/>
-  <xs:element name="h3" type="heading.type"/>
-  <xs:element name="h4" type="heading.type"/>
-  <xs:element name="h5" type="heading.type"/>
-  <xs:element name="h6" type="heading.type"/>
-
-  <xs:group name="InlPhras.class">
-    <xs:choice>
-      <xs:element ref="emphasis"/>
-      <xs:element ref="strong"/>
-      <!-- <xs:element ref="u"/> -->
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlPres.class">
-    <xs:choice>
-      <xs:element ref="sub"/>
-      <xs:element ref="sup"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Anchor.class">
-    <xs:choice>
-      <xs:element ref="a"/>
-      <!-- <xs:element ref="link"/> -->
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlSpecial.class">
-    <xs:choice>
-      <xs:element ref="img"/>
-      <xs:element ref="object"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.extra">
-    <xs:choice>
-        <xs:element ref="br"/>
-        <!-- <xs:element ref="b"/> -->
-        <xs:element ref="span"/>
-        <xs:element ref="font"/>        
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.class">
-    <xs:choice>
-      <xs:group ref="InlPhras.class"/>
-      <xs:group ref="InlPres.class"/>
-      <xs:group ref="Anchor.class"/>
-      <xs:group ref="InlSpecial.class"/>
-      <xs:group ref="Inline.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlNoAnchor.class">
-    <xs:choice>
-      <xs:group ref="InlPhras.class"/>
-      <xs:group ref="InlPres.class"/>
-      <xs:group ref="InlSpecial.class"/>
-      <xs:group ref="Inline.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="InlNoAnchor.mix">
-    <xs:choice>
-      <xs:group ref="InlNoAnchor.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Inline.mix">
-    <xs:choice>
-      <xs:group ref="Inline.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Heading.class">
-    <xs:choice>
-      <xs:element ref="h1"/>
-      <xs:element ref="h2"/>
-      <xs:element ref="h3"/>
-      <xs:element ref="h4"/>
-      <xs:element ref="h5"/>
-      <xs:element ref="h6"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="List.class">
-    <xs:choice>
-      <xs:element ref="ul"/>
-      <xs:element ref="ol"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="BlkStruct.class">
-    <xs:choice>
-      <xs:element ref="p"/>
-      <xs:element ref="div"/>
-      <!-- <xs:element ref="link"/> -->      
-    </xs:choice>
-  </xs:group>
-  <xs:group name="BlkSpecial.class">
-    <xs:choice>
-      <xs:element ref="table"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.extra">
-    <xs:choice>
-    <!-- <xs:choice minOccurs="0" maxOccurs="unbounded"> -->
-        <xs:element ref="br"/>
-        <!-- <xs:element ref="b"/> -->
-        <xs:element ref="span"/>
-        <xs:element ref="font"/>        
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.class">
-    <xs:choice>
-      <xs:group ref="BlkStruct.class"/>
-      <xs:group ref="BlkSpecial.class"/>
-      <xs:group ref="Block.extra"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Block.mix">
-    <xs:choice>
-      <xs:group ref="Heading.class"/>
-      <xs:group ref="List.class"/>
-      <xs:group ref="Block.class"/>
-    </xs:choice>
-  </xs:group>
-  <xs:group name="Flow.mix">
-    <xs:choice>
-      <xs:group ref="Heading.class"/>
-      <xs:group ref="List.class"/>
-      <xs:group ref="Block.class"/>
-      <xs:group ref="Inline.class"/>
-    </xs:choice>
-  </xs:group>
-
-  <xs:attributeGroup name="id">
-    <xs:attribute name="id" type="xs:ID"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="class">
-    <xs:attribute name="class" type="xs:NMTOKENS"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="title">
-    <xs:attribute name="title" type="xs:string"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Core.extra.attrib">
-    <!-- add your attribute here -->
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Core.attrib">
-    <xs:attributeGroup ref="id"/>
-    <xs:attributeGroup ref="class"/>
-    <xs:attributeGroup ref="title"/>
-    <xs:attributeGroup ref="Core.extra.attrib"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Common.extra">
-    <!-- add your attributes here -->
-  </xs:attributeGroup>
-  <xs:attributeGroup name="Common.attrib">
-    <xs:attributeGroup ref="Core.attrib"/>
-    <xs:attributeGroup ref="Common.extra"/>
-  </xs:attributeGroup>
-
-  <xs:simpleType name="Length">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="LinkTypes">
-    <xs:list itemType="xs:NMTOKEN"/>
-  </xs:simpleType>
-  <xs:simpleType name="MediaDesc">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="MultiLength">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Number">
-    <xs:restriction base="xs:nonNegativeInteger"/>
-  </xs:simpleType>
-  <xs:simpleType name="Pixels">
-    <xs:restriction base="xs:nonNegativeInteger"/>
-  </xs:simpleType>
-  <xs:simpleType name="Script">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Color">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Text">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Character">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Charset">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Charsets">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="ContentType">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="ContentTypes">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="Datetime">
-    <xs:restriction base="xs:normalizedString"/>
-  </xs:simpleType>
-  <xs:simpleType name="LanguageCode">
-    <xs:restriction base="xs:NMTOKEN"/>
-  </xs:simpleType>
-  <xs:simpleType name="TargetType">
-    <xs:restriction base="xs:NMTOKEN">
-      <xs:enumeration value="_blank"/>
-      <xs:enumeration value="_top"/>
-      <xs:enumeration value="_self"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="URI">
-    <xs:restriction base="xs:anyURI"/>
-  </xs:simpleType>
-  <xs:simpleType name="URIs">
-    <xs:list itemType="xs:string"/>
-  </xs:simpleType>
-  <xs:simpleType name="MultiLengths">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-  
- </xs:schema>
diff --git a/trunk/src/modules/xopus/sitemap.xmap b/trunk/src/modules/xopus/sitemap.xmap
deleted file mode 100644
index c501d8f..0000000
--- a/trunk/src/modules/xopus/sitemap.xmap
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  
-  <!-- =========================== Views ================================= -->
-
-  <map:views>
-    <map:view from-label="aggregation" name="aggregation">
-      <map:serialize type="xml"/>
-    </map:view>
-    <map:view from-label="xsp" name="xsp">
-      <map:serialize type="xml"/>
-    </map:view>
-  </map:views>
-  
-  <!-- =========================== Resources ================================= -->
-
-  <map:resources>
-    <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-      <map:transform type="proxy"/>
-    </map:resource>
-  </map:resources>
-  
-  <!-- =========================== Pipelines ================================= -->
-  
-  <map:pipelines>
-  
-    <map:pipeline>
-        
-        <!-- ************************************************************** -->
-        <!-- ** Xopus                                                    ** -->
-        <!-- **                                                          ** -->
-        <!-- ** NOTE: page-envelope:document-path depends on the         ** -->
-        <!-- **       publication specific DocumentIdToPathMapper which  ** -->
-        <!-- **       is configured within config/publication.xml        ** -->
-        <!-- ************************************************************** -->
-        
-          <map:match pattern="open" type="step">
-            <map:match pattern="*/authoring/**.html">
-              <!-- Check for Xopus (set xopus:path and xopus:context in xopus.xconf) -->
-              <map:act type="resource-exists" src="{xopus:path}/{xopus:context}/xopus/xopus.js">
-              
-                <map:act type="reserved-checkout">
-                  <map:generate type="serverpages" src="fallback://lenya/content/rc/{exception}.xsp">
-                    <map:parameter name="user" value="{user}"/>
-                    <map:parameter name="filename" value="{filename}"/>
-                    <map:parameter name="date" value="{date}"/>
-                    <map:parameter name="message" value="{message}"/>
-                  </map:generate>
-                  <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-                  <map:call resource="style-cms-page"/>
-                  <map:serialize />
-                </map:act>
-                
-                <map:generate src="context://lenya/content/util/empty.xml"/>
-                <map:transform src="fallback://lenya/modules/xopus/xslt/authoring/edit/xopus-xhtml.xsl">
-                  <map:parameter name="contextPrefix" value="{request:contextPath}"/>
-                  <map:parameter name="publicationId" value="{page-envelope:publication-id}"/>
-                  <map:parameter name="completeArea" value="authoring"/>
-                  <map:parameter name="documentUrl" value="{page-envelope:document-url}"/>
-                  <map:parameter name="documentId" value="{page-envelope:document-uuid}"/>
-                  <map:parameter name="xopusContext" value="{xopus:context}"/>
-                </map:transform>
-                <!-- NOTE: IE or Xopus doesn't appreciate the DTD which is being inserted by Cocoon -->
-                <map:serialize type="html-no-dtd"/>
-              </map:act>
-              <map:generate src="resources/misc/download.xhtml"/>
-              <map:call resource="style-cms-page"/>
-              <map:serialize />
-            </map:match>
-          </map:match>
-          
-          
-          <map:match pattern="xml" type="step">
-            <map:match pattern="*/*/**.html">
-              <map:select type="request-method">
-                <map:when test="POST"> <!-- Save -->
-
-                  <!-- test if the document is checked out -->
-        	        <map:act type="reserved-checkout-test">
-            	      <map:generate type="serverpages" src="fallback://lenya/content/rc/{exception}.xsp">
-                	    <map:parameter name="user" value="{user}"/>
-                    	<map:parameter name="filename" value="{filename}"/>
-        	            <map:parameter name="date" value="{date}"/>
-                        <map:parameter name="message" value="{message}"/>
-            	      </map:generate>
-                	  <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-        	          <map:call resource="style-cms-page"/>
-        	          <map:serialize />
-                	</map:act>
-        
-                  <map:generate type="stream"/>
-                  <map:transform src="fallback://lenya/xslt/authoring/edit/addSourceTags.xsl">
-                    <map:parameter name="source" value="context://lenya/pubs/{1}/content/{2}/{page-envelope:document-path}"/>
-                  </map:transform>
-                  <map:transform type="write-source">
-                    <map:parameter name="serializer" value="xml"/>
-                  </map:transform>
-                  <map:serialize type="xml"/>
-                </map:when>
-                <map:otherwise> <!-- GET: Open -->
-                  <map:act type="set-header">
-                    <!-- prevent caching in the browser -->
-                    <map:parameter name="Cache-Control" value="pre-check=0" />
-                    <map:parameter name="Expires" value="-1" />
-                  </map:act>
-                  <map:generate src="context://lenya/pubs/{1}/content/{2}/{page-envelope:document-path}"/>
-                  <map:serialize type="xml"/>
-                </map:otherwise>
-              </map:select>
-            </map:match>
-          </map:match>
-          
-          
-          <map:match pattern="xsd" type="step">
-            <map:match pattern="*/authoring/**.html">
-              <map:select type="resource-exists">
-              <map:parameter name="prefix" value="fallback://"/>
-                <map:when test="lenya/modules/xopus/resources/schemas/{page-envelope:document-type}.xsd">
-                  <map:generate src="fallback://lenya/modules/xopus/resources/schemas/{page-envelope:document-type}.xsd"/>
-                  <map:serialize type="xml" />
-                </map:when>
-                <map:otherwise>
-                  <map:generate src="fallback://lenya/modules/xopus/resources/schemas/xhtml.xsd"/>
-                  <map:serialize type="xml" />
-                </map:otherwise>
-              </map:select>
-            </map:match>
-          </map:match>
-          
-          <map:match pattern="xslt" type="step">
-            <map:match pattern="*/authoring/**.html">
-              <map:select type="resource-exists">
-              <map:parameter name="prefix" value="fallback://"/>
-                <map:when test="lenya/modules/xopus/xslt/{page-envelope:document-type}.xsl">
-                  <map:generate src="fallback://lenya/modules/xopus/xslt/{page-envelope:document-type}.xsl"/>
-                  <map:serialize type="xml" />
-                </map:when>
-                <map:otherwise>
-                  <map:generate src="fallback://lenya/modules/xopus/xslt/xhtml.xsl"/>
-                  <map:serialize type="xml" />
-                </map:otherwise>
-              </map:select>
-            </map:match>
-            
-            <!-- This is needed to access secondary xsl files from within xopus-xhtml.xsl -->
-            <map:match pattern="*/authoring/**.xsl">
-              <map:select type="resource-exists">
-                <map:when test="xslt/{2}.xsl">
-                  <map:read src="xslt/{2}.xsl" mime-type="application/xml"/>
-                </map:when>
-                <map:when test="fallback://lenya/xslt/{2}.xsl">
-                  <map:read src="fallback://lenya/xslt/{2}.xsl" mime-type="application/xml"/>
-                </map:when>
-                <map:otherwise>
-                  <map:generate src="context://lenya/content/util/empty.xml"/>
-                  <map:serialize status-code="500" />
-                </map:otherwise>
-              </map:select>
-            </map:match>
-          </map:match>
-
-        <!-- ************************************************************** -->
-        <!-- ********  /Xopus Editor ************************************** -->
-        <!-- ************************************************************** -->
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/modules/xopus/xslt/authoring/edit/xopus-xhtml.xsl b/trunk/src/modules/xopus/xslt/authoring/edit/xopus-xhtml.xsl
deleted file mode 100644
index e2c1a05..0000000
--- a/trunk/src/modules/xopus/xslt/authoring/edit/xopus-xhtml.xsl
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xopus-xhtml.xsl,v 1.7 2004/07/20 13:51:13 edith Exp $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-
-<xsl:param name="documentId"/>
-<xsl:param name="documentUrl"/>
-<xsl:param name="publicationId"/>
-<xsl:param name="completeArea"/>
-<xsl:param name="contextPrefix"/>
-<xsl:param name="xopusContext"/>
-
-
-<xsl:variable name="lenyaContext" select="concat($contextPrefix, '/', $publicationId, '/', $completeArea)"/>
-<xsl:variable name="lenyaDocumentUrl" select="concat($lenyaContext, $documentUrl)"/>
-
-<xsl:template match="/*">
-<html>
-  <head>
-    <title>Load Xopus ...</title>
-    <script language="JavaScript" src="/{$xopusContext}/xopus/xopus.js"/>
-  </head>
-  <body bgcolor="#FFFFFF">
-    <div xopus="true" autostart="true">
-      ...Xopus hasn't started yet...
-      <xml>
-        <pipeline
-            xml="{$lenyaDocumentUrl}?lenya.module=xopus&amp;lenya.step=xml"
-            xsd="{$lenyaDocumentUrl}?lenya.module=xopus&amp;lenya.step=xsd">
-            
-          <view id="defaultView" default="true">
-            <transform xsl="/{$xopusContext}/xopusPlugins/preparexinclude.xsl"/>
-            <resolveXIncludes/>
-            <transform xsl="{$lenyaContext}/util/strip_namespaces.xsl?lenya.module=xopus&amp;lenya.step=xslt"/>
-            <transform xsl="{$lenyaDocumentUrl}?lenya.module=xopus&amp;lenya.step=xslt">
-              <param name="contextprefix"><xsl:value-of select="$contextPrefix"/></param>
-              <param name="publicationid"><xsl:value-of select="$publicationId"/></param>
-              <param name="completearea"><xsl:value-of select="$completeArea"/></param>
-	          <param name="documentid"><xsl:value-of select="$documentId"/></param>
-            </transform>
-          </view>
-          
-          <!--
-          <view id="step1">
-            <transform xsl="/{$xopusContext}/xopusPlugins/preparexinclude.xsl"/>
-            <transform xsl="/{$xopusContext}/xopus/media/treeview/tree.xsl"></transform>
-          </view>
-          <view id="step2">
-            <transform xsl="/{$xopusContext}/xopusPlugins/preparexinclude.xsl"/>
-            <resolveXIncludes/>
-            <transform xsl="/{$xopusContext}/xopus/media/treeview/tree.xsl"></transform>
-          </view>
-          -->
-          
-          <view id="treeView">
-            <transform xsl="/{$xopusContext}/xopus/media/treeview/tree.xsl"></transform>
-          </view>
-        </pipeline>
-      </xml>
-    </div>
-  </body>
-</html>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/xopus/xslt/homepage.xsl b/trunk/src/modules/xopus/xslt/homepage.xsl
deleted file mode 100644
index d13bbb7..0000000
--- a/trunk/src/modules/xopus/xslt/homepage.xsl
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/modules/xopus/xslt/xhtml.xsl b/trunk/src/modules/xopus/xslt/xhtml.xsl
deleted file mode 100644
index d13bbb7..0000000
--- a/trunk/src/modules/xopus/xslt/xhtml.xsl
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/config/access-control/access-control.xml b/trunk/src/pubs/default/config/access-control/access-control.xml
deleted file mode 100644
index 314c930..0000000
--- a/trunk/src/pubs/default/config/access-control/access-control.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<access-controller type="bypassable">
-  
-  <accreditable-manager type="file">
-    <parameter name="directory" value="context:///lenya/pubs/default/config/access-control/passwd"/>
-    
-    <user-manager>
-      <user-type class="org.apache.lenya.ac.file.FileUser" create-use-case="admin.addUser">Local User</user-type>
-      <!-- uncomment the following line if you want LDAP support -->
-      <!-- <user-type class="org.apache.lenya.ac.ldap.LDAPUser" create-use-case="admin.addUser">LDAP User</user-type> -->
-    </user-manager>
-  </accreditable-manager>
-  
-  <policy-manager type="document">
-    <policy-manager type="file">
-      <parameter name="directory" value="context:///lenya/pubs/default/config/access-control/policies"/>
-    </policy-manager>
-  </policy-manager>
-  
-  <authorizer type="usecase">
-    <parameter name="configuration" value="aggregate-fallback://config/access-control/usecase-policies.xml"/>
-  </authorizer>
-  
-</access-controller>
diff --git a/trunk/src/pubs/default/config/access-control/passwd/admin.gml b/trunk/src/pubs/default/config/access-control/passwd/admin.gml
deleted file mode 100644
index 661c803..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/admin.gml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<group class="org.apache.lenya.ac.file.FileGroup" id="admin"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/admin.rml b/trunk/src/pubs/default/config/access-control/passwd/admin.rml
deleted file mode 100644
index 374ed0f..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/admin.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<role class="org.apache.lenya.ac.file.FileRole" id="admin" assignable="false"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/alice.iml b/trunk/src/pubs/default/config/access-control/passwd/alice.iml
deleted file mode 100644
index b3c2741..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/alice.iml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<identity id="alice" class="org.apache.lenya.ac.file.FileUser">
-  <name>Alice</name>
-  <description></description>
-  <email>alice@lenya.org</email>
-  <password type="md5">8e07dafd13495561db9063ebe4db4b27</password>
-  <groups>
-    <group>editor</group>
-    <group>reviewer</group>
-  </groups>
-</identity>
diff --git a/trunk/src/pubs/default/config/access-control/passwd/cifs.properties.sample b/trunk/src/pubs/default/config/access-control/passwd/cifs.properties.sample
deleted file mode 100644
index e37ad78..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/cifs.properties.sample
+++ /dev/null
@@ -1,5 +0,0 @@
-# the name of the domain controller (or samba sever) to authenticate against

-domain-controller=my-domain-controller

-

-# domain/workgroup name to use

-domain=WORKGROUP
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/edit.rml b/trunk/src/pubs/default/config/access-control/passwd/edit.rml
deleted file mode 100644
index 3b2a629..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/edit.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-

-<role class="org.apache.lenya.ac.file.FileRole" id="edit"/>

diff --git a/trunk/src/pubs/default/config/access-control/passwd/editor.gml b/trunk/src/pubs/default/config/access-control/passwd/editor.gml
deleted file mode 100644
index ed2600b..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/editor.gml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<group class="org.apache.lenya.ac.file.FileGroup" id="editor"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/ldap.properties.sample b/trunk/src/pubs/default/config/access-control/passwd/ldap.properties.sample
deleted file mode 100644
index 1ce0cfe..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/ldap.properties.sample
+++ /dev/null
@@ -1,56 +0,0 @@
-#############################################################################
-# File: ldap.properties.sample
-# $Id$
-#############################################################################
-
-#############################################################################
-# General settings 
-#    set handl-referrals to "follow" is your ldap server uses referrals
-#############################################################################
-provider-url=ldaps://ldap.example.com:389/dc=example,dc=com
-base-dn=dc=example,dc=com
-handle-referrals=
-
-#############################################################################
-# User parameters for authentication:
-# usr-branch: 
-#      if users are to be taken from a specific branch, set this.
-#      If you set this to empty, users will be searched in the whole 
-#      subtree, i.e.:
-#         usr-branch=
-# usr-authentication:
-#      authentication method when the user authenticates
-# domain-name:
-#      AFAIK, this is only relevant for MS Active Directory
-#############################################################################
-#usr-branch=ou=People
-usr-branch=
-usr-attr=uid
-usr-name-attr=sn
-usr-authentication=simple
-domain-name=
-
-############################################################################
-# Security settings
-# -----------------
-# security-authentication:
-#       you can set this to none if there is no manager authentication, i.e.:
-#         security-authentication=none
-# mgr-dn and mgr-pw:
-#       Manager/user which is allowed to retrieve a list of "all" users
-#       (fullname) from LDAP server. Leave it empty for anonymous bindings.
-# key-store:
-#       - If you do not use ssl, you can comment out this property.
-#       - keystore is taken relatively to the publication config/ac/passwd
-#       directory. You should put the Directory-Server certificate in this 
-#       file, if using ssl. 
-#       The keystore file can be generated as follows:
-#          keytool -import -keystore .keystore -file <ca_cert_file> 
-#                    -alias <yourdomain.com>
-#       
-############################################################################
-security-authentication=simple
-mgr-dn=
-mgr-pw=
-key-store=.keystore
-security-protocol=ssl
diff --git a/trunk/src/pubs/default/config/access-control/passwd/lenya.iml b/trunk/src/pubs/default/config/access-control/passwd/lenya.iml
deleted file mode 100644
index e806b2d..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/lenya.iml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<identity id="lenya" class="org.apache.lenya.ac.file.FileUser">
-  <name>Levi Vanya</name>
-  <description></description>
-  <email>levi.vanya@wyona.org</email>
-  <password type="md5">8e07dafd13495561db9063ebe4db4b27</password>
-  <groups>
-    <group>editor</group>
-    <group>admin</group>
-    <group>sitemanager</group>
-  </groups>
-</identity>
diff --git a/trunk/src/pubs/default/config/access-control/passwd/localhost.ipml b/trunk/src/pubs/default/config/access-control/passwd/localhost.ipml
deleted file mode 100644
index f84741a..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/localhost.ipml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<ip-range class="org.apache.lenya.ac.file.FileIPRange" id="localhost">
-  <name>Localhost</name>
-  <network-address>127.0.0.1</network-address>
-  <subnet-mask>255.255.255.0</subnet-mask>
-</ip-range>
diff --git a/trunk/src/pubs/default/config/access-control/passwd/review.rml b/trunk/src/pubs/default/config/access-control/passwd/review.rml
deleted file mode 100644
index f52e95b..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/review.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-

-<role class="org.apache.lenya.ac.file.FileRole" id="review"/>

diff --git a/trunk/src/pubs/default/config/access-control/passwd/reviewer.gml b/trunk/src/pubs/default/config/access-control/passwd/reviewer.gml
deleted file mode 100644
index b304ffb..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/reviewer.gml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<group class="org.apache.lenya.ac.file.FileGroup" id="reviewer"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/session.rml b/trunk/src/pubs/default/config/access-control/passwd/session.rml
deleted file mode 100644
index ca82b02..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/session.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-

-<role class="org.apache.lenya.ac.file.FileRole" id="session"/>

diff --git a/trunk/src/pubs/default/config/access-control/passwd/sitemanager.gml b/trunk/src/pubs/default/config/access-control/passwd/sitemanager.gml
deleted file mode 100644
index 2c06ad8..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/sitemanager.gml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: editor.gml 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<group class="org.apache.lenya.ac.file.FileGroup" id="sitemanager"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/sitemanager.rml b/trunk/src/pubs/default/config/access-control/passwd/sitemanager.rml
deleted file mode 100644
index 857386f..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/sitemanager.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: admin.rml 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<role class="org.apache.lenya.ac.file.FileRole" id="sitemanager"/>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/config/access-control/passwd/visit.rml b/trunk/src/pubs/default/config/access-control/passwd/visit.rml
deleted file mode 100644
index cae4ff9..0000000
--- a/trunk/src/pubs/default/config/access-control/passwd/visit.rml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id$ -->

-

-<role class="org.apache.lenya.ac.file.FileRole" id="visit"/>

diff --git a/trunk/src/pubs/default/config/access-control/policies/archive/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/archive/subtree-policy.acml
deleted file mode 100644
index 5f90849..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/archive/subtree-policy.acml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: subtree-policy.acml 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit" method="grant" />
-  </group>
-
-  <group id="reviewer">
-    <role id="review" method="grant" />
-  </group>
-
-  <group id="admin">
-    <role id="admin"  method="grant"/>
-  </group>
- 
-  <group id="sitemanager">
-    <role id="sitemanager" method="grant" />
-  </group>
-
-  <!-- the "session" role grants access to login, logout and aboutLenya -->
-  <world>
-    <role id="session" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/authoring/index/url-policy.acml b/trunk/src/pubs/default/config/access-control/policies/authoring/index/url-policy.acml
deleted file mode 100644
index 78f20e7..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/authoring/index/url-policy.acml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: url-policy.acml,v 1.3 2004/03/13 12:34:15 gregor Exp $ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit" method="grant"/>
-  </group>
-  
-  <world>
-    <!-- If no @method is set, we assume method="deny" -->
-    <role id="visit"/>
-  </world>
-  
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/authoring/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/authoring/subtree-policy.acml
deleted file mode 100644
index 0dac922..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/authoring/subtree-policy.acml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit"  method="grant"/>
-  </group>
-
-  <group id="reviewer">
-    <role id="review"  method="grant"/>
-  </group>
-
-  <group id="admin">
-    <role id="admin"  method="grant"/>
-  </group>
- 
-  <group id="sitemanager">
-    <role id="sitemanager" method="grant"/>
-  </group>
- 
-  <!-- the "session" role grants access to login, logout and aboutLenya -->
-  <world>
-    <role id="session" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/introduction.html/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/introduction.html/subtree-policy.acml
deleted file mode 100644
index 7ca17de..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/introduction.html/subtree-policy.acml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <world>
-    <role id="visit" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/live/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/live/subtree-policy.acml
deleted file mode 100644
index 7ca17de..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/live/subtree-policy.acml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <world>
-    <role id="visit" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/modules/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/modules/subtree-policy.acml
deleted file mode 100644
index e750939..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/modules/subtree-policy.acml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: subtree-policy.acml 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <world>
-    <role id="visit" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/trash/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/trash/subtree-policy.acml
deleted file mode 100644
index c8db65a..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/trash/subtree-policy.acml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: subtree-policy.acml 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit" method="grant"/>
-  </group>
-
-  <group id="reviewer">
-    <role id="review" method="grant"/>
-  </group>
-
-  <group id="admin">
-    <role id="admin" method="grant"/>
-  </group>
-  
-  <group id="sitemanager">
-    <role id="sitemanager"  method="grant"/>
-  </group>
-
-  <!-- the "session" role grants access to login, logout and aboutLenya -->
-  <world>
-    <role id="session" method="grant"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/url-policy.acml b/trunk/src/pubs/default/config/access-control/policies/url-policy.acml
deleted file mode 100644
index 4ee12a6..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/url-policy.acml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <world>
-    <role id="visit" method="deny"/>
-  </world>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/webdav/index/url-policy.acml b/trunk/src/pubs/default/config/access-control/policies/webdav/index/url-policy.acml
deleted file mode 100644
index 78f20e7..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/webdav/index/url-policy.acml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: url-policy.acml,v 1.3 2004/03/13 12:34:15 gregor Exp $ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit" method="grant"/>
-  </group>
-  
-  <world>
-    <!-- If no @method is set, we assume method="deny" -->
-    <role id="visit"/>
-  </world>
-  
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/policies/webdav/subtree-policy.acml b/trunk/src/pubs/default/config/access-control/policies/webdav/subtree-policy.acml
deleted file mode 100644
index eb1b325..0000000
--- a/trunk/src/pubs/default/config/access-control/policies/webdav/subtree-policy.acml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<policy xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <group id="editor">
-    <role id="edit"  method="grant"/>
-  </group>
-
-  <group id="reviewer">
-    <role id="review"  method="grant"/>
-  </group>
-
-  <group id="admin">
-    <role id="admin"  method="grant"/>
-  </group>
-
-  <group id="sitemanager">
-    <role id="sitemanager"  method="grant"/>
-  </group>
-
-</policy> 
diff --git a/trunk/src/pubs/default/config/access-control/usecase-policies.xml b/trunk/src/pubs/default/config/access-control/usecase-policies.xml
deleted file mode 100644
index ceb1981..0000000
--- a/trunk/src/pubs/default/config/access-control/usecase-policies.xml
+++ /dev/null
@@ -1,405 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-    
-<!--+++NOTE+++ The usecase list was initialized using modules/usecase-impl/xslt/initUsecasePolicies.xsl.-->
-<usecases xmlns="http://apache.org/cocoon/lenya/ac/1.0">
-
-  <usecase id="ac.visit">
-    <role id="visit" method="grant"/>
-    <role id="admin" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="ac.logout">
-    <role id="session" method="grant"/>
-  </usecase>
-  <usecase id="ac.login">
-    <role id="session" method="grant"/>
-  </usecase>
-  <usecase id="admin.aboutLenya">
-    <role id="session" method="grant"/>
-  </usecase>
-
-  <usecase id="bxe.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="bxe.close">
-    <role id="sitemanager"/>
-    <role id="edit"/>
-  </usecase>  
-  <usecase id="cforms.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="fckeditor.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="linkcheck.getLinks">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="lucene.externalOpensearch">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="lucene.index">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="lucene.indexSite">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="lucene.opensearch">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="lucene.search">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="visit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.archive">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.changeLabel">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.changeNodeID">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.changeVisibility">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.copy">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.create">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.createLanguage">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.cut">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.delete">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.deleteLanguage">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.paste">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.restore">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitemanagement.rollback">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>  
-  <usecase id="sitemanagement.forceCheckIn">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>  
-  <usecase id="tab.acArchive">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tab.acAuthoring">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="tab.acLive">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="tab.acTrash">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="tab.assets">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tab.meta">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tab.overview">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="review" method="grant"/>
-    <role id="visit" method="grant"/>
-  </usecase>
-  <usecase id="tab.revisions">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tab.scheduler">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tab.workflow">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="opendocument.create">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="opendocument.upload">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="sitetree.nudge">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="contactForm.sendMessage">
-    <role id="visit" method="grant"/>
-  </usecase>
-  <usecase id="usecasedocument.create">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="webdav.delete">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="webdav.filePropfind">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="webdav.mkcol">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="webdav.propfind">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="webdav.put">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="admin.usecases">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.addGroup">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.addIPRange">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.addUser">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.changePassword">
-    <role id="admin" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="review" method="grant"/>
-    <role id="visit" method="grant"/>
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="admin.changePasswordAdmin">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.deleteGroup">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.deleteIPRange">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.deleteUser">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.emptyTrash">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.group">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.groupMembers">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.groupProfile">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.groups">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.ipRangeGroups">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.ipRangeProfile">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.ipRange">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.ipRanges">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.serverStatus">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.sessions">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.siteOverview">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.user">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.userGroups">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.userProfile">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="admin.users">
-    <role id="admin" method="grant"/>
-  </usecase>
-  <usecase id="editors.forms">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.oneform">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.publicationEdit">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="templating.createPublicationFromTemplate">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="workflow.delete">
-    <role id="sitemanager" method="grant"/>
-  </usecase>
-  <usecase id="workflow.publish">
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="workflow.deactivate">
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="workflow.reject">
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="workflow.submit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="workflow.multiWorkflow">
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="workflow.multiWorkflowInvoke">
-    <role id="sitemanager" method="grant"/>
-    <role id="review" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="kupu.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="resource.upload">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="resource.create">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="entry.create">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="export.import">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="export.importExampleContent">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="notification.inbox">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="notification.sendMessage">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-    <role id="review" method="grant"/>
-  </usecase>
-  <usecase id="neutron.checkout">
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="neutron.checkin">
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="news.edit">
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.insertLink">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.insertImage">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.insertAsset">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="editors.createResource">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="tinymce.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-  <usecase id="fckeditor.edit">
-    <role id="sitemanager" method="grant"/>
-    <role id="edit" method="grant"/>
-  </usecase>
-</usecases>
diff --git a/trunk/src/pubs/default/config/cocoon-xconf/instantiator.xconf b/trunk/src/pubs/default/config/cocoon-xconf/instantiator.xconf
deleted file mode 100644
index 1c3a99a..0000000
--- a/trunk/src/pubs/default/config/cocoon-xconf/instantiator.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase.xmap 158794 2005-03-23 16:21:15Z andreas $ -->
-<!--
-    This file defines the publication specific template instantiator
--->
-
-  <xconf xpath="/cocoon/template-instantiators" unless="/cocoon/template-instantiators/component-instance[@name = 'default']">
-
-    <component-instance name="default"
-                        logger="lenya.publication.templating"
-                        class="org.apache.lenya.defaultpub.cms.publication.templating.Instantiator"/>
-
-  </xconf>
diff --git a/trunk/src/pubs/default/config/menus/generic.xsp b/trunk/src/pubs/default/config/menus/generic.xsp
deleted file mode 100644
index 3567a8e..0000000
--- a/trunk/src/pubs/default/config/menus/generic.xsp
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <xsp:logic>
-      String documentId = <input:get-attribute module="page-envelope" as="string" name="context-prefix"/> + "/" + <input:get-attribute module="page-envelope" as="string" name="publication-id"/> + "/authoring" + <input:get-attribute module="page-envelope" as="string" name="document-uuid"/> + "_" + <input:get-attribute module="page-envelope" as="string" name="document-language"/>;
-      String area = <input:get-attribute module="page-envelope" as="string" name="area"/>;
-      
-      Object documentObject = <input:get-attribute as="object" module="page-envelope" name="document"/>;
-      Document document = null;
-      String visible = null;
-      if (documentObject != null &amp;&amp; !"".equals(documentObject)) {
-          document = (Document) documentObject;
-
-        visible = <input:get-attribute module="doc-info" as="string">
-          <input:param name="name"><xsp:expr>document.getPublication().getId() + ":" + document.getArea() + ":" + document.getUUID() + ":" + document.getLanguage() + ":visibleInNav"</xsp:expr></input:param>
-        </input:get-attribute>;
-      }
-
-      boolean isDocument = false;
-      try {
-          if (document != null &amp;&amp; document.exists()) {
-              isDocument = true;
-          }
-      }
-      catch (Exception e) {
-          throw new ProcessingException(e);
-      }
-      
-      
-    </xsp:logic>
-    
-    <menus>
-      <menu i18n:attr="name" name="File">
-        <block areas="authoring site">
-          <item uc:usecase="sitemanagement.createLanguage" href="?"><i18n:text>New Language Version</i18n:text></item>
-          <item uc:usecase="sitemanagement.deleteLanguage" href="?"><i18n:text>Remove Language Version</i18n:text></item>
-        </block>
-        <block area="authoring">
-          <item uc:usecase="sitemanagement.forceCheckIn" href="?"><i18n:text>force-checkin</i18n:text></item>
-        </block>
-        <block areas="authoring site admin">
-          <item uc:usecase="admin.changePassword" href="?"><i18n:text>Change Password</i18n:text></item>
-          <item uc:usecase="ac.logout" href="?"><i18n:text>Logout</i18n:text></item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Edit">
-        
-        <block areas="authoring">
-          <item wf:event="edit" uc:usecase="tab.meta" href="?"><i18n:text>Edit Metadata</i18n:text></item>
-          <item wf:event="edit" uc:usecase="sitemanagement.changeLabel" href="?"><i18n:text>Edit Navigation Title</i18n:text></item>
-        </block>
-
-        <block areas="site">
-          <item uc:usecase="sitemanagement.cut" href="?"><i18n:text>Cut</i18n:text></item>
-          <item uc:usecase="sitemanagement.copy" href="?"><i18n:text>Copy</i18n:text></item>
-          <item uc:usecase="sitemanagement.paste" href="?"><i18n:text>Paste</i18n:text></item>
-        </block>
-        
-        
-      <block areas="site">
-        <item uc:usecase="sitemanagement.changeNodeID" href="?"><i18n:text>Rename URL</i18n:text></item>
-        <item uc:usecase="sitemanagement.changeLabel" href="?"><i18n:text>Edit Navigation Title</i18n:text></item>
-        <item uc:usecase="sitemanagement.changeVisibility" href="?">
-          <xsp:attribute name="checked"><xsp:expr>visible</xsp:expr></xsp:attribute>
-          <i18n:text>Visible in Navigation</i18n:text>
-        </item>
-      </block>
-      <block areas="site">
-        <item uc:usecase="sitetree.nudge" href="?direction=up"><i18n:text>Move Up</i18n:text></item>
-        <item uc:usecase="sitetree.nudge" href="?direction=down"><i18n:text>Move Down</i18n:text></item>
-      </block>
-      <block areas="site">
-        <item uc:usecase="sitemanagement.delete" href="?"><i18n:text>Delete</i18n:text></item>
-        <item uc:usecase="sitemanagement.archive" href="?"><i18n:text>Archive</i18n:text></item>
-        <item uc:usecase="sitemanagement.restore" href="?"><i18n:text>Restore</i18n:text></item>
-      </block>
-        
-      </menu>
-      
-      <menu i18n:attr="name" name="Workflow">
-        <block areas="authoring site">
-          <item uc:usecase="workflow.submit" wf:event="submit" href="?"><i18n:text>workflow.submit</i18n:text></item>
-          <item uc:usecase="workflow.reject" wf:event="reject" href="?"><i18n:text>workflow.reject</i18n:text></item>
-          <item uc:usecase="workflow.publish" wf:event="publish" href="?"><i18n:text>workflow.publish</i18n:text></item>
-          <item uc:usecase="workflow.deactivate" wf:event="deactivate" href="?"><i18n:text>workflow.deactivate</i18n:text></item>
-       </block>
-        <block areas="authoring site">
-          <item uc:usecase="workflow.multiWorkflow" href="?"><i18n:text>workflow.multiWorkflow</i18n:text></item>
-       </block>
-      </menu>
-
-      <menu i18n:attr="name" name="Help">
-        <block areas="authoring site admin">
-          <item uc:usecase="admin.aboutLenya" href="?"><i18n:text>About Apache Lenya</i18n:text></item>
-          <item href="http://lenya.apache.org"><i18n:text>Apache Lenya Homepage</i18n:text></item>
-          <item href="http://lenya.apache.org/docs/index.html"><i18n:text>Documentation</i18n:text></item>
-          <item href="http://wiki.apache.org/lenya/"><i18n:text>Wiki</i18n:text></item>
-        </block>
-      </menu>
-      
-      <menu i18n:attr="name" name="Development">
-      </menu>
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/pubs/default/config/publication.xml b/trunk/src/pubs/default/config/publication.xml
deleted file mode 100644
index 6966140..0000000
--- a/trunk/src/pubs/default/config/publication.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<publication xmlns="http://apache.org/cocoon/lenya/publication/1.1" >
-
-  <name>Default</name>
-  <description>This publication is a best practice, getting started publication.</description>
-  <!-- the @...@ macros are evaluated by ant at build time -->
-  <version>@lenya.version@</version>
-  <lenya-version>@lenya.version@</lenya-version>
-  <lenya-revision>@lenya.revision@</lenya-revision>
-  <cocoon-version>2.1.10-dev</cocoon-version>
-
-  <!-- The various languages need to be listed for verification and widget building -->
-  <languages>
-    <language default="true">en</language>
-    <language>de</language>
-    <language>he</language>
-    <language>es</language>
-    <language>fr</language>
-  </languages>
-  <!-- A template instantiator is used to create new publications based on this one. -->
-  <template-instantiator name="default"/>
-  <!-- A publication can inherit from another publication. "id" corresponds to the publication id 
-       of that template (and thus to the name of the directory it's stored in) -->
-  <!--
-     <template id="some-pub-id"/>
-  -->
-  <path-mapper>org.apache.lenya.cms.publication.DefaultDocumentIdToPathMapper</path-mapper>
-  <document-builder name="default"/>
-  <breadcrumb-prefix/>
-  <site-manager name="tree"/>
-  
-  <!-- Resource types need to be listed because of the workflow resp. because the workflow depends on the publication and not on the resource type -->
-  <resource-types>
-    <resource-type name="xhtml" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="homepage" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="links" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="cforms" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="opendocument" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="resource" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="usecase" workflow="fallback://config/workflow/workflow.xml"/>
-    <resource-type name="news" workflow="fallback://config/workflow/workflow.xml"/>
-  </resource-types>
-  
-  <!-- Modules need to be listed because of the menu and i18n -->
-  <modules>
-    <module name="usecase"/>
-    <module name="editors"/>
-    <module name="xhtml"/>
-    <module name="links"/>
-    <module name="opendocument"/>
-    <module name="cforms"/>
-    <module name="homepage"/>
-    <module name="resource"/>
-    <module name="sitemanagement"/>
-    <module name="sitetree"/>
-    <module name="export"/>
-    <module name="workflow"/>
-    <module name="notification"/>
-    <module name="svg"/>
-    <module name="lucene"/>
-    <module name="development"/>
-    <module name="profiling"/>
-    <module name="languageselector"/>
-    <module name="administration"/>
-    <module name="acusecases"/>
-    <module name="news"/>
-    <module name="prettyprinting"/>
-    <module name="usecasedocument"/>
-  </modules>
-  <!-- TODO: The goal is to have a blog module ;-) -->
-  <!--
-  <module name="blog"/>
-  -->
-
-  <!-- You can specify a custom location for your content, outside the Lenya build tree. Note that you will probably also want
-       to specify custom locations for access control (see access-control/access-control.xml), so that all your dynamically generated data is in one place
-       for easy backup. -->
-  <!--
-       Relative to webapp context: 
-          <content-dir src="lenya/pubs/default"/>
-       Absolute:
-          <content-dir src="/home/USERNAME/data/default"/>
-          <content-dir src="D:/tmp/default"/>
-  -->
-  
-  <proxies>
-    <!-- 
-       Lenya can rewrite the links to cater to special proxy setups.
-       Make sure to update the GlobalProxies configuration in cocoon.xconf as well.
-       For information about these settings, read
-       http://lenya.apache.org/docu/docs/2_0_x/tutorials/proxy.html
-      
-       This example setting simulates the following situation:
-       * A customer wants a company hostname and URLs without Lenya-specific
-         path components for his live site.
-       * The server uses name-based virtual hosting with just one IP, i.e.
-         there can only be one SSL vhost, which is shared among several
-         customers. This implies the need for sub-directories in the proxy
-         URL.
-       * "authoring" should be ssl-protected. There is no need for a
-         customer hostname here, since it's not publicly visible.
-       * Any SSL-protected documents in "live" can be handled by the SSL
-         vhost (not using the company hostname is ok in this case, because
-         the customer does not want to pay for an additional IP address).
-         
-       The desired customer hostname is customer.example.com.
-       The SSL vhost is called https://www.example.com.
-       The Lenya CMS for our customer is reachable as
-       http[s]://www.example.com/lenya/customer/authoring.
-       The global proxy for non-publication-specific resources shall be
-       http://www.example.com/lenya.
-     -->
-<!--
-    <proxy area="live" ssl="true" url="https://www.example.com/lenya/customer/live"/>
-    <proxy area="live" ssl="false" url="http://customer.example.com"/>
-    <proxy area="authoring" ssl="true" url="https://www.example.com/lenya/customer/authoring"/>
-    <proxy area="authoring" ssl="false" url="http://www.example.com/lenya/customer/authoring"/>
-    <proxy area="archive" ssl="true" url="https://www.example.com/lenya/customer/archive"/>
-    <proxy area="archive" ssl="false" url="http://www.example.com/lenya/customer/archive"/>
-    <proxy area="trash" ssl="true" url="https://www.example.com/lenya/customer/trash"/>
-    <proxy area="trash" ssl="false" url="http://www.example.com/lenya/customer/trash"/>
--->
-  </proxies>
-  
-</publication>
diff --git a/trunk/src/pubs/default/config/search/lucene_index.xml b/trunk/src/pubs/default/config/search/lucene_index.xml
deleted file mode 100644
index a443dba..0000000
--- a/trunk/src/pubs/default/config/search/lucene_index.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<indexes>
-  <index id="default-live" analyzer="stopword_en" directory="lenya/pubs/default/work/lucene/index/live/index">
-    <structure>
-      <field id="url" type="keyword" />
-      <field id="title" type="text" storetext="true"/>
-      <field id="description" type="text" storetext="true"/>
-      <field id="subject" type="keyword" storetext="true" />
-      <field id="body" type="text" storetext="true"/>
-    </structure>
-  </index>
-  <index id="default-authoring" analyzer="stopword_en" directory="lenya/pubs/default/work/lucene/index/authoring/index">
-    <structure>
-      <field id="url" type="keyword" />
-      <field id="title" type="text" storetext="true"/>
-      <field id="description" type="text" storetext="true"/>
-      <field id="subject" type="keyword" storetext="true" />
-      <field id="body" type="text" storetext="true"/>
-    </structure>
-  </index>
-  <index id="default-trash" analyzer="stopword_en" directory="lenya/pubs/default/work/lucene/index/trash/index">
-    <structure>
-      <field id="url" type="keyword" />
-      <field id="title" type="text" storetext="true"/>
-      <field id="description" type="text" storetext="true"/>
-      <field id="subject" type="keyword" storetext="true" />
-      <field id="body" type="text" storetext="true"/>
-    </structure>
-  </index>
-  <index id="default-archive" analyzer="stopword_en" directory="lenya/pubs/default/work/lucene/index/archive/index">
-    <structure>
-      <field id="url" type="keyword" />
-      <field id="title" type="text" storetext="true"/>
-      <field id="description" type="text" storetext="true"/>
-      <field id="subject" type="keyword" storetext="true" />
-      <field id="body" type="text" storetext="true"/>
-    </structure>
-  </index>
-</indexes>
diff --git a/trunk/src/pubs/default/config/workflow/workflow.xml b/trunk/src/pubs/default/config/workflow/workflow.xml
deleted file mode 100644
index 7e520d5..0000000
--- a/trunk/src/pubs/default/config/workflow/workflow.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<workflow xmlns="http://apache.org/cocoon/lenya/workflow/1.0">
-
-  <state id="authoring" initial="true"/>
-  <state id="review"/>
-  <state id="live"/>
-  <state id="trash"/>
-  <state id="archive"/>
-  
-  <variable name="is_live" value="false"/>
-  
-  <transition source="authoring" destination="review">
-    <event id="submit"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>
-        
-  <transition source="review" destination="live">
-    <event id="publish"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">review</condition>
-    <assign variable="is_live" value="true"/>
-  </transition>
-        
-  <transition source="review" destination="authoring">
-    <event id="reject"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">review</condition>
-  </transition>
-        
-  <transition source="live" destination="authoring">
-    <event id="edit"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>
-        
-  <transition source="authoring" destination="authoring">
-    <event id="edit"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>
-        
-  <transition source="live" destination="authoring">
-    <event id="deactivate"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">review</condition>
-    <assign variable="is_live" value="false"/>
-  </transition>
-
-  <transition source="review" destination="authoring">
-    <event id="deactivate"/>
-    <condition class="org.apache.lenya.workflow.impl.BooleanVariableCondition">is_live = true</condition>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">review</condition>
-    <assign variable="is_live" value="false"/>
-  </transition>
-  
-  <transition source="authoring" destination="authoring">
-    <event id="deactivate"/>
-    <condition class="org.apache.lenya.workflow.impl.BooleanVariableCondition">is_live = true</condition>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">review</condition>
-    <assign variable="is_live" value="false"/>
-  </transition>
-  
-  <transition source="authoring" destination="trash">
-    <event id="delete"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-    <assign variable="is_live" value="false"/>
-  </transition>
-
-  <transition source="authoring" destination="archive">
-    <event id="archive"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-    <assign variable="is_live" value="false"/>
-  </transition>
-  
-  <transition source="archive" destination="authoring">
-    <event id="restore"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>
-
-  <transition source="archive" destination="trash">
-    <event id="delete"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>
-  
-  <transition source="trash" destination="authoring">
-    <event id="restore"/>
-    <condition class="org.apache.lenya.cms.workflow.RoleCondition">edit</condition>
-  </transition>  
-</workflow>
diff --git a/trunk/src/pubs/default/error.xmap b/trunk/src/pubs/default/error.xmap
deleted file mode 100644
index 744b987..0000000
--- a/trunk/src/pubs/default/error.xmap
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:pipelines>
-    <map:pipeline>
-      <map:match pattern="*/*/**">
-        <map:generate type="notifying"/>
-        <map:transform src="fallback://lenya/xslt/exception/generic.xsl">
-          <map:parameter name="root" value="/{1}/{2}"/>
-        </map:transform>
-        <map:transform type="i18n">
-          <map:parameter name="language" value="{page-envelope:language}"/>
-        </map:transform>
-        <map:transform type="proxy"/>
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xhtml" status-code="500" />
-      </map:match>
-    </map:pipeline>
-  </map:pipelines>
-  
-</map:sitemap>
diff --git a/trunk/src/pubs/default/example-content/concepts/index_de b/trunk/src/pubs/default/example-content/concepts/index_de
deleted file mode 100644
index 45f37f8..0000000
--- a/trunk/src/pubs/default/example-content/concepts/index_de
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Konzepte</title>
-  </head>
-  <body>
-    <h1>Konzepte</h1>
-    
-    <h2>Publikationen</h2>
-    
-    <p>
-      Eine Website wird in Apache Lenya als <em>Publikation</em> bezeichnet.
-    </p>
-    
-    <h2>Areas: Authoring, Live, ...</h2>
-    
-    <p>
-      Lenya unterscheidet zwischen verschiedenen <em>Areas</em>, in denen
-      sich Dokumente befinden können:
-    </p>
-    <ul>
-      <li>
-        Die Authoring-Area dient dazu, Dokumente zu erstellen und zu editieren.
-        Hier sind alle CMS-Funktionen verfügbar.
-      </li>
-      <li>
-        Sobald ein Dokument publiziert ist, wird es in die Live-Area kopiert.
-        Die Live-Area kann direkt durch einen Web-Server veröffentlicht werden,
-        oder Sie können in einem weiteren Zwischenschritt die Inhalte von
-        der Live-Area zum eigentlichen Web-Server replizieren. In diesem Fall dient
-        die Live-Area als Vorschau auf den Inhalt, der vom eigentlichen Webserver
-        veröffentlicht wird.
-      </li>
-      <li>
-        Weitere Standard-Areas sind Trash und Archive. Bei Bedarf können zusätzliche
-        Areas definiert werden.
-      </li>
-    </ul>
-    
-    <h2>Ressource-Typen</h2>
-    
-    <p>
-      Da Apache Lenya auf Cocoon basiert, verfügt es über ein mächtiges
-      XML- und XSLT-Fundament. Dokumente können auf ihre Konformität zu
-      einem XSD- oder Relax-NG-Schema überprüft werden. Typischerweise
-      werden verschiedene Typen von Dokumenten definiert (z.B. Artikel,
-      Dossiers, ...), deren XML-Struktur durch unterschiedlichen Schemata
-      spezifiziert werden. Beim Editieren wird die Konformität zum XML-Schema
-      überprüft. Bei der Aufbereitung eines Dokumentes zur Darstellung
-      können verschiedene XML-Strukturen durch XSLT-Stylesheets auf
-      unterschiedliche Weise in verschiedene Layouts transformiert werden.
-    </p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/concepts/index_de.meta b/trunk/src/pubs/default/example-content/concepts/index_de.meta
deleted file mode 100644
index 32cf940..0000000
--- a/trunk/src/pubs/default/example-content/concepts/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Konzepte kurz erklärt</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Konzepte</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Erklärt Lenya Konzepte.</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/concepts/index_en b/trunk/src/pubs/default/example-content/concepts/index_en
deleted file mode 100644
index 1d7d22d..0000000
--- a/trunk/src/pubs/default/example-content/concepts/index_en
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Concepts</title>
-  </head>
-  <body>
-    <h1>Concepts</h1>
-    
-    <h2>Publications</h2>
-    
-    <p>In Apache Lenya, a website is called a
-    <strong>publication</strong>.</p>
-    
-    <h2>Areas: Authoring, Live, ...</h2>
-
-    <p>Apache Lenya separates between different areas:</p>
-    <ul>
-      <li>The authoring area is for creating and editing of
-      content. All CMS functions are available here.</li>
-
-      <li>Once the content has been published it is moved to the live
-      area. The live area can be served by a web server directly or
-      you can add another intermediate step where the content is
-      replicated from the live area to the actual web server. In any
-      case the live area simply serves as a preview to the content
-      that will be served by the web server.</li>
-      <li>
-        Other standard areas are and archive. If necessary, further
-        areas can be declared.
-      </li>
-    </ul>
-    
-    <h2>Resource Types</h2>
-
-    <p>As Apache Lenya is based on Apache Cocoon, it has strong XML and
-    XSLT foundations. It is possible to ensure that a document
-    conforms to an XML schema. Typically you define different types of
-    documents, like an news article or an opinion piece, conforming to
-    different XML schemas. These different types are referred to as
-    document types. They are used to ensure the XML schema conformance
-    when editing and typically also when preparing a presentation of
-    the document, where an opinion piece has a different layout than a
-    news article.</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/concepts/index_en.meta b/trunk/src/pubs/default/example-content/concepts/index_en.meta
deleted file mode 100644
index 98ff7cf5..0000000
--- a/trunk/src/pubs/default/example-content/concepts/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Concepts quickly explained</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Concepts</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Explains Lenya concepts</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/cforms/index_de b/trunk/src/pubs/default/example-content/doctypes/cforms/index_de
deleted file mode 100644
index 4eadc59..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/cforms/index_de
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<data>
-  <contacts>
-  </contacts>
-</data>
diff --git a/trunk/src/pubs/default/example-content/doctypes/cforms/index_de.meta b/trunk/src/pubs/default/example-content/doctypes/cforms/index_de.meta
deleted file mode 100644
index 5cda9ab..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/cforms/index_de.meta
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">CForms-Ressource-Typ</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-10-13 11:19:30</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>cforms</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/cforms/index_en b/trunk/src/pubs/default/example-content/doctypes/cforms/index_en
deleted file mode 100644
index 4eadc59..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/cforms/index_en
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<data>
-  <contacts>
-  </contacts>
-</data>
diff --git a/trunk/src/pubs/default/example-content/doctypes/cforms/index_en.meta b/trunk/src/pubs/default/example-content/doctypes/cforms/index_en.meta
deleted file mode 100644
index a818786..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/cforms/index_en.meta
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">CForms Resource Type</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-10-13 11:19:30</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>cforms</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/index_de b/trunk/src/pubs/default/example-content/doctypes/index_de
deleted file mode 100644
index a6a8b32..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/index_de
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Beispiele für Ressource-Typen</title>
-  </head>
-  <body>
-    <h1>Beispiele für Ressource-Typen</h1>
-
-    <p>
-      Die Default-Publikation umfasst den <a href="/default/authoring/doctypes/xhtml-document_de.html">XHTML-Ressource-Typ</a>,
-      den <a href="/default/authoring/doctypes/links.html">Links-Ressource-Typ</a>,
-den <a href="/default/authoring/doctypes/opendocument_de.html">OpenDocument-Ressource-Typ</a> und
-den <a href="/default/authoring/doctypes/cforms.html">CForms-Ressource-Typ</a>.
-    </p>
-    
-    <p>
-    Der <strong>XHTML-Ressource-Typ</strong> empfiehlt sich insbesondere dann, wenn dem Nutzer vollständige
-    Freiheit in Bezug auf die einzufügenden Informationen gewährt werden soll.
-    Dieser Ressource-Typ macht zwar wenige Einschränkungen, allerdings verliert
-    man dadurch einige der wichtigsten Vorteile restriktiverer Ressource-Typen.
-    </p>
-    
-    <p>
-      Der <strong>Links-Ressource-Typ</strong> erlaubt es, Listen von Links zu verwalten. Er dient
-      hauptsächlich dazu, zu zeigen, dass Lenya mit beliebigen Ressource-Typen umgehen kann.
-    </p>
-    
-    <p>
-      Der <strong>OpenDocument-Ressource-Typ</strong> ist ein standardisiertes XML-basiertes Dateiformat
-      für Office-Anwendungen. Er wurde von <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office">OASIS</a>
-      entwickelt.
-    </p>
-    
-    <p>
-      Der <strong>CForms-Ressource-Typ</strong> ist ein Beispiel, wie Lenya mit Formular-Daten auf der
-      Basis von Cocoon's CForms in Verbindung mit Ajax umgeht. 
-    </p>
-    
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/doctypes/index_de.meta b/trunk/src/pubs/default/example-content/doctypes/index_de.meta
deleted file mode 100644
index 9e80ad1..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Einige Dokumenttyp Beispiele</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Dokumenttyp Beispiele</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Enthält einige Beispiele von Dokumenttypen</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/index_en b/trunk/src/pubs/default/example-content/doctypes/index_en
deleted file mode 100644
index 3e1361b..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/index_en
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Resource Type Examples</title>
-  </head>
-  <body>
-    <h1>Resource Type Examples</h1>
-
-<p>
-The default publication comes with the <a href="/default/authoring/doctypes/xhtml-document.html">XHTML resource type</a>,
-the <a href="/default/authoring/doctypes/links.html">Links resource type</a>,
-the <a href="/default/authoring/doctypes/opendocument.html">OpenDocument resource type</a> and
-the <a href="/default/authoring/doctypes/cforms.html">CForms resource type</a>.
-</p>
-
-<p>
-The <strong>XHTML resource type</strong> is suitable for situations where
-users ask for complete freedom on what information can be inserted
-into a document. While this approach doesn't restrict you, it also
-looses some of the major benefits of well defined document types.
-</p>
-    
-<p>
-The <strong>Links resource type</strong> is mainly to show that Lenya is able to handle
-arbitrary resource types but can also be used for link-lists.
-</p>
-    
-<p>
-The <strong>OpenDocument resource type</strong> is a standardized XML-based
-file format specification suitable for office applications and has been developed
-by <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office">OASIS</a>.
-</p>
-
-<p>
-The <strong>CForms resource type</strong> is an example of how Lenya manages formular data
-based on Cocoon's CForms in conjunction with Ajax.
-</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/doctypes/index_en.meta b/trunk/src/pubs/default/example-content/doctypes/index_en.meta
deleted file mode 100644
index d84622d..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Some Resource Type Samples</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Resource Type Samples</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Contains some samples of Lenya resource types</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/links/index_de b/trunk/src/pubs/default/example-content/doctypes/links/index_de
deleted file mode 100644
index 39c7069..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/links/index_de
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<links xmlns="http://apache.org/lenya/pubs/default/1.0">
-  <title>Der Links-Ressource-Typ</title>
-  <link href="http://lenya.apache.org">Apache Lenya Website</link>
-  <link href="http://wiki.apache.org/lenya/">Apache Lenya Wiki</link>
-</links>
diff --git a/trunk/src/pubs/default/example-content/doctypes/links/index_de.meta b/trunk/src/pubs/default/example-content/doctypes/links/index_de.meta
deleted file mode 100644
index 1dfbf50..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/links/index_de.meta
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Links</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-10-02 12:50:27</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>links</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/links/index_en b/trunk/src/pubs/default/example-content/doctypes/links/index_en
deleted file mode 100644
index 51e1c95..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/links/index_en
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<links xmlns="http://apache.org/lenya/pubs/default/1.0">
-  <title>The Links Resource Type</title>
-  <link href="http://lenya.apache.org">Apache Lenya Website</link>
-  <link href="http://wiki.apache.org/lenya/">Apache Lenya Wiki</link>
-</links>
diff --git a/trunk/src/pubs/default/example-content/doctypes/links/index_en.meta b/trunk/src/pubs/default/example-content/doctypes/links/index_en.meta
deleted file mode 100644
index 6c72a8e..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/links/index_en.meta
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Links</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-10-02 12:50:27</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>links</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de b/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de
deleted file mode 100644
index 9f686a7..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de
+++ /dev/null
Binary files differ
diff --git a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de.meta b/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de.meta
deleted file mode 100644
index 713f47d..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_de.meta
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-  <lenya:dc>
-    <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">OpenDocument</dc:title>
-    <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-    <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-  </lenya:dc>
-
-  <lenya:internal>
-    <lenya:resourceType>opendocument</lenya:resourceType>
-    <lenya:contentType>odt</lenya:contentType>
-     <lenya:extension>odt</lenya:extension>
-    <lenya:mimeType>application/vnd.oasis.opendocument.text</lenya:mimeType>
-  </lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en b/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en
deleted file mode 100644
index 6b345e9..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en
+++ /dev/null
Binary files differ
diff --git a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en.meta b/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en.meta
deleted file mode 100644
index 234ce10..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/opendocument/index_en.meta
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-  <lenya:dc>
-    <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">OpenDocument</dc:title>
-    <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-    <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-  </lenya:dc>
-
-  <lenya:internal>
-    <lenya:resourceType>opendocument</lenya:resourceType>
-    <lenya:contentType>odt</lenya:contentType>
-     <lenya:extension>odt</lenya:extension>
-    <lenya:mimeType>application/vnd.oasis.opendocument.text</lenya:mimeType>
-  </lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de b/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de
deleted file mode 100644
index 2cb7d01..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Der XHTML-Ressource-Typ</title>
-  </head>
-  <body>
-    <h1>Der XHTML-Ressource-Typ</h1>
-
-    <p>
-    Der XHTML-Ressource-Typ erlaubt es, XHTML-Dokumente zu verwalten,
-    die der <a href="http://www.w3.org/TR/xhtml1/">XHTML-1.0-Definition</a>
-    des <a href="http://www.w3.org/">World Wide Web Consortium (W3C)</a>
-    entsprechen.
-    </p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de.meta b/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de.meta
deleted file mode 100644
index e6ac232..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Der XHTML Dokumenttyp</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">XHTML Dokumenttyp</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Erläutert den XHTML Dokumenttyp</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en b/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en
deleted file mode 100644
index e6946c7..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>The XHTML Resource Type</title>
-  </head>
-  <body>
-    <h1>The XHTML Resource Type</h1>
-
-    <p>The XHTML resource type supports to maintain XHTML documents which
-    conform to the <a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0
-    definition</a> of the <a href="http://www.w3.org/">World Wide Web
-    Consortium (W3C)</a>.</p>  
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en.meta b/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en.meta
deleted file mode 100644
index 499ce95..0000000
--- a/trunk/src/pubs/default/example-content/doctypes/xhtml-document/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">The XHTML Resource Type</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">XHTML Resource Type</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Explains the XHTML Resource Type</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/features/index_de b/trunk/src/pubs/default/example-content/features/index_de
deleted file mode 100644
index bfe680a..0000000
--- a/trunk/src/pubs/default/example-content/features/index_de
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Funktionen</title>
-  </head>
-  <body>
-    <h1>Funktionen</h1>
-    
-    <p>
-      Apache Lenya bietet die Features, die Sie von einem modernen
-      Content-Management-System erwarten, z.B. Versionierung, Zeitsteuerung,
-      eine eingebaute Suchmaschine, Staging und Workflow.
-      Da es durchgängig auf XML basiert, können mehr Funktionalitäten
-      realisiert werden als mit CMS, die XML nur ansatzweise verwenden.
-      Einige erwähnenswerte Funktionalitäten sind:
-    </p>
-
-    <h2>Browser-basiertes Editieren im WYSIWYG-Modus</h2>
-    
-    <p>
-      Apache Lenya verfügt über Browser-basierte WYSIWYG-Editoren die
-      gegen W3C XML Schemas bzw. Relax-NG-Schemas validieren. Dadurch wird
-      das nicht-konforme Markup, das andere Editoren produzieren, vermieden.
-      Schema-basierte Editoren erlauben es außerdem, Website-Style-Guidelines
-      durchzusetzen.
-    </p>
-    
-    <h2>XML-Publishing</h2>
-    
-    <p>
-      Da Apache Lenya auf Apache Cocoon basiert, kann es auf alle Vorteile
-      eines mächtigen XML-Publishing-Frameworks zurückgreifen, darunter
-      Multi-Channel- / Cross-Platform-Publishing und Content-Aggregation
-      von externen Quellen wie RSS-Feeds. 
-    </p>
-
-    <h2>Das Publikationskonzept</h2>
-    
-    <p>
-      Das Publikationskonzept erlaubt es, Informations-Architekturen von
-      Websites wiederzuverwenden und die Informationen auf der Ebene des
-      Inhalts zu modularisieren.
-    </p>
-    
-    <h2>Eine zukunftssichere Lösung</h2>
-    
-    <p>
-      Der Apache Software-Stack ist eine der bewährtesten Plattformen zur
-      Erstellung von Internet-Applikationen. Auf dieser Basis bietet Apache
-      Lenya eine robuste, zukunfts- und investitionssichere Lösung.
-    </p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/features/index_de.meta b/trunk/src/pubs/default/example-content/features/index_de.meta
deleted file mode 100644
index e943930..0000000
--- a/trunk/src/pubs/default/example-content/features/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Einige Lenya Funktionen kurz erklärt</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Funktionen</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Erklärt einige Lenya Funktionen.</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/features/index_en b/trunk/src/pubs/default/example-content/features/index_en
deleted file mode 100644
index 30be822..0000000
--- a/trunk/src/pubs/default/example-content/features/index_en
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" >
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Features</title>
-  </head>
-  <body>
-    <h1>Features</h1>
-
-    <p>Apache Lenya comes with the features you would expect of a
-    modern Content Management System, such as Revision Control,
-    Scheduling, a built-in Search Engine, separate Staging Areas and
-    Workflow. Because Apache Lenya uses XML throughout, it can offer
-    much more than other CMS that use XML only marginally. Some
-    notable features include:</p>
-
-    <h2>Browser-based WYSIWYG Editing</h2>
-    
-    <p>Apache Lenya comes with Browser-based WYSIWYG Editors that
-    validate input against a W3C XML Schema. This prevents the invalid
-    markup that other editors produce. Schema-based editors also allow
-    to enforce web site style guidelines.</p> 
-
-    <h2>XML Publishing</h2>
-
-    <p>As Apache Lenya is based on Apache Cocoon it leverages all the
-    benefits from a powerful XML Publishing framework such as
-    multi-channel publishing, content aggregation even from external
-    sources such as RSS.</p>
-
-    <h2>The Publication Concept</h2>
-    
-    <p>The publication concept allows for reuse of the information
-    architecture of a site and brings modularity to the content
-    level.</p> 
-
-    <h2>Future-proof Solution</h2>
-    
-    <p>The Apache Software Stack is quickly becoming the preeminent
-    platform for building Internet applications. By leveraging the
-    Apache Software Stack, Apache Lenya offers a robust, future-proof
-    solution that preserves technology investments.</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/features/index_en.meta b/trunk/src/pubs/default/example-content/features/index_en.meta
deleted file mode 100644
index ea5576c..0000000
--- a/trunk/src/pubs/default/example-content/features/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Some Lenya Features quickly explained</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Features</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Explains some Lenya features</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/index/index_de b/trunk/src/pubs/default/example-content/index/index_de
deleted file mode 100644
index 02602cc..0000000
--- a/trunk/src/pubs/default/example-content/index/index_de
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Willkommen zur Default-Publikation!</title>
-  </head>
-  <body>
-    <h1>Hallo und herzlich Willkommen bei der Lenya Default-Publikation!</h1>
-    
-    <p>
-      Apache Lenya ist ein in Java implementiertes Open-Source Content Management System,
-      das auf offenen Standards wie XML und XSLT sowie dem bewährten Apache
-      Software-Stack basiert. Sein Fundament bildet das XML-Publishing-Framework
-      Apache Cocoon.
-    </p>
-
-    <p>
-      Im Artikel <a href="/default/authoring/concepts_de.html">Konzepte</a> erhalten Sie
-      einen Überblick über die in Lenya verwendeteen Konzepte und Begriffe.
-      Der Artikel <a href="/default/authoring/features_de.html">Features</a> bietet
-      einen Überblick über die in Lenya verfügbaren Funktionen.
-    </p>
-    
-    <p>
-      Für eine schnelle Einführung in die Verwendung des Apache Lenya CMS empfehlen
-      wir das <a href="/default/authoring/tutorial_de.html">Tutorial</a>.
-    </p>
-
-    <p>Der Zweck dieser Publikation ist es,</p>
-
-    <ul>
-      <li>
-        die Grundfunktionalität des Apache Lenya CMS zu präsentieren,
-      </li>
-      <li>
-        eine Publikation "von der Stange" anzubieten, die auf einfache
-        Weise angepasst und genutzt werden kann,  und
-      </li>
-      <li>
-        eine Basis für Referenzimplementation neuer Konzepte und Best-Practises
-        zur Verfügung zu stellen.
-      </li>
-    </ul>
-    
-    <p>
-      Diese Publikation reizt die Möglichkeiten von Apache Lenya nicht aus;
-      es gibt keine Spielereien, die Sie verwirren könnten. Diese Publikation enthält
-      nur, was Sie für einen schnellen Einstieg benötigen.
-    </p>
-    
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/index/index_de.meta b/trunk/src/pubs/default/example-content/index/index_de.meta
deleted file mode 100644
index 4e6727e..0000000
--- a/trunk/src/pubs/default/example-content/index/index_de.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-    <lenya:custom>
-      <lenya:myMeta>Benutzen Sie ihre eignen Metadaten in lenya.</lenya:myMeta>
-    </lenya:custom>
-<lenya:internal>
-<lenya:resourceType>homepage</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Willkommen zur Lenya Standardpublikation</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Standardpublikation</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Startseite der Lenya Standardpublikation</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/index/index_en b/trunk/src/pubs/default/example-content/index/index_en
deleted file mode 100644
index 050b527..0000000
--- a/trunk/src/pubs/default/example-content/index/index_en
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Welcome to the Default publication</title>
-  </head>
-  <body>
-    <h1>Hello and welcome to the Lenya default publication!</h1>
-
-    <p>Apache Lenya is a Java Open-Source Content Management System
-    based on open standards such as XML and XSLT and the Apache
-    Software Stack, in particular the XML publishing framework Apache
-    Cocoon.</p>
-
-    <p>For an overview of the concepts and the terminology used in
-    Apache Lenya please see the <a href="/default/authoring/concepts.html">Concepts
-    section</a>. To see what you can do with Apache Lenya please
-    refer to the <a href="/default/authoring/features.html">Features
-    section</a>.</p>
-
-    <p>If you'd like to get a quick introduction on how to use Apache
-    Lenya CMS please go through the <a
-    href="/default/authoring/tutorial.html">tutorial</a>.</p>
-
-    <p>The purpose of this publication is</p>
-
-    <ul>
-      <li>to show beginners the basic functionality of the Apache
-      Lenya CMS,</li>
-
-      <li>to provide an "out of the box" publication that can be
-      easily adapted and used,</li>
-
-      <li>and to provide a basis for reference implementations of new
-      concepts and best practices.</li>
-
-    </ul>
-
-    <p>This publication does not go to the limit of what's possible
-    with Apache Lenya CMS, there are no fancy bells and whistles to
-    confuse you, this publication simply contains everything you need
-    to get started.</p>
-    </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/index/index_en.meta b/trunk/src/pubs/default/example-content/index/index_en.meta
deleted file mode 100644
index cb24e26..0000000
--- a/trunk/src/pubs/default/example-content/index/index_en.meta
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-    <lenya:custom>
-      <lenya:myMeta>Add your own metadata to lenya.</lenya:myMeta>
-    </lenya:custom>
-<lenya:internal>
-<lenya:resourceType>homepage</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Welcome to the Lenya default publication</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya default publication</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">The start page of the Lenya default publication</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/" />
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/links/index_de b/trunk/src/pubs/default/example-content/links/index_de
deleted file mode 100644
index af1d0d1..0000000
--- a/trunk/src/pubs/default/example-content/links/index_de
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-
-<links xmlns="http://apache.org/lenya/pubs/default/1.0">
-  <title>Links zu Apache Lenya</title>
-  <link href="http://lenya.apache.org/">Apache Lenya Website</link>
-  <link href="http://wiki.apache.org/lenya/">Apache Lenya Wiki</link>
-</links>
diff --git a/trunk/src/pubs/default/example-content/links/index_de.meta b/trunk/src/pubs/default/example-content/links/index_de.meta
deleted file mode 100644
index 9a34b4f..0000000
--- a/trunk/src/pubs/default/example-content/links/index_de.meta
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: index_en.meta 473861 2006-11-12 03:51:14Z gregor $ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>links</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya links</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/links/index_en b/trunk/src/pubs/default/example-content/links/index_en
deleted file mode 100644
index db725b7..0000000
--- a/trunk/src/pubs/default/example-content/links/index_en
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-
-<links xmlns="http://apache.org/lenya/pubs/default/1.0">
-  <title>Apache Lenya Links</title>
-  <link href="http://lenya.apache.org/">Apache Lenya Website</link>
-  <link href="http://wiki.apache.org/lenya/">Apache Lenya Wiki</link>
-</links>
diff --git a/trunk/src/pubs/default/example-content/links/index_en.meta b/trunk/src/pubs/default/example-content/links/index_en.meta
deleted file mode 100644
index f6bda66..0000000
--- a/trunk/src/pubs/default/example-content/links/index_en.meta
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>links</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya links</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/news/index_de b/trunk/src/pubs/default/example-content/news/index_de
deleted file mode 100644
index 54c87ea..0000000
--- a/trunk/src/pubs/default/example-content/news/index_de
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<col:collection xmlns:col="http://apache.org/cocoon/lenya/collection/1.0" type="children" includeItems="3"/>
diff --git a/trunk/src/pubs/default/example-content/news/index_de.meta b/trunk/src/pubs/default/example-content/news/index_de.meta
deleted file mode 100644
index 4541105..0000000
--- a/trunk/src/pubs/default/example-content/news/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: index_en.meta 473861 2006-11-12 03:51:14Z gregor $ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>news</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">News</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">News</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A news page</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2007-03-22 15:53:25</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/example-content/news/index_en b/trunk/src/pubs/default/example-content/news/index_en
deleted file mode 100644
index 54c87ea..0000000
--- a/trunk/src/pubs/default/example-content/news/index_en
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<col:collection xmlns:col="http://apache.org/cocoon/lenya/collection/1.0" type="children" includeItems="3"/>
diff --git a/trunk/src/pubs/default/example-content/news/index_en.meta b/trunk/src/pubs/default/example-content/news/index_en.meta
deleted file mode 100644
index e7c6c87..0000000
--- a/trunk/src/pubs/default/example-content/news/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: index_en.meta 473861 2006-11-12 03:51:14Z gregor $ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>news</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">News</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">News</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A news page</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2007-03-22 15:53:25</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/example-content/news/installed/index_de b/trunk/src/pubs/default/example-content/news/installed/index_de
deleted file mode 100644
index b9cb603..0000000
--- a/trunk/src/pubs/default/example-content/news/installed/index_de
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: index_en 473861 2006-11-12 03:51:14Z gregor $ -->
-  <head>
-    <title>Lenya erfolgreich installiert</title>
-  </head>
-  <body>
-  
-    <h1>Lenya erfolgreich installiert</h1>
-
-    <p>Herzlichen Glückwunsch, Sie haben Lenya erfolgreich installiert und den Beispiel-Inhalt importiert!</p>
-
-    <p>Dieser Text wird nicht auf der News-Übersicht erscheinen, da dort nur der erste Absatz dargestellt wird.</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/news/installed/index_de.meta b/trunk/src/pubs/default/example-content/news/installed/index_de.meta
deleted file mode 100644
index b6035fe..0000000
--- a/trunk/src/pubs/default/example-content/news/installed/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: index_en.meta 473861 2006-11-12 03:51:14Z gregor $ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya erfolgreich installiert</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya erfolgreich installiert</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A news message.</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2007-03-22 15:54:35</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/example-content/news/installed/index_en b/trunk/src/pubs/default/example-content/news/installed/index_en
deleted file mode 100644
index 2c4feb3..0000000
--- a/trunk/src/pubs/default/example-content/news/installed/index_en
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: index_en 473861 2006-11-12 03:51:14Z gregor $ -->
-  <head>
-    <title>Lenya Successfully Installed</title>
-  </head>
-  <body>
-  
-    <h1>Lenya Successfully Installed</h1>
-
-    <p>Congratulations, you have successfully installed Lenya and imported the example content!</p>
-
-    <p>This text will not appear in the news overview, since only the first paragraph is displayed there.</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/news/installed/index_en.meta b/trunk/src/pubs/default/example-content/news/installed/index_en.meta
deleted file mode 100644
index 0f18496..0000000
--- a/trunk/src/pubs/default/example-content/news/installed/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: index_en.meta 473861 2006-11-12 03:51:14Z gregor $ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Successfully Installed</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Successfully Installed</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A news message.</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2007-03-22 15:54:35</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/example-content/search/index_de b/trunk/src/pubs/default/example-content/search/index_de
deleted file mode 100644
index 39088ea..0000000
--- a/trunk/src/pubs/default/example-content/search/index_de
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<usecase xmlns="http://apache.org/lenya/usecase/1.0" name="lucene.search"/>
diff --git a/trunk/src/pubs/default/example-content/search/index_de.meta b/trunk/src/pubs/default/example-content/search/index_de.meta
deleted file mode 100644
index 4f09557..0000000
--- a/trunk/src/pubs/default/example-content/search/index_de.meta
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:custom>
-<lenya:myMeta/>
-</lenya:custom>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Suche</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2006-06-12 13:43:14</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>usecase</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-<lenya:extension>xml</lenya:extension>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/search/index_en b/trunk/src/pubs/default/example-content/search/index_en
deleted file mode 100644
index 39088ea..0000000
--- a/trunk/src/pubs/default/example-content/search/index_en
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<usecase xmlns="http://apache.org/lenya/usecase/1.0" name="lucene.search"/>
diff --git a/trunk/src/pubs/default/example-content/search/index_en.meta b/trunk/src/pubs/default/example-content/search/index_en.meta
deleted file mode 100644
index 60ede88..0000000
--- a/trunk/src/pubs/default/example-content/search/index_en.meta
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:custom>
-<lenya:myMeta/>
-</lenya:custom>
-<lenya:dc>
-<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Search</dc:title>
-<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lenya</dc:creator>
-<dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-<dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2006-06-12 13:43:14</dc:date>
-<dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-<dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-</lenya:dc>
-<lenya:internal>
-<lenya:resourceType>usecase</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-<lenya:extension>xml</lenya:extension>
-  <lenya:mimeType>application/xml</lenya:mimeType>
-</lenya:internal>
-</lenya:meta>
-</lenya:document>
diff --git a/trunk/src/pubs/default/example-content/sitetree.xml b/trunk/src/pubs/default/example-content/sitetree.xml
deleted file mode 100644
index b7965d0..0000000
--- a/trunk/src/pubs/default/example-content/sitetree.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site i18n:attr="label" label="Authoring"
-    xmlns="http://apache.org/cocoon/lenya/sitetree/1.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation=
-        "http://apache.org/cocoon/lenya/sitetree/1.0
-        ../../../../resources/entities/sitetree.xsd"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
->
-    
-  <node id="index">
-    <label xml:lang="en">Home</label>
-    <label xml:lang="de">Home</label>
-  </node>
-  
-  <node id="tutorial">
-    <label xml:lang="en">Tutorial</label>
-    <label xml:lang="de">Tutorial</label>
-  </node>
-
-  <node id="concepts">
-    <label xml:lang="en">Concepts</label>
-    <label xml:lang="de">Konzepte</label>
-  </node>
-
-  <node id="links">
-    <label xml:lang="en">Apache Lenya Links</label>
-    <label xml:lang="de">Links zu Apache Lenya</label>
-  </node>
-  
-  <node id="features">
-    <label xml:lang="en">Features</label>
-    <label xml:lang="de">Funktionen</label>
-  </node>
-
-  <node id="doctypes">
-    <label xml:lang="en">Resource Type Examples</label>
-    <label xml:lang="de">Beispiele für Ressource-Typen</label>
-
-    <node id="xhtml-document">
-      <label xml:lang="en">XHTML Resource Type</label>
-      <label xml:lang="de">XHTML-Ressource-Typ</label>
-    </node>
-
-    <node id="links">
-      <label xml:lang="en">Links Resource Type</label>
-      <label xml:lang="de">Links-Ressource-Typ</label>
-    </node>
-
-    <node id="opendocument">
-      <label xml:lang="en">OpenDocument Resource Type</label>
-      <label xml:lang="de">OpenDocument-Ressource-Typ</label>
-    </node>
-
-    <node id="cforms" visibleinnav="true">
-      <label xml:lang="en">CForms Resource Type</label>
-      <label xml:lang="de">CForms-Ressource-Typ</label>
-    </node>
- </node>
-
-  <node id="search" visibleinnav="false">
-    <label xml:lang="en">Search</label>
-    <label xml:lang="de">Suche</label>
-  </node>
-  
-  <node id="news" visibleinnav="true">
-    <label xml:lang="en">News</label>
-    <label xml:lang="de">News</label>
-    <node id="installed" visibleinnav="false">
-      <label xml:lang="en">Lenya installed</label>
-      <label xml:lang="de">Lenya installiert</label>
-    </node>
-  </node>
-  
-</site>
diff --git a/trunk/src/pubs/default/example-content/tutorial/index_de b/trunk/src/pubs/default/example-content/tutorial/index_de
deleted file mode 100644
index 1569f01..0000000
--- a/trunk/src/pubs/default/example-content/tutorial/index_de
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Lenya Tutorial</title>
-  </head>
-  <body>
-    <h1>Tutorial</h1>
-
-    <p>Das folgende Tutorial gibt eine kurze Einführung in das Content Management
-    System Apache Lenya. Wir betrachten typische Anwendungsfälle,
-    wie zum Beispiel ein neues Dokument erstellen, bearbeiten und publizieren.</p>
-
-    <h2>Ein neues Dokument erstellen</h2>
-    
-    <p>
-      Um ein neues Dokument zu erstellen, klicken Sie auf den Menüpunkt
-      <em>Datei -> Neues XHTML-Dokument</em>. Sie erhalten ein Formular,
-      das Sie auffordert, einen Knoten-Namen und Navigationstitel für das
-      neue Dokument einzugeben. Der Knoten-Name wird zur Identifikation des
-      Dokumentes in der URL verwendet. Der Navigationstitel wird links im
-      Menü erscheinen.
-    </p>
-    <p>
-      Geben Sie "helloworld" als Knoten-Name und "Hello World" als Navigationstitel
-      ein und klicken Sie auf den "Erstellen"-Button. Sie werden zur neu erstellten
-      "Hello World"-Seite weitergeleitet. Links im Navigationsmenü können Sie
-      den neuen Eintrag sehen. Da Sie im "Erstellen"-Formular die Standard-Einstellung
-      "child" gewählt haben, wurde das neue Dokument als Kind-Dokument des
-      Ausgangs-Dokumentes eingefügt.
-    </p>
-
-    <h2>Ein Dokument bearbeiten</h2>
-    
-    <p>
-      Wie Sie sehen enthält das "Hello World"-Dokument bereits ein wenig
-      Beispiel-Inhalt. Um diesen zu ändern, können Sie das Dokument mit einem
-      der eingebauten Editoren bearbeiten:
-    </p>
-
-    <ul>
-      <li>Kupu: Eine gute Wahl für Internet-Explorer-Nutzer.</li>
-      <li>BXE: Eine gute Wahl für Firefox-Nutzer.</li>
-      <li>Formwizard: Eine gute Wahl für Mosaic-Nutzer. ;-)</li>
-      <li>Formulareditor: Für Nutzer, die die volle Kontrolle benötigen.</li>
-    </ul>
-    
-    <p>
-      Wählen Sie einen Editor aus dem "Bearbeiten"-Menü (abhängig von Ihrer Plattform)
-      und beginnen Sie, das neu erstellte Dokument zu bearbeiten.
-      In diesem Beispiel verwenden wir den BXE-Editor.
-      Das Lenya-Menü wird verschwinden und der BXE-Toolbar erscheint stattdessen.
-      Mit der rechten Maustaste erhalten Sie ein Kontext-Menü,
-      mit Hilfe dessen Sie Textbausteine kopieren, ausschneiden und einfügen können.
-      Sie können auch neue Elemente mittels des Kontext-Menüs in das Dokument
-      einfügen. Sobald Sie ihre Änderungen abgeschlossen haben, klicken Sie auf
-      "Save &amp; Exit" um zurück zur Lenya-Ansicht des Dokumentes zu gelangen.
-      Dort können Sie Ihre Änderungen betrachten.
-    </p>
-
-    <h2>Ein Dokument veröffentlichen</h2>
-    
-    <p>
-      Sobald Sie mit dem Inhalt Ihres Dokumentes zufrieden sind, können Sie
-      es publizieren, um es in der Live-Umgebung sichtbar zu machen.
-    </p>
-
-    <h3>Workflow</h3>
-    
-    <p>
-      Die Default-Publikation verwendet einen einfachen Workflow, der die Rollen
-      eines Editors und einen Prüfers involviert. Der Editor erstellt und
-      bearbeitet neue Dokumente und reicht sie zur Prüfung ein. Der Prüfer
-      überprüft das Dokument und publiziert es, so dass es auf der Live-Website
-      erscheint. 
-    </p>
-    
-    <p>
-      Der Nutzer <em>lenya</em>, mit dem Sie sich wahrscheinlich eingeloggt
-      haben, besitzt die Editor-Rolle, d.h. er kann neue Dokumente erstellen und
-      zur Prüfung einreichen. Die Nutzerin <em>alice</em> besitzt die Prüfer-Rolle,
-      die es ihr erlaubt, Dokumente zu prüfen und zu publizieren.
-    </p>
-    
-    <p>
-      Um Ihr neu erstelltes Dokument zu veröffentlichen, loggen Sie sich (falls
-      nötig) als Nutzer <em>lenya</em> ein und klicken Sie auf den Menüpunkt
-      <em>Arbeitsfluss -> Einreichen</em>. Loggen Sie sich nun aus (<em>Datei
-      -> Abmelden</em>) und loggen Sie sich als Nutzer <em>alice</em> ein.
-      Nun können Sie das Dokument mittels des Menüpunkts <em>Arbeitsfluss ->
-      Publizieren</em> veröffentlichen. Gegebenenfalls werden Sie auf dem
-      Bestätigungs-Bildschirm darauf hingewiesen, dass die zuerst das übergeordnete
-      Dokument publizieren müssen, da es sich noch nicht in der Live-Area
-      befindet. Um zu sehen, wie das Dokument in der Live-Ansicht aussieht,
-      klicken Sie auf den "Live"-Reiter im Lenya-Menü. Dieser wird ein neues
-      Browser-Fenster bzw. -Tab öffnen, das Ihnen die Seite in der Live-Area
-      zeigt.
-    </p>
-
-    <h2>Zeitsteuerung</h2>
-    
-    <p>
-      Apache Lenya erlaubt es, ein Dokument zu einem spezifischen Zeitpunkt zu
-      veröffentlichen. Wählen Sie dazu den Menüpunkt <em>Arbeitsfluss ->
-      Publizieren</em>. Anstatt jedoch unmittelbar auf "Publizieren" zu klicken,
-      geben Sie zunächst eine Zeit ein, zu der das Dokument veröffentlicht werden
-      soll. Im Reiter "Zeitsteuerung" in der Site-Area erhalten Sie einen Überblick
-      über die anstehenden Aufträge und deren Status. 
-    </p>
-    
-    <h2>Versionierung</h2>
-    
-    <p>
-      Jedes Mal wenn Sie ein Dokument editieren und den Editor verlassen, wird
-      eine neue Revision des Dokumentes angelegt. Alte Revisionen werden
-      aufbewahrt, Sie können sie auf dem Reiter "Revisionen" in der Site-Area
-      betrachten und ggf. das Dokument durch eine ältere Revision ersetzen.
-    </p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/tutorial/index_de.meta b/trunk/src/pubs/default/example-content/tutorial/index_de.meta
deleted file mode 100644
index 43af054..0000000
--- a/trunk/src/pubs/default/example-content/tutorial/index_de.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Ein kurzes Lenya Tutorial</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Tutorial</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">Ein kurzes Tutorial zur Benutzung von Lenya</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">de</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">Alle Rechte vorbehalten</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/example-content/tutorial/index_en b/trunk/src/pubs/default/example-content/tutorial/index_en
deleted file mode 100644
index c3dc3cf..0000000
--- a/trunk/src/pubs/default/example-content/tutorial/index_en
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-  <head>
-    <title>Lenya Tutorial</title>
-  </head>
-  <body>
-    <h1>Tutorial</h1>
-
-    <p>This tutorial gives you a short introduction into the Apache
-    Lenya content management system. We'll look at a typical use case
-    where we create a new document, edit and publish it.</p>
-
-    <h2>Creating a new document</h2>
-
-    <p>To create a new document, go to the <code>File -> New
-    XHTML Document</code> menu entry. You'll get a new screen that asks you
-    for an id and a name for this new document. The id will be used
-    internally as an identifier for the document and the name will be
-    used in the navigation. Let's use "helloworld" as id and "Hello World" as the
-    name of the new document. Now press <code>Create</code>. You will
-    be redirected back to the page where you originally invoked the
-    creation and you'll notice that the new document "Hello World" now shows
-    up as a sub-document of the Tutorial document in the
-    navigation.</p>
-
-    <p>This illustrates the fact that a new document is always created
-    as a sub-document of the document you're currently looking at. You
-    also notice how the navigation is built automatically.</p>
-
-    <h2>Editing a document</h2>
-
-    <p>To look at the newly created document click on the "Hello World" entry
-    in the navigation. You'll notice that the "Hello World" document already
-    contains some content. It was created from a sample XML
-    document. To change this sample content you will have to edit the
-    document. You can pick on of the following web-based WYSIWYG
-    editors:</p>
-
-    <ul>
-      <li>Kupu: This is a good choice for users of Internet Explorer.</li>
-      <li>BXE: This is a good choice for users of Mozilla.</li>
-      <li>HTML Forms: This is a good choice for users of Mosaic ;-)</li>
-      <li>One Form: For the power user who needs all the control</li>
-    </ul>
-
-    <p>Pick your choice of editor (based on your platform) and start
-    editing the newly created document by selecting the
-    <code>Edit->Edit with BXE</code> menu button. The Lenya menu will
-    disappear and the Bitflux toolbar will appear instead. You can use
-    the right mouse button to get a context sensitive menu from where
-    you can copy, cut and paste. You're also able to insert new
-    elements into the document from the context sensitive menu. Once
-    you're done with all your changes, press
-    <code>Save&amp;Exit</code> to get back. You'll see your changes in
-    the document.</p>
-    
-    <h2>Lenya Meta Data</h2>
-    
-    <p>The LenyaMetaDataGenerator lets you receive the meta data for any given document. In
-      this pub there is an example in the sitemap.xmap (pattern="meta") it only should
-      demonstrate one possible usage (you would need to edit this match for your own use case).
-      See the meta data from this page with <a href="meta?docid=/tutorial&amp;lang=en">
-      meta?docid=/tutorial&amp;lang=en</a>.</p>
-    
-    <h2>Publishing a document</h2>
-
-    <p>Once you are satisfied with the content of the document you
-    want to publish it to make it visible in the live area.</p> 
-
-    <h3>Workflow</h3>
-
-    <p>The default publication has a simple workflow configured which
-    involves an author and a reviewer. The author creates and edits a
-    new document and submits it for approval. The reviewer (obviously
-    :-)) reviews the document and publishes it so that it will appear
-    on the live site.
-
-    The user lenya (which you are probably currently logged in as) has
-    the role edit, i.e. he can create new documents and submit them
-    for approval (with <code>Workflow->Submit for review</code>). The
-    user alice has the role review which allows her to approve,
-    i.e. publish documents.</p>
-
-    <p>In order to publish your newly created document simply press
-    <code>Workflow->Sumbit</code> (as user lenya) to submit the
-    current document for approval. Now log out
-    (<code>File->Logout</code>), log back in as alice (use the same
-    password as for user lenya) and publish the current document by
-    selecting <code>Workflow->Publish</code>. You will get a
-    confirmation screen where you confirm your intention to publish
-    the document "Hello World" by pressing <code>Publish Now</code>. You might
-    have to publish the parent document ("Tutorial") first, as the
-    "Hello World" document will not be published if the parent document is not
-    in the live area yet.</p> <p>To check how the "Hello World" document looks
-    like in the live site click on the <code>live</code> tab in the
-    Lenya menu. This will open a new browser window showing you the
-    live site.</p>
-    
-    <h2>Scheduling</h2>
-    
-    <p>Apache Lenya allows you to publish a document at a specific
-    date. To do this select the <code>Workflow->Publish</code> menu
-    entry. Now instead of pressing <code>Publish</code> immediately,
-    specify the date and the time at which you wish to publish the
-    document first. Your document will be published at
-    the specified date. Use the <code>Scheduler</code> tab in the site
-    area to see the pending tasks and their status.</p>
-
-    <h2>Revision Control</h2>
-
-    <p>Every time you edit a document and exit the editor a new
-    revision of the document is stored. Old versions of the document
-    are kept and you can go back to an older version if you want to
-    undo some of the changes you applied to it. To see all available
-    versions of the current document press
-    <code>Tools->Rollback</code>. This will give you a list of all
-    previous versions. You can view a specific old version or rollback
-    to a specific old version by clicking on the appropriate links.</p>
-
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/example-content/tutorial/index_en.meta b/trunk/src/pubs/default/example-content/tutorial/index_en.meta
deleted file mode 100644
index 4b7993f..0000000
--- a/trunk/src/pubs/default/example-content/tutorial/index_en.meta
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id$ -->
-<lenya:document xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0">
-<lenya:meta>
-<lenya:internal>
-<lenya:resourceType>xhtml</lenya:resourceType>
-<lenya:contentType>xml</lenya:contentType>
-  <lenya:mimeType>application/xhtml+xml</lenya:mimeType>
-</lenya:internal>
-<lenya:dc>
-        <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">A short Lenya Tutorial</dc:title>
-        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Development Team</dc:creator>
-        <dc:subject xmlns:dc="http://purl.org/dc/elements/1.1/">Lenya Tutorial</dc:subject>
-        <dc:description xmlns:dc="http://purl.org/dc/elements/1.1/">A short tutorial on using Apache Lenya</dc:description>
-        <dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">Apache Software Foundation</dc:publisher>
-        <dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2005-01-31</dc:date>
-        <dc:type xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:source xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:language xmlns:dc="http://purl.org/dc/elements/1.1/">en</dc:language>
-        <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:coverage xmlns:dc="http://purl.org/dc/elements/1.1/"/>
-        <dc:rights xmlns:dc="http://purl.org/dc/elements/1.1/">All rights reserved</dc:rights>
-</lenya:dc>
-</lenya:meta>
-</lenya:document>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/java/src/org/apache/lenya/defaultpub/cms/publication/templating/Instantiator.java b/trunk/src/pubs/default/java/src/org/apache/lenya/defaultpub/cms/publication/templating/Instantiator.java
deleted file mode 100644
index fc94bc5..0000000
--- a/trunk/src/pubs/default/java/src/org/apache/lenya/defaultpub/cms/publication/templating/Instantiator.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.defaultpub.cms.publication.templating;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.MutableConfiguration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.cocoon.components.search.components.IndexManager;
-import org.apache.excalibur.source.ModifiableSource;
-import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.impl.FileSource;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationManager;
-// import org.apache.lenya.cms.publication.PublicationConfiguration;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-/**
- * Instantiate the publication.
- * 
- * @version $Id$
- */
-public class Instantiator extends AbstractLogEnabled implements
-        org.apache.lenya.cms.publication.templating.Instantiator, Serviceable {
-
-    protected static final String[] sourcesToCopy = {
-            "config/publication.xml",
-            "config/access-control/access-control.xml",
-            "config/access-control/policies/",
-            "config/access-control/usecase-policies.xml",
-            "config/workflow/workflow.xml",
-            "config/"
-                    + org.apache.cocoon.components.search.components.impl.IndexManagerImpl.INDEX_CONF_FILE };
-
-    // the following stuff should actually come from PublicationConfiguration,
-    // but there's currently no way to get at it.
-    // the correct solution suggested by andreas is not to meddle with config
-    // files here at all, but instead implement
-    // appropriate setter functions in the Publication class. postponed to after
-    // 2.0.
-    // thus, don't waste too much effort on this file, it's all an intermediate
-    // hack.
-    private static final String CONFIGURATION_FILE = "config/publication.xml";
-    private static final String CONFIGURATION_NAMESPACE = "http://apache.org/cocoon/lenya/publication/1.1";
-    private static final String ELEMENT_NAME = "name";
-    private static final String ELEMENT_TEMPLATE = "template";
-    private static final String ATTRIBUTE_ID = "id";
-    private static final String ELEMENT_RESOURCE_TYPES = "resource-types";// *
-    private static final String ELEMENT_RESOURCE_TYPE = "resource-type";// *
-    private static final String ELEMENT_MODULES = "modules";// *
-    private static final String ELEMENT_MODULE = "module";// *
-
-    /**
-     * @see org.apache.lenya.cms.publication.templating.Instantiator#instantiate(org.apache.lenya.cms.publication.Publication,
-     *      java.lang.String, java.lang.String)
-     */
-    public void instantiate(Publication template, String newPublicationId, String name)
-            throws Exception {
-
-        SourceResolver resolver = null;
-        Source publicationsSource = null;
-        PublicationManager pubManager = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            publicationsSource = resolver.resolveURI("context://"
-                    + Publication.PUBLICATION_PREFIX_URI);
-            String publicationsUri = publicationsSource.getURI();
-
-            for (int i = 0; i < sourcesToCopy.length; i++) {
-
-                String source = sourcesToCopy[i];
-                if (source.endsWith("/")) {
-                    copyDirSource(template, newPublicationId, resolver, publicationsUri, source);
-                } else {
-                    copySource(template, newPublicationId, resolver, publicationsUri, source);
-                }
-            }
-
-            updateMetaData(resolver, newPublicationId, name, publicationsUri);
-
-            configureSearchIndex(resolver, template, newPublicationId, publicationsUri);
-
-            updateConfiguration(resolver, template, newPublicationId, publicationsUri);
-            
-            pubManager = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
-            pubManager.addPublication(newPublicationId);
-
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-                if (publicationsSource != null) {
-                    resolver.release(publicationsSource);
-                }
-            }
-            if (pubManager != null) {
-                this.manager.release(pubManager);
-            }
-        }
-
-    }
-
-    protected void updateMetaData(SourceResolver resolver, String newPublicationId, String name,
-            String publicationsUri) throws MalformedURLException, IOException,
-            ParserConfigurationException, SAXException, SourceNotFoundException,
-            TransformerConfigurationException, TransformerException {
-        ModifiableSource metaSource = null;
-        try {
-            metaSource = (ModifiableSource) resolver.resolveURI(publicationsUri + "/"
-                    + newPublicationId + "/" + CONFIGURATION_FILE);
-            Document metaDoc = DocumentHelper.readDocument(metaSource.getInputStream());
-            NamespaceHelper helper = new NamespaceHelper(CONFIGURATION_NAMESPACE, "", metaDoc);
-            Element nameElement = helper.getFirstChild(metaDoc.getDocumentElement(), ELEMENT_NAME);
-            DocumentHelper.setSimpleElementText(nameElement, name);
-
-            save(metaDoc, metaSource);
-        } finally {
-            if (resolver != null) {
-                if (metaSource != null) {
-                    resolver.release(metaSource);
-                }
-            }
-        }
-    }
-
-    protected void updateConfiguration(SourceResolver resolver, Publication template,
-            String newPublicationId, String publicationsUri) throws MalformedURLException,
-            IOException, SAXException, ConfigurationException, SourceNotFoundException {
-        ModifiableSource configSource = null;
-        try {
-
-            configSource = (ModifiableSource) resolver.resolveURI(publicationsUri + "/"
-                    + newPublicationId + "/" + CONFIGURATION_FILE);
-
-            final boolean ENABLE_XML_NAMESPACES = true;
-            DefaultConfiguration config = (DefaultConfiguration) new DefaultConfigurationBuilder(
-                    ENABLE_XML_NAMESPACES).build(configSource.getInputStream());
-            addTemplateConfiguration(template, config);
-
-            removeChildren(config.getMutableChild(ELEMENT_MODULES), ELEMENT_MODULE);
-            removeChildren(config.getMutableChild(ELEMENT_RESOURCE_TYPES), ELEMENT_RESOURCE_TYPE);
-
-            OutputStream oStream = configSource.getOutputStream();
-            new DefaultConfigurationSerializer().serialize(oStream, config);
-            if (oStream != null) {
-                oStream.flush();
-                try {
-                    oStream.close();
-                } catch (Throwable t) {
-                    if (getLogger().isDebugEnabled()) {
-                        getLogger().debug("Exception closing output stream: ", t);
-                    }
-                    throw new RuntimeException("Could not write document: ", t);
-                }
-            }
-        } finally {
-            if (resolver != null) {
-                if (configSource != null) {
-                    resolver.release(configSource);
-                }
-            }
-        }
-    }
-
-    protected void addTemplateConfiguration(Publication template, DefaultConfiguration config)
-            throws ConfigurationException {
-        Configuration[] templateConfigs = config.getChildren(ELEMENT_TEMPLATE);
-        for (int i = 0; i < templateConfigs.length; i++) {
-            config.removeChild(templateConfigs[i]);
-        }
-        DefaultConfiguration templateConfig = new DefaultConfiguration(ELEMENT_TEMPLATE, null,
-                CONFIGURATION_NAMESPACE, "");
-        templateConfig.setAttribute(ATTRIBUTE_ID, template.getId());
-        config.addChild(templateConfig);
-    }
-
-    protected void removeChildren(MutableConfiguration config, String name)
-            throws ConfigurationException {
-        MutableConfiguration[] moduleConfigs = config.getMutableChildren(name);
-        for (int i = 0; i < moduleConfigs.length; i++) {
-            config.removeChild(moduleConfigs[i]);
-        }
-    }
-
-    protected void configureSearchIndex(SourceResolver resolver, Publication template,
-            String newPublicationId, String publicationsUri) throws MalformedURLException,
-            IOException, ParserConfigurationException, SAXException, SourceNotFoundException,
-            TransformerConfigurationException, TransformerException, ServiceException,
-            ConfigurationException {
-        ModifiableSource indexSource = null;
-        IndexManager indexManager = null;
-        try {
-
-            // RGE: Soc addition
-            // First, patch the xconf patchfile with the new publication name
-
-            String indexDir = "lenya/pubs/" + newPublicationId + "/work/lucene/index";
-
-            indexSource = (ModifiableSource) resolver
-                    .resolveURI(publicationsUri
-                            + "/"
-                            + newPublicationId
-                            + "/config/"
-                            + org.apache.cocoon.components.search.components.impl.IndexManagerImpl.INDEX_CONF_FILE);
-            Document indexDoc = DocumentHelper.readDocument(indexSource.getInputStream());
-            Element[] indexElement = DocumentHelper.getChildren(indexDoc.getDocumentElement(),
-                    null, "index");
-
-            for (int i = 0; i < indexElement.length; i++) {
-                String id = indexElement[i].getAttribute("id");
-                String area = id.split("-")[1];
-                indexElement[i].setAttribute("id", newPublicationId + "-" + area);
-                indexElement[i].setAttribute("directory", indexDir + "/" + area + "/index");
-            }
-
-            save(indexDoc, indexSource);
-
-            // Second, configure the index and add it to the IndexManager
-
-            indexManager = (IndexManager) manager.lookup(IndexManager.ROLE);
-
-            indexManager.addIndexes(indexSource);
-
-            // TODO: release all objects!
-
-            // RGE: End Soc addition
-
-        } finally {
-            if (indexManager != null) {
-                this.manager.release(indexManager);
-            }
-            if (resolver != null) {
-                this.manager.release(resolver);
-                if (indexSource != null) {
-                    resolver.release(indexSource);
-                }
-            }
-        }
-    }
-
-    protected void copySource(Publication template, String publicationId, SourceResolver resolver,
-            String publicationsUri, String source) throws MalformedURLException, IOException {
-        Source templateSource = null;
-        ModifiableSource targetSource = null;
-        try {
-            templateSource = resolver.resolveURI(publicationsUri + "/" + template.getId() + "/"
-                    + source);
-            targetSource = (ModifiableSource) resolver.resolveURI(publicationsUri + "/"
-                    + publicationId + "/" + source);
-
-            org.apache.lenya.cms.cocoon.source.SourceUtil.copy(templateSource, targetSource, false);
-        } finally {
-            if (templateSource != null) {
-                resolver.release(templateSource);
-            }
-            if (targetSource != null) {
-                resolver.release(targetSource);
-            }
-        }
-    }
-
-    protected void copyDirSource(Publication template, String publicationId,
-            SourceResolver resolver, String publicationsUri, String source)
-            throws MalformedURLException, IOException {
-        FileSource directory = new FileSource(publicationsUri + "/" + template.getId() + "/"
-                + source);
-        Collection files = directory.getChildren();
-        for (Iterator iter = files.iterator(); iter.hasNext();) {
-            FileSource filesource = (FileSource) iter.next();
-            if (filesource.isCollection()) {
-                copyDirSource(template, publicationId, resolver, publicationsUri, source + "/"
-                        + filesource.getName());
-            } else {
-                copySource(template, publicationId, resolver, publicationsUri, source + "/"
-                        + filesource.getName());
-            }
-        }
-    }
-
-    protected void save(Document metaDoc, ModifiableSource metaSource) throws IOException,
-            TransformerConfigurationException, TransformerException {
-        OutputStream oStream = metaSource.getOutputStream();
-        DocumentHelper.writeDocument(metaDoc, new OutputStreamWriter(oStream));
-        if (oStream != null) {
-            oStream.flush();
-            try {
-                oStream.close();
-            } catch (Throwable t) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Exception closing output stream: ", t);
-                }
-                throw new RuntimeException("Could not write document: ", t);
-            }
-        }
-    }
-
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-}
diff --git a/trunk/src/pubs/default/lenya.properties.xml b/trunk/src/pubs/default/lenya.properties.xml
deleted file mode 100644
index 4fdb7a6..0000000
--- a/trunk/src/pubs/default/lenya.properties.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<properties>
-  <!-- Note: You can define and override properties and use them  
-    in your sitemap like {properties:pubs.default.author} -->
-  
-  <!-- http://localhost:8888/default/authoring/index.html will show in the first heading: 
-    "Welcome to the Default Publication from {properties:pubs.default.author}!"-->
-  <!--<property name="pubs.default.author" value="Me"/>-->
-</properties>
diff --git a/trunk/src/pubs/default/lenya/content/publishing/publish-screen.xsp b/trunk/src/pubs/default/lenya/content/publishing/publish-screen.xsp
deleted file mode 100644
index 47df0a4..0000000
--- a/trunk/src/pubs/default/lenya/content/publishing/publish-screen.xsp
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page
-       language="java"
-       xmlns:xsp="http://apache.org/xsp"
-       xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-       xmlns:usecase="http://apache.org/cocoon/lenya/usecase/1.0"
-       xmlns:sch="http://apache.org/cocoon/lenya/scheduler/1.0"
-       xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-       >
-
-<usecase:publish>
-
-  <usecase:document-uuid><input:get-attribute module="page-envelope" name="document-uuid" as="string"/></usecase:document-uuid>
-  <usecase:uris><xsp-request:get-uri/></usecase:uris>
-  <usecase:sources><input:get-attribute module="page-envelope" as="string" name="document-path"/></usecase:sources>
-  <usecase:publication-id><input:get-attribute module="page-envelope" name="publication-id" as="string"/></usecase:publication-id>
-  <usecase:context-prefix><input:get-attribute module="page-envelope" name="context-prefix" as="string"/></usecase:context-prefix>
-  <usecase:area><input:get-attribute module="page-envelope" name="area" as="string"/></usecase:area>
-  <usecase:language><input:get-attribute module="page-envelope" name="document-language" as="string"/></usecase:language>
-  
-  <!-- FIXME: this should be defined in the workflow schema -->
-  <usecase:task-id>publish</usecase:task-id>
-
-  <!-- add date for scheduler -->
-  <xsp:logic>
-    java.util.GregorianCalendar calendar = new java.util.GregorianCalendar();
-  </xsp:logic>
-  
-  <sch:current-date>
-    <sch:year><xsp:expr>calendar.get(java.util.Calendar.YEAR)</xsp:expr></sch:year>
-    <sch:month><xsp:expr>calendar.get(java.util.Calendar.MONTH) + 1</xsp:expr></sch:month>
-    <sch:day><xsp:expr>calendar.get(java.util.Calendar.DAY_OF_MONTH)</xsp:expr></sch:day>
-    <sch:hour><xsp:expr>calendar.get(java.util.Calendar.HOUR_OF_DAY)</xsp:expr></sch:hour>
-    <sch:minute><xsp:expr>calendar.get(java.util.Calendar.MINUTE)</xsp:expr></sch:minute>
-    <sch:second><xsp:expr>calendar.get(java.util.Calendar.SECOND)</xsp:expr></sch:second>
-  </sch:current-date>
-  
-</usecase:publish>
-
-</xsp:page>
diff --git a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/homepage.xsl b/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/homepage.xsl
deleted file mode 100644
index 7fcef0a..0000000
--- a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/homepage.xsl
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:import href="xhtml.xsl"/>
-
-</xsl:stylesheet>  
diff --git a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/links.xsl b/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/links.xsl
deleted file mode 100644
index c861af9..0000000
--- a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/links.xsl
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://apache.org/lenya/pubs/default/1.0"
-  xmlns:links="http://apache.org/lenya/pubs/default/1.0"
->
-
-<xsl:import href="../../../../../../usecases/edit/forms/form.xsl"/>
-
-<xsl:template match="links:links">
-  
-<namespace prefix="" uri="http://apache.org/lenya/pubs/default/1.0"/>
-  
-<node name="Title" select="links/title[@tagID='{title/@tagID}']">
-  <content><input type="text" name="&lt;xupdate:update select=&quot;/links/title[@tagID='{title/@tagID}']&quot;&gt;" size="40"><xsl:attribute name="value"><xsl:value-of select="title"/></xsl:attribute></input></content>
-</node>
-
-<xsl:apply-templates select="link"/>
-
-</xsl:template>
-
-</xsl:stylesheet>  
diff --git a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml-common.xsl b/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml-common.xsl
deleted file mode 100644
index d67c41c..0000000
--- a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml-common.xsl
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml-common.xsl 153165 2005-02-10 06:01:01Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:template match="xhtml:body">
-<xsl:apply-templates mode="body"/>
-</xsl:template>
-
-<xsl:template name="insertmenu">
-<xsl:param name="path"/>
-<xsl:variable name="ns">namespace=&quot;http://www.w3.org/1999/xhtml&quot;</xsl:variable>
-<insert-after select="{$path}[@tagID='{@tagID}']">
-  <element name="Paragraph" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:p&quot; {$ns}&gt;New Paragraph&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Table" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:table&quot; {$ns}&gt;&lt;tr&gt;&lt;td&gt;New Table&lt;/td&gt;&lt;/tr&gt;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Unordered List" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:ul&quot; {$ns}&gt;&lt;li&gt;New Unordered List&lt;/li&gt;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Ordered List" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:ol&quot; {$ns}&gt;&lt;li&gt;New Ordered List&lt;/li&gt;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Headline 1" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h1&quot; {$ns}&gt;New Headline 1&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Headline 2" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h2&quot; {$ns}&gt;New Headline 2&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Headline 3" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h3&quot; {$ns}&gt;New Headline 3&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-  <element name="Headline 4" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h4&quot; {$ns}&gt;New Headline 4&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
-</insert-after>
-</xsl:template>
-
-  <xsl:template match="xhtml:p" mode="body">
-    <xsl:choose >
-      <xsl:when test="xhtml:object">
-	<xsl:apply-templates select="xhtml:object" mode="body"/>
-      </xsl:when>
-      <xsl:otherwise>
-	<node name="Paragraph" select="/*/xhtml:body/xhtml:p[@tagID='{@tagID}']">
-	  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:p[@tagID='{@tagID}']&quot;/&gt;"/></action>
-	  <content>
-	    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:p[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="30">
-	      <xsl:copy-of select="node()"/>
-	    </textarea>
-	  </content>
-	</node>
-	
-	<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:p</xsl:with-param></xsl:call-template>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-<xsl:template match="xhtml:table" mode="body">
-<node name="Table" select="/*/xhtml:body/xhtml:table[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:table[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:table[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="30">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:table</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:ul" mode="body">
-<node name="Unordered List" select="/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="30">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:ul</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:ol" mode="body">
-<node name="Ordered List" select="/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="30">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:ol</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:h1" mode="body">
-<node name="Headline 1" select="/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="3">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h1</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-    
-<xsl:template match="xhtml:h2" mode="body">
-<node name="Headline 2" select="/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="3">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h2</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:h3" mode="body">
-<node name="Headline 3" select="/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="3">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h3</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:h4" mode="body">
-<node name="Headline 4" select="/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']&quot;/&gt;"/></action>
-  <content>
-    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']&quot;&gt;" cols="80" rows="3">
-      <xsl:copy-of select="node()"/>
-    </textarea>
-  </content>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h4</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-<xsl:template match="xhtml:hr" mode="body">
-<node name="Horizontal Rule" select="/*/xhtml:body/xhtml:hr[@tagID='{@tagID}']">
-  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:hr[@tagID='{@tagID}']&quot;/&gt;"/></action>
-</node>
-
-<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:hr</xsl:with-param></xsl:call-template>
-
-</xsl:template>
-
-  <xsl:template match="xhtml:object" mode="body">
-    <node name="Object">
-      <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:p/xhtml:object[@tagID='{@tagID}']&quot;/&gt;"/></action>
-      <content>
-	<input type="text" name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:p/xhtml:object[@tagID='{@tagID}']&quot;&gt;" size="80">
-	  <xsl:attribute name="value">
-      <xsl:value-of select="@data"/>
-	  </xsl:attribute>
-	</input>
-      </content>
-    </node>
-    
-    <xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body</xsl:with-param></xsl:call-template>
-    
-  </xsl:template>
-
-  <xsl:template match="lenya:asset" mode="body">
-    <node name="Asset">
-      <action>
-	<delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/lenya:asset[@tagID='{@tagID}']&quot;/&gt;"/>
-      </action>
-      <content>
-	<input type="text" name="&lt;xupdate:update select=&quot;/*/xhtml:body/lenya:asset[@tagID='{@tagID}']&quot;&gt;" size="80">
-	  <xsl:attribute name="value">
-	    <xsl:value-of select="@src"/>
-	  </xsl:attribute>
-	</input>
-      </content>
-    </node>
-
-    <xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body</xsl:with-param></xsl:call-template>
-    
-  </xsl:template>
-
-</xsl:stylesheet>  
diff --git a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml.xsl b/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml.xsl
deleted file mode 100644
index 0dd2160..0000000
--- a/trunk/src/pubs/default/lenya/modules/editors/usecases/forms/xhtml.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
->
-
-<xsl:import href="fallback://lenya/modules/editors/usecases/forms/form.xsl"/>
-<xsl:import href="xhtml-common.xsl"/>
-
-<xsl:template match="xhtml:html">
-
-<namespace prefix="xhtml" uri="http://www.w3.org/1999/xhtml"/>
-  
-<xsl:apply-templates select="xhtml:body"/>
-
-</xsl:template>
-
-</xsl:stylesheet>  
diff --git a/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/search.xsl b/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/search.xsl
deleted file mode 100644
index e13849f..0000000
--- a/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/search.xsl
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: search.xsl 76019 2004-11-16 20:13:32Z gregor $ -->
-
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  exclude-result-prefixes="nav"
-  >
-  
-  <xsl:param name="root"/>
-  <xsl:param name="chosenlanguage"/>
-  <xsl:param name="defaultlanguage"/>
-  
-  <xsl:variable name="languageSuffix">
-    <xsl:if test="$chosenlanguage != $defaultlanguage">
-      <xsl:text>_</xsl:text>
-      <xsl:value-of select="$chosenlanguage"/>
-    </xsl:if>
-  </xsl:variable>
-  
-  <xsl:template match="nav:site">
-    <div id="search">
-      <form action="{$root}search{$languageSuffix}.html" id="form-search">
-        <p>
-          <input class="searchfield" type="text" name="queryString" alt="Search field"/>
-          <input type="hidden" value="20" name="pageLength"/>
-          <input class="searchsubmit" type="submit" value="Go" name="input-go"/>
-        </p>
-      </form>
-    </div>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/tabs.xsl b/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/tabs.xsl
deleted file mode 100644
index d9b5627..0000000
--- a/trunk/src/pubs/default/lenya/modules/sitetree/xslt/navigation/tabs.xsl
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: tabs.xsl 189880 2005-06-10 02:36:09Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
-    xmlns="http://www.w3.org/1999/xhtml"
-    exclude-result-prefixes="nav"
-    >
-    
-<xsl:import href="template-fallback:default://lenya/modules/sitetree/xslt/navigation/tabs.xsl"/>
-
-<xsl:template match="nav:site">
-    
-  <div id="tabs">
-  <table border="0" cellpadding="0" cellspacing="0">
-    <tr>
-    <xsl:call-template name="pre-separator"/>
-    <xsl:for-each select="nav:node">
-      <xsl:if test="position() &gt; 1 and @visibleinnav = 'true'">
-        <xsl:call-template name="separator"/>
-      </xsl:if>
-      
-      <xsl:choose>
-        <xsl:when test="@visibleinnav = 'false'"/>
-        <xsl:when test="descendant-or-self::nav:node[@current = 'true']">
-          <xsl:call-template name="tab-selected"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="tab"/>
-        </xsl:otherwise>
-      </xsl:choose>
-        
-    </xsl:for-each>
-    <xsl:call-template name="post-separator"/>
-    </tr>
-  </table>
-  </div>
-
-</xsl:template>
-
-
-<xsl:template name="tab">
-  <td><div class="tab"><xsl:call-template name="label"/></div></td>
-</xsl:template>
-
-
-<xsl:template name="tab-selected">
-  <td><div class="tab-selected"><xsl:call-template name="label"/></div></td>
-</xsl:template>
-
-
-<xsl:template name="separator">
-    <td><div class="tab-separator">&#160;</div></td>
-</xsl:template>
-
-
-<xsl:template name="pre-separator">
-    <td><div class="tab-pre-separator">&#160;</div></td>
-</xsl:template>
-
-
-<xsl:template name="post-separator">
-    <td class="tab-post-separator"><div class="tab-separator">&#160;</div></td>
-</xsl:template>
-
-
-</xsl:stylesheet> 
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui.xml
deleted file mode 100644
index 2296cab..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-   
-   $Id$
-   
--->
-
-<catalogue xml:lang="en">
-  
-  <message key="publication-title">Welcome to the Default Publication from {0}!</message>
- 
-  <message key="default.createdoc.idtaken">The ID you've entered is already taken. Please choose another one.</message>
- 
-  <message key="Create new language version">Create new language version</message>
-  <message key="New language for existing Document">New language for existing Document</message>
-  <message key="default.createdoc.info.all-language-versions-exists">There are already versions of this document for all languages.</message>
-
-  <message key="last-published">This page was last published at {0} by {1}.</message>
-  <message key="never-published">This page has not been published yet.</message>
-
-  <message key="error-generic-comment">Please contact your system administrator.</message>
-  
-</catalogue>
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_de.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 1dbd163..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-  
- 
-   $Id$ 
-   
--->
-
-<catalogue xml:lang="de">
-
-  <message key="publication-title">Willkommen zur Default-Publikation von {0}!</message>
-  
-  <message key="default.doc.create.idtaken">Die eingebene ID ist schon vergeben. Bitte wä;hlen Sie eine andere ID.</message>
-
-  <message key="Create new language version">Neue Sprachversion anlegen</message>
-  <message key="New language for existing Document">Neue Sprachversion für existierendes Dokument anlegen</message>
-  <message key="default.createdoc.info.all-language-versions-exists">Das Dokument existiert bereits in allen notwendigen Sprachen.</message>
-  
-  <message key="last-published">Diese Seite wurde zuletzt publiziert am {0} von {1}.</message>
-  <message key="never-published">Diese Seite wurde noch nicht publiziert.</message>
-  
-  <message key="error-generic-comment">Bitte kontaktieren Sie den Systemadministrator.</message>
-  
-</catalogue>
-
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_es.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_es.xml
deleted file mode 100644
index f4d9cee..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_es.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-   
-   $Id$
-
-   @translators Salvador Cobrero <salvador_cobrero_jimenez at dmr-consulting dot com>
-   
--->
-
-<catalogue xml:lang="es">
-
-  <message key="default.createdoc.idtaken">El ID introducido ya existe. Por favor, escoja otro.</message>
- 
-  <message key="Create new language version">Crear nueva version de idioma</message>
-  <message key="New language for existing Document">Nuevo idioma para el Documento existente</message>
-  <message key="default.createdoc.info.all-language-versions-exists">Ya existen versiones de este documento para todos los idiomas.</message>
-
-</catalogue>
-
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_fr.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_fr.xml
deleted file mode 100644
index 51ca26a..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_fr.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-   
-   $Id$
-   
-   @translators Olivier Lange <wire at petit-atelier dot ch>
-   
--->
-
-<catalogue xml:lang="fr">
-
-  <message key="default.createdoc.idtaken">L'identifiant (ID) que vous avez choisi est déjà utilisé. Veuillez en choisir un autre.</message>
-  <message key="Create new language version">Créer une nouvelle traduction</message>
-  <message key="New language for existing Document">Nouvelle traduction d'un document existant</message>
-  <message key="default.createdoc.info.all-language-versions-exists">Les traductions de ce document existent déjà dans toutes les langues.</message>
-  
-</catalogue>
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_it.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_it.xml
deleted file mode 100644
index b62d113..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_it.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-   
-   $Id$
-   @translators Giampaolo Trapasso  <trapo at trapo dot it>
--->
-<catalogue xml:lang="it">
-	<message key="default.createdoc.idtaken">L'ID scelto è già utilizzato. Scegliere un altro ID.</message>
-	<message key="Create new language version">Crea nuova lingua</message>
-	<message key="New language for existing Document">Nuova lingua per un Documento esistente</message>
-	<message key="default.createdoc.info.all-language-versions-exists">Esistono già versioni di questo documento per tutte le lingue.</message>
-</catalogue>
diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_pt.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_pt.xml
deleted file mode 100644
index e26e48f..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_pt.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-  $Id: cmsui_pt.xml 111676 2005-06-15 23:50:43Z gregor $

-

-   @translators Rolando Isidoro <rli at uninova dot pt>

-

--->

-

-<catalogue xml:lang="pt">

-

-  <message key="default.createdoc.idtaken">O ID introduzido já existe. Por favor introduza outro.</message>

- 

-  <message key="Create new language version">Criar nova versão de idioma</message>

-  <message key="New language for existing Document">Novo idioma para o Documento existente</message>

-  <message key="default.createdoc.info.all-language-versions-exists">Já existem versões deste documento em todos os idiomas.</message>

-

-</catalogue>

-

diff --git a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_ru.xml b/trunk/src/pubs/default/lenya/resources/i18n/cmsui_ru.xml
deleted file mode 100644
index b854c89..0000000
--- a/trunk/src/pubs/default/lenya/resources/i18n/cmsui_ru.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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.

-

-   

-   $Id: cmsui.xml 153091 2005-02-09 17:27:19Z edith $

-   

--->

-

-<catalogue xml:lang="ru">

- 

-  <message key="default.createdoc.idtaken">Введённый идентификатор занят. Выберете дьругой, пожалуйста.</message>

-  <message key="Create new language version">Создать версию на другом языке</message>

-  <message key="New language for existing Document">Перевести существующий документ</message>

-  <message key="default.createdoc.info.all-language-versions-exists">Версии этого документа уже есть на всех языках.</message>

-

-  <message key="last_published">Последняя публикация</message>

-</catalogue>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/lenya/usecases/tab/meta.jx b/trunk/src/pubs/default/lenya/usecases/tab/meta.jx
deleted file mode 100644
index 775f743..0000000
--- a/trunk/src/pubs/default/lenya/usecases/tab/meta.jx
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
-           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-           xmlns="http://www.w3.org/1999/xhtml" 
-           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
-  <jx:import uri="fallback://lenya/usecases/tab/head.jx"/>
-  <page:body>
-    <jx:import uri="fallback://lenya/usecases/tab/sitetree.jx"/>
-    <jx:import uri="fallback://lenya/usecases/templates/tabs.jx"/>
-    <div id="contentblock1" class="lenya-tab-sitetree">
-      <form id="form-meta">
-        <table class="lenya-table-noborder">
-          <tr>
-            <td colspan="2">
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="title"><i18n:text>Title</i18n:text>:</label></td>
-            <td>
-              <input type="text" id="title" name="meta.dc.title" class="lenya-form-element" value="${usecase.getParameter('meta.dc.title')}"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="subject"><i18n:text>Subject</i18n:text>:</label></td>
-            <td>
-              <input type="text" id="subject" name="meta.dc.subject" class="lenya-form-element" value="${usecase.getParameter('meta.dc.subject')}"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="description"><i18n:text>Description</i18n:text>:</label></td>
-            <td>
-              <!-- N.B.: do not put spaces or carriage returns inside the
-                   textarea element - these would be rendered -->
-              <textarea id="description" name="meta.dc.description" rows="3" class="lenya-form-element"><jx:out value="${usecase.getParameter('meta.dc.description')}"/></textarea>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="publisher"><i18n:text>Publisher</i18n:text>:</label></td>
-            <td>
-              <input type="text" id="publisher" name="meta.dc.publisher" class="lenya-form-element" value="${usecase.getParameter('meta.dc.publisher')}"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="rights"><i18n:text>Rights</i18n:text>:</label></td>
-            <td>
-              <input type="text" id="rights" name="meta.dc.rights" class="lenya-form-element" value="${usecase.getParameter('meta.dc.rights')}"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><i18n:text>Creation Date</i18n:text>:</td>
-            <td>
-              <jx:out value="${usecase.getParameter('meta.dc.date')}"/>
-            </td>
-          </tr>
-          <tr>
-            <td class="lenya-entry-caption"><label for="creator"><i18n:text>Creator</i18n:text>:</label></td>
-            <td>
-              <input type="hidden" id="creator" name="meta.dc.creator" class="lenya-form-element" value="${usecase.getParameter('meta.dc.creator')}"/>
-              <jx:out value="${usecase.getParameter('meta.dc.creator')}"/>
-            </td>
-          </tr>
-          <jx:if test="${usecase.getParameter('showCustom').equals('true')}">
-            <tr>
-              <td colspan="2" class="lenya-entry-caption">
-                <h2><i18n:text>Custom metadata</i18n:text></h2>
-              </td>
-            </tr>
-            <tr>
-              <td class="lenya-entry-caption"><label for="myMeta"><i18n:text>My
-                custom metadata</i18n:text>:</label></td>
-              <td>
-                <input type="text" id="myMeta" name="meta.custom.myMeta"
-                  class="lenya-form-element"
-                  value="${usecase.getParameter('meta.custom.myMeta')}"/>
-              </td>
-            </tr>
-          </jx:if>
-          <tr>
-            <td/>
-            <td>
-              <br/>
-              <jx:if
-                test="${usecase.getParameter('showCustom').equals('false')}">
-                <input i18n:attr="value" name="submit" type="submit"
-                  value="Show custom metadata"
-                  onClick="this.form.showCustom.value='true';"/>
-              </jx:if>
-              <jx:if
-                test="${usecase.getParameter('showCustom').equals('true')}">
-                <input i18n:attr="value" name="submit" type="submit"
-                  value="Hide custom metadata"
-                  onClick="this.form.showCustom.value='false';"/>
-              </jx:if>
-              <jx:choose>
-                <jx:when
-                  test="${usecase.getParameter('document').getArea().equals('authoring') &amp;&amp; ! usecase.hasErrors()}">
-                  <input i18n:attr="value" name="submit" type="submit"
-                    value="Save"/>
-                </jx:when>
-                <jx:otherwise>
-                  <input i18n:attr="value" name="submit" type="submit"
-                    disabled="disabled" value="Save"/>
-                </jx:otherwise>
-              </jx:choose>
-            </td>
-          </tr>
-        </table>
-        <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
-        <input type="hidden" id="showCustom" name="showCustom" value="${usecase.getParameter('showCustom')}"/>
-        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
-      </form>
-    </div>
-  </page:body>
-</page:page>
\ No newline at end of file
diff --git a/trunk/src/pubs/default/lenya/xslt/exception/generic.xsl b/trunk/src/pubs/default/lenya/xslt/exception/generic.xsl
deleted file mode 100644
index c124d4c..0000000
--- a/trunk/src/pubs/default/lenya/xslt/exception/generic.xsl
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsl 589872 2007-10-29 21:47:39Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:error="http://apache.org/cocoon/error/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  
-  <xsl:param name="root"/>
-  
-  <xsl:template match="error:notify">
-    <html>
-      <head>
-        <title><i18n:text i18n:key="error-generic" /></title>
-        <link rel="stylesheet" href="{$root}/css/page.css" type="text/css"/>
-      </head>
-      <body>
-        
-        <div id="page">
-          <table width="100%" cellpadding="0" cellspacing="0" border="0">
-            <tr>
-              <td/>
-              <td id="project-logo"><img src="{$root}/images/project-logo.png" alt="project logo"/></td>
-            </tr>
-          </table>
-          <table width="100%" border="0" cellpadding="0" cellspacing="0">
-            <tr>
-              <td valign="top" style="width: 230px"/>
-              <td valign="top">
-                <div id="main">
-                  <div id="body">
-                    <h1>
-                      <i18n:text i18n:key="error-generic" />
-                    </h1>
-                    <p>
-                      <i18n:text i18n:key="error-generic-comment"/>
-                    </p>
-                    <xsl:comment>
-                      <xsl:value-of select="error:message"/>
-                      <xsl:value-of select="error:description"/>
-                      <xsl:apply-templates select="error:extra"/>
-                    </xsl:comment>
-                  </div>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-  
-  
-  <xsl:template match="error:extra">
-    <xsl:choose>
-      <xsl:when test="contains(@error:description,'stacktrace')">
-        <xsl:value-of select="@error:description"/>
-        <xsl:value-of select="translate(.,'&#13;','')"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="."/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/menus.xmap b/trunk/src/pubs/default/menus.xmap
deleted file mode 100644
index 0b1bbdc..0000000
--- a/trunk/src/pubs/default/menus.xmap
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="live/**">
-        <map:generate type="serverpages" src="fallback://lenya/content/menus/live.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- all document types -->
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="fallback://config/menus/generic.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/pubs/default/modules/homepage/config/cocoon-xconf/resource-type-homepage.xconf b/trunk/src/pubs/default/modules/homepage/config/cocoon-xconf/resource-type-homepage.xconf
deleted file mode 100644
index 484df00..0000000
--- a/trunk/src/pubs/default/modules/homepage/config/cocoon-xconf/resource-type-homepage.xconf
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
-
-<xconf xpath="/cocoon/resource-types" unless="/cocoon/resource-types/component-instance[@name = 'homepage']">
-
-  <component-instance name="homepage"
-                      logger="lenya.resourcetypes.homepage"
-                      class="org.apache.lenya.cms.publication.ResourceTypeImpl">
-    <schema 
-       uri="fallback://lenya/modules/homepage/resources/schemas/homepage.rng"
-       namespace="http://relaxng.org/ns/structure/0.9"
-    />
-
-    <!-- Default time in seconds until the resource-type has expired -->  
-    <expires seconds="0" />
-
-    <sample 
-       mime-type="application/xhtml+xml"
-       uri="fallback://lenya/modules/homepage/samples/homepage.xml"
-    />
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@href"/>
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@data"/>
-    <link-attribute xpath="//*[namespace-uri() = 'http://www.w3.org/1999/xhtml']/@src"/>
-    <format name="xhtml" uri="cocoon://modules/homepage/xhtml.xml"/>
-    <format name="luceneIndex" uri="cocoon://modules/xhtml/lucene-index"/>
-    <format name="webdavGET" uri="cocoon://modules/xhtml/davget.xml"/>
-    <!-- "xslt-clean" format is used by webDAV (and other editors?) to "clean" xml content before it is validated/saved -->
-    <format name="xslt-clean" uri="fallback://lenya/modules/homepage/xslt/clean-homepage.xsl"/>
-  </component-instance>
-
-</xconf>
diff --git a/trunk/src/pubs/default/modules/homepage/config/menus/homepage.xsp b/trunk/src/pubs/default/modules/homepage/config/menus/homepage.xsp
deleted file mode 100644
index 6b4dc6d..0000000
--- a/trunk/src/pubs/default/modules/homepage/config/menus/homepage.xsp
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: generic.xsp 155806 2005-03-01 17:55:42Z andreas $ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:xsp-request="http://apache.org/xsp/request/2.0"
-    xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
->
-
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.Publication</xsp:include>
-  </xsp:structure>
-  
-  <menu>
-
-    <menus>
-      <menu i18n:attr="name" name="Edit">
-          <xsp:logic>
-            try {
-                Object doc = <input:get-attribute module="page-envelope" as="object" name="document"/>;
-                if (doc instanceof Document &amp;&amp; ((Document) doc).exists()) {
-                    String doctype = <input:get-attribute module="page-envelope" as="string" name="document-type"/>;
-                    if ("homepage".equals(doctype)) {
-                        <block areas="authoring">
-                          <item uc:usecase="kupu.edit" href="?">
-                             <i18n:text>With Kupu</i18n:text>
-                          </item>
-                          <item uc:usecase="bxe.edit" href="?">
-                            <i18n:text>With BXE</i18n:text>
-                          </item>
-                          <item uc:usecase="editors.forms">
-                            <xsp:attribute name="href"><xsp:expr>"?form=" + doctype</xsp:expr></xsp:attribute>
-                            <i18n:text>With Forms</i18n:text>
-                          </item>
-                          <item uc:usecase="editors.oneform" href="?">
-                            <i18n:text>With one Form</i18n:text>
-                          </item>
-                        </block>
-                    }
-                }
-            }
-            catch (Exception e) {
-                throw new ProcessingException("Error during menu generation: ", e);
-            }
-          </xsp:logic>
-      </menu>
-      
-    </menus>
-    
-  </menu>
-</xsp:page>
diff --git a/trunk/src/pubs/default/modules/homepage/config/module.xml b/trunk/src/pubs/default/modules/homepage/config/module.xml
deleted file mode 100644
index b7bbff4..0000000
--- a/trunk/src/pubs/default/modules/homepage/config/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xml 374687 2006-02-03 15:24:55Z michi $ -->
-
-<module xmlns="http://apache.org/lenya/module/1.0">
-  <id>org.apache.lenya.modules.homepage</id>
-  <package>org.apache.lenya.modules</package>
-  <version>0.1-dev</version>
-  <name>Homepage</name>
-  <lenya-version>@lenya.version@</lenya-version>
-  <description>Homepage resource type for default publication.</description>
-</module>
diff --git a/trunk/src/pubs/default/modules/homepage/menus.xmap b/trunk/src/pubs/default/modules/homepage/menus.xmap
deleted file mode 100644
index 82efc79..0000000
--- a/trunk/src/pubs/default/modules/homepage/menus.xmap
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menus.xmap 178738 2005-05-27 03:42:09Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-    	
-      <map:match pattern="**">
-        <map:generate type="serverpages" src="config/menus/homepage.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/pubs/default/modules/homepage/resources/css/homepage.css b/trunk/src/pubs/default/modules/homepage/resources/css/homepage.css
deleted file mode 100644
index 5f614d8..0000000
--- a/trunk/src/pubs/default/modules/homepage/resources/css/homepage.css
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Put your doctype-specific CSS here */
-
diff --git a/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui.xml b/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui.xml
deleted file mode 100644
index d578222..0000000
--- a/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-homepage">Homepage</message>
-  

-</catalogue>

diff --git a/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui_de.xml b/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui_de.xml
deleted file mode 100644
index c885b39..0000000
--- a/trunk/src/pubs/default/modules/homepage/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <message key="resourceType-homepage">Homepage</message>
-  

-</catalogue>

-

diff --git a/trunk/src/pubs/default/modules/homepage/resources/schemas/homepage.rng b/trunk/src/pubs/default/modules/homepage/resources/schemas/homepage.rng
deleted file mode 100644
index 757d5f8..0000000
--- a/trunk/src/pubs/default/modules/homepage/resources/schemas/homepage.rng
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xhtml.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-
-<!--+
-    | XHTML doctype
-    +-->
-
-<!--+
-    | Namespaces:
-    | lenya namespace is required for embedding assets.
-    +-->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-    xmlns="http://relaxng.org/ns/structure/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-    >
-
-<include href="fallback://lenya/modules/xhtml/resources/schemas/xhtml.rng"/>
-
-</grammar>
diff --git a/trunk/src/pubs/default/modules/homepage/samples/homepage.xml b/trunk/src/pubs/default/modules/homepage/samples/homepage.xml
deleted file mode 100644
index 588c40c..0000000
--- a/trunk/src/pubs/default/modules/homepage/samples/homepage.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" 
-      xmlns:xhtml="http://www.w3.org/1999/xhtml" 
-      xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
->
-  <head>
-    <title>Default Publication</title>
-  </head>
-  <body>
-    <h1>Default Publication</h1>
-    <p>Welcome to the default Lenya publication!</p>
-    <p>The purpose of this publication is</p>
-    <ul>
-      <li>to show beginners the basic functionality of the Lenya CMS,</li>
-      <li>to provide an "out of the box" publication that can be easily adapted and used, and</li>
-      <li>to provide a basis for reference implementations of new concepts and best practices.</li>
-    </ul>
-    <p>
-    You won't find any fancy and confusing bells and whistles here, but the
-    publication contains everything you need to get started.
-    </p>
-  </body>
-</html>
diff --git a/trunk/src/pubs/default/modules/homepage/sitemap.xmap b/trunk/src/pubs/default/modules/homepage/sitemap.xmap
deleted file mode 100644
index a80b499..0000000
--- a/trunk/src/pubs/default/modules/homepage/sitemap.xmap
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: doctypes.xmap 179488 2005-06-02 02:29:39Z gregor $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:pipelines>
-
-    <map:pipeline>
-      <!-- View Revision? -->
-      <map:match pattern="*.xml">
-        <map:match type="step" pattern="view-revision">
-          <map:generate type="serverpages" src="fallback://lenya/content/rc/view.xsp">
-          </map:generate>
-          <map:transform src="fallback://lenya/xslt/rc/toDoc.xsl"/>
-          <map:transform src="fallback://lenya/modules/homepage/xslt/homepage2xhtml.xsl">
-            <map:parameter name="rendertype" value="{1}"/>
-            <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-            <map:parameter name="language" value="{page-envelope:document-language}"/>
-          </map:transform>
-          <map:serialize type="xml"/>
-        </map:match>
-      </map:match>
-      
-      <map:match pattern="news-*_*.xml">
-        <map:select type="resource-exists">
-          <map:when test="site:/{2}/news?format={1}">
-            <map:generate src="site:/{2}/news?format={1}"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate src="fallback://lenya/content/util/empty.xml"/>
-          </map:otherwise>
-        </map:select>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- parametrized doctype matcher -->
-      <!-- pattern="{rendertype}" -->
-      <map:match pattern="*.xml">
-        <map:generate src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}"/>
-        <map:transform src="fallback://lenya/modules/homepage/xslt/homepage2xhtml.xsl">
-          <map:parameter name="rendertype" value="{request-param:rendertype}"/>
-          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-          <map:parameter name="pubId" value="{page-envelope:publication-id}"/>
-        </map:transform>
-        <map:transform type="cinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/pubs/default/modules/homepage/xslt/clean-homepage.xsl b/trunk/src/pubs/default/modules/homepage/xslt/clean-homepage.xsl
deleted file mode 100644
index cbc11b5..0000000
--- a/trunk/src/pubs/default/modules/homepage/xslt/clean-homepage.xsl
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    >
-
-  <xsl:import href="fallback://lenya/modules/xhtml/xslt/clean-xhtml.xsl"/>
-
-</xsl:stylesheet> 
diff --git a/trunk/src/pubs/default/modules/homepage/xslt/homepage2xhtml.xsl b/trunk/src/pubs/default/modules/homepage/xslt/homepage2xhtml.xsl
deleted file mode 100644
index 364729d..0000000
--- a/trunk/src/pubs/default/modules/homepage/xslt/homepage2xhtml.xsl
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-  xmlns:ci="http://apache.org/cocoon/include/1.0" 
-  >
-  
-  <xsl:import href="fallback://lenya/modules/xhtml/xslt/xhtml2xhtml.xsl"/>
-  
-  <xsl:param name="pubId"/>
-  <xsl:param name="contextPath"/>
-  <xsl:param name="language"/>
-  <xsl:param name="newsPath"/>
-  
-  <xsl:template match="/xhtml:html">
-    <xsl:copy-of select="lenya:meta"/>
-    <html>
-      <head>
-        <link rel="stylesheet" href="{$contextPath}/{$pubId}/modules/homepage/css/homepage.css" type="text/css"/>
-        <ci:include src="cocoon:/news-header_{$language}.xml"/>
-      </head>
-      <body>
-        <ci:include src="cocoon:/news-include_{$language}.xml"/>
-        <div id="body">
-          <xsl:if test="$rendertype = 'edit'">
-            <xsl:attribute name="bxe_xpath">/xhtml:html/xhtml:body</xsl:attribute>
-          </xsl:if>
-          <xsl:apply-templates select="xhtml:body/node()"/>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/readme.xml b/trunk/src/pubs/default/readme.xml
deleted file mode 100644
index b89bf4a..0000000
--- a/trunk/src/pubs/default/readme.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: introduction.xml 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-  <page:head/>
-  <page:body>
-    <h1>README: Default publication</h1>
-    <h2>Use WebDAV:</h2>
-    <ul>
-      <li>Cadaver: cadaver http://127.0.0.1:8888/default/webdav</li>
-      <li>More Info: <a href="http://wiki.apache.org/lenya/HowToEditWithWebDAV">http://wiki.apache.org/lenya/HowToEditWithWebDAV</a></li>
-    </ul>
-<!--
-    <h2>Enable JCR</h2>
-    <ul>
-      <li>Build Lenya and start it</li>
-      <li>
-        Import content from filesystem into JCR Repository by executing:
-        <a href="../index.html?lenya.usecase=jcr.import">../index.html?lenya.usecase=jcr.import</a>
-      </li>
-      <li>Stop Lenya</li>
-      <li>
-        Switch the NodeFactory within <i>build/lenya/webapp/WEB-INF/classes/org/apache/lenya/lenya.roles</i>
-        to <i>org.apache.lenya.cms.jcr.JCRNodeFactory</i>
-      </li>
-      <li>Optional: The JCR implementation can be configured within local.build.properties resp. build.properties</li>
-      <li>Start Lenya</li>
-    </ul>
--->
-  </page:body>
-</page:page>
diff --git a/trunk/src/pubs/default/resources/misc/bxe/xhtml-namespaces.xml b/trunk/src/pubs/default/resources/misc/bxe/xhtml-namespaces.xml
deleted file mode 100644
index afe9b05..0000000
--- a/trunk/src/pubs/default/resources/misc/bxe/xhtml-namespaces.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<namespaces>
-
-<xmlns>xhtml=http://www.w3.org/1999/xhtml</xmlns>
-<xmlns>dc=http://purl.org/dc/elements/1.1/</xmlns>
-<xmlns>lenya=http://apache.org/cocoon/lenya/page-envelope/1.0</xmlns>
-
-</namespaces>
diff --git a/trunk/src/pubs/default/resources/shared/css/homepage.css b/trunk/src/pubs/default/resources/shared/css/homepage.css
deleted file mode 100644
index 7ba2ecd..0000000
--- a/trunk/src/pubs/default/resources/shared/css/homepage.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Put your doctype-specific CSS here */
-
-div#body {
-  margin-right: 300px;
-}
\ No newline at end of file
diff --git a/trunk/src/pubs/default/resources/shared/css/links.css b/trunk/src/pubs/default/resources/shared/css/links.css
deleted file mode 100644
index 86ea730..0000000
--- a/trunk/src/pubs/default/resources/shared/css/links.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Put your doctype-specific CSS here */
\ No newline at end of file
diff --git a/trunk/src/pubs/default/resources/shared/css/news.css b/trunk/src/pubs/default/resources/shared/css/news.css
deleted file mode 100644
index eb36604..0000000
--- a/trunk/src/pubs/default/resources/shared/css/news.css
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-div.newsDate {
-  font-size: small;
-  font-weight: normal;
-  float: right
-}
-
-
-div#news {
-  font-family: Verdana, Arial, Sans-serif;
-  clear: both;
-  float: right;
-  width: 250px;
-  border: solid 1px #BB9999;
-  margin: 0px 10px 10px 10px;
-  padding: 10px;
-  background-color: #FFEEEE;
-}
-
-div#news h1 {
-  font-size: medium;
-  margin: 0;
-  padding: 0;
-}
-
-div#news h2 {
-  font-size: small;
-  margin-top: 10px;
-  border-bottom: none;
-  margin-bottom: 0;
-}
-
-div#news p {
-  margin-top: 0.3em;
-}
-
-div#news div.newsDate {
-  float: none;
-}
-
-div.rsslink {
-  float: right;
-  font-size: x-small;
-  border-top: solid 1px #FFFFFF;
-  border-left: solid 1px #FFFFFF;
-  border-bottom: solid 1px #666666;
-  border-right: solid 1px #666666;
-  background-color: #DDBBBB;
-  color: #000000;
-  padding: 1px 3px 1px 3px;
-}
-
-div.rsslink a {
-  text-decoration: none;
-}
\ No newline at end of file
diff --git a/trunk/src/pubs/default/resources/shared/css/page.css b/trunk/src/pubs/default/resources/shared/css/page.css
deleted file mode 100644
index cc63d14..0000000
--- a/trunk/src/pubs/default/resources/shared/css/page.css
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-/* page */
-
-@import url("news.css");
-
-#page {
-    padding: 0px;
-    margin: 0px;
-}
-
-/* tabs */
-
-#tabs {
-    border-bottom: solid 5px #DDBBBB;
-    color: Maroon;
-}
-
-#tabs a {
-    text-decoration: none;
-    color: Maroon;
-}
-
-#tabs table {
-    font-family: Verdana, Arial, Sans-serif;
-    font-size: 80%;
-}
-
-#tabs td {
-    vertical-align: bottom;
-}
-
-#tabs div {
-    white-space: nowrap;
-}
-
-.tab a, .tab-selected a {
-    display: block;
-}
-
-.tab a span, .tab-selected a span {
-    padding: .3em .6em;
-    display: block;
-}
-
-.tab a span {
-    background: url('/modules/svg/tab-topRight-5-FFEEEE-BB9999.png') right top no-repeat;
-    border-bottom: solid 1px #BB9999;
-}
-
-.tab a {
-    background: url('/modules/svg/tab-topLeft-5-FFEEEE-BB9999.png') left top no-repeat;
-}
-
-.tab a:hover span {
-    background: url('/modules/svg/tab-topRight-5-EECCCC-BB9999.png') right top no-repeat;
-    border-bottom: solid 1px #BB9999;
-}
-  
-.tab a:hover {
-    background: url('/modules/svg/tab-topLeft-5-EECCCC-BB9999.png') left top no-repeat;
-}
-  
-.tab-selected a span {
-    background: url('/modules/svg/tab-topRight-5-DDBBBB-BB9999.png') right top no-repeat;
-    border-bottom: solid 1px #DDBBBB;
-}
-
-.tab-selected a {
-    background: url('/modules/svg/tab-topLeft-5-DDBBBB-BB9999.png') left top no-repeat;
-}
-
-.tab-separator {
-    border-bottom: solid 1px #BB9999;
-}
-
-.tab-pre-separator {
-    width: 25px;
-    border-bottom: solid 1px #BB9999;
-}
-
-td.tab-post-separator {
-    width: 100%;
-}
-
-/* menu */
-
-#menu, #languageselector {
-    font-family: Verdana, Arial, Sans-serif;
-    border: solid 1px #BB9999;
-    border-left: none;
-    border-top: none;
-    color: Maroon;
-    padding: 5px 0px 5px 0px;
-  background-color: #FFCCCC;
-}
-
-#menu {
-  border-bottom: none;
-}
-
-#languageselector {
-    font-size: 80%;
-    padding-top: 10px;
-    padding-left: 15px;
-    /*
-    border: none;
-    background: url('/modules/svg/tab-bottomRight-5-FFCCCC-BB9999.png') right bottom no-repeat;
-    */
-}
-
-#languageselector ul {
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
-}
-
-#languageselector ul li {
-    display: inline;
-}
-
-#languageselector a img {
-    border: none;
-    margin: 0;
-    padding: 1px;
-  border: solid 5px #FFCCCC;
-    /*
-  border: solid 1px #000000;
-  */
-  vertical-align: middle;
-}
-
-#menu a, #languageselector a {
-    text-decoration: none;
-    color: Maroon;
-}
-
-#languageselector a {
-}
-
-#languageselector a:hover {
-    text-decoration: none;
-}
-
-#languageselector a.lenya-language-isCurrent {
-    font-weight:bold;
-}
-
-#languageselector a.lenya-language-isCurrent img {
-  border: solid 5px #FFEEEE;
-}
-
-#languageselector a.lenya-language-isAvailable {
-}
-
-#languageselector a.lenya-language-isUnavailable {
-    color:#aaaaaa;
-    opacity: 0.5;
-}
-
-#menu a:hover {
-    text-decoration: underline;
-}
-
-
-.menublock-1, .menublock-selected-1 {
-    padding: 0px;
-    /*
-    border-top: solid 1px #DDBBBB;
-    background: #FFCCCC;
-    */
-}
-
-.menublock-1 .menublock-2 { display: none; }
-.menublock-2 .menublock-3 { display: none; }
-.menublock-3 .menublock-4 { display: none; }
-.menublock-4 .menublock-5 { display: none; }
-
-.menuitem-1, .menuitem-selected-1,
-.menuitem-2, .menuitem-selected-2,
-.menuitem-3, .menuitem-selected-3,
-.menuitem-4, .menuitem-selected-4,
-.menuitem-5, .menuitem-selected-5 {
-  font-size: 80%;
-}
-  
-.menuitem-1, .menuitem-selected-1 {
-  margin: 10px 0px 0px 0px;
-  padding: 2px 5px 2px 30px;
-  background: url('/default/live/images/bullet.png') 16px .4em no-repeat;
-}
-
-.menuitem-2, .menuitem-selected-2 {
-  padding: 2px 5px 2px 50px;
-  background: url('/default/live/images/bullet.png') 36px .4em no-repeat;
-}
-
-.menuitem-3, .menuitem-selected-3 {
-  padding: 2px 5px 2px 70px;
-  background: url('/default/live/images/bullet.png') 56px .4em no-repeat;
-}
-  
-.menuitem-4, .menuitem-selected-4 {
-  padding: 2px 5px 2px 90px;
-  background: url('/default/live/images/bullet.png') 76px .4em no-repeat;
-}
-  
-.menuitem-5, .menuitem-selected-5 {
-  padding: 2px 5px 2px 110px;
-  background: url('/default/live/images/bullet.png') 96px .4em no-repeat;
-}
-  
-
-.menuitem-selected-1,
-.menuitem-selected-2,
-.menuitem-selected-3,
-.menuitem-selected-4,
-.menuitem-selected-5 {
-  background-color: #FFEEEE;
-/*
-  color: black;
-  background-color: #BB9999;
-  font-weight: bold;
-*/
-}
-  
-/* breadcrumb */
-
-#breadcrumb {
-    padding: 3px 0px 3px 30px;
-    background-color: #FFEEEE;
-    border-top: solid 1px #BB9999;
-    border-bottom: solid 1px #BB9999;
-    font-family: Verdana, Arial, Sans-serif;
-    font-size: 80%;
-}
-
-#breadcrumb a {
-    text-decoration: none;
-    color: Maroon;
-}
-
-#search {
-    font-family: Verdana, Arial, Sans-serif;
-    font-size: 100%;
-    margin-right: 10px;
-    float: right;
-    position:relative;
-    top:-20px
-}
-
-input.searchfield {
-    font-size: 80%;
-    background-color: #ffffff;
-    border: 1px solid #BB9999;
-}
-
-input.searchsubmit {
-    font-size: 80%;
-    color: Maroon;
-    background-color: #FFEEEE;
-    border: 1px solid #BB9999;
-}
-
-input.searchsubmit:hover {
-    background-color: #DDBBBB;
-}
-
-/*
-#search a {
-    text-decoration: none;
-    color: Maroon;
-}
-*/
-
-/* body */
-
-body {
-    font-family: Verdana, Arial, Sans-serif;
-}
-
-#body {
-    border: none;
-    padding: 1em;
-    margin-left: 10px;
-}
-
-#footer {
-    border: none;
-    border-top: 1px solid #BBBB99;
-    padding: 0em 1em;
-    margin-left: 10px;
-    font-style: italic;
-    color: Maroon;
-}
-
-#main {
-/*
-    float: left;
-    width: 80%;
-*/
-}
-
-h1 { font-size: 140%; }
-h2 { font-size: 100%; }
-h3 { font-size: 80%; }
-p { font-size: 80%; }
-li { font-size: 80%; }
-
-.crossheading { font-weight: bold; font-size: 110%; }
-
-table.simple {
-    border-collapse: collapse;
-/*
-    background-color: #909090;
-    border-color: #909090;
-*/
-    width: auto;
-}
-
-div#body td {
-    font-size: small;
-}
-
-td.simple {
-    font-size: 80%;
-    padding: 3px;
-    background-color: White;
-    border: solid 1px Navy;
-    vertical-align: top;
-}
-
-th.vertical {
-  font-size: small;
-  font-weight: normal;
-  text-align: right;
-  padding-right: 1em;
-  color: #666666;
-}
-  
-img.simple {
-}
-
-#publication-title {
-    font-family: verdana, arial, sans-serif;
-    font-weight: bold;
-    font-size: 20px;
-    vertical-align: bottom;
-    padding-left: 25px;
-    padding-bottom: 15px;
-    color: Maroon;
-}
-
-#project-logo {
-    padding: 10px 20px 0px 0px;
-    text-align: right;
-}
-
-.media {
-    text-align: center;
-    padding: 10px;
-}
-
-.caption {
-    padding: 5px;
-    text-align: center;
-    font-style: italic;
-    font-size: 80%;
-}
-
-.abstract {
-    font-weight: bold;
-}
-
-h1 {
-    font-size: 120%;
-    color: Maroon;
-}
-
-h2 {
-    font-size: 100%;
-    color: Maroon;
-    border-bottom: solid 1px #BB9999;
-    margin-top: 30px;
-}
-
-.asset { 
-    display: block;
-    color: #000;
-    margin: 10px 10px 10px 5px;
-    font-size: small;
-}
-
-.asset img {
-    vertical-align: middle;
-}
-
-div.search-box {
-	border: solid 1px #CCCCCC;
-	width: auto;
-	max-width: 100%;
-	font-size: small;
-	margin-bottom: 10px;
-}
-
-div.search-box-title {
-    background-color: #DDDCCF;
-	border-bottom: solid 1px #CCCCCC;
-	color: Black;
-	font-weight: bold;
-	padding: 3px 10px;
-}
-
-div.search-box-body {
-    padding: 10px;
-    background-color: #F5F4E9;
-	color: Black;
-}
-
-table.search-table {
-	color: Black;
-	background-color: White;
-	border-spacing: 0px;
-	border-collapse: collapse;
-}
-
-table.search-table-noborder {
-	border: 0px;
-	border-spacing: 0px;
-}
-
-table.search-table th {
-    background-color: #DDDCCF;
-	border: solid 1px #CCCCCC;
-	color: Black;
-	font-weight: bold;
-	padding: 3px 10px;
-	text-align: left;
-	font-size: small;
-}
-
-table.search-table td {
-    background-color: #F5F4E9;
-	border: solid 1px #CCCCCC;
-	padding: 3px 10px;
-	font-size: small;
-	color: Black;
-}
-
-table.search-table-noborder td {
-	border: 0px;
-	padding: 3px 10px;
-	font-size: small;
-}
-
-table.search-table-noborder-nopadding td {
-	border: 0px;
-	padding: 0px;
-	font-size: small;
-}
-
-table.search-table-noborder-nopadding th {
-	font-size: small;
-}
-
-/* Broken Internal Links in Authoring area */
-a.brokenlink {
-    background-color: yellow;
-    border: 1px dashed #000000;
-    text-decoration: none;
-}
-
-/* Search Results */
-.search-results-form {
-    margin-bottom: 20px; }
-
-.search-results {
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
-} 
-
-.search-result {
-    padding: 0.50em 0;
-}
-
-.search-result-score {
-    font-size: 90%;
-    font-weight: normal;
-}
-
-.search-result-rank {
-    float: left; 
-}
-
-.search-result-title {
-    margin: 0 0 0 30px;
-    padding: 0;
-    font-weight: bold;
-}
-
-.search-result-description {
-    margin-left: 30px;
-    color: #999999;
-}
diff --git a/trunk/src/pubs/default/resources/shared/css/xhtml.css b/trunk/src/pubs/default/resources/shared/css/xhtml.css
deleted file mode 100644
index 454b8e2..0000000
--- a/trunk/src/pubs/default/resources/shared/css/xhtml.css
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Put your doctype-specific CSS here */
-
-.column1of2 {
-        position: relative;
-        width: 48%;
-        float: left;
-}
-
-.column2of2 {
-        position: relative;
-        float: left;
-        width: 48%;
-        margin-left: 12px;
-}
\ No newline at end of file
diff --git a/trunk/src/pubs/default/resources/shared/images/bullet.png b/trunk/src/pubs/default/resources/shared/images/bullet.png
deleted file mode 100644
index b5e94f3..0000000
--- a/trunk/src/pubs/default/resources/shared/images/bullet.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/pubs/default/resources/shared/images/project-logo.png b/trunk/src/pubs/default/resources/shared/images/project-logo.png
deleted file mode 100644
index 81d3105..0000000
--- a/trunk/src/pubs/default/resources/shared/images/project-logo.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/pubs/default/sitemap.xmap b/trunk/src/pubs/default/sitemap.xmap
deleted file mode 100644
index cb883d3..0000000
--- a/trunk/src/pubs/default/sitemap.xmap
+++ /dev/null
@@ -1,431 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:components>
-    <map:transformers default="xslt">
-      <map:transformer name="metaData" logger="lenya.sitemap.transformer.metaData" src="org.apache.lenya.cms.cocoon.transformation.MetaDataTransformer"/>
-    </map:transformers>
-    <map:serializers default="xhtml">
-      <map:serializer logger="sitemap.serializer.links" name="links" src="org.apache.lenya.cms.cocoon.serialization.LinkSerializer"/>
-    </map:serializers>
-  </map:components>
-
-  <map:views>
-    <map:view from-position="last" name="links">
-      <map:serialize type="links" />
-    </map:view>
-  </map:views>
-
-
-  <map:pipelines>
-
-    <!-- This pipeline handles helper requests and metadata, not the actual publication documents -->
-    <map:pipeline>
-
-      <!-- Neutron introspection
-           The location of the introspection file is defined in <link rel="neutron-introspection"/>
-           (see xslt/page2xhtml.xsl).
-      -->
-      <map:match pattern="*/**/introspection.xml">
-        <map:select type="resource-exists">
-          <map:when test="fallback://lenya/modules/neutron/sitemap.xmap">
-            <!-- NB: there are problems with the fallback:// source factory when mounting sitemaps, 
-                 that's why the corresponding input module {fallback:} is used. -->
-            <map:mount 
-              uri-prefix="" 
-              src="{fallback:lenya/modules/neutron/sitemap.xmap}" 
-              check-reload="true" 
-              reload-method="synchron"
-            />
-          </map:when>
-          <map:otherwise>
-            <map:generate src="context:/lenya/content/util/empty.xml"/>
-            <map:serialize type="xml"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
- 
-      <!--
-         FIXME: the whole webdav shebang should be handled by the webdav module sitemap.
-      -->
-      <!-- catch webdav GET requests. -->
-      <map:match pattern="*/webdav**">
-        <map:mount uri-prefix="{1}/" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>    
-      </map:match>
-
-      <!-- catch PUT requests (used by webdav clients) -->
-      <map:select type="request-method">
-        <!-- many client editors like to PUT changes -->
-        <map:when test="PUT">
-          <map:mount uri-prefix="" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
-        </map:when>
-      </map:select>
-      
-      <!-- FIXME: this should be merged with the getDoctypeXSLT/* matcher below. currently, it is necessary
-           so that "getDoctypeXSLT/" requests do not get eaten by the **/ matcher below. 
-           Plus it should be moved to an internal-only pipeline.
-      -->
-      <map:match pattern="getDoctypeXSLT/">
-        <map:generate src="fallback://xslt/page2xhtml.xsl"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- Requests ending in a slash are redirected to the corresponding index.html page to mimic
-           standard web browser behaviour. -->
-      <!-- FIXME: this will trigger a HTTP redirect. Maybe it's more effective to do an internal redirect using
-           a cocoon:/ URI? An apache httpd server will not send a HTTP redirect when a directory is requested, but
-           serve the index.html file implicitly IIRC. -->
-      <map:match pattern="**/">
-        <map:redirect-to uri="{proxy:/{page-envelope:publication-id}/{1}/index.html}"/>
-      </map:match>
-
-    </map:pipeline>
-    
-
-    <map:pipeline type="caching">
-
-      <!-- RSS formatting. 
-           FIXME: this should be handled by an RSS feed module!
-      -->
-      <map:match pattern="**.rss">
-        <map:generate src="{resource-type:format-rss}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- FIXME: either this should be moved into a metadata module, or at least we need to establish
-           some standard for magic extra suffixes and stick to it.
-           Here we use .html.meta, bxe uses .bxe.html.
-      -->
-      <map:match pattern="*/**.html.meta">
-        <map:generate type="lenyaMetaData" src="lenya-document:{page-envelope:document-uuid},area={1}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      <map:match pattern="**meta">
-        <map:generate type="lenyaMetaData" src="lenya-document:{request-param:uuid},lang={request-param:lang},pubid={request-param:pubid},area={request-param:area}"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- {1:rendertype}/{2:pub}/{3:area}/{4:path} -->
-      <map:match pattern="document-content/*/*/*/**">
-        <map:act type="language-exists">
-          <map:generate src="{resource-type:format-xhtml}?rendertype={../1}"/>
-          <map:serialize type="xml"/>
-        </map:act>
-        <!-- if the action fails (i.e. the document does not exist), create a nice error page. -->
-        <map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
-        <map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
-          <map:parameter name="requestUrl" value="{request:requestURI}"/>
-          <map:parameter name="contextPath" value="{request:contextPath}"/>
-          <map:parameter name="pub" value="{2}"/>
-          <map:parameter name="path" value="/{4}"/>
-          <map:parameter name="area" value="{3}"/>
-        </map:transform>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{page-envelope:language}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- 
-         This matcher aggregates the Lenya page: breadcrumbs, tabs, menu etc. and the actual document content.
-         /lenyabody-raw-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:default-language}/{6:language}/{7:path} 
-      -->
-      <map:match pattern="lenyabody-raw-*/*/*/*/*/*/**">
-        <map:aggregate element="cmsbody">
-          <map:part src="cocoon://modules/sitetree/breadcrumb/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/tabs/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/menu/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/search/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/languageselector/text-none/flagsize-13"/>
-          <map:part src="cocoon:/document-content/{1}/{2}/{3}/{7}"/>
-        </map:aggregate>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!--
-        This match provides the XSLT to render a given doctype to XHTML
-        It checks for the existence of a doctype-specific one, and if none
-        exists, falls back to the default one.
-        /getDoctypeXSLT/{1:doctype}
-      -->
-      <map:match pattern="getDoctypeXSLT/*">
-        <map:select type="resource-exists">
-          <map:parameter name="prefix" value="fallback://"/>
-          <map:when test="xslt/page2xhtml-{1}.xsl">
-            <map:generate src="fallback://xslt/page2xhtml-{1}.xsl"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate src="fallback://xslt/page2xhtml.xsl"/>
-          </map:otherwise>
-        </map:select>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-
-    <!-- This is the pipeline that ultimately builds the page. -->
-    <map:pipeline type="noncaching">
-
-      <!-- 
-         This matcher takes the raw aggregated page content and applies SVG rendering and a doctype-specific
-         XSL transformation. It makes some meta information available to the XSLT, and demonstrates the use
-         of the LenyaMetaDataTransformer (see below).
-         /lenyabody-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:path} 
-      -->
-      <map:match pattern="lenyabody-*/*/*/*/**">
-        <map:generate src="cocoon:/lenyabody-raw-{1}/{2}/{3}/{4}/{page-envelope:default-language}/{page-envelope:language}/{5}"/>
-        <map:transform src="fallback://lenya/modules/svg/xslt/image2svg.xsl"/>
-        <map:transform src="cocoon:/getDoctypeXSLT/{4}">
-          <map:parameter name="root" value="/{2}/{3}"/>
-          <map:parameter name="publication-id" value="{2}"/>
-          <map:parameter name="area" value="{3}"/>
-          <map:parameter name="url" value="{page-envelope:document-url}"/>
-          <map:parameter name="document-path" value="{page-envelope:document-path}"/>
-          <map:parameter name="document-type" value="{4}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-          <map:parameter name="contextprefix" value="{request:contextPath}"/>
-          <map:parameter name="lastPublishedUser" value="{access-control:user-name:{workflow:lastUser.publish}}"/>
-          <map:parameter name="lastPublishedDate" value="{workflow:lastDate.publish}"/>
-          <!-- Following is a show off to explain lenya.properties.xml -->
-          <map:parameter name="author" value="{properties:pubs.default.author}"/>
-          <map:parameter name="nodeName" value="{page-envelope:document-name}"/>
-        </map:transform>
-
-       <!--
-         The stylesheet above has no chance to check if the document exists, so it
-         inserts the title "404 (Page not found)" into the page.
-         If the document exists in the requested language, the title is now replaced by
-         the actual dublin core title.
-       -->  
-        <map:act type="language-exists">
-          <map:transform src="fallback://xslt/addXhtmlTitle.xsl">
-            <map:parameter name="title" value="{dublincore:title}"/>
-          </map:transform>
-        </map:act>
-
-        <!-- This is a demonstration of the generic meta data transformer
-          described in bug 39891.
-
-          1) define the ns: xmlns:meta="http://apache.org/lenya/meta/1.0/"
-          2) use it in above xsl like e.g.
-          <meta:value ns="http://purl.org/dc/elements/1.1/" element="date" uuid="{@uuid}"/>
-
-          Where @ns is the namespace for which you want to retrieve the @element for.
-          If there is more then one element registered then the transformer returns:
-          <value xmlns="http://apache.org/lenya/meta/1.0/" value="2005-09-11 12:44:05" element="date" />
-          <value xmlns="http://apache.org/lenya/meta/1.0/" value="2006-09-11 12:44:05" element="date" />
-
-          Otherwise it will return the value as characters.
-        -->
-        <map:transform type="metaData">
-          <map:parameter name='pubid' value='{page-envelope:publication-id}'/>
-          <map:parameter name='area' value='{page-envelope:area}'/>
-        </map:transform>
-        <map:transform type="i18n">      
-          <map:parameter name="locale" value="{page-envelope:language}"/>
-        </map:transform>
-        <map:transform type="uuid2url"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-    </map:pipeline>
-
-    <!-- This is the main entry point into the publication. This
-    pipeline uses the uriparametrizer to determine the doctype of this
-    request. It then aggregates the lenya menu (for the given area) and
-    the lenya body, the actual document. -->
-    <map:pipeline>
-
-      <!-- 
-         FIXME: this is a BXE-specific hack that should be handled by BXE's module sitemap. The publication 
-         should not be concerned with BXE-specific pre-processing of documents.
-      -->
-      <map:match pattern="**.bxe.html">
-        <map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
-        <map:transform type="proxy"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- 
-        Finally: this matcher handles requests for publication documents. 
-        /{1:area}/{2:document-path}.html
-      -->
-      <map:match pattern="*/**.html">
-        <!-- 
-          The default publication does not have content by default. 
-          This check provides the user with a dialog to import example content. 
-          It should be removed in production systems.
-        --> 
-
-        <map:select type="resource-exists">
-          <map:when test="lenya://lenya/pubs/{page-envelope:publication-id}/content/authoring/sitetree.xml"/>
-          <map:otherwise>
-            <map:redirect-to uri="{proxy:/{page-envelope:publication-id}/{1}/{2}.html}?lenya.usecase=export.importExampleContent"/>
-          </map:otherwise>
-        </map:select>
-
-        <!-- If the requested language version of the document exists, we set a last-modified header. -->
-        <map:act type="language-exists">
-          <map:act type="set-header">
-            <map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
-          </map:act>
-        </map:act>
-            
-        <!-- 
-          HEAD requests shouldn't have all the xslt overhead, all the user wants is the HTTP header information.
-          So the actual content generation is bypassed.
-        -->
-        <map:select type="request-method">
-          <map:when test="HEAD">
-            <map:generate src="context://lenya/content/util/empty.xml" />
-            <map:serialize type="xhtml"/>
-          </map:when>
-        </map:select>          
-
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test" value="{request-param:rendertype}"/>
-          <map:when test="edit">
-            <!-- put the bxe_xpath attribute into the page -->
-            <map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
-          </map:when>
-          <map:otherwise>
-            <!-- sane page w/o hacks -->
-            <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
-          </map:otherwise>
-        </map:select>
-
-        <!-- Menu generation -->
-        <map:select type="parameter">
-          <!-- you remember that {1} is the area, right? -->
-          <map:parameter name="parameter-selector-test" value="{1}"/>
-          <map:when test="live">
-            <!-- do nothing for live -->
-          </map:when>
-          <map:otherwise>
-            <!-- for all other areas, we want a GUI menu (handled by global-sitemap.xmap -->
-            <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{1}/{2}.xml"/>
-            <!-- 
-                external broken link reporting (pretty much untested) 
-                TODO: External Links checking should be optional on a document by document basis.
-            -->
-            <!--
-            <map:transform src="fallback://lenya/xslt/authoring/addJavaScript.xsl">
-              <map:parameter name="scriptSRC" value="/modules/linkcheck/linkreporter.js"/>
-            </map:transform>
-            -->
-          </map:otherwise>
-        </map:select>
-
-        <!-- 
-            strip xhtml namespace prefix to ensure compatibility with non-XML conformant browsers
-            workaround to avoid empty script, style and textarea tags (firefox chokes on those)
-        -->
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-
-        <!-- client cache expiration settings -->
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test" value="{1}"/>
-          <!-- for live area: -->
-          <map:when test="live">
-            <!-- set cache expiration header according to resource type configuration (<expires/>) -->
-            <map:act type="language-exists">
-              <map:act type="set-header">
-                <map:parameter name="Expires" value="{date-iso8601-rfc822:{doc-info:{page-envelope:publication-id}:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}:expires}}"/>
-              </map:act>
-            </map:act>
-          </map:when>
-          <!-- for other areas -->
-          <map:otherwise>
-            <!-- tell the browser not to cache stuff so that the user always sees up-to-date content -->
-            <map:act type="set-header">
-              <map:parameter name="Cache-Control" value="no-cache" />
-              <map:parameter name="Pragma" value="no-cache"/>
-            </map:act>
-          </map:otherwise> 
-        </map:select>
-
-        <!-- pretty-print output for easier debugging and for the benefit of new users 
-              NOTE: you may want to disable this in production for performance reasons,
-              but it's on by default in the default publication to make the generated code 
-              easier to work with for new users. -->
-        <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-
-        <!-- the proxy transformer handles proxy-related URL rewriting -->
-        <map:transform type="proxy"/>
-
-        <map:act type="language-exists">
-          <map:serialize type="xhtml"/>
-        </map:act>
-        <!-- 
-            When the requested document does not exist, we generate a nice error page.
-            Still, it's not what the user wants, so make sure we send a 404 "not found".
-        -->
-        <map:serialize type="xhtml" status-code="404"/>
-
-      </map:match>
-
-    </map:pipeline>
-
-    <!--
-       This pipeline handles all requests that do *not* end in ".html".
-    -->
-    <map:pipeline>
-      <map:match pattern="*/**">
-        <map:act type="language-exists">
-          <!--
-             A workaround for a byte-range issue with PDFs,
-             see http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 .
-             FIXME: still necessary?
-          -->
-          <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
-            <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}" mime-type="application/pdf">
-              <map:parameter name="byte-ranges" value="false"/>
-            </map:read>
-          </map:match>      
-          <!-- Documents other than *.html are served as-is and do not require processing: -->
-          <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}"/>
-        </map:act>
-
-        <!-- 
-          If the action above fails (e.g. the document does not exist), call into the lenyabody pipeline.
-          It will generate a nice document-does-not-exist page for us.
-        -->
-        <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
-        <map:select type="parameter">
-          <map:parameter name="parameter-selector-test" value="{1}"/>
-          <map:when test="live"/>
-          <map:otherwise>
-            <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{1}/{2}?doctype={page-envelope:document-type}"/>
-          </map:otherwise>
-        </map:select>
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:transform type="proxy"/>
-        <map:serialize type="xhtml" status-code="404"/>
-
-      </map:match>
-
-    </map:pipeline>
-
-
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/pubs/default/test/anteater/tests.xml b/trunk/src/pubs/default/test/anteater/tests.xml
deleted file mode 100644
index 545c6a4..0000000
--- a/trunk/src/pubs/default/test/anteater/tests.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<property name="publication-id" value="default"/>
-
-<target name="pubs.default" depends="
-        pubs.default.intro,
-        pubs.default.login,
-        pubs.default.admin
-    "/>
-
-<target name="pubs.default.intro">
-  <echo>Testing the default publication</echo>
-  <echo>Testing introduction</echo>
-  <httpRequest path="/${publication-id}/introduction.html">
-    <match>
-      <responseCode value="200"/>
-      <regexp>Default Publication</regexp>
-    </match>
-  </httpRequest>
-</target>
-
-<target name="pubs.default.login">
-  <echo>Testing login</echo>
-  
-  <httpRequest
-      path="/${publication-id}/admin/index.html"
-      followRedirects="true">
-    <match>
-      <responseCode value="200"/>
-      <regexp>Username:</regexp>
-    </match>
-  </httpRequest>
-  
-  <httpRequest
-      path="/${publication-id}/admin/index.html"
-      followRedirects="true">
-    <parameter name="username" value="lenya"/>
-    <parameter name="password" value="levi"/>
-    <match>
-      <responseCode value="200"/>
-      <regexp>Welcome</regexp>
-    </match>
-  </httpRequest>
-  
-</target>
-
-<target name="pubs.default.admin" depends="pubs.default.admin.user"/>
-
-<target name="pubs.default.admin.user">
-  <echo>Testing user administration</echo>
-  <httpRequest path="/${publication-id}/admin/index.html">
-    <match>
-      <responseCode value="200"/>
-      <regexp>Default Publication</regexp>
-    </match>
-  </httpRequest>
-</target>
diff --git a/trunk/src/pubs/default/test/webtest/tests.xml b/trunk/src/pubs/default/test/webtest/tests.xml
deleted file mode 100644
index 0c27015..0000000
--- a/trunk/src/pubs/default/test/webtest/tests.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<property name="publication-id" value="default"/>
-
-<target name="pubs.default">
-
-  <testSpec name="pubs.default.intro">
-    &config;
-    <steps>
-      <invoke url="${publication-id}/introduction.html"/>
-      <verifytitle text="Lenya CMS Publication: Default Publication"/>
-    </steps>
-  </testSpec>
-  
-  <testSpec name="pubs.default.login">
-    &config;
-    <steps>
-      <invoke url="${publication-id}/introduction.html"/>
-      <clicklink label="Login as Editor"/>
-      <verifytitle text="LOGIN"/>
-      
-      <setinputfield name="username" value="lenya"/>
-      <setinputfield name="password" value="wrong"/>
-      <clickbutton label="login"/>
-      <verifytitle text="LOGIN"/>
-      <verifytext text="Authentication failed"/>
-      
-      <!--
-      <setinputfield name="username" value="lenya"/>
-      <setinputfield name="password" value="levi"/>
-      <clickbutton label="login"/>
-      <verifytitle text="Apache Lenya - default"/>
-      -->
-      
-    </steps>
-  </testSpec>
-  
-</target>
-  
diff --git a/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl b/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl
deleted file mode 100644
index d214bbd..0000000
--- a/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: page2xhtml.xsl 557603 2007-07-19 12:48:31Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  exclude-result-prefixes="xhtml"
-  >
-  
-  <xsl:param name="title"/>
-  
-  
-  <xsl:template match="xhtml:head">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-      <title><xsl:value-of select="$title"/></title>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:title"/>
-  
-  
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-  
-</xsl:stylesheet>
-  
\ No newline at end of file
diff --git a/trunk/src/pubs/default/xslt/page2xhtml-homepage.xsl b/trunk/src/pubs/default/xslt/page2xhtml-homepage.xsl
deleted file mode 100644
index 943f933..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml-homepage.xsl
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-  
-<xsl:import href="fallback://xslt/page2xhtml.xsl"/>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/page2xhtml-links.xsl b/trunk/src/pubs/default/xslt/page2xhtml-links.xsl
deleted file mode 100644
index 943f933..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml-links.xsl
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-  
-<xsl:import href="fallback://xslt/page2xhtml.xsl"/>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/page2xhtml-opendocument.xsl b/trunk/src/pubs/default/xslt/page2xhtml-opendocument.xsl
deleted file mode 100644
index d184649..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml-opendocument.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  exclude-result-prefixes="page xhtml dc lenya"
-  >
-
-<xsl:import href="fallback://xslt/page2xhtml.xsl"/>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/page2xhtml-search.xsl b/trunk/src/pubs/default/xslt/page2xhtml-search.xsl
deleted file mode 100644
index 902de69..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml-search.xsl
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-  
-<xsl:import href="fallback://xslt/page2xhtml.xsl"/>
-
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/page2xhtml-xhtml.xsl b/trunk/src/pubs/default/xslt/page2xhtml-xhtml.xsl
deleted file mode 100644
index fb2df33..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml-xhtml.xsl
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-  
-<xsl:import href="fallback://xslt/page2xhtml.xsl"/>
-
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/page2xhtml.xsl b/trunk/src/pubs/default/xslt/page2xhtml.xsl
deleted file mode 100644
index 928fa5e..0000000
--- a/trunk/src/pubs/default/xslt/page2xhtml.xsl
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  exclude-result-prefixes="page xhtml dc lenya"
-  >
-  
-  <!-- {context-prefix}/{publication-id}/{area} -->
-  <xsl:param name="root"/>
-  <xsl:param name="context-prefix"/>
-  
-  <!-- i.e. doctypes/xhtml-document -->
-  <xsl:param name="document-type"/>
-  
-  <xsl:param name="document-path"/>
-  
-  <!-- The request url i.e. /lenya/doctypes/xhtml-document_en.html -->
-  <xsl:param name="url"/>
-  <xsl:param name="language"/>
-  
-  <xsl:param name="lastPublishedUser"/>
-  <xsl:param name="lastPublishedDate"/>
-  
-  <!--Following is a show off to explain lenya.properties.xml -->
-  <xsl:param name="author"/>
-  
-  <xsl:template match="cmsbody">
-    <html>
-      <head>
-        <!-- 
-        <link rel="neutron-introspection" type="application/neutron+xml" href="{$root}{$document-path}/introspection.xml"/>
-         -->
-        <link rel="neutron-introspection" type="application/neutron+xml"
-          href="{$root}{$document-path}.xml?lenya.module=neutron&amp;lenya.action=introspect"/>
-        <link rel="stylesheet" href="{$root}/css/page.css" type="text/css"/>
-        <link rel="SHORTCUT ICON" type="image/ico" href="/lenya/images/lenya.ico"/>
-        <!-- Load doctype-specific CSS -->
-        <xsl:choose>
-          <xsl:when test="$document-type">
-            <!-- Looking into the pub e.g. {$yourPub}/resources/shared/css/{$document-type}.css -->
-            <link rel="stylesheet" href="{$root}/css/{$document-type}.css" type="text/css"/>
-            <xsl:copy-of select="xhtml:html/xhtml:head/*"/>
-          </xsl:when>
-          <xsl:otherwise>
-            <!-- do nothing -->
-          </xsl:otherwise>
-        </xsl:choose>
-        <meta content="Apache Lenya" name="generator"/>
-        
-        <!-- The title will be overwritten by addXhtmlTitle.xsl if the document exists. -->
-        <title><i18n:text>error-404</i18n:text></title>
-        
-        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-      </head>
-      <body>
-        <div id="page">
-          <table width="100%" cellpadding="0" cellspacing="0" border="0">
-            <tr>
-              <td id="publication-title">
-                <i18n:translate>
-                  <i18n:text>publication-title</i18n:text>
-                  <i18n:param><xsl:value-of select="$author"/></i18n:param>
-                </i18n:translate>
-              </td>
-              <td id="project-logo"><img src="{$root}/images/project-logo.png" alt="project logo"/></td>
-            </tr>
-          </table>
-          <xsl:apply-templates select="xhtml:div[@id = 'tabs']"/>
-          <table width="100%" border="0" cellpadding="0" cellspacing="0">
-            <tr>
-              <td valign="top" style="width: 230px">
-                <xsl:apply-templates select="xhtml:div[@id = 'menu']"/>
-                <xsl:apply-templates select="xhtml:div[@id = 'languageselector']"/>
-              </td>
-              <td valign="top">
-                <div id="main">
-                  <xsl:apply-templates select="xhtml:div[@id = 'breadcrumb']"/>
-                  <xsl:apply-templates select="xhtml:div[@id = 'search']"/>
-                  <xsl:apply-templates select="xhtml:div[@id = 'body']"/>
-                  <xsl:if test="xhtml:html">
-                    <xsl:apply-templates select="xhtml:html/xhtml:body/*"/>
-                  </xsl:if>
-                  <xsl:call-template name="footer"/>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@id = 'breadcrumb']">
-    <xsl:if test="*">
-      <xsl:copy>
-        <xsl:apply-templates select="@*|node()"/>
-      </xsl:copy>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template name="footer">
-    <div id="footer">
-      <p>
-        <xsl:choose>
-          <xsl:when test="$lastPublishedUser != ''">
-            <i18n:translate>
-              <i18n:text>last-published</i18n:text>
-              <i18n:param><i18n:date-time src-pattern="yyyy-MM-dd HH:mm:ss"><xsl:value-of select="$lastPublishedDate"/></i18n:date-time></i18n:param>
-              <i18n:param><xsl:value-of select="$lastPublishedUser"/></i18n:param>
-            </i18n:translate>
-          </xsl:when>
-          <xsl:otherwise>
-            <i18n:text>never-published</i18n:text>
-          </xsl:otherwise>
-        </xsl:choose>
-      </p>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/pubs/default/xslt/toDoc.xsl b/trunk/src/pubs/default/xslt/toDoc.xsl
deleted file mode 100644
index b1a76a9..0000000
--- a/trunk/src/pubs/default/xslt/toDoc.xsl
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-                xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0" >
-
-<xsl:template match="rc:backup">
-        <xsl:apply-templates/> 
-</xsl:template>
-
-<xsl:template match="* | @*">
- <xsl:copy>
-    <xsl:copy-of select="@*"/>
-    <xsl:apply-templates/>
-  </xsl:copy>
-</xsl:template>
-                                                                                                                                            
-</xsl:stylesheet>
-
diff --git a/trunk/src/pubs/default/xslt/upload-generic.xsl b/trunk/src/pubs/default/xslt/upload-generic.xsl
deleted file mode 100644
index 78a78ce..0000000
--- a/trunk/src/pubs/default/xslt/upload-generic.xsl
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  
-  <xsl:param name="lenya.usecase"/>
-  
-  <xsl:output encoding="ISO-8859-1" indent="yes" version="1.0"/>
-  
-  <xsl:variable name="user-id" select="/uc:create/uc:user-id"/>
-  
-  <xsl:template match="/">
-    <page:page xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0">
-      <page:title><xsl:call-template name="title"/></page:title>
-      <page:body>
-        <xsl:apply-templates/>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-  <xsl:template match="uc:confirm">
-    <div class="lenya-box">
-      <div class="lenya-box-title"><xsl:value-of select="uc:form-title"/></div>
-      <div class="lenya-box-body">
-
-          <xsl:apply-templates select="uc:error-messages"/>
-        
-
-          <xsl:call-template name="fields"/>
-        
-      </div>
-    </div>
-  </xsl:template>
-
-<xsl:template match="uc:error-messages">
-  <table class="lenya-table-noborder">
-    <xsl:if test="uc:message">
-       <tr>
-          <td class="lenya-entry-caption">Problem:</td>
-          <td><xsl:apply-templates select="uc:message"/></td>
-       </tr>
-    </xsl:if>
-  </table>
-</xsl:template>
-
-<xsl:template match="uc:message">
-  <span class="lenya-form-message-error"><xsl:value-of select="."/></span><br/>
-</xsl:template>
-
-
-<xsl:template name="title">Upload Document</xsl:template>
-
-<xsl:template name="fields"/>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/pubs/default/xslt/upload.xsl b/trunk/src/pubs/default/xslt/upload.xsl
deleted file mode 100644
index 75918a4..0000000
--- a/trunk/src/pubs/default/xslt/upload.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  
-  <xsl:import href="upload-generic.xsl"/>
-  
-  <!--<xsl:template name="title">Import Article (SGML)</xsl:template>-->
-  
-<xsl:template name="fields">
-  <form method="POST" enctype="multipart/form-data" id="form-upload_document">
-
-    <input name="lenya.usecase" type="hidden" value="{$lenya.usecase}"/>
-    <input name="lenya.continuation" type="hidden" value="{uc:continuation}"/>
-
-    <!-- DEBUG ... -->
-    <!--<input name="cocoon-view" type="hidden" value="xml"/>-->
-
-    <table class="lenya-table-noborder">
-    <tr>
-      <td class="lenya-entry-caption">Upload Document</td>
-      <td>
-        <input class="lenya-form-element" name="upload-regulation" type="file"/>
-      </td>
-    </tr>
-
-    <tr>
-      <td/>
-      <td>
-        <input type="submit" name="submit" value="Upload"/>
-        <xsl:text> </xsl:text>
-        <input type="submit" value="Cancel" name="input-cancel"/>
-      </td>
-    </tr>
-    </table>
-  </form>
-</xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/resources/build/module.rng b/trunk/src/resources/build/module.rng
deleted file mode 100644
index 62bdb9b..0000000
--- a/trunk/src/resources/build/module.rng
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-  xmlns:xsp="http://apache.org/xsp/core/v1"
-  xmlns:s="http://www.ascc.net/xml/schematron"
-  xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
-  xmlns:f="http://axkit.org/NS/xsp/perform/v1" 
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  xmlns:lenya="http://apache.org/lenya/module/1.0">
-  <start>
-    <element name="lenya:module" >
-      <element name="lenya:id"><text/></element>
-      <zeroOrMore>
-        <element name="lenya:export">
-          <attribute name="package"><text/></attribute>
-        </element>
-      </zeroOrMore>
-      <zeroOrMore>
-        <element name="lenya:depends">
-          <attribute name="module"><text/></attribute>
-        </element>
-      </zeroOrMore>
-      <element name="lenya:package"><text/></element>
-      <element name="lenya:version"><text/></element>
-      <element name="lenya:name"><text/></element>
-      <element name="lenya:lenya-version"><text/></element>
-      <optional>
-        <element name="lenya:description"><text/></element>
-      </optional>
-      <optional>
-        <element name="lenya:creator"><text/></element>
-      </optional>
-      <optional>
-        <element name="lenya:copyrights"><text/></element>
-      </optional>
-      <optional>
-        <element name="lenya:readme"><text/></element>
-      </optional>
-      <optional>
-        <element name="lenya:installation"><text/></element>
-      </optional>
-    </element>
-  </start>
-</grammar>
diff --git a/trunk/src/resources/build/modules2build.xsl b/trunk/src/resources/build/modules2build.xsl
deleted file mode 100644
index ca68e6a..0000000
--- a/trunk/src/resources/build/modules2build.xsl
+++ /dev/null
@@ -1,430 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:mod="http://apache.org/lenya/module/1.0"
-  xmlns:list="http://apache.org/lenya/module-list/1.0">
-  
-  <xsl:import href="util.xsl"/>
-  
-  <xsl:output indent="yes"/>
-  
-  <xsl:param name="cocoon-xconf"/>
-  <xsl:param name="module-schema"/>
-  <xsl:param name="copy-modules"/>
-  
-  <xsl:variable name="configFile">/config/module.xml</xsl:variable>
-  
-  
-  <xsl:template name="separator">
-    <xsl:if test="following-sibling::list:module">
-      <xsl:text>, </xsl:text>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template match="list:modules">
-    <project name="lenya-modules">
-      
-      <!-- Set up classpath -->
-      <path id="classpath">
-        <fileset>
-          <xsl:attribute name="dir">${lib.dir}</xsl:attribute>
-          <include name="*.jar"/>
-        </fileset>
-        <fileset>
-          <xsl:attribute name="dir">${build.dir}/lib</xsl:attribute>
-          <include name="*.jar"/>
-        </fileset>
-        <fileset>
-          <xsl:attribute name="dir">${cocoon.webapp.dir}/WEB-INF/lib</xsl:attribute>
-          <include name="*.jar"/>
-        </fileset>
-        <fileset dir="tools/jetty/lib">
-          <include name="servlet-*.jar"/>
-        </fileset>
-      </path>
-      
-      <xsl:variable name="compileDependencyList">
-        <xsl:for-each select="list:module">
-          <xsl:apply-templates select="mod:module" mode="call"/>
-          <xsl:call-template name="separator"/>
-        </xsl:for-each>
-      </xsl:variable>
-      <target name="compile-modules" depends="{$compileDependencyList}"/>
-      
-      <xsl:variable name="testDependencyList">
-        <xsl:for-each select="list:module">
-          <xsl:apply-templates select="mod:module" mode="patch-test"/>
-          <xsl:call-template name="separator"/>
-        </xsl:for-each>
-      </xsl:variable>
-      
-      <target name="patch-modules-test" depends="{$testDependencyList}"/>
-      
-      <target name="javadocs-modules">
-        <xsl:apply-templates select="list:module" mode="call-javadocs"/>
-      </target>
-      
-      <target name="test-modules" depends="patch-modules-test">
-        <xsl:apply-templates select="list:module" mode="call-test"/>
-      </target>
-      
-      <xsl:variable name="canooDependencyList">
-        <xsl:for-each select="list:module">
-          <xsl:apply-templates select="mod:module" mode="test-canoo"/>
-          <xsl:call-template name="separator"/>
-        </xsl:for-each>
-      </xsl:variable>
-      <target name="test-modules-canoo" depends="{$canooDependencyList}"/>
-      
-      
-      <xsl:apply-templates select="list:module" mode="target"/>
-      
-    </project>
-  </xsl:template>
-  
-  
-  <xsl:template match="mod:module" mode="call">
-    <xsl:text>deploy-module-</xsl:text><xsl:value-of select="mod:id"/>
-  </xsl:template>
-  
-
-  <xsl:template match="mod:module" mode="patch-test">
-    <xsl:text>patch-module-test-</xsl:text><xsl:value-of select="mod:id"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="list:module" mode="call-test">
-    <xsl:apply-templates select="mod:module" mode="call-test"/>
-  </xsl:template>
-  
-  <xsl:template match="mod:module" mode="call-test">
-    <antcall target="test-module-{mod:id}"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="list:module" mode="call-test-canoo">
-    <xsl:apply-templates select="mod:module" mode="call-test-canoo"/>
-  </xsl:template>
-  
-  <xsl:template match="mod:module" mode="call-test-canoo">
-    <antcall target="canoo-module-{mod:id}"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="mod:module" mode="test-canoo">
-    <xsl:text>canoo-module-</xsl:text><xsl:value-of select="mod:id"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="list:module" mode="call-javadocs">
-    <xsl:apply-templates select="mod:module" mode="call-javadocs"/>
-  </xsl:template>
-  
-  <xsl:template match="mod:module" mode="call-javadocs">
-    <antcall target="javadocs-module-{mod:id}"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="list:module" mode="target">
-    <xsl:apply-templates select="mod:module" mode="target">
-      <xsl:with-param name="src" select="@src"/>
-    </xsl:apply-templates>
-  </xsl:template>
-  
-  
-  <xsl:template match="mod:module" mode="target">
-    <xsl:param name="src"/>
-    <xsl:variable name="id" select="mod:id"/>
-    <xsl:variable name="shortname" select="substring(mod:id, string-length(mod:package) + 2)"/>
-
-    <target name="validate-module-{$id}">
-      <jing rngfile="{$module-schema}" file="{$src}{$configFile}"/>
-    </target>
-    
-    <xsl:text>
-      
-    </xsl:text>
-    <xsl:comment>Compile module <xsl:value-of select="$src"/> </xsl:comment>
-    <xsl:text>
-    </xsl:text>
-    
-    <available file="{$src}/java/src" property="compile.module.{$id}"/>
-    
-    <xsl:variable name="destDirPublic">${build.dir}/modules/<xsl:value-of select="$id"/>/java/classes/api</xsl:variable>
-    <xsl:variable name="destDirPrivate">${build.dir}/modules/<xsl:value-of select="$id"/>/java/classes/impl</xsl:variable>
-    
-    <path id="module.classpath.{$id}.api">
-      <path refid="classpath"/>
-      <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-*-api.jar"/>
-      <xsl:for-each select="mod:depends">
-        <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-module-{@module}-api.jar"/>
-      </xsl:for-each>
-      <fileset dir="{$src}" includes="java/lib/*.jar"/>
-      <fileset dir="${{lib.dir}}" includes="*.jar"/>
-    </path>
-    
-    <path id="module.classpath.{$id}.impl">
-      <path refid="module.classpath.{$id}.api"/>
-      <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="lenya-module-{$id}-api.jar"/>
-    </path>
-    
-    <target name="compile-module-{$id}" if="compile.module.{$id}">
-      
-      <mkdir dir="{$destDirPublic}"/>
-      
-      <xsl:if test="mod:export[@package]">
-        <javac
-          destdir="{$destDirPublic}"
-          debug="${{debug}}"
-          optimize="${{optimize}}"
-          deprecation="${{deprecation}}"
-          target="${{target.vm}}"
-          nowarn="${{nowarn}}"
-          source="${{src.java.version}}">
-          <src path="{$src}/java/src"/>
-          <xsl:for-each select="mod:export[@package]">
-            <include name="{translate(@package, '.', '/')}/*.java"/>
-          </xsl:for-each>
-          <classpath refid="module.classpath.{$id}.api"/>
-        </javac>
-        
-        <jar jarfile="${{build.webapp}}/WEB-INF/lib/lenya-module-{$id}-api.jar" index="true">
-          <fileset dir="{$destDirPublic}">
-            <exclude name="**/Manifest.mf"/>
-          </fileset>
-        </jar>
-      </xsl:if>
-
-      <mkdir dir="{$destDirPrivate}"/>
-      <javac
-        destdir="{$destDirPrivate}"
-        debug="${{debug}}"
-        optimize="${{optimize}}"
-        deprecation="${{deprecation}}"
-        target="${{target.vm}}"
-        nowarn="${{nowarn}}"
-        source="${{src.java.version}}">
-        <src path="{$src}/java/src"/>
-        <xsl:for-each select="mod:export[@package]">
-          <exclude name="{translate(@package, '.', '/')}/*.java"/>
-        </xsl:for-each>
-        <classpath refid="module.classpath.{$id}.impl"/>
-      </javac>
-      
-      <jar jarfile="${{build.webapp}}/WEB-INF/lib/lenya-module-{$id}-impl.jar" index="true">
-        <fileset dir="{$destDirPrivate}">
-          <exclude name="**/Manifest.mf"/>
-        </fileset>
-      </jar>
-      
-    </target>
-    
-    <xsl:variable name="dirName">
-      <xsl:call-template name="lastStep">
-        <xsl:with-param name="path" select="$src"/>
-      </xsl:call-template>
-    </xsl:variable>
-    
-    <target name="copy-module-{$id}">
-      <xsl:if test="$copy-modules = 'true'">
-        <copy 
-          todir="${{build.webapp}}/lenya/modules/{$dirName}"
-          flatten="false">
-          <fileset dir="{$src}">
-            <exclude name="java/**"/>
-            <exclude name="*/java/**"/>
-            <exclude name="config/cocoon-xconf/**"/>
-            <exclude name="*/config/cocoon-xconf/**"/>
-            <exclude name="config/lenya-roles/**"/>
-            <exclude name="*/config/lenya-roles/**"/>
-            <exclude name="config/sitemap/**"/>
-            <exclude name="*/config/sitemap/**"/>
-          </fileset>
-        </copy>
-      </xsl:if>
-    </target>
-    
-    <target name="patch-module-{$id}">
-      <xpatch file="{$cocoon-xconf}"
-        srcdir="{$src}"
-        includes="config/cocoon-xconf/*.xconf, config/cocoon-xconf/*/*.xconf"
-        addComments="false"/>
-        
-      <xpatch file="${{build.dir}}/impl/org/apache/lenya/lenya.roles"
-        srcdir="{$src}"
-        includes="config/lenya-roles/*.xroles"
-        addComments="false"/>
-      
-      <xpatch file="${{build.webapp}}/sitemap.xmap"
-        srcdir="{$src}" 
-        includes="config/sitemap/*.xmap"
-        addComments="false"/>
-      
-    </target>
-    
-    <xsl:variable name="dependencyList">
-      <xsl:for-each select="mod:depends">
-        <xsl:text>deploy-module-</xsl:text><xsl:value-of select="@module"/><xsl:text>, </xsl:text>
-      </xsl:for-each>
-    </xsl:variable>
-    
-    <target name="deploy-module-{$id}"
-      depends="{$dependencyList} validate-module-{$id}, compile-module-{$id}, copy-module-{$id}, patch-module-{$id}"/>
-    
-    <!-- ============================================================ -->
-    <!-- Javadocs -->
-    <!-- ============================================================ -->
-    
-    <!-- Set a variable if javadoc is already up-to-date -->
-    <target name="javadocs-module-check-{$id}">
-      <uptodate property="javadocs.notrequired.module.{$id}" targetfile="${{dist.bin.javadocs}}/packages.html" >
-        <srcfiles dir="{$src}/java/src" includes="**/*.java"/>
-      </uptodate>
-    </target>
-    
-    <target name="javadocs-module-{$id}"
-            if="compile.module.{$id}"
-            unless="javadocs.notrequired.module.{$id}">
-      <javadoc packagenames="${{packages}}"
-        destdir="${{dist.bin.javadocs}}/modules/{$shortname}"
-        author="true"
-        version="true"
-        use="false"
-        noindex="true"
-        breakiterator="true"
-        windowtitle="${{Name}} API - Version ${{version}}"
-        doctitle="${{Name}}"
-        bottom="Copyright &#169; ${year} Apache Software Foundation. All Rights Reserved."
-        stylesheetfile="${{src.resource.dir}}/javadoc.css"
-        source="${{src.java.version}}">
-        <!-- sources -->
-        <sourcepath>
-          <pathelement path="{$src}/java/src"/>
-        </sourcepath>
-        
-        <!-- pass ant in the classpath to avoid class not found errors -->
-        <classpath refid="module.classpath.{$id}.api"/>
-      </javadoc>
-    </target>
-    
-    <!-- ============================================================ -->
-    <!-- Test -->
-    <!-- ============================================================ -->
-    
-    <available file="{$src}/java/test" property="test.module.{$id}"/>
-    
-    <xsl:variable name="testDependencyList">
-      <xsl:for-each select="mod:depends">
-        <xsl:text>patch-module-test-</xsl:text><xsl:value-of select="@module"/>
-        <xsl:if test="following-sibling::mod:depends">
-          <xsl:text>, </xsl:text>
-        </xsl:if>
-      </xsl:for-each>
-    </xsl:variable>
-    
-    <target name="patch-module-test-{$id}">
-      <xsl:if test="normalize-space($testDependencyList) != ''">
-        <xsl:attribute name="depends"><xsl:value-of select="$testDependencyList"/></xsl:attribute>
-      </xsl:if>
-      <mkdir dir="${{build.dir}}/modules/{$id}"/>
-      <xslt basedir="{$src}"
-        includes="config/cocoon-xconf/*.xconf, config/cocoon-xconf/*/*.xconf"
-        destdir="${{build.dir}}/modules/{$id}"
-        style="${{src.resource.dir}}/test/xpatch2testpatch.xsl"
-        extension=".xtest"/>
-      <xpatch file="${{build.test}}/org/apache/lenya/cms/LenyaTestCase.xtest"
-        srcdir="${{build.dir}}/modules/{$id}"
-        includes="config/cocoon-xconf/*.xtest, config/cocoon-xconf/*/*.xtest"
-        addComments="false"/>
-    </target>
-    
-    <target name="test-module-{$id}" if="test.module.{$id}" depends="compile-module-{$id}">
-
-      <xsl:variable name="testDestDir">${build.dir}/modules/<xsl:value-of select="$id"/>/java/test</xsl:variable>
-      
-      <mkdir dir="{$testDestDir}"/>
-      
-      <path id="module.test-classpath.{$id}">
-        <path refid="module.classpath.{$id}.impl"/>
-        <fileset dir="${{build.webapp}}/WEB-INF/lib">
-          <include name="lenya-module-{$id}-impl.jar"/>
-        </fileset>
-        <path location="${{build.test}}"/>
-      </path>
-      
-      <javac
-        destdir="{$testDestDir}"
-        debug="${{debug}}"
-        optimize="${{optimize}}"
-        deprecation="${{deprecation}}"
-        target="${{target.vm}}"
-        nowarn="${{nowarn}}"
-        source="${{src.java.version}}">
-        <src path="{$src}/java/test"/>
-        <classpath refid="module.test-classpath.{$id}"/>
-      </javac>
-      
-      <!-- Copy test resources -->
-      <copy todir="{$testDestDir}" filtering="on">
-        <fileset dir="{$src}/java/test" excludes="**/*.java"/>
-      </copy>
-      
-      <junit printsummary="yes" showoutput="true" haltonerror="on" haltonfailure="on">
-        <classpath>
-          <fileset dir="${{build.webapp}}/WEB-INF/lib" includes="*.jar, endorsed/*.jar"/>
-          <path location="${{build.webapp}}/WEB-INF/classes"/>
-          <path location="${{build.test}}"/>
-          <path location="{$testDestDir}"/>
-        </classpath>
-        <formatter type="plain" usefile="false" />
-        <formatter type="xml" />
-        <jvmarg value="-Djava.endorsed.dirs='${{basedir}}/build/lenya/webapp/WEB-INF/lib/endorsed'"/>
-        <sysproperty key="junit.test.loglevel" value="${{junit.test.loglevel}}"/>
-        <sysproperty key="contextRoot" value="${{basedir}}/build/lenya/webapp"/>
-        <sysproperty key="tempDir" value="${{basedir}}/build/lenya/temp"/>
-        <sysproperty key="test.repo.webappDirectory" value="${{build.webapp}}"/>
-        <sysproperty key="test.repo.repositoryFactory" value="${{repository.factory}}"/>
-        <batchtest todir="${{junit.dir}}">
-          <fileset dir="{$testDestDir}" includes="**/*Test.class" excludes="**/Abstract*.class"/>
-        </batchtest>
-      </junit>
-    </target>
-    
-    <!-- ============================================================ -->
-    <!-- Canoo WebTest -->
-    <!-- ============================================================ -->
-    
-    <available file="{$src}/test/canoo/test.xml" property="canoo.module.{$id}"/>
-    
-    <target name="canoo-module-{$id}" if="canoo.module.{$id}">
-      <ant dir="{$src}/test/canoo" antfile="test.xml" inheritall="true"/>
-    </target>
-      
-  </xsl:template>
-  
-  <xsl:template match="mod:depends" mode="dependencyWarning">
-    <xsl:param name="id"/>
-    <antcall target="dependency-warning-{@module}">
-      <param name="dependentModule" value="{$id}"/>
-    </antcall>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/resources/build/modules2config.xsl b/trunk/src/resources/build/modules2config.xsl
deleted file mode 100644
index dc5de7d..0000000
--- a/trunk/src/resources/build/modules2config.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:mod="http://apache.org/lenya/module/1.0"
-  xmlns:list="http://apache.org/lenya/module-list/1.0">
-  
-  <xsl:output indent="yes"/>
-  
-  <xsl:variable name="configFile">/config/module.xml</xsl:variable>
-  
-  <xsl:template match="list:module">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|document(concat(@src, $configFile))/mod:module"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="@*|node()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/resources/build/modules2patch.xsl b/trunk/src/resources/build/modules2patch.xsl
deleted file mode 100644
index e2354b3..0000000
--- a/trunk/src/resources/build/modules2patch.xsl
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: global-sitemap.xmap 393761 2006-04-13 08:38:00Z michi $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:mod="http://apache.org/lenya/module/1.0"
-  xmlns:list="http://apache.org/lenya/module-list/1.0"
-  exclude-result-prefixes="mod list">
-  
-  <xsl:import href="util.xsl"/>
-  
-  <xsl:output indent="yes"/>
-  
-  <xsl:param name="copy-modules"/>
-
-  <xsl:template match="list:modules">
-    
-    <xconf xpath="/cocoon" remove="/cocoon/component[@role = 'org.apache.lenya.cms.module.ModuleManager']">
-
-      <component
-        role="org.apache.lenya.cms.module.ModuleManager"
-        class="org.apache.lenya.cms.module.ModuleManagerImpl">
-        <modules copy="{$copy-modules}">
-          <xsl:apply-templates select="list:module"/>
-        </modules>
-      </component>
-    </xconf>
-    
-  </xsl:template>
-
-
-  <xsl:template match="list:module">
-    <xsl:variable name="shortcut">
-      <xsl:call-template name="lastStep">
-        <xsl:with-param name="path" select="@src"/>
-      </xsl:call-template>
-    </xsl:variable>
-    
-    <module src="{@src}" shortcut="{$shortcut}"/>
-    
-  </xsl:template>  
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/resources/build/publication.rng b/trunk/src/resources/build/publication.rng
deleted file mode 100644
index e6cd826..0000000
--- a/trunk/src/resources/build/publication.rng
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- 
-  This RELAX NG grammar defines the configuration file of a. Lenya publication.
-  Configuration files must be located under "$YOURPUBROOT/$PUBNAME/config/publication.xml".
-  
-  This schema is new as of 2007-02-23. It is NOT backwards-compatible. It combines the
-  contents of $YOURPUBROOT/$PUBNAME/publication.xml and $YOURPUBROOT/$PUBNAME/config/publication.xml.
-  
-  The publication.xml file is parsed by:
-  
-  * src/impl/java/org/apache/lenya/cms/publication/PublicationConfiguration.java
-  * src/java/org/apache/lenya/cms/publication/templating/ExistingUsecaseResolver.java
-  * src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java (?)
-  * src/webapp/lenya/xslt/util/aggregate-publications.xsl
-  * webapp/lenya/resources/i18n/modules2xinclude.xsl
-  * webapp/global-sitemap.xmap
-  
-  Please keep the implementations and this grammar in sync!
--->
-
-<grammar 
-  xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
-  >
-  
-  <!-- some convenience data types used in this grammar: -->
-  
-  <define name="booleanString">
-    <choice>
-      <value>true</value>
-      <value>false</value>
-    </choice>
-  </define>
-  
-  <define name="fileURL">
-    <!-- regex anyone? -->
-    <data type="string"/>
-  </define>
-  
-  <define name="isoLanguage">
-    <data type="string">
-      <param name="pattern">[a-zA-Z]{2}</param>
-    </data>
-  </define>
-  
-  <define name="lenyaAreaName">
-    <choice>
-      <value>live</value>
-      <value>authoring</value>
-      <value>archive</value>
-      <value>trash</value>
-    </choice>
-  </define>
-  
-  <define name="javaClassName">
-    <data type="string">
-      <!-- too lenient, needs tightening -->
-      <param name="pattern">([\-_a-zA-Z0-9]+\.)+[\-_a-zA-Z0-9]+</param>
-    </data>
-  </define>
-  
-  <define name="moduleName">
-    <ref name="simpleNameToken"/>
-  </define>
-  
-  <define name="resourceTypeName">
-    <ref name="simpleNameToken"/>
-  </define>
-  
-  <define name="revisionString">
-    <data type="string">
-    </data>
-  </define>
-  
-  <define name="simpleNameToken">
-    <data type="string">
-      <param name="pattern">[a-z]+</param>
-    </data>
-  </define>
-  
-  <define name="versionString">
-    <data type="string">
-      <param name="pattern">(@lenya.version@)|(([0-9]+\.)+[0-9]+(-[\-_a-zA-Z0-9]+)?)</param>
-    </data>
-  </define>
-  
-  <define name="workflowUri">
-    <data type="anyURI"/>
-  </define>
-  
-  <define name="XPathExpression">
-    <!-- regex anyone? -->
-    <data type="string"/>
-  </define>
-  
-  <!-- here comes the important part -->
-  
-  <start>
-    
-    <element name="publication"
-      ns="http://apache.org/cocoon/lenya/publication/1.1"
-      >
-      <optional> 
-        <attribute name="show"><ref name="booleanString"/></attribute>
-      </optional>
-      <interleave>
-        <element name="name"><data type="string"/></element>
-        <optional>
-          <element name="description"><data type="string"/></element>
-        </optional>
-        <optional>
-          <element name="version"><ref name="versionString"/></element>
-        </optional>
-        <optional>
-          <element name="lenya-version"><ref name="versionString"/></element>
-        </optional>
-        <optional>
-          <element name="lenya-revision"><ref name="revisionString"/></element>
-        </optional>
-        <optional>
-          <element name="cocoon-version"><ref name="versionString"/></element>
-        </optional>
-        <element name="languages">
-          <oneOrMore>
-            <element name="language">
-              <optional>
-                <attribute name="default">
-                  <ref name="booleanString"/>
-                </attribute>
-              </optional>
-              <ref name="isoLanguage"/>
-            </element>
-          </oneOrMore>
-        </element>
-        <optional>
-          <element name="template">
-            <attribute name="id">
-              <ref name="simpleNameToken"/>
-            </attribute>
-          </element>
-        </optional>
-        <optional>
-          <element name="template-instantiator"><attribute name="name"><data type="string"/></attribute></element>
-        </optional>
-        <element name="path-mapper">
-          <ref name="javaClassName"/>
-        </element>
-        <element name="document-builder"><attribute name="name"><data type="string"/></attribute></element>
-        <element name="site-manager"><attribute name="name"><data type="string"/></attribute></element>
-        <element name="resource-types">
-          <zeroOrMore>
-            <element name="resource-type">
-              <attribute name="name"><ref name="resourceTypeName"/></attribute>
-              <attribute name="workflow"><ref name="workflowUri"/></attribute>
-            </element>
-          </zeroOrMore>
-        </element>
-        <element name="modules">
-          <zeroOrMore>
-            <element name="module">
-              <attribute name="name"><ref name="moduleName"/></attribute>
-            </element>
-          </zeroOrMore>
-        </element>
-        <optional>
-          <element name="breadcrumb-prefix"><data type="string"/></element>
-        </optional>
-        <optional>
-          <element name="content-dir">
-            <attribute name="src">
-              <ref name="fileURL"/>
-            </attribute>
-          </element>
-        </optional>
-        <element name="proxies">
-          <zeroOrMore>
-            <element name="proxy">
-              <attribute name="area"><ref name="lenyaAreaName"/></attribute>
-              <attribute name="ssl"><ref name="booleanString"/></attribute>
-              <attribute name="url"><data type="anyURI"/></attribute>
-            </element>
-          </zeroOrMore>
-        </element>
-      </interleave>
-      
-    </element>
-    
-  </start>
-  
-</grammar>
diff --git a/trunk/src/resources/build/util.xsl b/trunk/src/resources/build/util.xsl
deleted file mode 100644
index bae3675..0000000
--- a/trunk/src/resources/build/util.xsl
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: global-sitemap.xmap 393761 2006-04-13 08:38:00Z michi $ -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-  <xsl:template name="lastStep">
-    <xsl:param name="path"/>
-    <xsl:choose>
-      <xsl:when test="contains($path, '/')">
-        <xsl:call-template name="lastStep">
-          <xsl:with-param name="path" select="substring-after($path, '/')"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:when test="contains($path, '\')">
-        <xsl:call-template name="lastStep">
-          <xsl:with-param name="path" select="substring-after($path, '\')"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$path"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/resources/build/workflow.rng b/trunk/src/resources/build/workflow.rng
deleted file mode 100644
index f96bdb2..0000000
--- a/trunk/src/resources/build/workflow.rng
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: workflow.xsd 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<grammar 
-  xmlns="http://relaxng.org/ns/structure/1.0"
-  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
->
-
-  <define name="simpleNameToken">
-    <data type="string">
-      <param name="pattern">[\-_a-zA-Z]+</param>
-    </data>
-  </define>
-
-  <define name="javaClassName">
-    <data type="string">
-      <param name="pattern">([\-_a-zA-Z0-9]+\.)+[\-_a-zA-Z0-9]+</param>
-    </data>
-  </define>
-
-  <define name="booleanString">
-    <choice>
-      <value>true</value>
-      <value>false</value>
-    </choice>
-  </define>
-
-<start>
-
-<element 
-   name="workflow"    ns="http://apache.org/cocoon/lenya/workflow/1.0"
->
-  <zeroOrMore>
-    <element name="state">
-      <attribute name="id"><ref name="simpleNameToken"/></attribute>
-      <optional>
-        <attribute name="initial"><value>true</value></attribute>
-      </optional>
-    </element>
-  </zeroOrMore>
-  <!-- can this be made more flexible? zeroOrMore variables of arbitrary type? -->
-  <element name="variable">
-    <attribute name="name"><ref name="simpleNameToken"/></attribute>
-    <attribute name="value">
-      <ref name="booleanString"/>
-    </attribute>
-  </element>
-  <oneOrMore>
-    <element name="transition">
-      <attribute name="source"><ref name="simpleNameToken"/></attribute>
-      <attribute name="destination"><ref name="simpleNameToken"/></attribute>
-      <element name="event">
-        <attribute name="id"><ref name="simpleNameToken"/></attribute>
-      </element>
-      <oneOrMore>
-        <element name="condition">
-          <attribute name="class"><ref name="javaClassName"/></attribute>
-          <data type="string"/>
-        </element>
-      </oneOrMore>
-      <optional>
-        <element name="assign">
-          <attribute name="variable"><ref name="simpleNameToken"/></attribute>
-          <attribute name="value">
-            <ref name="booleanString"/>
-          </attribute>
-        </element>
-      </optional>
-    </element>
-  </oneOrMore>
-</element>
-
-</start>
-</grammar>
\ No newline at end of file
diff --git a/trunk/src/resources/dev/eclipse/checkstyle-plugin.cfg b/trunk/src/resources/dev/eclipse/checkstyle-plugin.cfg
deleted file mode 100644
index e6a2e14..0000000
--- a/trunk/src/resources/dev/eclipse/checkstyle-plugin.cfg
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<checkstyle-configurations file-format-version="1.0.0">
-    <check-configuration name="standard">
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.JavadocTypeCheck" severity="warning">
-            <config-properties>
-                <config-property name="severity" value="warning"/>
-                <config-property name="tokens" value="CLASS_DEF, INTERFACE_DEF"/>
-                <config-property name="authorFormat" value=""/>
-                <config-property name="scope" value="private"/>
-                <config-property name="versionFormat" value=""/>
-            </config-properties>
-        </rule-configuration>
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.JavadocMethodCheck" severity="warning">
-            <config-properties>
-                <config-property name="allowThrowsTagsForSubclasses" value="false"/>
-                <config-property name="allowUndeclaredRTE" value="false"/>
-                <config-property name="severity" value="warning"/>
-                <config-property name="tokens" value="METHOD_DEF, CTOR_DEF"/>
-                <config-property name="allowMissingParamTags" value="false"/>
-                <config-property name="scope" value="private"/>
-                <config-property name="allowMissingReturnTag" value="false"/>
-                <config-property name="allowMissingThrowsTags" value="false"/>
-            </config-properties>
-        </rule-configuration>
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.RedundantModifierCheck" severity="warning">
-            <config-properties>
-                <config-property name="severity" value="warning"/>
-                <config-property name="tokens" value="METHOD_DEF, VARIABLE_DEF"/>
-            </config-properties>
-        </rule-configuration>
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.VisibilityModifierCheck" severity="warning">
-            <config-properties>
-                <config-property name="packageAllowed" value="false"/>
-                <config-property name="severity" value="warning"/>
-                <config-property name="publicMemberPattern" value="^serialVersionUID"/>
-                <config-property name="protectedAllowed" value="false"/>
-            </config-properties>
-        </rule-configuration>
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.FinalClassCheck" severity="warning">
-            <config-properties>
-                <config-property name="severity" value="warning"/>
-            </config-properties>
-        </rule-configuration>
-        <rule-configuration
-            classname="com.puppycrawl.tools.checkstyle.checks.HideUtilityClassConstructorCheck" severity="warning">
-            <config-properties>
-                <config-property name="severity" value="warning"/>
-            </config-properties>
-        </rule-configuration>
-    </check-configuration>
-</checkstyle-configurations>
diff --git a/trunk/src/resources/dev/eclipse/classpath-tmpl.xml b/trunk/src/resources/dev/eclipse/classpath-tmpl.xml
deleted file mode 100644
index c62ca0e..0000000
--- a/trunk/src/resources/dev/eclipse/classpath-tmpl.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<data>
-  <src-dirs><item>@SRC_DIRS@</item></src-dirs>
-  <libs><item>@LIBS@</item></libs>
-  <output>@OUTPUT_DIR@</output>
-</data>
\ No newline at end of file
diff --git a/trunk/src/resources/dev/eclipse/make-classpath.xsl b/trunk/src/resources/dev/eclipse/make-classpath.xsl
deleted file mode 100644
index 2a592a4..0000000
--- a/trunk/src/resources/dev/eclipse/make-classpath.xsl
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!--
-  Build the Eclipse .classpath file from a list of path items
-  (see "eclipse-project" target in build.xml)
-  
-  $Id$
--->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-  <xsl:output indent="yes" method="xml"/>
-  <xsl:param name="exportlib"/>
-  <xsl:param name="cocoonProjectName"/>
-  
-  <xsl:strip-space elements="*"/>
-
-  <xsl:template match="/data">
-    <classpath>
-
-      <!-- 1. source dirs -->
-      <xsl:for-each select="src-dirs/item">
-        <!-- alphabetical sorting, complete path -->
-        <xsl:sort select="."/>
-        <classpathentry kind="src" path="{.}"/>
-      </xsl:for-each>
-          
-      <!-- 2. libraries -->
-      <xsl:for-each select="libs/item">
-        <!-- alphabetical sorting, only file name -->
-        <!-- heavy calculation, but here's the logic:
-             1. returns the string after 4 slashes (4 is the max (blocks)),
-                returns empty string if string does not contain 4 slashes
-             2. ... 3 slashes ...
-             3. ... 2 slashes ... (the minimum) -->
-        <xsl:sort select="concat(substring-after(substring-after(substring-after(substring-after(., '/'), '/'), '/'), '/'),
-                                                 substring-after(substring-after(substring-after(., '/'), '/'), '/'),
-                                                                 substring-after(substring-after(., '/'), '/'))"/>
-        <classpathentry exported="{$exportlib}" kind="lib" path="{.}"/>
-      </xsl:for-each>
-
-      <!-- 3. JRE runtime -->
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-     
-      <!-- 4. output directory
-           Build in a separate dir since Eclipse is confused
-           by classes compiled externally by Sun's Javac -->
-      <classpathentry kind="output" path="{output}"/>
-
-      <!-- 5. Dependance on Cocoon. There needs to be a cocoon-2.1 eclipse project -->
-	  <classpathentry kind="src" path="/{$cocoonProjectName}"/>
-
-    </classpath>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/resources/dev/eclipse/project b/trunk/src/resources/dev/eclipse/project
deleted file mode 100644
index 4a8c9b0..0000000
--- a/trunk/src/resources/dev/eclipse/project
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-  <name>Lenya @VERSION@</name>
-  <comment></comment>
-  <projects>
-    <project>@COCOON_PROJECT@</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>
diff --git a/trunk/src/resources/javadoc.css b/trunk/src/resources/javadoc.css
deleted file mode 100644
index 88c0609..0000000
--- a/trunk/src/resources/javadoc.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-/* Apache Javadoc style sheet */
-
-/* Page background color */
-body { background-color: #FFFFFF }
-
-/* Table colors */
-.TableHeadingColor     { background: #D0D0D0 }
-.TableSubHeadingColor  { background: #E0E0E0 }
-.TableRowColor         { background: #F9F9F9 }
-
-/* Navigation bar fonts and colors */
-.NavBarCell1    { background-color:#D0D0D0;}
-.NavBarCell1Rev { background-color:#A0A0A0;}
-.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
-.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
-.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#E0E0E0;}
-.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#F0F0F0;}
-
-/* Font used in left-hand frame lists */
-.FrameTitleFont   { font-size: normal; font-family: Helvetica, Arial, sans-serif }
-.FrameHeadingFont { font-size: normal; font-family: Helvetica, Arial, sans-serif }
-.FrameItemFont    { font-size: 10pt; font-family: Helvetica, Arial, sans-serif }
-
-/* Link colors styling */
-A:link { color: #0000A0 }          /* unvisited link */
-A:visited { color: #A00000 }       /* visited links */
-A:active { color: #00A000 }        /* active links */
diff --git a/trunk/src/resources/test/meta.xsl b/trunk/src/resources/test/meta.xsl
deleted file mode 100644
index bf40995..0000000
--- a/trunk/src/resources/test/meta.xsl
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:xso="http://apache.org/cocoon/lenya/xslt/1.0"
-  >
-
-  <xsl:namespace-alias stylesheet-prefix="xso" result-prefix="xsl"/>
-  
-  <xsl:param name="element"/>
-
-  <xsl:template match="/">
-    <xso:stylesheet version="1.0">
-      
-      <xsl:apply-templates/>
-      
-      <xso:template match="@*|node()">
-        <xso:copy>
-          <xso:apply-templates select="@*|node()"/>
-        </xso:copy>
-      </xso:template>
-      
-    </xso:stylesheet>
-  </xsl:template>
-  
-  <xsl:template match="/*">
-    <xso:template match="{$element}">
-      <xso:copy>
-        <xso:copy-of select="*"/>
-        <xsl:copy-of select="*"/>
-      </xso:copy>
-    </xso:template>
-  </xsl:template>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/resources/test/template-xtest.xml b/trunk/src/resources/test/template-xtest.xml
deleted file mode 100644
index f6f2257..0000000
--- a/trunk/src/resources/test/template-xtest.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<testcase>
-  
-  <annotation>
-    Test Cases
-  </annotation>
-  
-  <roles>
-    
-    <role name="org.apache.excalibur.source.SourceFactorySelector"
-      shorthand="source-factories"
-      default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
-    <role name="org.apache.excalibur.source.SourceResolver"
-      shorthand="source-resolver"
-      default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
-      
-    <role name="org.apache.cocoon.components.search.LuceneCocoonSearcher"
-      shorthand="cocoon-searcher"
-      default-class="org.apache.cocoon.components.search.SimpleLuceneCocoonSearcherImpl"/>
-      
-  </roles>
-  
-  <components/>
-  
-</testcase>
-    
\ No newline at end of file
diff --git a/trunk/src/resources/test/xconf-template.xml b/trunk/src/resources/test/xconf-template.xml
deleted file mode 100644
index 03c9df6..0000000
--- a/trunk/src/resources/test/xconf-template.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<cocoon>
-
-  <source-factories>
-    <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
-    <component-instance class="org.apache.cocoon.components.source.impl.ContextSourceFactory" name="context"/>
-    <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
-  </source-factories>
-  
-  <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
-  
-</cocoon>
-    
\ No newline at end of file
diff --git a/trunk/src/resources/test/xpatch2testpatch.xsl b/trunk/src/resources/test/xpatch2testpatch.xsl
deleted file mode 100644
index add9641..0000000
--- a/trunk/src/resources/test/xpatch2testpatch.xsl
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:xso="http://apache.org/cocoon/lenya/xslt/1.0"
-  >
-
-  <xsl:template match="/xconf">
-    <xtest>
-      <xsl:apply-templates select="@*|node()"/>
-    </xtest>
-  </xsl:template>
-  
-  
-  <xsl:template match="@* [local-name() = 'xpath' or local-name() = 'remove' or local-name() = 'unless']">
-    <xsl:choose>
-      <xsl:when test="starts-with(., '/cocoon')">
-        <xsl:attribute name="{local-name()}">/testcase/components<xsl:value-of select="substring-after(., '/cocoon')"/></xsl:attribute>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:copy-of select="."/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/targets/compile-build.xml b/trunk/src/targets/compile-build.xml
deleted file mode 100644
index c2d0359..0000000
--- a/trunk/src/targets/compile-build.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-compile">
-
-  <description>
-    Compilation Targets
-  </description>
-  
-  <!-- compile and package a specific source directory -->
-  <target name="compile-src">
-    
-    <property name="compile.src.dir" value=""/>
-    <property name="compile.dest.dir" value=""/>
-    <property name="compile.classpath" value=""/>
-    <property name="jar.name" value=""/>
-    
-    <!-- DEBUG classpath -->
-    <!--
-      <property name="classpath.compile" refid="classpath"/>
-      <echo>CLASSPATH : ${classpath.compile}</echo>
-    -->
-
-    <mkdir dir="${compile.dest.dir}"/>
-    
-    <!--  copy properties, xml configuration files and roles -->
-    <copy todir="${compile.dest.dir}">
-      <fileset dir="${compile.src.dir}">
-        <include name="**/*.properties"/>
-        <include name="**/*.roles"/>
-        <include name="**/*.xml"/>
-        <include name="**/*.rng"/>
-      </fileset>
-    </copy>
-    
-    <javac destdir="${compile.dest.dir}"
-      debug="${debug}"
-      optimize="${optimize}"
-      deprecation="${deprecation}"
-      target="${target.vm}"
-      nowarn="${nowarn}"
-      source="${src.java.version}">
-      <src path="${compile.src.dir}"/>
-      <classpath refid="${compile.classpath}"/>
-    </javac>
-
-    <jar jarfile="${build.webapp}/WEB-INF/lib/${fullname}-${jar.name}.jar" index="true">
-      <fileset dir="${compile.dest.dir}">
-        <exclude name="**/Manifest.mf"/>
-      </fileset>
-    </jar>
-  </target>
-  
-  
-</project>
diff --git a/trunk/src/targets/dist-build.xml b/trunk/src/targets/dist-build.xml
deleted file mode 100644
index a49b749..0000000
--- a/trunk/src/targets/dist-build.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-dist">
-
-  <description>
-    Distribution Targets
-  </description>
-
-  <target name="dist" depends="clean,dist-src,dist-bin" description="Build all distribution relevant tarballs"/>
-
-  <!--
-  This target prepares the binary distribution tarball for
-  end users. It forces a complete rebuild of everything through its
-  dependency on the "clean" target in order to prevent garbage
-  like the cocoon logfiles from ending up in the distribution tarball.
-  -->
-  <target name="prepare-dist-bin" depends="clean,kupu,war">
-
-    <copy todir="${dist.bin.dir}">
-      <fileset dir="${basedir}">
-        <include name="INSTALL-BIN.txt"/>
-        <include name="README.txt"/>
-        <include name="LICENSE.txt"/>
-        <include name="NOTICE.txt"/>
-        <include name="CREDITS.txt"/>
-        <include name="lenya.sh"/>
-        <include name="lenya.bat"/>
-        <include name="legal/**"/>
-      </fileset>
-    </copy>
-
-    <!-- Copy Jetty -->
-    <copy todir="${dist.bin.dir}/tools">
-      <fileset dir="tools"/>
-    </copy>
-    <delete dir="${dist.bin.dir}/tools/anttasks"/>
-    
-     <!-- Make shell scripts executable -->
-    <chmod file="${dist.bin.dir}/*.sh" perm="ugo+rx"/>
-    <chmod file="${dist.bin.dir}/tools/bin/*.sh" perm="ugo+rx"/>
-
-  	<!-- Make sure linefeeds in shell scripts are UNIX-style -->
-   <fixcrlf srcdir="${dist.bin.dir}" eol="lf" includes="*.sh"/>
-   <fixcrlf srcdir="${dist.bin.dir}/tools/bin" eol="lf" includes="*.sh"/>
-
-  	<!-- Make sure linefeeds in batch files are Windows-style -->
-   <fixcrlf srcdir="${dist.bin.dir}" eol="crlf" includes="*.bat"/>
-   <fixcrlf srcdir="${dist.bin.dir}/tools/bin" eol="crlf" includes="*.bat"/>
-  </target>
-
-  <target name="dist-bin" depends="prepare-dist-bin" description="Build a regular binary distribution tar ball">
-
-    <tar tarfile="${dist.bin.dir}.tar" basedir="${dist.root}" includes="${distname}-bin/**"/>
-
-    <gzip zipfile="${dist.bin.dir}.tar.gz" src="${dist.bin.dir}.tar"/>
-    <delete file="${dist.bin.dir}.tar"/>
-    <checksum file="${dist.bin.dir}.tar.gz" fileext=".md5"/>
-    
-    <zip zipfile="${dist.bin.dir}.zip" basedir="${dist.root}" includes="${distname}-bin/**"/>
-    <checksum file="${dist.bin.dir}.zip" fileext=".md5"/>
-  </target>
-
-  <!--
-  This target prepares the binary distribution tarball for
-  end users. It forces a complete rebuild of everything through its
-  dependency on the "clean" target in order to prevent garbage
-  like the cocoon logfiles from ending up in the distribution tarball.
-  -->
-  <target name="snapshot-bin" depends="prepare-dist-bin" description="Build a snapshot binary distribution tar ball (the same as 'dist' except for the filename)">
-    <copy todir="${snapshot.bin.dir}">
-      <fileset dir="${dist.root}/${distname}-bin"/>
-    </copy>
-
-    <tar tarfile="${snapshot.bin.dir}.tar" basedir="${dist.root}" includes="${snapshot.bin.name}/**"/>
-
-    <gzip zipfile="${snapshot.bin.dir}.tar.gz" src="${snapshot.bin.dir}.tar"/>
-    <delete file="${snapshot.bin.dir}.tar"/>
-    <zip zipfile="${snapshot.bin.dir}.zip" basedir="${dist.root}/${snapshot.bin.name}"/>
-  </target>
-
-  <!--
-  The dist-src target prepares the source distribution tarball for
-  developers. It also depends on the clean target to remove all build stuff.
-  -->
-  <target name="prepare-dist-src" depends="clean">
-    <mkdir dir="${dist.src.dir}"/>
-
-    <copy todir="${dist.src.dir}">
-      <fileset dir=".">
-        <exclude name="local.build.properties"/>
-        <exclude name=".classpath"/>
-        <exclude name=".project"/>
-        <exclude name=".fbprefs"/>
-        <exclude name="dist/**"/>
-        <exclude name="build/**"/>
-        <exclude name="bin/**"/>
-      </fileset>
-    </copy>
-  	
-  	<!-- Replace version placeholder with build version -->
-  	<replace dir="${dist.src.dir}">
-          <include name="**/welcome.xml"/>
-  	  <include name="**/about.xml"/>
-	  <include name="**/config/publication.xml"/>
-  	  <replacefilter token="@lenya.version@" value="${version}"/>
-  	  <replacefilter token="@lenya.revision@" value="${lenya.revision}"/>
-  	</replace>
-
-    <!-- Make shell scripts executable -->
-   <chmod file="${dist.src.dir}/*.sh" perm="ugo+rx"/>
-   <chmod file="${dist.src.dir}/tools/bin/*.sh" perm="ugo+rx"/>
- 
-  	<!-- Make sure linefeeds in shell scripts are UNIX-style -->
-   <fixcrlf srcdir="${dist.src.dir}" eol="lf" includes="*.sh"/>
-   <fixcrlf srcdir="${dist.src.dir}/tools/bin" eol="lf" includes="*.sh"/>
- 
-  	<!-- Make sure linefeeds in batch files are Windows-style -->
-   <fixcrlf srcdir="${dist.src.dir}" eol="crlf" includes="*.bat"/>
-   <fixcrlf srcdir="${dist.src.dir}/tools/bin" eol="crlf" includes="*.bat"/>
-  </target>
-
-  <target name="dist-src" depends="prepare-dist-src" description="Builds a regular tar ball containing the sources for developers">
-    <tar tarfile="${dist.src.dir}.tar" basedir="${dist.root}" includes="${distname}-src/**"/>
-
-    <gzip zipfile="${dist.src.dir}.tar.gz" src="${dist.src.dir}.tar"/>
-    <delete file="${dist.src.dir}.tar"/>
-    <checksum file="${dist.src.dir}.tar.gz" fileext=".md5"/>
-
-    <zip zipfile="${dist.src.dir}.zip" basedir="${dist.root}" includes="${distname}-src/**"/>
-    <checksum file="${dist.src.dir}.zip" fileext=".md5"/>
-  </target>
-
-  <!--
-  This target prepares the source distribution tarball for
-  end users. It forces a complete rebuild of everything through its
-  dependency on the "clean" target in order to prevent garbage
-  like the cocoon logfiles from ending up in the distribution tarball.
-  -->
-  <target name="snapshot-src" depends="prepare-dist-src" description="Builds a snapshot tar ball containing the sources for developers (the same as 'dist-src' except for the filename)">
-    <copy todir="${snapshot.src.dir}">
-      <fileset dir="${dist.src.dir}"/>
-    </copy>
-
-    <tar tarfile="${snapshot.src.dir}.tar" basedir="${dist.root}" includes="${snapshot.src.name}/**"/>
-    <gzip zipfile="${snapshot.src.dir}.tar.gz" src="${snapshot.src.dir}.tar"/>
-    <delete file="${snapshot.src.dir}.tar"/>
-  </target>
-
-  <target name="zip-webapp" depends="init" description="Zips the webapp in order to deploy within another servlet container">
-    <tar tarfile="./${build.dir}/${snapshot.bin.name}.tar" basedir="${build.webapp}"/>
-    <gzip zipfile="./${build.dir}/${snapshot.bin.name}.tar.gz" src="./${build.dir}/${snapshot.bin.name}.tar"/>
-    <delete file="./${build.dir}/${snapshot.bin.name}.tar"/>    
-  </target>
-</project>
diff --git a/trunk/src/targets/docs-build.xml b/trunk/src/targets/docs-build.xml
deleted file mode 100644
index 2f6cb72..0000000
--- a/trunk/src/targets/docs-build.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-documentation">
-
-  <description>
-    Documentation Targets
-  </description>
-
-  <!-- Set a variable if javadoc is already up-to-date -->
-  <target name="javadocs_check">
-    <uptodate property="javadocs.notrequired" targetfile="${dist.bin.javadocs}/packages.html" >
-      <srcfiles dir="${src.java.api.dir}" includes="**/*.java"/>
-    </uptodate>
-  </target>
-
-  <!-- If javadoc is already up-to-date, print a message saying so -->
-  <target name="javadocs_done" if="javadocs.notrequired">
-    <echo message="-------------------------------------------------------------"/>
-    <echo message="  Not rebuilding Javadocs, as they are up-to-date:"/>
-    <echo message="  ${dist.bin.javadocs}/packages.html is more recent than"/>
-    <echo message="  ${src.java.dir}/**/*.java"/>
-    <echo message="-------------------------------------------------------------"/>
-  </target>
-  
-  <target name="javadocs-api">
-    <mkdir dir="${dist.bin.javadocs}"/>
-    <javadoc packagenames="${packages}"
-      destdir="${dist.bin.javadocs}"
-      author="true"
-      version="true"
-      use="false"
-      noindex="true"
-      breakiterator="true"
-      windowtitle="${Name} API - Version ${version}"
-      doctitle="${Name}"
-      bottom="Copyright &#169; ${year} Apache Software Foundation. All Rights Reserved."
-      stylesheetfile="${src.resource.dir}/javadoc.css"
-      source="${src.java.version}">
-      <!-- sources -->
-      <sourcepath>
-        <pathelement path="${src.java.api.dir}"/>
-        <!--
-          <pathelement path="${build.java.src}"/>
-        -->
-      </sourcepath>
-      
-      <!-- pass ant in the classpath to avoid class not found errors -->
-      <classpath>
-        <fileset dir="${lib.dir}">
-          <include name="*.jar"/>
-        </fileset>
-        <fileset dir="${cocoon.webapp.dir}/WEB-INF/lib">
-          <include name="*.jar"/>
-        </fileset>
-        <fileset dir="tools/jetty/lib">
-          <include name="servlet-*.jar"/>
-        </fileset>
-        <fileset dir="tools/lib">
-          <include name="*.jar"/>
-        </fileset>
-      </classpath>
-    </javadoc>
-  </target>
-
-  <!-- Creates the API documentation -->
-  <target name="javadocs"
-    depends="prepare-src, javadocs_check, javadocs_done, javadocs-api, javadocs-modules"
-    unless="javadocs.notrequired"
-    description="Generates the API documentation"/>
-  
-</project>
diff --git a/trunk/src/targets/export-build.xml b/trunk/src/targets/export-build.xml
deleted file mode 100644
index 32c3bce..0000000
--- a/trunk/src/targets/export-build.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-export">
-
-  <description>
-    Export Targets
-  </description>
-
-<!-- Export the webapp -->
-<target name="export" depends="webapp" description="Exports a publication to static HTML. As a parameter one should specify a publication, e.g. -Dpublication=default">
-  <property name="publication" value=""/>
-  <property name="publication.dir" value="${build.webapp}/lenya/pubs/${publication}"/>
-  <property name="build.export" value="${build.dir}/export"/>
-  <property name="build.work" value="${build.dir}/work"/>
-    
-  <property name="project.debuglevel" value="DEBUG"/>
-      
-  <!-- Copying source files from authoring to live -->
-  <copy todir="${publication.dir}/content/live">
-    <fileset dir="${publication.dir}/content/authoring"/>
-  </copy>
-
-  <java classname="org.apache.cocoon.Main"
-    fork="true"
-    maxmemory="128m"
-    dir="."
-    failonerror="true">
-    
-  <classpath>
-    <pathelement location="${build.webapp}/WEB-INF/classes"/>
-    <fileset dir="${build.webapp}/WEB-INF/lib" includes="*.jar"/>
-    <fileset dir="tools/jetty/lib">
-      <include name="servlet-*.jar"/>
-    </fileset>
-  </classpath>
-  
-    <jvmarg value="-Djava.endorsed.dirs=${build.webapp}/WEB-INF/lib/endorsed${path.separator}${java.endorsed.dirs}"/>
-    <jvmarg value="-ea"/>
-    
-    <arg value="-c${build.webapp}"/>   <!-- input to the process -->
-    <arg value="-d${build.export}"/>   <!-- output to be put -->
-    <arg value="-w${build.work}"/>   <!-- temp dir to use for e.g. cache -->
-    <arg value="-u${project.debuglevel}"/> <!-- threshold for log messages -->
-    <arg value="-C${build.webapp}/WEB-INF/cocoon.xconf"/> <!-- cocoon.xconf file to use -->
-    <arg value="-b${build.export}/brokenlinks.txt"/>  <!-- output list of broken links -->
-    <arg value="-k${build.webapp}/WEB-INF/logkit.xconf"/>  <!-- logkit configuration -->
-    <arg value="/${publication}/live/index.html"/>  <!-- starting page -->
-    <arg value="-efalse"/> <!-- don't confirm extensions -->
-    <arg value="-V" />  <!-- be verbose -->
-  </java>
-  
-</target>
-</project>
diff --git a/trunk/src/targets/ide-build.xml b/trunk/src/targets/ide-build.xml
deleted file mode 100644
index 6f5d802..0000000
--- a/trunk/src/targets/ide-build.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="lenya-ide">
-  
-  <description>
-    IDE targets
-  </description>
-
-  <!-- Build the Eclipse projects files -->
-  <target name="eclipse-project" depends="prepare" description="Generate the Eclipse project files">
-
-    <echo message="Building Eclipse Project Files"/>
-
-    <xmlproperty file="${cocoon.src.dir}/.project"/>
-    
-    <fail unless="projectDescription.name">
-      Please call "./build.sh eclipse-project" in the Cocoon source directory first.
-    </fail>
-    
-    <!-- prepare the various paths that will form the project -->
-    <path id="srcs">
-
-      <!-- Ant tasks -->
-      <pathelement path="tools/anttasks/src"/>
-      
-      <!-- API source dirs -->
-      <pathelement path="${src.java.api.dir}"/>
-      
-      <!-- implementation source dirs -->
-      <pathelement path="${src.java.impl.dir}"/>
-      <pathelement path="${src.test.impl.dir}"/>
-      
-      <dirset dir="src/pubs">
-        <include name="*/java/src"/>
-        <include name="*/java/test"/>
-        <include name="*/modules/*/java/src"/>
-        <include name="*/modules/*/java/test"/>
-      </dirset>
-      <dirset dir="src/modules">
-        <include name="*/java/src"/>
-        <include name="*/java/test"/>
-      </dirset>
-      <dirset dir="src/modules-core">
-        <include name="*/java/src"/>
-        <include name="*/java/test"/>
-      </dirset>
-      <dirset dir="src/modules-optional">
-        <include name="*/java/src"/>
-        <include name="*/java/test"/>
-      </dirset>
-    </path>
-
-    <path id="libs">
-      <!-- Cocoon libs -->
-      <fileset dir="${cocoon.src.dir}/${lib.dir}">
-        <include name="core/*.jar"/>
-        <!-- Currently, we have no JVM dependent libraries       
-          <include name="core/jvm${target.vm}/*.jar"/>
-        -->
-        <include name="optional/*.jar"/>
-        <include name="local/*.jar"/>
-        <include name="endorsed/*.jar"/>
-      </fileset>
-      <!-- Cocoon blocks lib -->
-      <fileset dir="${cocoon.src.dir}/src/blocks">
-        <include name="**/*.jar"/>
-      </fileset>
-      <!-- Cocoon tools libs -->
-      <fileset dir="${cocoon.src.dir}/tools/lib">
-        <include name="*.jar"/>
-        <exclude name="xalan*.jar"/>
-        <exclude name="xml-api*.jar"/>
-        <exclude name="xerces*.jar"/>
-      </fileset>      
-      <!-- main libs -->
-      <fileset dir="${lib.dir}">
-        <include name="*.jar"/>
-        <include name="endorsed/*.jar"/>
-      </fileset>
-    </path>
-
-    <!-- convert paths to properties -->
-    <property name="srcs" refid="srcs"/>
-    <property name="libs" refid="libs"/>
-
-    <!-- expand properties in the template file -->
-    <copy file="${src.resource.dir}/dev/eclipse/classpath-tmpl.xml"
-          tofile="${build.temp}/classpath-temp.xml"
-          filtering="yes"
-          overwrite="yes">
-      <filterset>
-        <filter token="SRC_DIRS" value="${srcs}"/>
-        <filter token="LIBS" value="${libs}"/>
-        <filter token="OUTPUT_DIR" value="${ide.eclipse.outputdir}"/>
-      </filterset>
-    </copy>
-
-    <!-- split the path in 'item' XML elements -->
-    <replace file="${build.temp}/classpath-temp.xml"
-             token="${path.separator}" value="&lt;/item&gt;&#xA; &lt;item&gt;"/>
-    <!-- relativize file names by removing the current directory -->
-    <replace file="${build.temp}/classpath-temp.xml"
-             token="${user}${file.separator}" value=""/>
-    <!-- and in case that fails, remove the base directory -->
-    <replace file="${build.temp}/classpath-temp.xml"
-             token="${basedir}${file.separator}" value=""/>
-
-    <!-- replace platform-dependent path separator by '/' -->
-    <replace file="${build.temp}/classpath-temp.xml"
-             token="${file.separator}" value="/"/>
-
-    <!-- now build the .classpath file -->
-    <xslt in="${build.temp}/classpath-temp.xml" out="${basedir}/.classpath"
-          processor="trax"
-          style="${src.resource.dir}/dev/eclipse/make-classpath.xsl">
-       <param name="exportlib" expression="${ide.eclipse.export.libs}"/>
-       <param name="cocoonProjectName" expression="${projectDescription.name}"/>
-    </xslt>
-
-    <!-- copy the project file (expand version) -->
-    <copy file="${src.resource.dir}/dev/eclipse/project"
-          tofile="${basedir}/.project"
-          filtering="yes"
-          overwrite="yes">
-      <filterset>
-        <filter token="COCOON_PROJECT" value="${projectDescription.name}"/>
-        <filter token="VERSION" value="${version}"/>
-      </filterset>
-    </copy>
-  </target>
-
-  <!-- Prepares the webapp to make it directly usable with the eclipse project -->
-  <target name="eclipse-webapp-prepare" depends="eclipse-webapp-delete-jars"
-          description="Prepares the webapp directory to make it usable within Eclipse"/>
-  
-  <target name="eclipse-webapp-delete-jars" depends="prepare">
-      <!-- delete all jars and class files, they are already included in the project -->
-      <delete>
-          <fileset dir="${build.webapp}/WEB-INF">
-            <include name="lib/*.jar" />
-            <include name="classes/**/*.class" />
-          </fileset>
-      </delete>
-  </target>
-</project>
diff --git a/trunk/src/targets/init-build.xml b/trunk/src/targets/init-build.xml
deleted file mode 100644
index e93d419..0000000
--- a/trunk/src/targets/init-build.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-init">
-
-  <description>
-    Initialization Targets
-  </description>
-
-  <!-- Initialization target -->
-  <target name="init" depends="init-tasks">
-    <tstamp>
-      <format property="SNAPSHOT_STAMP" pattern="yyyyMMddhhmmss"/>
-    </tstamp>
-    
-    <echo message="------------------- ${Name} ${version} [${year}] ----------------"/>
-    <echo>Building with ${ant.version} and Java version ${ant.java.version}</echo>
-    <echo>Using build file ${ant.file}</echo>
-
-    <condition property="java.version.equal.target.vm">
-      <equals arg1="${target.vm}" arg2="${ant.java.version}"/>
-    </condition>
-    <antcall target="warning-re-java-version"/>
-
-    <property name="snapshot.bin.name" value="${fullname}-${SNAPSHOT_STAMP}-bin"/>
-    <property name="snapshot.src.name" value="${fullname}-${SNAPSHOT_STAMP}-src"/>
-    <property name="snapshot.bin.dir" value="${dist.root}/${snapshot.bin.name}"/>
-    <property name="snapshot.src.dir" value="${dist.root}/${snapshot.src.name}"/>
-  </target>
-
-  <target name="warning-re-java-version" unless="java.version.equal.target.vm">
-    <echo message="*****************************************************************"/>
-    <echo message="*"/>
-    <echo message="* WARNING: Apache Lenya ${version} is targeted for Java version ${target.vm}. Please refer to the public mailing list for other Java version."/>
-    <echo message="*"/>
-    <echo message="*****************************************************************"/>
-<!--
-    <fail message="Build process will be aborted!"/>
--->
-  </target>
-
-  <!-- Prepare the build webapp directory -->
-  <target name="check-cocoon" depends="init" unless="gump.skipcocoonbuild">
-    <available file="${cocoon.src.dir}/build/webapp" type="dir" property="cocoon.build.webapp.dir.exists"/>
-    <antcall target="check-blocks-properties"/>
-    <antcall target="check-build-properties"/>
-    <antcall target="build-cocoon"/>
-  </target>
-
-  <!-- Build Cocoon with our properties -->
-  <target name="build-cocoon" unless="cocoon.build.webapp.dir.exists">
-    <copy todir="${cocoon.src.dir}" filtering="off">
-      <fileset dir="${src.cocoon.properties.dir}"/>
-    </copy>
-
-    <ant dir="${cocoon.src.dir}" inheritall="false"/>
-  </target>
-
-  <!-- Check local.blocks.properties  -->
-  <target name="check-blocks-properties" if="cocoon.build.webapp.dir.exists">
-    <property file="${cocoon.src.dir}/local.blocks.properties"/>
-    <condition property="local.blocks.properties.in.sync">
-      <equals arg1="${lenya.blocks.properties.version}" arg2="426603"/>
-    </condition>
-    <fail unless="local.blocks.properties.in.sync" message="It seems that your ${cocoon.src.dir}/local.blocks.properties is NOT in sync with ${src.cocoon.properties.dir}/local.blocks.properties! The file ${src.cocoon.properties.dir}/local.blocks.properties has probably been modified by some Apache Lenya developer. Issue a 'build clean-all' and rebuild Lenya."/>
-  </target>
-
-  <!-- Check local.build.properties  -->
-  <target name="check-build-properties" if="cocoon.build.webapp.dir.exists">
-    <property file="${cocoon.src.dir}/local.build.properties"/>
-    <condition property="local.build.properties.in.sync">
-      <equals arg1="${lenya.build.properties.version}" arg2="529161"/>
-    </condition>
-    <fail unless="local.build.properties.in.sync" message="It seems that your ${cocoon.src.dir}/local.build.properties is NOT in sync with ${src.cocoon.properties.dir}/local.build.properties! The file ${src.cocoon.properties.dir}/local.build.properties has probably been modified by some Apache Lenya developer. Issue a 'build clean-all' and rebuild Lenya."/>
-  </target>
-
-  <!-- Copy the bulk of the cocoon webapp to our destination -->
-  <target name="prepare-cocoon" depends="check-cocoon" unless="gump.skipcocoonbuild">
-    <copy todir="${build.webapp}" filtering="off">
-      <fileset dir="${cocoon.webapp.dir}">
-        <exclude name="resources/**"/>
-        <exclude name="stylesheets**"/>
-        <exclude name="*.xml"/>
-        <exclude name="*.xslt"/>
-        <exclude name="test-suite/**"/>
-        <exclude name="legal/**"/>
-        <exclude name="WEB-INF/db/**"/>
-        <exclude name="WEB-INF/xconf/**"/>
-        <!-- exclude the geronimo libraries, see http://issues.apache.org/bugzilla/show_bug.cgi?id=38587 -->
-        <exclude name="WEB-INF/lib/geronimo-*.jar"/>
-        <exclude name="**/javac.jar"/>
-      </fileset>
-    </copy>
-
-    <!-- patch logkit.xconf -->
-    <xpatch file="${build.webapp}/WEB-INF/logkit.xconf"
-        includes="src/confpatch/logkit-*.xconf"/> 
-    
-    <!-- patch log4j.xconf -->
-    <xpatch file="${build.webapp}/WEB-INF/log4j.xconf"
-        includes="src/confpatch/log4j-*.xconf"/> 
-    
-    <!-- patch web.xml -->
-    <echo>PATCH web.xml</echo>
-    <xpatch file="${build.webapp}/WEB-INF/web.xml" 
-            includes="src/confpatch/*.xweb"/> 
-
-    <!-- Copy Entities 
-    <copyJavaSources pubsrootdirs="${pubs.root.dirs}" javadir="${src.entities.dir}" builddir="${build.webapp}/${build.entities.dir}" />    
-    -->
-  </target>
-
-  <target name="prepare" depends="prepare-cocoon">
-    <mkdir dir="${build.dir}"/>
-    <mkdir dir="${build.webapp}"/>
-  </target>
-
-  <!-- Copy publication source code and libraries to ${build.java.src} -->
-  <target name="prepare-src" depends="prepare">
-    
-    <!-- FIXME: Use bulkCopy task in the future; needs regexp mapper which is part of ant optional package. -->
-    <!-- Copy java source files from ${pubs.root.dirs} to ${build.java.src} -->
-    <copyJavaSources pubsrootdirs="${pubs.root.dirs}" javadir="java/src" builddir="${build.dir}/java/pubs" />
-    
-    <mkdir dir="${build.dir}/lib"/>
-    
-    <!-- Copy publication specific libraries from ${pubs.root.dirs} (java/lib) to ${build.webapp}/WEB-INF/lib -->
-    <bulkCopy 
-      sourcedirs="${pubs.root.dirs}" 
-      todir="${build.webapp}/WEB-INF/lib" 
-      flatten="true">
-      <fileset includes="*/java/lib/*"/> <!-- if a directory with more than one publication is being specified, e.g. pubs -->
-      <fileset includes="java/lib/*"/>   <!-- if only a specific publication is being specified, e.g. pubs/blog -->
-    </bulkCopy>
-    <bulkCopy 
-      sourcedirs="${pubs.root.dirs}" 
-      todir="${build.dir}/lib" 
-      flatten="true">
-      <fileset includes="*/java/lib/*"/> <!-- if a directory with more than one publication is being specified, e.g. pubs -->
-      <fileset includes="java/lib/*"/>   <!-- if only a specific publication is being specified, e.g. pubs/blog -->
-    </bulkCopy>
-    <bulkCopy 
-      sourcedirs="${modules.root.dirs}" 
-      todir="${build.webapp}/WEB-INF/lib" 
-      flatten="true">
-      <fileset includes="*/java/lib/*"/> <!-- if a directory with more than one publication is being specified, e.g. pubs -->
-      <fileset includes="java/lib/*"/>   <!-- if only a specific publication is being specified, e.g. pubs/blog -->
-    </bulkCopy>
-    <bulkCopy 
-      sourcedirs="${modules.root.dirs}" 
-      todir="${build.dir}/lib" 
-      flatten="true">
-      <fileset includes="*/java/lib/*"/> <!-- if a directory with more than one publication is being specified, e.g. pubs -->
-      <fileset includes="java/lib/*"/>   <!-- if only a specific publication is being specified, e.g. pubs/blog -->
-    </bulkCopy>
-  </target>
-</project>
diff --git a/trunk/src/targets/kupu-build.xml b/trunk/src/targets/kupu-build.xml
deleted file mode 100644
index 3b466ab..0000000
--- a/trunk/src/targets/kupu-build.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project name="kupu" default="kupu">
-  
-  <description>
-    Kupu targets
-  </description>
-
-  <target name="kupu" depends="webapp" description="Build Kupu">
-
-    <echo>
-      ********************************************
-      *               Build Kupu.                *
-      ********************************************
-    </echo>
-    
-    <exec 
-      dir="${build.webapp}/lenya/resources/kupu" 
-      executable="xsltproc" 
-      failonerror="false" 
-      failifexecutionfails="false" 
-      outputproperty="xsltproc.output"
-    />
-    
-    <fail unless="xsltproc.output">:            
-      ********************************************
-      * Please install "xsltproc" to build Kupu. *
-	  *                                          *
-	  * xsltproc can be downloaded from          *
-	  * ftp://ftp.zlatkovic.com/pub/libxml/      *
-	  * (you also need zlib and iconv)           *
-      ********************************************
-      
-    </fail>
-    
-    <exec dir="${build.webapp}/lenya/resources/kupu" 
-      executable="make" 
-      failonerror="true" 
-      failifexecutionfails="false"
-    />
-
-  </target>
-</project>
diff --git a/trunk/src/targets/message-build.xml b/trunk/src/targets/message-build.xml
deleted file mode 100644
index 05e4361..0000000
--- a/trunk/src/targets/message-build.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="message">
-
-  <description>
-    Message targets
-  </description>
-
-  <target name="successfully-built-message-jetty" if="servlet.engine.jetty">
-    <echo message="*****************************************************************"/>
-    <echo message="*"/>
-    <echo message="* You have successfully built ${Name} ${version} based on"/>
-    <echo message="*"/>
-    <echo message="*      Cocoon (${cocoon.src.dir})"/>
-    <echo message="*"/>
-    <echo message="* Start using ${Name} with Jetty by typing"/>
-    <echo message="*      Linux/UNIX: ./lenya.sh"/>
-    <echo message="*      Windows:      lenya"/>
-    <echo message="*"/>
-    <echo message="* and browse to "/>
-    <echo message="*      http://127.0.0.1:${web.app.server.jetty.port}"/>
-    <echo message="*      (Jetty Admin Port: ${web.app.server.jetty.admin.port})"/>
-    <echo message="*"/>
-    <echo message="* Thanks for using ${Name}"/>
-    <echo message="*"/>
-    <echo message="*****************************************************************"/>
-  </target>
-
-  <target name="successfully-built-message-tomcat" if="servlet.engine.tomcat">
-    <echo message="*****************************************************************"/>
-    <echo message="*"/>
-    <echo message="* You have successfully built ${Name} ${version} based on"/>
-    <echo message="*"/>
-    <echo message="*      Cocoon (${cocoon.src.dir})"/>
-    <echo message="*"/>
-    <echo message="* IMPORTANT: Make sure that the endorsed libraries are set correctly"/>
-    <echo message="*            ${tomcat.endorsed.dir}"/>
-    <echo message="*"/>
-    <echo message="* Start using ${Name} with Tomcat by typing"/>
-    <echo message="*      Linux/UNIX: ${tomcat.home.dir}/bin/startup.sh"/>
-    <echo message="*      Windows:    ${tomcat.home.dir}/bin/startup.bat"/>
-    <echo message="*"/>
-    <echo message="* and browse to "/>
-    <echo message="*      http://127.0.0.1:8080/lenya/"/>
-    <echo message="*"/>
-    <echo message="* Thanks for using ${Name}"/>
-    <echo message="*"/>
-    <echo message="*****************************************************************"/>
-  </target>
-
-</project>
diff --git a/trunk/src/targets/migration-build.xml b/trunk/src/targets/migration-build.xml
deleted file mode 100644
index 1526be7..0000000
--- a/trunk/src/targets/migration-build.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: webapp-build.xml 240255 2005-08-26 14:59:37Z andreas $ -->
-
-<project name="lenya-migration">
-
-  <description>
-    Migration targets
-  </description>
-  
-  <target name="migrate-extensions">
-    
-    <echo>
-    CAUTION: This target does not work out of the box if you use an external content directory
-    in publication.xml. Please change the parameters of the target accordingly.
-    </echo>
-    
-    <property name="publication" value=""/>
-    <move todir="${build.webapp}/lenya/pubs">
-      <fileset dir="${build.webapp}/lenya/pubs/${publication}">
-        <include name="content/**"/>
-        <exclude name="content/*/site.xml"/>
-        <exclude name="content/*/sitetree.xml"/>
-      </fileset>
-      <compositemapper>
-        <mapper type="glob" from="*.xml" to="*"/>
-        <mapper type="glob" from="*.xml.meta" to="*.meta"/>
-      </compositemapper>
-    </move>
-  </target>
-
-  <target name="migrate-14">
-    <path id="migration.classpath">
-      <fileset dir="${lib.dir}">
-        <include name="*.jar"/>
-      </fileset>
-      <fileset dir="${build.webapp}/WEB-INF/lib">
-        <include name="*.jar"/>
-      </fileset>
-      <pathelement path="${build.webapp}/WEB-INF/classes"/>
-    </path>
-    
-    <java fork="true" classpathref="migration.classpath" classname="org.apache.lenya.cms.migration.Migrate14">
-      <arg value="${build.webapp}"/>
-      <arg value="${repository.factory}"/>
-    </java>
-    
-  </target>
-
-</project>
diff --git a/trunk/src/targets/modules-build.xml b/trunk/src/targets/modules-build.xml
deleted file mode 100644
index e58b825..0000000
--- a/trunk/src/targets/modules-build.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: webapp-build.xml 177920 2005-05-23 04:59:37Z gregor $ -->
-
-<project name="modules">
-
-  <description>
-    Modules Targets
-  </description>
-  
-  <property name="modules.root.dirs" value=""/>
-  <property name="build.modules" value="${build.webapp}/lenya/modules"/>
-  <property name="modules.copy" value="false"/>
-
-  <target name="prepare-modules" depends="init-tasks">
-    
-    <property name="cocoon.xconf" value="${build.webapp}/WEB-INF/cocoon.xconf"/>
-    
-    <generateModuleList
-      moduleDirs="${modules.root.dirs}"
-      moduleFile="${build.dir}/temp/modules.xml"/>
-    
-    <!-- aggregate all module config files to one file: -->
-    <xslt
-      in="${build.dir}/temp/modules.xml"
-      out="${build.dir}/temp/modules-config.xml"
-      style="${src.resource.dir}/build/modules2config.xsl">
-    </xslt>
-    
-    <xslt
-      in="${build.dir}/temp/modules-config.xml"
-      out="${build.dir}/temp/modules-build.xml"
-      style="${src.resource.dir}/build/modules2build.xsl">
-      <param name="cocoon-xconf" expression="${cocoon.xconf}" />
-      <param name="module-schema" expression="${src.resource.dir}/build/module.rng"/>
-      <param name="copy-modules" expression="${modules.copy}"/>
-    </xslt>
-    
-    <xslt
-      in="${build.dir}/temp/modules.xml"
-      out="${build.dir}/temp/modules.xconf"
-      style="${src.resource.dir}/build/modules2patch.xsl">
-      <param name="copy-modules" expression="${modules.copy}"/>
-    </xslt>
-    
-    <xpatch addComments="false"
-      includes="modules.xconf"
-      srcdir="${build.dir}/temp/"
-      file="${cocoon.xconf}"/>
-
-  </target>
-  
-  
-  <target name="deploy-modules" depends="prepare-modules">
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true"
-      target="compile-modules"/>
-  </target>
-  
-  
-  <!-- ================================================ -->
-  <!-- Javadocs -->
-  <!-- ================================================ -->
-  
-  <target name="javadocs-modules" depends="prepare-modules">
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true"
-      target="javadocs-modules"/>
-  </target>
-  
-  
-  <!-- ================================================ -->
-  <!-- Module tests -->
-  <!-- ================================================ -->
-  
-  <target name="prepare-module-test">
-    <xslt basedir="${build.dir}/temp"
-      includes="*.xconf"
-      destdir="${build.dir}/temp"
-      style="${src.resource.dir}/test/xpatch2testpatch.xsl"
-      extension=".xtest"/>
-    <xpatch addComments="false"
-      includes="modules.xtest"
-      srcdir="${build.dir}/temp"
-      file="${build.test}/org/apache/lenya/cms/LenyaTestCase.xtest"/>
-  </target>
-  
-  <target name="modules.test" depends="patch-modules-test">
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true">
-      <target name="test-module-org.apache.lenya.modules.export"/>
-      <target name="test-modules"/>
-    </ant>
-  </target>
-  
-  <target name="modules.test.canoo" depends="init" description="Run Canoo web tests for modules">
-    <ant antfile="${build.dir}/temp/modules-build.xml">
-      <property name="webtest.home" value="${webtest.home}"/>
-      <target name="test-modules-canoo"/>
-    </ant>
-  </target>
-  
-  <target name="patch-modules-test" depends="set-test-patch-property, tests.prepare, prepare-module-test">
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true"
-      target="patch-modules-test"/>
-  </target>
-  
-  <target name="module.test" depends="patch-modules-test">
-    <property name="module" value=""/>
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true"
-      target="test-module-${module}"/>
-  </target>
-  
-  <target name="module.compile">
-    <property name="module" value=""/>
-    <ant antfile="${build.dir}/temp/modules-build.xml"
-      inheritall="true"
-      inheritrefs="true"
-      target="compile-module-${module}"/>
-  </target>
-  
-</project>
diff --git a/trunk/src/targets/properties-build.xml b/trunk/src/targets/properties-build.xml
deleted file mode 100644
index 4c042ed..0000000
--- a/trunk/src/targets/properties-build.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-properties">
-
-  <description>
-    Properties Targets
-  </description>
-
-  <!-- Set up some global properties -->
-  <!--
-  Give user a chance to override without editing build.properties
-  (local.build.properties takes precedence)
-  -->
-  <property file="local.build.properties"/>
-  <property file="build.properties"/>
-
-  <condition property="local.properties.in.sync">
-    <equals arg1="${build.properties.version}" arg2="594644"/>
-  </condition>
-
-  <fail unless="local.properties.in.sync" message="It seems that your local.build.properties is NOT in sync with build.properties! The file build.properties has probably been modified by some Apache Lenya developer. Re-copy build.properties to local.build.properties and re-set your local properties to get the two files back in sync. Please apologize any inconvenience."/>
-
-  <!-- cocoon build properties directory -->
-  <property name="src.cocoon.properties.dir" value="src/cocoon"/>
-
-  <!-- Project version and name -->
-  <property name="version" value="2.0-dev"/>
-  <property name="lenya.revision" value="xxxxxx"/>
-  <property name="fullname" value="${ant.project.name}-${version}"/>
-  <property name="distname" value="apache-${ant.project.name}-${version}"/>
-  <property name="Name"     value="Apache Lenya"/>
-  <property name="year"     value="1999-2006"/>
-
-  <property name="debug"          value="on"/>
-  <property name="optimize"       value="on"/>
-  <property name="deprecation"    value="off"/>
-  <property name="nowarn"         value="off"/>
-  <!-- Detecting the current jvm -->
-  <condition property="target.vm" value="${ant.java.version}">
-    <not>
-      <or>
-        <equals arg1="1.1" arg2="${ant.java.version}"/>
-        <equals arg1="1.2" arg2="${ant.java.version}"/>
-        <equals arg1="1.3" arg2="${ant.java.version}"/>
-      </or>
-    </not>
-  </condition>
-  <fail unless="target.vm">Please use a JVM 1.4 or superior to compile lenya ${version}</fail>
-  
-  <!--
-  The minimal supported Java version. The class files we ship with Lenya (e.g., build tasks)
-  are compiled for this version.
-  -->
-  <property name="target.vm.minimal" value="1.4"/>
-
-  <property name="packages"      value="*.*"/>
-
-  <!-- cocoon endorsed libraries directory -->
-  <property name="cocoon.endorsed.lib.dir" value="${cocoon.src.dir}/lib/endorsed"/>
-
-  <!-- The libraries we use and which are not already included in the cocoon package -->
-  <property name="lib.dir" value="lib"/>
-  <property name="tools.lib.dir" value="tools/lib"/>
-  <property name="endorsed.lib.dir" value="lib/endorsed"/>
-  <!-- All compilation and preparation takes place in build.root -->
-  <property name="build.root" value="build"/>
-  <!-- Destination for the compliation of our own classes in the "compile" target -->
-  <property name="build.dir" value="${build.root}/${ant.project.name}"/>
-  <!-- Destination for the filtered source files  -->
-  <property name="build.java.src" value="${build.dir}/java/src"/>
-  <property name="build.java.test" value="${build.dir}/java/test"/>
-  
-  <!-- Destination for temporary files during the build  -->
-  <property name="build.temp" value="${build.dir}/temp"/>
-  <property name="build.patch" value="${build.temp}/patch"/>
-  <!-- This is where we assemble the webapp directory in the "webapp" task -->
-  <property name="build.webapp" value="${build.dir}/webapp"/>
-  <!-- This is where we do the tests -->
-  <property name="build.test" value="${build.root}/test"/>
-  <!-- All packaging for distribution takes place in dist.root -->
-  <property name="dist.root" value="dist"/>
-  <!-- The toplevel directory for the final end-user distribution -->
-  <property name="dist.bin.dir" value="${dist.root}/${distname}-bin"/>
-  <!-- The javadoc destination directory -->
-  <property name="dist.bin.javadocs" value="${build.webapp}/site/apidocs"/>
-  <!-- The filename of the final end-user war package -->
-  <property name="dist.bin.warfile" value="${dist.bin.dir}/${ant.project.name}.war"/>
-  <!-- The toplevel directory for the final developer source distribution -->
-  <property name="dist.src.dir" value="${dist.root}/${distname}-src"/>
-  <!--
-  The files that should be copied into the dist
-  directory and packed up as tar.gz file, along with the .war file
-  -->
-  <property name="src.dist.dir" value="./src/dist"/>
-  <!--
-  The files that should be copied into the source dist
-  directory and packed up as tar.gz file, along with the sources etc.
-  -->
-  <property name="src.dist-src.dir" value="./src/dist-src"/>
-  
-  <!-- Our own source code tree is here -->
-  <property name="src.java.api.dir" value="./src/java"/>
-  <property name="src.java.impl.dir" value="./src/impl/java"/>
-  
-  <!-- This is where the source of the tests are located -->
-  <property name="src.test.api.dir" value="src/test"/>
-  <property name="src.test.impl.dir" value="src/impl/test"/>
-  
-  <!-- Publication-specific entities are here -->
-  <property name="src.entities.dir" value="resources/entities"/>
-  <property name="build.entities.dir" value="WEB-INF/entities"/>
-  <!--
-  Our own webapp resources to be merged with the
-  contents of the cocoon webapp are here
-  -->
-  <property name="src.webapp.dir" value="src/webapp"/>
-  <property name="tools.tasks.dest" value="tools/anttasks/build/classes"/>
-  <property name="src.resource.dir"  value="src/resources"/>
-  <!-- hsqldb database config files directory -->
-  <property name="src.database.dir" value="src/webapp/WEB-INF/db"/>
-
-  <!-- Set up classpath -->
-  <path id="classpath">
-    <fileset dir="${lib.dir}">
-      <include name="*.jar"/>
-    </fileset>
-    <fileset dir="${build.dir}/lib">
-      <include name="*.jar"/>
-    </fileset>
-    <fileset dir="${cocoon.webapp.dir}/WEB-INF/lib">
-      <include name="*.jar"/>
-    </fileset>
-    <fileset dir="tools/jetty/lib">
-      <include name="servlet-*.jar"/>
-    </fileset>
-  </path>
-
-  <target name="cocoon-init-tasks">
-    <ant dir="${cocoon.src.dir}" target="init-tasks" inheritall="false"/>
-  </target>
-
-  <!-- Custom Ant tasks used for building Lenya -->
-  <target name="init-tasks" depends="cocoon-init-tasks">
-    <taskdef name="copyJavaSources" classpath="${tools.tasks.dest}" classname="org.apache.lenya.cms.ant.CopyJavaSourcesTask"/>
-    <taskdef name="bulkCopy"        classpath="${tools.tasks.dest}" classname="org.apache.lenya.cms.ant.BulkCopyTask"/>
-    <taskdef name="copyPubs"        classpath="${tools.tasks.dest}" classname="org.apache.lenya.cms.ant.CopyPublicationsTask"/>
-    <taskdef name="xpatch"          classpath="${cocoon.src.dir}/tools/anttasks" classname="XConfToolTask" />
-    <taskdef name="generateModuleList" classpath="${tools.tasks.dest}" classname="org.apache.lenya.cms.ant.GenerateModuleList" />
-    <taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask"/>
-  </target>
-
-  <!-- Compile tasks -->
-  <target name="compile-build-tasks" description="Target to compile tasks needed during build">
-    <javac srcdir="tools/anttasks/src"
-           destdir="tools/anttasks/build/classes"
-           debug="${debug}"
-           optimize="{optimize}"
-           deprecation="${deprecation}"
-           target="${target.vm.minimal}"
-           nowarn="${nowarn}"
-           source="${target.vm.minimal}"/>
-	   <!--
-           classpathref="classpath"
-	   -->
-  </target>
-
-  <!-- Compile Configure Command Line Tool -->
-  <target name="compile-configure" description="Compile configure command line tool">
-
-    <delete dir="tools/configure/build"/>
-
-    <mkdir dir="tools/configure/build"/>
-    <mkdir dir="tools/configure/build/classes"/>
-    <mkdir dir="tools/configure/build/lib"/>
-  	
-    <javac srcdir="tools/configure/src/java"
-           destdir="tools/configure/build/classes"
-           debug="${debug}"
-           optimize="{optimize}"
-           deprecation="${deprecation}"
-           target="${target.vm}"
-           nowarn="${nowarn}"
-           source="${target.vm}"/>
-	   <!--
-           classpathref="classpath"
-	   -->
-
-
-    <jar destfile="tools/configure/build/lib/apache-lenya-configure-core-${version}-r${lenya.revision}.jar"
-         basedir="tools/configure/build/classes" 
-         includes="org/apache/lenya/config/core/**"/>
-    <jar destfile="tools/configure/build/lib/apache-lenya-configure-impl-${version}-r${lenya.revision}.jar"
-         basedir="tools/configure/build/classes" 
-         includes="org/apache/lenya/config/impl/**"/>
-
-    <delete>
-      <fileset dir="tools/configure/lib" includes="*.jar"/>
-    </delete>
-
-    <copy file="tools/configure/build/lib/apache-lenya-configure-core-${version}-r${lenya.revision}.jar"
-          tofile="tools/configure/lib/apache-lenya-configure-core-${version}-r${lenya.revision}.jar"/>
-    <copy file="tools/configure/build/lib/apache-lenya-configure-impl-${version}-r${lenya.revision}.jar"
-          tofile="tools/configure/lib/apache-lenya-configure-impl-${version}-r${lenya.revision}.jar"/>
-          
-  </target>
-
-</project>
-
diff --git a/trunk/src/targets/publication-test-build-template.xml b/trunk/src/targets/publication-test-build-template.xml
deleted file mode 100644
index b0051e3..0000000
--- a/trunk/src/targets/publication-test-build-template.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-<project name="lenya-pubtest">
-
-  <description>
-    Publication Test Targets
-  </description>
-
-<target depends="init, tests.prepare" name="test.publications">
-</target>
-</project>
\ No newline at end of file
diff --git a/trunk/src/targets/publication-test-build.xml b/trunk/src/targets/publication-test-build.xml
deleted file mode 100644
index b0051e3..0000000
--- a/trunk/src/targets/publication-test-build.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-<project name="lenya-pubtest">
-
-  <description>
-    Publication Test Targets
-  </description>
-
-<target depends="init, tests.prepare" name="test.publications">
-</target>
-</project>
\ No newline at end of file
diff --git a/trunk/src/targets/test-build.xml b/trunk/src/targets/test-build.xml
deleted file mode 100644
index 3cf7c99..0000000
--- a/trunk/src/targets/test-build.xml
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-test">
-
-  <description>
-    Test Targets
-  </description>
-
-    <!-- === Test targets =========================================================== -->
-
-  <property name="debug" value="true"/>
-  <property name="test.pub.id" value="test"/>
-  <property name="test.pub.source.id" value="default"/>
-  <property name="junit.test.loglevel" value="2"/>
-  <property name="junit.dir" value="${build.root}/test/output" />
-  
-  <target name="set-test-patch-property">
-    <property name="patch.webapp" value="false"/>
-  </target>
-  
-  <!--
-  DEBUG 0
-  INFO  1
-  WARN  2
-  ERROR 3
-  FATAL 4
-  -->
-
-  <path id="classpath.default">
-    <path refid="classpath"/>
-    <pathelement location="${build.test}" />
-    <pathelement path="${build.webapp}/WEB-INF/classes" />
-    <fileset dir="${build.webapp}/WEB-INF/lib">
-      <include name="**.jar"/>
-    </fileset>
-  </path>
-      
-  <!-- Runs all tests -->
-  <target name="test"
-      description="Runs all tests"
-    depends="modules.test, tests.junit"/>
-  <!--
-  depends="tests.junit, tests.anteater, tests.webtest"/>
-  -->
-  
-  <!-- Prepares the test publication -->
-  <target name="test.pub.prepare">
-    <property name="test.pub.dir" value="${build.webapp}/lenya/pubs/${test.pub.id}"/>
-    <echo>Creating test publication at ${test.pub.dir}</echo>
-    <delete dir="${test.pub.dir}"/>
-    <mkdir dir="${test.pub.dir}"/>
-    <copy todir="${test.pub.dir}">
-      <fileset dir="${build.webapp}/lenya/pubs/${test.pub.source.id}">
-        <exclude name="content/**"/>
-      </fileset>
-    </copy>
-    <replace encoding="utf-8"
-      file="${build.webapp}/lenya/pubs/${test.pub.id}/config/publication.xml"
-      token="Default Publication" value="Test Publication"/>
-    <replace encoding="utf-8"
-      file="${build.webapp}/lenya/pubs/${test.pub.id}/config/search/lucene_index.xml"
-      token="default" value="test"/>
-  </target>
-  
-  <!-- prepares the tests. -->
-  <target name="tests.prepare" depends="init, test.pub.prepare, set-test-patch-property">
-    <mkdir dir="${build.test}"/>
-    <mkdir dir="${junit.dir}" />
-    
-    <!-- Copy test files to build test dir -->
-    <copy todir="${build.java.test}" filtering="on">
-      <fileset dir="${src.test.impl.dir}"/>
-    </copy>
-
-    <copyJavaSources pubsrootdirs="${pubs.root.dirs}" javadir="java/test" builddir="${build.java.test}" />
-    
-    <path id="classpath.test">
-      <path refid="classpath"/>
-      <fileset dir="${build.webapp}/WEB-INF/lib" includes="lenya-*.jar"/>
-    </path>
-    
-    <!-- Compile tests -->
-    <javac srcdir="${build.java.test}"
-           destdir="${build.test}"
-           debug="true"
-           debuglevel="lines,vars,source"
-           optimize="{optimize}"
-           deprecation="{deprecation}"
-           target="${target.vm}"
-           fork="true"
-           source="${src.java.version}">
-      <classpath refid="classpath.test"/>
-    </javac>
-    
-    <!-- Copy test resources -->
-    <copy todir="${build.test}" filtering="on">
-      <fileset dir="${build.java.test}" excludes="**.java"/>
-    </copy>
-    
-    <!-- Generate the xtest file -->
-
-    <copy todir="${build.temp}/test" filtering="on" overwrite="true">
-      <fileset dir="${src.resource.dir}/test">
-        <include name="*-template.xml"/>
-      </fileset>
-    </copy>
-    
-    <copy todir="${build.temp}/test" filtering="on" overwrite="true"
-      file="${src.java.impl.dir}/org/apache/lenya/lenya.roles"/>
-    
-    <xpatch file="${build.temp}/test/lenya.roles"
-      srcdir="${build.patch}" 
-      includes="lenya-roles/**/*.xroles"
-      addComments="true"/>
-    
-    <xslt in="${build.temp}/test/lenya.roles"
-          out="${build.temp}/test/roles.xsl"
-          style="${src.resource.dir}/test/meta.xsl">
-      <param name="element" expression="roles"/>
-    </xslt>
-    
-    <xpatch file="${build.temp}/test/xconf-template.xml"
-      srcdir="${build.patch}/cocoon-xconf" 
-      includes="prepare/*.xconf"
-      addComments="true"/>
-    <xpatch file="${build.temp}/test/xconf-template.xml"
-      srcdir="${build.patch}/cocoon-xconf" 
-      includes="**/*.xconf"
-      excludes="prepare/*.xconf"
-      addComments="true"/>
-    
-    <xslt in="${build.temp}/test/xconf-template.xml"
-      out="${build.temp}/test/components.xsl"
-      style="${src.resource.dir}/test/meta.xsl">
-      <param name="element" expression="components"/>
-    </xslt>
-    
-    <xslt in="${src.resource.dir}/test/template-xtest.xml"
-      out="${build.temp}/test/roles.xtest"
-      style="${build.temp}/test/roles.xsl"/>
-    
-    <xslt in="${build.temp}/test/roles.xtest"
-      out="${build.test}/org/apache/lenya/cms/LenyaTestCase.xtest"
-      style="${build.temp}/test/components.xsl"/>
-      
-    <!-- -->
-    
-  </target>
-
-
-  <!-- Runs JUnit tests -->
-  <target name="tests.junit" depends="patch-modules-test">
-    <junit printsummary="yes" showoutput="true" haltonerror="on" haltonfailure="on" fork="true">
-      <jvmarg value="-Djava.endorsed.dirs=${build.webapp}/WEB-INF/lib/endorsed"/>
-      <jvmarg value="-Dorg.xml.sax.parser=org.apache.xerces.parsers.SAXParser"/>
-      <sysproperty key="junit.test.loglevel" value="${junit.test.loglevel}"/>
-      <sysproperty key="contextRoot" value="${basedir}/build/lenya/webapp"/>
-      <sysproperty key="tempDir" value="${basedir}/build/lenya/temp"/>
-      <formatter type="plain" usefile="false" />
-      <formatter type="xml" />
-      <classpath refid="classpath"/>
-      <classpath>
-        <pathelement location="${build.test}" />
-        <pathelement path="${build.webapp}/WEB-INF/classes" />
-        <fileset dir="${build.webapp}/WEB-INF/lib">
-          <include name="*.jar"/>
-          <include name="endorsed/*.jar"/>
-        </fileset>
-        <pathelement path="${src.test.impl.dir}"/>
-      </classpath>
-      
-      <batchtest todir="${junit.dir}">
-        <fileset dir="${build.test}" includes="**/*Test.class" excludes="**/Abstract*.class"/>
-      </batchtest>
-      
-    </junit>
-  </target>
-  
-    
-  <!-- ================================================ -->
-  <!-- Anteater tests -->
-  <!-- ================================================ -->
-  <target name="tests.anteater">
-    <property name="anteater.home" value=""/>
-    <property name="anteater.buildfile" value="src/test/anteater/tests.xml"/>
-    <java classname="org.apache.tools.ant.Main" fork="true">
-      <classpath>
-        <pathelement location="${anteater.home}/resources"/>
-        <fileset dir="${anteater.home}">
-          <include name="lib/**/*.jar"/>
-        </fileset>
-      </classpath>
-      <jvmarg value="-Dant.home=${anteater.home}"/>
-      <jvmarg value="-Danteater.home=${anteater.home}" />
-      <jvmarg value="-Danteater.report=${anteater.home}/resources/scripts/report.xml" />
-      <jvmarg value="-Danteater.resources=${anteater.home}/resources" />
-      <arg line="-f ${anteater.buildfile}"/>
-      <arg value="-propertyfile" />
-      <arg value="${anteater.home}/resources/META-INF/Anteater.properties" />
-      <!--
-      <arg value="-Ddefault.debug=10"/>
-      -->
-    </java>
-  </target>
-
-<!-- The XSP compilation target -->
-  <target name="compile-xsp" depends="tests.prepare"
-          description="Compile the XSP sources">
-    <mkdir dir="${build.dir}/work"/>
-    <property name="compile-xsp.failonerror" value="false"/> <!-- may be overridden with -D -->
-    <java classname="org.apache.cocoon.bean.XSPPrecompileWrapper" failonerror="${compile-xsp.failonerror}">
-      <arg value="-c${build.webapp}"/>
-      <arg value="-w${build.dir}/work"/>
-      <classpath>
-         <pathelement path="${build.webapp}/WEB-INF/classes"/>
-         <fileset dir="${build.webapp}/WEB-INF/lib">
-            <include name="**/*.jar"/>
-         </fileset>
-         <fileset dir="tools/jetty/lib">
-          <include name="servlet-*.jar"/>
-         </fileset>
-      </classpath>
-    </java>
-  </target>
-</project>
diff --git a/trunk/src/targets/webapp-build.xml b/trunk/src/targets/webapp-build.xml
deleted file mode 100644
index fe0de7d..0000000
--- a/trunk/src/targets/webapp-build.xml
+++ /dev/null
@@ -1,320 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<project name="lenya-webapp">
-
-  <description>
-    Webapp Targets
-  </description>
-  
-  <target name="compile-api" description="compile and deploy API">
-    <antcall target="compile-src">
-      <param name="compile.src.dir" value="${src.java.api.dir}"/>
-      <param name="compile.dest.dir" value="${build.dir}/api"/>
-      <param name="compile.classpath" value="classpath"/>
-      <param name="jar.name" value="api"/>
-    </antcall>
-  </target>
-
-  <target name="compile-impl" description="compile and deploy core implementation">
-    <path id="classpath.impl">
-      <path refid="classpath"/>
-      <fileset dir="${build.webapp}/WEB-INF/lib" includes="lenya-*-api.jar"/>
-    </path>
-    <antcall target="compile-src">
-      <param name="compile.src.dir" value="${src.java.impl.dir}"/>
-      <param name="compile.dest.dir" value="${build.dir}/impl"/>
-      <param name="compile.classpath" value="classpath.impl"/>
-      <param name="jar.name" value="impl"/>
-    </antcall>
-  </target>
-  
-  <!-- 
-  This target creates a webapp directory which exactly mirrors how
-  the war file will look. It is used to create the war file for
-  the "war" target but it can also be used by developers
-  directly.
-  This is useful if the reloadable attribute of the context
-  in the server.xml configuration is set to true so changes in the classes
-  are reflected immediately.
-  -->
-  <target name="webapp" depends="prepare-src"
-      description="Builds the webapp directory ready to be linked into a servlet engines context directory">  
-    <!--
-    Copy CMS files and overwrite some parts of the previously copied cocoon webapp package with our customized files
-    -->
-    <copy todir="${build.webapp}">
-      <fileset dir="${src.webapp.dir}">
-        <exclude name="lenya/config/cocoon-xconf/**"/>
-        <exclude name="lenya/config/sitemap/**"/>
-      </fileset>
-    </copy>
-
-    <!-- Copy publications -->
-    <copyPubs todir="${build.webapp}/lenya/pubs"
-      pubsrootdirs="${pubs.root.dirs}"
-      excludes="CVS,.svn,cocoon-xconf,lenya-roles,local.publication.xml,local.ac.xconf,.project"/>
-    <jing rngfile="${src.resource.dir}/build/publication.rng">
-      <fileset dir="${build.webapp}" includes="lenya/pubs/*/config/publication.xml"/>
-    </jing>
-    <jing rngfile="${src.resource.dir}/build/workflow.rng">
-      <fileset dir="${build.webapp}" includes="lenya/pubs/*/config/workflow/workflow.xml"/>    
-    </jing>
-    
-    <bulkCopy 
-      sourcedirs="${pubs.root.dirs}" 
-      todir="${build.patch}/cocoon-xconf/pubs"
-      flatten="false">
-      <fileset includes="config/cocoon-xconf/**.xconf"/>
-      <fileset includes="*/config/cocoon-xconf/**.xconf"/>
-    </bulkCopy>
-    
-    <bulkCopy 
-      sourcedirs="${pubs.root.dirs}" 
-      todir="${build.patch}/lenya-roles/pubs"
-      flatten="false">
-      <fileset includes="config/lenya-roles/**.xroles"/>
-      <fileset includes="*/config/lenya-roles/**.xroles"/>
-    </bulkCopy>
-    
-    <!-- copy patch files -->
-    <copy todir="${build.patch}" flatten="false">
-      <fileset dir="${src.webapp.dir}/lenya/config">
-        <include name="cocoon-xconf/**/*.xconf"/>
-        <include name="cocoon-xconf/*.xconf"/>
-        <include name="sitemap/**/*.xmap"/>
-        <include name="sitemap/*.xmap"/>
-      </fileset>
-    </copy>
-    
-    <!-- Patch publication tests -->
-    <copy file="./src/targets/publication-test-build-template.xml"
-          tofile="./src/targets/publication-test-build.xml"
-          overwrite="true"/>
-    <xpatch file="./src/targets/publication-test-build.xml"
-            srcdir="${build.webapp}/lenya/pubs" 
-            includes="*/targets/test-build.xconf"
-            addComments="true"/>
-
-    <!-- now create logs directory, where log4j can write to -->
-    <mkdir dir="${build.webapp}/WEB-INF/logs"/>
-    
-    <!-- now copy any additional libraries in ./lib -->
-    <mkdir dir="${build.webapp}/WEB-INF/lib"/>
-
-    <!-- Copy libraries from ${lib.dir} and ${tools.lib.dir} to ${build.webapp}/WEB-INF/lib -->
-    <copy todir="${build.webapp}/WEB-INF/lib">
-      <fileset dir="${lib.dir}">
-        <include name="**/*"/>
-      </fileset>
-      <fileset dir="${tools.lib.dir}">
-        <include name="**/*"/>
-      </fileset>
-    </copy>
-
-    <!-- now create directory for endorsed libraries -->
-    <mkdir dir="${build.webapp}/WEB-INF/lib/endorsed"/>
-
-    <!-- Copy libraries from ${endorsed.lib.dir} and ${cocoon.endorsed.lib.dir} to ${build.webapp}/WEB-INF/lib/endorsed -->
-    <copy todir="${build.webapp}/WEB-INF/lib/endorsed">
-      <fileset dir="${cocoon.endorsed.lib.dir}">
-        <include name="**/*"/>
-      </fileset>
-    </copy>
-
-    <!-- Delete endorsed libraries from common webapp lib directory -->
-    <delete>
-      <fileset dir="${build.webapp}/WEB-INF/lib">
-        <present present="both" targetdir="${cocoon.endorsed.lib.dir}"/>
-      </fileset>
-    </delete>
-
-    <antcall target="compile-api"/>
-    <antcall target="compile-impl"/>
-    
-    <!--
-    <antcall target="deploy-modules"/>
-    -->
-
-    <!-- Patch sitemap.xmap -->
-    <xpatch file="${build.webapp}/sitemap.xmap"
-      srcdir="${build.patch}/sitemap" 
-      includes="**/*.xmap"
-      addComments="false"/>
-    
-    <!-- Patch cocoon.xconf -->
-    <property name="patch.webapp" value="true"/>
-    <xpatch file="${build.webapp}/WEB-INF/cocoon.xconf"
-      srcdir="${build.patch}/cocoon-xconf" 
-      includes="prepare/*.xconf"
-      addComments="true"/>
-    <xpatch file="${build.webapp}/WEB-INF/cocoon.xconf"
-      srcdir="${build.patch}/cocoon-xconf" 
-      includes="**/*.xconf"
-      excludes="prepare/*.xconf"
-      addComments="false"/>
-    
-    <antcall target="deploy-modules"/>
-      
-    <path id="classpath.pubs">
-      <path refid="classpath"/>
-      <fileset dir="${build.webapp}/WEB-INF/lib" includes="lenya-*-api.jar"/>
-      <fileset dir="${build.webapp}/WEB-INF/lib" includes="lenya-module-*.jar"/>
-    </path>
-    
-    <!-- compile and package publications -->
-    <antcall target="compile-src">
-      <param name="compile.src.dir" value="${build.dir}/java/pubs"/>
-      <param name="compile.dest.dir" value="${build.dir}/pubs"/>
-      <param name="compile.classpath" value="classpath.pubs"/>
-      <param name="jar.name" value="pubs"/>
-    </antcall>
-    
-    <!-- Patch lenya.roles -->
-    <copy todir="${build.webapp}/WEB-INF/classes/org/apache/lenya"
-      file="${build.dir}/impl/org/apache/lenya/lenya.roles"/>
-      
-    <!-- Copy database files to ${build.webapp}/WEB-INF/db -->
-    <copy todir="${build.webapp}/WEB-INF/db">
-      <fileset dir="${src.database.dir}">
-        <include name="**/*"/>
-      </fileset>
-    </copy>
-  	
-    <!-- Replace version placeholder with build version -->
-    <replace dir="${build.webapp}">
-      <include name="lenya/content/welcome.xml"/>
-      <include name="lenya/content/about.xml"/>
-      <include name="**/config/publication.xml"/>
-      <replacefilter token="@lenya.version@" value="${version}"/>
-      <replacefilter token="@lenya.revision@" value="${lenya.revision}"/>
-    </replace>
-
-    <condition property="servlet.engine.tomcat">
-      <equals arg1="${web.app.server}" arg2="Tomcat"/>
-    </condition>
-    <antcall target="install-tomcat"/>
-    <antcall target="successfully-built-message-tomcat"/>
-
-    <condition property="servlet.engine.jetty">
-      <equals arg1="${web.app.server}" arg2="Jetty"/>
-    </condition>
-    <antcall target="successfully-built-message-jetty"/>
-
-  </target>
-
-  
-  <!--
-  The war target just packs up what was created in the webapp target
-  (and triggers the javadoc target with the dependency)
-  -->
-  <target name="war" depends="webapp" description="Builds the deployable war file">
-    <mkdir dir="${dist.bin.dir}"/>
-    <jar jarfile="${dist.bin.warfile}" basedir="${build.webapp}" excludes="META-INF/MANIFEST.MF"/>
-    <echo>
-The following libraries must be placed in the endorsed library directory for your deployment.
-* jakarta-bcel-20040329.jar
-* jakarta-regexp-1.3.jar
-* xalan-2.6.0.jar
-* xercesImpl-2.6.2.jar
-* xml-apis.jar
-    </echo>
-  </target>
-
-  <!-- Clean Tomcat directories -->
-  <target name="clean-tomcat" description="Clean also the servlet engine context of Tomcat" if="servlet.engine.tomcat">
-    <echo>INFO: Clean Tomcat context and cache: ${tomcat.webapps.dir}, ${tomcat.cache.dir}</echo>
-    <delete dir="${tomcat.cache.dir}" quiet="true"/>
-    <delete includeEmptyDirs="true" quiet="true">
-      <fileset dir="${tomcat.webapps.dir}" excludes="${target.reset.excludes}" />
-    </delete>
-  </target>
-
-  <!-- Cleans the Lenya build directory, with the exception of target.reset.excludes -->
-  <target name="clean" depends="init" description="Cleans the build directories">
-    <mkdir dir="${build.root}"/> <!-- Create dir such that build process does not fail if build dir does not exist -->
-    <delete includeEmptyDirs="true">
-      <fileset dir="${build.root}" excludes="${target.reset.excludes}" />
-    </delete>
-    <delete dir="${dist.root}"/>
-
-    <condition property="servlet.engine.tomcat">
-      <equals arg1="${web.app.server}" arg2="Tomcat"/>
-    </condition>
-    <antcall target="clean-tomcat"/>
-  </target>
-
-  <!-- Cleans the Cocoon build directory and the local.p* files -->
-  <target name="clean-cocoon" depends="init" description="Cleans Cocoon">
-    <echo>INFO: Clean Cocoon: ${cocoon.src.dir}/build</echo>
-    <delete includeEmptyDirs="true" quiet="true">
-      <fileset dir="${cocoon.src.dir}/build"/>
-    </delete>
-    <delete file="${cocoon.src.dir}/local.build.properties" quiet="true"/>
-    <delete file="${cocoon.src.dir}/local.blocks.properties" quiet="true"/>
-  </target>
-
-  <!-- Cleans the build files of Lenya, Cocoon and Tomcat -->
-  <target name="clean-all" depends="clean, clean-cocoon" description="Cleans Lenya and Cocoon"/>
-
-  <!-- Install the webapp into Tomcat -->
-  <target name="install-tomcat" description="Install the webapp into Tomcat servlet engine context" if="servlet.engine.tomcat">
-    <!-- Copy From build.webapp=${build.webapp} To tomcat.webapps.dir=${tomcat.webapps.dir} -->
-    <copy todir="${tomcat.webapps.dir}" filtering="off">
-      <fileset dir="${build.webapp}"/>
-    </copy>
-
-    <!-- Copy endorsed libraries -->
-    <copy todir="${tomcat.endorsed.dir}">
-      <fileset dir="${build.webapp}/WEB-INF/lib/endorsed">
-        <include name="*.jar"/>
-      </fileset>
-    </copy>
-
-  </target>
-
-
-
-
-  <!-- Install publication -->
-  <target name="install-pub" depends="webapp" description="Install a publication into servlet engine context. Usage: -Dpub.prefix=blog">
-    <!-- Copy From build.webapp=${build.webapp}/lenya/pubs/${pub.prefix} To tomcat.webapps.dir=${tomcat.webapps.dir}/lenya/pubs/${pub.prefix} -->
-    <copy todir="${tomcat.webapps.dir}/lenya/pubs/${pub.prefix}" filtering="off">
-      <fileset dir="${build.webapp}/lenya/pubs/${pub.prefix}" excludes="${target.install.excludes}"/>
-    </copy>
-  </target>
-
-  <!-- Reload Tomcat -->
-  <target name="reload">
-    <!-- For Tomcat Tasks -->
-    <path id="tomcat.classpath">
-        <fileset dir="${tomcat.webapps.dir}/../../server/lib" 
-            includes="catalina-ant.jar" />
-    </path>
-    <taskdef name="reload" 
-        classname="org.apache.catalina.ant.ReloadTask"
-        classpathref="tomcat.classpath" /> 
-    <reload
-    		url="http://localhost:8080/manager"
-    		username="user"
-    		password="password"
-    	  path="/lenya"/>
-  </target>
-</project>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/perfieldconf.xml b/trunk/src/webapp/WEB-INF/analyzer/perfieldconf.xml
deleted file mode 100644
index 8529979..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/perfieldconf.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- allow to analyze multi-langage documents> -->
-  <config defaultAnalyzer="stopword_fr">
-		<field name="description_en" analyzer="stopword_en"/>
-		<field name="subject" analyzer="stopword_en"/>
-  </config>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Danish_da.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Danish_da.xml
deleted file mode 100644
index 808cc72..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Danish_da.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>af</stopword>
-  <stopword>aldrig</stopword>
-  <stopword>alle</stopword>
-  <stopword>altid</stopword>
-  <stopword>bagved</stopword>
-  <stopword>de</stopword>
-  <stopword>der</stopword>
-  <stopword>du</stopword>
-  <stopword>efter</stopword>
-  <stopword>eller</stopword>
-  <stopword>en</stopword>
-  <stopword>endnu</stopword>
-  <stopword>et</stopword>
-  <stopword>fjernt</stopword>
-  <stopword>for</stopword>
-  <stopword>foran</stopword>
-  <stopword>fra</stopword>
-  <stopword>få</stopword>
-  <stopword>gennem</stopword>
-  <stopword>god</stopword>
-  <stopword>han</stopword>
-  <stopword>her</stopword>
-  <stopword>hos</stopword>
-  <stopword>hovfor</stopword>
-  <stopword>hun</stopword>
-  <stopword>hurtig</stopword>
-  <stopword>hvad</stopword>
-  <stopword>hvem</stopword>
-  <stopword>hvonår</stopword>
-  <stopword>hvor</stopword>
-  <stopword>hvordan</stopword>
-  <stopword>hvorhen</stopword>
-  <stopword>i</stopword>
-  <stopword>imod</stopword>
-  <stopword>ja</stopword>
-  <stopword>jeg</stopword>
-  <stopword>langsom</stopword>
-  <stopword>lidt</stopword>
-  <stopword>mange</stopword>
-  <stopword>med</stopword>
-  <stopword>meget</stopword>
-  <stopword>mellem</stopword>
-  <stopword>mere</stopword>
-  <stopword>mindre</stopword>
-  <stopword>måske</stopword>
-  <stopword>nede</stopword>
-  <stopword>nej</stopword>
-  <stopword>nok</stopword>
-  <stopword>nu</stopword>
-  <stopword>når</stopword>
-  <stopword>og</stopword>
-  <stopword>oppe</stopword>
-  <stopword>på</stopword>
-  <stopword>rask</stopword>
-  <stopword>sammen</stopword>
-  <stopword>temmelig</stopword>
-  <stopword>til</stopword>
-  <stopword>uden</stopword>
-  <stopword>udenfor</stopword>
-  <stopword>under</stopword>
-  <stopword>ved</stopword>
-  <stopword>vi</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Dutch_nl.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Dutch_nl.xml
deleted file mode 100644
index 3a792a5..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Dutch_nl.xml
+++ /dev/null
@@ -1,264 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>aan</stopword>
-  <stopword>aangaande</stopword>
-  <stopword>aangezien</stopword>
-  <stopword>achter</stopword>
-  <stopword>achterna</stopword>
-  <stopword>afgelopen</stopword>
-  <stopword>al</stopword>
-  <stopword>aldaar</stopword>
-  <stopword>aldus</stopword>
-  <stopword>alhoewel</stopword>
-  <stopword>alias</stopword>
-  <stopword>alle</stopword>
-  <stopword>allebei</stopword>
-  <stopword>alleen</stopword>
-  <stopword>alsnog</stopword>
-  <stopword>altijd</stopword>
-  <stopword>altoos</stopword>
-  <stopword>ander</stopword>
-  <stopword>andere</stopword>
-  <stopword>anders</stopword>
-  <stopword>anderszins</stopword>
-  <stopword>behalve</stopword>
-  <stopword>behoudens</stopword>
-  <stopword>beide</stopword>
-  <stopword>beiden</stopword>
-  <stopword>ben</stopword>
-  <stopword>beneden</stopword>
-  <stopword>bent</stopword>
-  <stopword>bepaald</stopword>
-  <stopword>betreffende</stopword>
-  <stopword>bij</stopword>
-  <stopword>binnen</stopword>
-  <stopword>binnenin</stopword>
-  <stopword>boven</stopword>
-  <stopword>bovenal</stopword>
-  <stopword>bovendien</stopword>
-  <stopword>bovengenoemd</stopword>
-  <stopword>bovenstaand</stopword>
-  <stopword>bovenvermeld</stopword>
-  <stopword>buiten</stopword>
-  <stopword>daar</stopword>
-  <stopword>daarheen</stopword>
-  <stopword>daarin</stopword>
-  <stopword>daarna</stopword>
-  <stopword>daarnet</stopword>
-  <stopword>daarom</stopword>
-  <stopword>daarop</stopword>
-  <stopword>daarvanlangs</stopword>
-  <stopword>dan</stopword>
-  <stopword>dat</stopword>
-  <stopword>de</stopword>
-  <stopword>die</stopword>
-  <stopword>dikwijls</stopword>
-  <stopword>dit</stopword>
-  <stopword>door</stopword>
-  <stopword>doorgaand</stopword>
-  <stopword>dus</stopword>
-  <stopword>echter</stopword>
-  <stopword>eer</stopword>
-  <stopword>eerdat</stopword>
-  <stopword>eerder</stopword>
-  <stopword>eerlang</stopword>
-  <stopword>eerst</stopword>
-  <stopword>elk</stopword>
-  <stopword>elke</stopword>
-  <stopword>en</stopword>
-  <stopword>enig</stopword>
-  <stopword>enigszins</stopword>
-  <stopword>enkel</stopword>
-  <stopword>er</stopword>
-  <stopword>erdoor</stopword>
-  <stopword>even</stopword>
-  <stopword>eveneens</stopword>
-  <stopword>evenwel</stopword>
-  <stopword>gauw</stopword>
-  <stopword>gedurende</stopword>
-  <stopword>geen</stopword>
-  <stopword>gehad</stopword>
-  <stopword>gekund</stopword>
-  <stopword>geleden</stopword>
-  <stopword>gelijk</stopword>
-  <stopword>gemoeten</stopword>
-  <stopword>gemogen</stopword>
-  <stopword>geweest</stopword>
-  <stopword>gewoon</stopword>
-  <stopword>gewoonweg</stopword>
-  <stopword>haar</stopword>
-  <stopword>had</stopword>
-  <stopword>hadden</stopword>
-  <stopword>hare</stopword>
-  <stopword>heb</stopword>
-  <stopword>hebben</stopword>
-  <stopword>hebt</stopword>
-  <stopword>heeft</stopword>
-  <stopword>hem</stopword>
-  <stopword>hen</stopword>
-  <stopword>het</stopword>
-  <stopword>hierbeneden</stopword>
-  <stopword>hierboven</stopword>
-  <stopword>hij</stopword>
-  <stopword>hoe</stopword>
-  <stopword>hoewel</stopword>
-  <stopword>hun</stopword>
-  <stopword>hunne</stopword>
-  <stopword>ik</stopword>
-  <stopword>ikzelf</stopword>
-  <stopword>in</stopword>
-  <stopword>inmiddels</stopword>
-  <stopword>inzake</stopword>
-  <stopword>is</stopword>
-  <stopword>jezelf</stopword>
-  <stopword>jij</stopword>
-  <stopword>jijzelf</stopword>
-  <stopword>jou</stopword>
-  <stopword>jouw</stopword>
-  <stopword>jouwe</stopword>
-  <stopword>juist</stopword>
-  <stopword>jullie</stopword>
-  <stopword>kan</stopword>
-  <stopword>klaar</stopword>
-  <stopword>kon</stopword>
-  <stopword>konden</stopword>
-  <stopword>krachtens</stopword>
-  <stopword>kunnen</stopword>
-  <stopword>kunt</stopword>
-  <stopword>later</stopword>
-  <stopword>liever</stopword>
-  <stopword>maar</stopword>
-  <stopword>mag</stopword>
-  <stopword>meer</stopword>
-  <stopword>met</stopword>
-  <stopword>mezelf</stopword>
-  <stopword>mij</stopword>
-  <stopword>mijn</stopword>
-  <stopword>mijnent</stopword>
-  <stopword>mijner</stopword>
-  <stopword>mijzelf</stopword>
-  <stopword>misschien</stopword>
-  <stopword>mocht</stopword>
-  <stopword>mochten</stopword>
-  <stopword>moest</stopword>
-  <stopword>moesten</stopword>
-  <stopword>moet</stopword>
-  <stopword>moeten</stopword>
-  <stopword>mogen</stopword>
-  <stopword>na</stopword>
-  <stopword>naar</stopword>
-  <stopword>nadat</stopword>
-  <stopword>net</stopword>
-  <stopword>niet</stopword>
-  <stopword>noch</stopword>
-  <stopword>nog</stopword>
-  <stopword>nogal</stopword>
-  <stopword>nu</stopword>
-  <stopword>of</stopword>
-  <stopword>ofschoon</stopword>
-  <stopword>om</stopword>
-  <stopword>omdat</stopword>
-  <stopword>omhoog</stopword>
-  <stopword>omlaag</stopword>
-  <stopword>omstreeks</stopword>
-  <stopword>omtrent</stopword>
-  <stopword>omver</stopword>
-  <stopword>onder</stopword>
-  <stopword>ondertussen</stopword>
-  <stopword>ongeveer</stopword>
-  <stopword>ons</stopword>
-  <stopword>onszelf</stopword>
-  <stopword>onze</stopword>
-  <stopword>ook</stopword>
-  <stopword>op</stopword>
-  <stopword>opnieuw</stopword>
-  <stopword>opzij</stopword>
-  <stopword>over</stopword>
-  <stopword>overeind</stopword>
-  <stopword>overigens</stopword>
-  <stopword>pas</stopword>
-  <stopword>precies</stopword>
-  <stopword>reeds</stopword>
-  <stopword>rond</stopword>
-  <stopword>rondom</stopword>
-  <stopword>sedert</stopword>
-  <stopword>sinds</stopword>
-  <stopword>sindsdien</stopword>
-  <stopword>slechts</stopword>
-  <stopword>sommige</stopword>
-  <stopword>spoedig</stopword>
-  <stopword>steeds</stopword>
-  <stopword>tamelijk</stopword>
-  <stopword>tenzij</stopword>
-  <stopword>terwijl</stopword>
-  <stopword>thans</stopword>
-  <stopword>tijdens</stopword>
-  <stopword>toch</stopword>
-  <stopword>toen</stopword>
-  <stopword>toenmaals</stopword>
-  <stopword>toenmalig</stopword>
-  <stopword>tot</stopword>
-  <stopword>totdat</stopword>
-  <stopword>tussen</stopword>
-  <stopword>uit</stopword>
-  <stopword>uitgezonderd</stopword>
-  <stopword>vaak</stopword>
-  <stopword>van</stopword>
-  <stopword>vandaan</stopword>
-  <stopword>vanuit</stopword>
-  <stopword>vanwege</stopword>
-  <stopword>veeleer</stopword>
-  <stopword>verder</stopword>
-  <stopword>vervolgens</stopword>
-  <stopword>vol</stopword>
-  <stopword>volgens</stopword>
-  <stopword>voor</stopword>
-  <stopword>vooraf</stopword>
-  <stopword>vooral</stopword>
-  <stopword>vooralsnog</stopword>
-  <stopword>voorbij</stopword>
-  <stopword>voordat</stopword>
-  <stopword>voordezen</stopword>
-  <stopword>voordien</stopword>
-  <stopword>voorheen</stopword>
-  <stopword>voorop</stopword>
-  <stopword>vooruit</stopword>
-  <stopword>vrij</stopword>
-  <stopword>vroeg</stopword>
-  <stopword>waar</stopword>
-  <stopword>waarom</stopword>
-  <stopword>wanneer</stopword>
-  <stopword>want</stopword>
-  <stopword>waren</stopword>
-  <stopword>was</stopword>
-  <stopword>wat</stopword>
-  <stopword>weer</stopword>
-  <stopword>weg</stopword>
-  <stopword>wegens</stopword>
-  <stopword>wel</stopword>
-  <stopword>weldra</stopword>
-  <stopword>welk</stopword>
-  <stopword>welke</stopword>
-  <stopword>wie</stopword>
-  <stopword>wiens</stopword>
-  <stopword>wier</stopword>
-  <stopword>wij</stopword>
-  <stopword>wijzelf</stopword>
-  <stopword>zal</stopword>
-  <stopword>ze</stopword>
-  <stopword>zelfs</stopword>
-  <stopword>zichzelf</stopword>
-  <stopword>zij</stopword>
-  <stopword>zijn</stopword>
-  <stopword>zijne</stopword>
-  <stopword>zo</stopword>
-  <stopword>zodra</stopword>
-  <stopword>zonder</stopword>
-  <stopword>zou</stopword>
-  <stopword>zouden</stopword>
-  <stopword>zowat</stopword>
-  <stopword>zulke</stopword>
-  <stopword>zullen</stopword>
-  <stopword>zult</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/English_en.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/English_en.xml
deleted file mode 100644
index 3bdd19f..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/English_en.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>a</stopword>
-  <stopword>about</stopword>
-  <stopword>after</stopword>
-  <stopword>all</stopword>
-  <stopword>also</stopword>
-  <stopword>an</stopword>
-  <stopword>and</stopword>
-  <stopword>any</stopword>
-  <stopword>are</stopword>
-  <stopword>as</stopword>
-  <stopword>at</stopword>
-  <stopword>be</stopword>
-  <stopword>because</stopword>
-  <stopword>been</stopword>
-  <stopword>but</stopword>
-  <stopword>by</stopword>
-  <stopword>can</stopword>
-  <stopword>co</stopword>
-  <stopword>corp</stopword>
-  <stopword>could</stopword>
-  <stopword>for</stopword>
-  <stopword>from</stopword>
-  <stopword>had</stopword>
-  <stopword>has</stopword>
-  <stopword>have</stopword>
-  <stopword>he</stopword>
-  <stopword>her</stopword>
-  <stopword>his</stopword>
-  <stopword>if</stopword>
-  <stopword>in</stopword>
-  <stopword>inc</stopword>
-  <stopword>into</stopword>
-  <stopword>is</stopword>
-  <stopword>it</stopword>
-  <stopword>its</stopword>
-  <stopword>last</stopword>
-  <stopword>more</stopword>
-  <stopword>most</stopword>
-  <stopword>mr</stopword>
-  <stopword>mrs</stopword>
-  <stopword>ms</stopword>
-  <stopword>mz</stopword>
-  <stopword>no</stopword>
-  <stopword>not</stopword>
-  <stopword>of</stopword>
-  <stopword>on</stopword>
-  <stopword>one</stopword>
-  <stopword>only</stopword>
-  <stopword>or</stopword>
-  <stopword>other</stopword>
-  <stopword>out</stopword>
-  <stopword>over</stopword>
-  <stopword>s</stopword>
-  <stopword>says</stopword>
-  <stopword>she</stopword>
-  <stopword>so</stopword>
-  <stopword>some</stopword>
-  <stopword>such</stopword>
-  <stopword>than</stopword>
-  <stopword>that</stopword>
-  <stopword>the</stopword>
-  <stopword>their</stopword>
-  <stopword>there</stopword>
-  <stopword>they</stopword>
-  <stopword>this</stopword>
-  <stopword>to</stopword>
-  <stopword>up</stopword>
-  <stopword>was</stopword>
-  <stopword>we</stopword>
-  <stopword>were</stopword>
-  <stopword>when</stopword>
-  <stopword>which</stopword>
-  <stopword>who</stopword>
-  <stopword>will</stopword>
-  <stopword>with</stopword>
-  <stopword>would</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Finnish_fi.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Finnish_fi.xml
deleted file mode 100644
index 9ee3599..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Finnish_fi.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>alla</stopword>
-  <stopword>ansiosta</stopword>
-  <stopword>ehkä</stopword>
-  <stopword>ei</stopword>
-  <stopword>enemmän</stopword>
-  <stopword>ennen</stopword>
-  <stopword>etessa</stopword>
-  <stopword>f</stopword>
-  <stopword>haikki</stopword>
-  <stopword>he</stopword>
-  <stopword>hitaasti</stopword>
-  <stopword>hoikein</stopword>
-  <stopword>hyvin</stopword>
-  <stopword>hän</stopword>
-  <stopword>ilman</stopword>
-  <stopword>ja</stopword>
-  <stopword>jos</stopword>
-  <stopword>jälkeen</stopword>
-  <stopword>kanssa</stopword>
-  <stopword>kaukana</stopword>
-  <stopword>kenties</stopword>
-  <stopword>keskellä</stopword>
-  <stopword>kesken</stopword>
-  <stopword>koskaan</stopword>
-  <stopword>kuinkan</stopword>
-  <stopword>kukka</stopword>
-  <stopword>kylliksi</stopword>
-  <stopword>kyllä</stopword>
-  <stopword>liian</stopword>
-  <stopword>lla</stopword>
-  <stopword>lla</stopword>
-  <stopword>luona</stopword>
-  <stopword>lähellä</stopword>
-  <stopword>läpi</stopword>
-  <stopword>me</stopword>
-  <stopword>miksi</stopword>
-  <stopword>mikä</stopword>
-  <stopword>milloin</stopword>
-  <stopword>milloinkan</stopword>
-  <stopword>minä</stopword>
-  <stopword>missä</stopword>
-  <stopword>miten</stopword>
-  <stopword>nopeasti</stopword>
-  <stopword>nyt</stopword>
-  <stopword>oikea</stopword>
-  <stopword>oikealla</stopword>
-  <stopword>paljon</stopword>
-  <stopword>siellä</stopword>
-  <stopword>sinä</stopword>
-  <stopword>ssa</stopword>
-  <stopword>sta</stopword>
-  <stopword>suoraan</stopword>
-  <stopword>tai</stopword>
-  <stopword>takana</stopword>
-  <stopword>takia</stopword>
-  <stopword>tarpeeksi</stopword>
-  <stopword>te</stopword>
-  <stopword>tässä</stopword>
-  <stopword>ulkopuolella</stopword>
-  <stopword>vahemmän</stopword>
-  <stopword>vasen</stopword>
-  <stopword>vasenmalla</stopword>
-  <stopword>vastan</stopword>
-  <stopword>vielä</stopword>
-  <stopword>vieressä</stopword>
-  <stopword>vähän</stopword>
-  <stopword>yhdessä</stopword>
-  <stopword>ylös</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/French_fr.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/French_fr.xml
deleted file mode 100644
index c663701..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/French_fr.xml
+++ /dev/null
@@ -1,430 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!--
-Contribution de Nico Maisonneuve, nicoo_@hotmail.com, 
-construit à partir de la liste que l'on trouve sur le site:
-http://www.unine.ch/Info/clef/
- -->
- 
-<french useStopWords="true" keepAccents="false">
-
-<stopWords>
-	<stopWord>a</stopWord>
-	<stopWord>à</stopWord>
-	<stopWord>â</stopWord>
-	<stopWord>abord</stopWord>
-	<stopWord>afin</stopWord>
-	<stopWord>ah</stopWord>
-	<stopWord>ai</stopWord>
-	<stopWord>aie</stopWord>
-	<stopWord>ainsi</stopWord>
-	<stopWord>allaient</stopWord>
-	<stopWord>allo</stopWord>
-	<stopWord>allô</stopWord>
-	<stopWord>allons</stopWord>
-	<stopWord>après</stopWord>
-	<stopWord>assez</stopWord>
-	<stopWord>attendu</stopWord>
-	<stopWord>au</stopWord>
-	<stopWord>aucun</stopWord>
-	<stopWord>aucune</stopWord>
-	<stopWord>aujourd</stopWord>
-	<stopWord>aujourd'hui</stopWord>
-	<stopWord>auquel</stopWord>
-	<stopWord>aura</stopWord>
-	<stopWord>auront</stopWord>
-	<stopWord>aussi</stopWord>
-	<stopWord>autre</stopWord>
-	<stopWord>autres</stopWord>
-	<stopWord>aux</stopWord>
-	<stopWord>auxquelles</stopWord>
-	<stopWord>auxquels</stopWord>
-	<stopWord>avaient</stopWord>
-	<stopWord>avais</stopWord>
-	<stopWord>avait</stopWord>
-	<stopWord>avant</stopWord>
-	<stopWord>avec</stopWord>
-	<stopWord>avoir</stopWord>
-	<stopWord>ayant</stopWord>
-	<stopWord>b</stopWord>
-	<stopWord>bah</stopWord>
-	<stopWord>beaucoup</stopWord>
-	<stopWord>bien</stopWord>
-	<stopWord>bigre</stopWord>
-	<stopWord>boum</stopWord>
-	<stopWord>bravo</stopWord>
-	<stopWord>brrr</stopWord>
-	<stopWord>c</stopWord>
-	<stopWord>ça</stopWord>
-	<stopWord>car</stopWord>
-	<stopWord>ce</stopWord>
-	<stopWord>ceci</stopWord>
-	<stopWord>cela</stopWord>
-	<stopWord>celle</stopWord>
-	<stopWord>celle-ci</stopWord>
-	<stopWord>celle-là</stopWord>
-	<stopWord>celles</stopWord>
-	<stopWord>celles-ci</stopWord>
-	<stopWord>celles-là</stopWord>
-	<stopWord>celui</stopWord>
-	<stopWord>celui-ci</stopWord>
-	<stopWord>celui-là</stopWord>
-	<stopWord>cependant</stopWord>
-	<stopWord>certain</stopWord>
-	<stopWord>certaine</stopWord>
-	<stopWord>certaines</stopWord>
-	<stopWord>certains</stopWord>
-	<stopWord>certes</stopWord>
-	<stopWord>ces</stopWord>
-	<stopWord>cet</stopWord>
-	<stopWord>cette</stopWord>
-	<stopWord>ceux</stopWord>
-	<stopWord>ceux-ci</stopWord>
-	<stopWord>ceux-là</stopWord>
-	<stopWord>chacun</stopWord>
-	<stopWord>chaque</stopWord>
-	<stopWord>cher</stopWord>
-	<stopWord>chère</stopWord>
-	<stopWord>chères</stopWord>
-	<stopWord>chers</stopWord>
-	<stopWord>chez</stopWord>
-	<stopWord>chiche</stopWord>
-	<stopWord>chut</stopWord>
-	<stopWord>ci</stopWord>
-	<stopWord>clac</stopWord>
-	<stopWord>clic</stopWord>
-	<stopWord>comme</stopWord>
-	<stopWord>comment</stopWord>
-	<stopWord>compris</stopWord>
-	<stopWord>concernant</stopWord>
-	<stopWord>contre</stopWord>
-	<stopWord>couic</stopWord>
-	<stopWord>crac</stopWord>
-	<stopWord>d</stopWord>
-	<stopWord>da</stopWord>
-	<stopWord>dans</stopWord>
-	<stopWord>de</stopWord>
-	<stopWord>debout</stopWord>
-	<stopWord>dedans</stopWord>
-	<stopWord>dehors</stopWord>
-	<stopWord>delà</stopWord>
-	<stopWord>depuis</stopWord>
-	<stopWord>derrière</stopWord>
-	<stopWord>des</stopWord>
-	<stopWord>dès</stopWord>
-	<stopWord>désormais</stopWord>
-	<stopWord>desquelles</stopWord>
-	<stopWord>desquels</stopWord>
-	<stopWord>dessous</stopWord>
-	<stopWord>dessus</stopWord>
-	<stopWord>devant</stopWord>
-	<stopWord>devers</stopWord>
-	<stopWord>devra</stopWord>
-	<stopWord>dire</stopWord>
-	<stopWord>divers</stopWord>
-	<stopWord>diverse</stopWord>
-	<stopWord>diverses</stopWord>
-	<stopWord>doit</stopWord>
-	<stopWord>doivent</stopWord>
-	<stopWord>donc</stopWord>
-	<stopWord>dont</stopWord>
-	<stopWord>dring</stopWord>
-	<stopWord>du</stopWord>
-	<stopWord>duquel</stopWord>
-	<stopWord>durant</stopWord>
-	<stopWord>e</stopWord>
-	<stopWord>effet</stopWord>
-	<stopWord>eh</stopWord>
-	<stopWord>elle</stopWord>
-	<stopWord>elle-même</stopWord>
-	<stopWord>elles</stopWord>
-	<stopWord>elles-mêmes</stopWord>
-	<stopWord>en</stopWord>
-	<stopWord>entre</stopWord>
-	<stopWord>envers</stopWord>
-	<stopWord>environ</stopWord>
-	<stopWord>es</stopWord>
-	<stopWord>ès</stopWord>
-	<stopWord>est</stopWord>
-	<stopWord>et</stopWord>
-	<stopWord>etant</stopWord>
-	<stopWord>étaient</stopWord>
-	<stopWord>étais</stopWord>
-	<stopWord>était</stopWord>
-	<stopWord>étant</stopWord>
-	<stopWord>etc</stopWord>
-	<stopWord>été</stopWord>
-	<stopWord>etre</stopWord>
-	<stopWord>être</stopWord>
-	<stopWord>eu</stopWord>
-	<stopWord>euh</stopWord>
-	<stopWord>eux</stopWord>
-	<stopWord>eux-mêmes</stopWord>
-	<stopWord>excepté</stopWord>
-	<stopWord>f</stopWord>
-	<stopWord>façon</stopWord>
-	<stopWord>fais</stopWord>
-	<stopWord>faisaient</stopWord>
-	<stopWord>faisant</stopWord>
-	<stopWord>fait</stopWord>
-	<stopWord>feront</stopWord>
-	<stopWord>fi</stopWord>
-	<stopWord>flac</stopWord>
-	<stopWord>floc</stopWord>
-	<stopWord>font</stopWord>
-	<stopWord>g</stopWord>
-	<stopWord>gens</stopWord>
-	<stopWord>h</stopWord>
-	<stopWord>ha</stopWord>
-	<stopWord>hé</stopWord>
-	<stopWord>hein</stopWord>
-	<stopWord>hélas</stopWord>
-	<stopWord>hem</stopWord>
-	<stopWord>hep</stopWord>
-	<stopWord>hi</stopWord>
-	<stopWord>ho</stopWord>
-	<stopWord>holà</stopWord>
-	<stopWord>hop</stopWord>
-	<stopWord>hormis</stopWord>
-	<stopWord>hors</stopWord>
-	<stopWord>hou</stopWord>
-	<stopWord>houp</stopWord>
-	<stopWord>hue</stopWord>
-	<stopWord>hui</stopWord>
-	<stopWord>hum</stopWord>
-	<stopWord>hurrah</stopWord>
-	<stopWord>i</stopWord>
-	<stopWord>il</stopWord>
-	<stopWord>ils</stopWord>
-	<stopWord>importe</stopWord>
-	<stopWord>j</stopWord>
-	<stopWord>je</stopWord>
-	<stopWord>jusqu</stopWord>
-	<stopWord>jusque</stopWord>
-	<stopWord>k</stopWord>
-	<stopWord>l</stopWord>
-	<stopWord>la</stopWord>
-	<stopWord>là</stopWord>
-	<stopWord>laquelle</stopWord>
-	<stopWord>las</stopWord>
-	<stopWord>le</stopWord>
-	<stopWord>lequel</stopWord>
-	<stopWord>les</stopWord>
-	<stopWord>lès</stopWord>
-	<stopWord>lesquelles</stopWord>
-	<stopWord>lesquels</stopWord>
-	<stopWord>leur</stopWord>
-	<stopWord>leurs</stopWord>
-	<stopWord>longtemps</stopWord>
-	<stopWord>lorsque</stopWord>
-	<stopWord>lui</stopWord>
-	<stopWord>lui-même</stopWord>
-	<stopWord>m</stopWord>
-	<stopWord>ma</stopWord>
-	<stopWord>maint</stopWord>
-	<stopWord>mais</stopWord>
-	<stopWord>malgré</stopWord>
-	<stopWord>me</stopWord>
-	<stopWord>même</stopWord>
-	<stopWord>mêmes</stopWord>
-	<stopWord>merci</stopWord>
-	<stopWord>mes</stopWord>
-	<stopWord>mien</stopWord>
-	<stopWord>mienne</stopWord>
-	<stopWord>miennes</stopWord>
-	<stopWord>miens</stopWord>
-	<stopWord>mille</stopWord>
-	<stopWord>mince</stopWord>
-	<stopWord>moi</stopWord>
-	<stopWord>moi-même</stopWord>
-	<stopWord>moins</stopWord>
-	<stopWord>mon</stopWord>
-	<stopWord>moyennant</stopWord>
-	<stopWord>n</stopWord>
-	<stopWord>na</stopWord>
-	<stopWord>ne</stopWord>
-	<stopWord>néanmoins</stopWord>
-	<stopWord>ni</stopWord>
-	<stopWord>nombreuses</stopWord>
-	<stopWord>nombreux</stopWord>
-	<stopWord>non</stopWord>
-	<stopWord>nos</stopWord>
-	<stopWord>notre</stopWord>
-	<stopWord>nôtre</stopWord>
-	<stopWord>nôtres</stopWord>
-	<stopWord>nous</stopWord>
-	<stopWord>nous-mêmes</stopWord>
-	<stopWord>nul</stopWord>
-	<stopWord>o</stopWord>
-	<stopWord>o</stopWord>
-	<stopWord>ô</stopWord>
-	<stopWord>oh</stopWord>
-	<stopWord>ohé</stopWord>
-	<stopWord>olé</stopWord>
-	<stopWord>ollé</stopWord>
-	<stopWord>on</stopWord>
-	<stopWord>ont</stopWord>
-	<stopWord>ore</stopWord>
-	<stopWord>or</stopWord>
-	<stopWord>ou</stopWord>
-	<stopWord>où</stopWord>
-	<stopWord>ouf</stopWord>
-	<stopWord>ouias</stopWord>
-	<stopWord>oust</stopWord>
-	<stopWord>ouste</stopWord>
-	<stopWord>outre</stopWord>
-	<stopWord>p</stopWord>
-	<stopWord>paf</stopWord>
-	<stopWord>pan</stopWord>
-	<stopWord>par</stopWord>
-	<stopWord>parmi</stopWord>
-	<stopWord>partant</stopWord>
-	<stopWord>particulier</stopWord>
-	<stopWord>particulière</stopWord>
-	<stopWord>particulièrement</stopWord>
-	<stopWord>pas</stopWord>
-	<stopWord>passé</stopWord>
-	<stopWord>pendant</stopWord>
-	<stopWord>personne</stopWord>
-	<stopWord>peu</stopWord>
-	<stopWord>peut</stopWord>
-	<stopWord>peuvent</stopWord>
-	<stopWord>peux</stopWord>
-	<stopWord>pff</stopWord>
-	<stopWord>pfft</stopWord>
-	<stopWord>pfut</stopWord>
-	<stopWord>pif</stopWord>
-	<stopWord>plein</stopWord>
-	<stopWord>plouf</stopWord>
-	<stopWord>plus</stopWord>
-	<stopWord>plusieurs</stopWord>
-	<stopWord>plutôt</stopWord>
-	<stopWord>pouah</stopWord>
-	<stopWord>pour</stopWord>
-	<stopWord>pourquoi</stopWord>
-	<stopWord>près</stopWord>
-	<stopWord>proche</stopWord>
-	<stopWord>psitt</stopWord>
-	<stopWord>puisque</stopWord>
-	<stopWord>q</stopWord>
-	<stopWord>qu</stopWord>
-	<stopWord>quand</stopWord>
-	<stopWord>quant</stopWord>
-	<stopWord>quanta</stopWord>
-	<stopWord>quant-à-soi</stopWord>
-	<stopWord>que</stopWord>
-	<stopWord>quel</stopWord>
-	<stopWord>quelconque</stopWord>
-	<stopWord>quelle</stopWord>
-	<stopWord>quelles</stopWord>
-	<stopWord>quelque</stopWord>
-	<stopWord>quelques</stopWord>
-	<stopWord>quelqu'un</stopWord>
-	<stopWord>quels</stopWord>
-	<stopWord>qui</stopWord>
-	<stopWord>quiconque</stopWord>
-	<stopWord>quoi</stopWord>
-	<stopWord>quoique</stopWord>
-	<stopWord>r</stopWord>
-	<stopWord>revoici</stopWord>
-	<stopWord>revoilà</stopWord>
-	<stopWord>rien</stopWord>
-	<stopWord>s</stopWord>
-	<stopWord>sa</stopWord>
-	<stopWord>sacrebleu</stopWord>
-	<stopWord>sans</stopWord>
-	<stopWord>sapristi</stopWord>
-	<stopWord>sauf</stopWord>
-	<stopWord>se</stopWord>
-	<stopWord>selon</stopWord>
-	<stopWord>sept</stopWord>
-	<stopWord>sera</stopWord>
-	<stopWord>seront</stopWord>
-	<stopWord>ses</stopWord>
-	<stopWord>si</stopWord>
-	<stopWord>sien</stopWord>
-	<stopWord>sienne</stopWord>
-	<stopWord>siennes</stopWord>
-	<stopWord>siens</stopWord>
-	<stopWord>sinon</stopWord>
-	<stopWord>soi</stopWord>
-	<stopWord>soi-même</stopWord>
-	<stopWord>soit</stopWord>
-	<stopWord>sont</stopWord>
-	<stopWord>sous</stopWord>
-	<stopWord>stop</stopWord>
-	<stopWord>suis</stopWord>
-	<stopWord>suivant</stopWord>
-	<stopWord>sur</stopWord>
-	<stopWord>surtout</stopWord>
-	<stopWord>t</stopWord>
-	<stopWord>ta</stopWord>
-	<stopWord>tac</stopWord>
-	<stopWord>tant</stopWord>
-	<stopWord>te</stopWord>
-	<stopWord>té</stopWord>
-	<stopWord>tel</stopWord>
-	<stopWord>telle</stopWord>
-	<stopWord>tellement</stopWord>
-	<stopWord>telles</stopWord>
-	<stopWord>tels</stopWord>
-	<stopWord>tenant</stopWord>
-	<stopWord>tes</stopWord>
-	<stopWord>tic</stopWord>
-	<stopWord>tien</stopWord>
-	<stopWord>tienne</stopWord>
-	<stopWord>tiennes</stopWord>
-	<stopWord>tiens</stopWord>
-	<stopWord>toc</stopWord>
-	<stopWord>toi</stopWord>
-	<stopWord>toi-même</stopWord>
-	<stopWord>ton</stopWord>
-	<stopWord>touchant</stopWord>
-	<stopWord>toujours</stopWord>
-	<stopWord>tous</stopWord>
-	<stopWord>tout</stopWord>
-	<stopWord>toute</stopWord>
-	<stopWord>toutes</stopWord>
-	<stopWord>très</stopWord>
-	<stopWord>trois</stopWord>
-	<stopWord>trop</stopWord>
-	<stopWord>tsoin</stopWord>
-	<stopWord>tsouin</stopWord>
-	<stopWord>tu</stopWord>
-	<stopWord>u</stopWord>
-	<stopWord>un</stopWord>
-	<stopWord>une</stopWord>
-	<stopWord>unes</stopWord>
-	<stopWord>uns</stopWord>
-	<stopWord>v</stopWord>
-	<stopWord>va</stopWord>
-	<stopWord>vais</stopWord>
-	<stopWord>vas</stopWord>
-	<stopWord>vé</stopWord>
-	<stopWord>vers</stopWord>
-	<stopWord>via</stopWord>
-	<stopWord>vif</stopWord>
-	<stopWord>vifs</stopWord>
-	<stopWord>vivat</stopWord>
-	<stopWord>vive</stopWord>
-	<stopWord>vives</stopWord>
-	<stopWord>vlan</stopWord>
-	<stopWord>voici</stopWord>
-	<stopWord>voilà</stopWord>
-	<stopWord>vont</stopWord>
-	<stopWord>vos</stopWord>
-	<stopWord>votre</stopWord>
-	<stopWord>vôtre</stopWord>
-	<stopWord>vôtres</stopWord>
-	<stopWord>vous</stopWord>
-	<stopWord>vous-mêmes</stopWord>
-	<stopWord>vu</stopWord>
-	<stopWord>w</stopWord>
-	<stopWord>x</stopWord>
-	<stopWord>y</stopWord>
-	<stopWord>z</stopWord>
-	<stopWord>zut</stopWord>
-</stopWords>
-
-</french>
-
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/German_de.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/German_de.xml
deleted file mode 100644
index dc60c02..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/German_de.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>ab</stopword>
-  <stopword>aber</stopword>
-  <stopword>allein</stopword>
-  <stopword>als</stopword>
-  <stopword>also</stopword>
-  <stopword>am</stopword>
-  <stopword>an</stopword>
-  <stopword>auch</stopword>
-  <stopword>auf</stopword>
-  <stopword>aus</stopword>
-  <stopword>außer</stopword>
-  <stopword>bald</stopword>
-  <stopword>bei</stopword>
-  <stopword>beim</stopword>
-  <stopword>bin</stopword>
-  <stopword>bis</stopword>
-  <stopword>bist</stopword>
-  <stopword>bißchen</stopword>
-  <stopword>da</stopword>
-  <stopword>dabei</stopword>
-  <stopword>dadurch</stopword>
-  <stopword>dafür</stopword>
-  <stopword>dagegen</stopword>
-  <stopword>dahinter</stopword>
-  <stopword>damit</stopword>
-  <stopword>danach</stopword>
-  <stopword>daneben</stopword>
-  <stopword>dann</stopword>
-  <stopword>daran</stopword>
-  <stopword>darauf</stopword>
-  <stopword>daraus</stopword>
-  <stopword>darin</stopword>
-  <stopword>darum</stopword>
-  <stopword>darunter</stopword>
-  <stopword>darüber</stopword>
-  <stopword>das</stopword>
-  <stopword>dasselbe</stopword>
-  <stopword>davon</stopword>
-  <stopword>davor</stopword>
-  <stopword>dazu</stopword>
-  <stopword>dazwischen</stopword>
-  <stopword>daß</stopword>
-  <stopword>dein</stopword>
-  <stopword>deine</stopword>
-  <stopword>deinem</stopword>
-  <stopword>deinen</stopword>
-  <stopword>deiner</stopword>
-  <stopword>deines</stopword>
-  <stopword>dem</stopword>
-  <stopword>demselben</stopword>
-  <stopword>den</stopword>
-  <stopword>denn</stopword>
-  <stopword>der</stopword>
-  <stopword>derselben</stopword>
-  <stopword>des</stopword>
-  <stopword>desselben</stopword>
-  <stopword>dessen</stopword>
-  <stopword>dich</stopword>
-  <stopword>die</stopword>
-  <stopword>dies</stopword>
-  <stopword>diese</stopword>
-  <stopword>dieselbe</stopword>
-  <stopword>dieselben</stopword>
-  <stopword>diesem</stopword>
-  <stopword>diesen</stopword>
-  <stopword>dieser</stopword>
-  <stopword>dieses</stopword>
-  <stopword>dir</stopword>
-  <stopword>doch</stopword>
-  <stopword>dort</stopword>
-  <stopword>du</stopword>
-  <stopword>ebenso</stopword>
-  <stopword>ehe</stopword>
-  <stopword>ein</stopword>
-  <stopword>eine</stopword>
-  <stopword>einem</stopword>
-  <stopword>einen</stopword>
-  <stopword>einer</stopword>
-  <stopword>eines</stopword>
-  <stopword>entlang</stopword>
-  <stopword>er</stopword>
-  <stopword>es</stopword>
-  <stopword>etwa</stopword>
-  <stopword>etwas</stopword>
-  <stopword>euch</stopword>
-  <stopword>euer</stopword>
-  <stopword>eure</stopword>
-  <stopword>eurem</stopword>
-  <stopword>euren</stopword>
-  <stopword>eurer</stopword>
-  <stopword>eures</stopword>
-  <stopword>für</stopword>
-  <stopword>fürs</stopword>
-  <stopword>ganz</stopword>
-  <stopword>gar</stopword>
-  <stopword>gegen</stopword>
-  <stopword>genau</stopword>
-  <stopword>gewesen</stopword>
-  <stopword>her</stopword>
-  <stopword>herein</stopword>
-  <stopword>herum</stopword>
-  <stopword>hin</stopword>
-  <stopword>hinter</stopword>
-  <stopword>hintern</stopword>
-  <stopword>ich</stopword>
-  <stopword>ihm</stopword>
-  <stopword>ihn</stopword>
-  <stopword>ihnen</stopword>
-  <stopword>ihr</stopword>
-  <stopword>ihre</stopword>
-  <stopword>ihrem</stopword>
-  <stopword>ihren</stopword>
-  <stopword>ihrer</stopword>
-  <stopword>ihres</stopword>
-  <stopword>im</stopword>
-  <stopword>in</stopword>
-  <stopword>ist</stopword>
-  <stopword>ja</stopword>
-  <stopword>je</stopword>
-  <stopword>jedesmal</stopword>
-  <stopword>jedoch</stopword>
-  <stopword>jene</stopword>
-  <stopword>jenem</stopword>
-  <stopword>jenen</stopword>
-  <stopword>jener</stopword>
-  <stopword>jenes</stopword>
-  <stopword>kaum</stopword>
-  <stopword>kein</stopword>
-  <stopword>keine</stopword>
-  <stopword>keinem</stopword>
-  <stopword>keinen</stopword>
-  <stopword>keiner</stopword>
-  <stopword>keines</stopword>
-  <stopword>man</stopword>
-  <stopword>mehr</stopword>
-  <stopword>mein</stopword>
-  <stopword>meine</stopword>
-  <stopword>meinem</stopword>
-  <stopword>meinen</stopword>
-  <stopword>meiner</stopword>
-  <stopword>meines</stopword>
-  <stopword>mich</stopword>
-  <stopword>mir</stopword>
-  <stopword>mit</stopword>
-  <stopword>nach</stopword>
-  <stopword>nachdem</stopword>
-  <stopword>neben</stopword>
-  <stopword>nein</stopword>
-  <stopword>nicht</stopword>
-  <stopword>nichts</stopword>
-  <stopword>noch</stopword>
-  <stopword>nun</stopword>
-  <stopword>nur</stopword>
-  <stopword>nämlich</stopword>
-  <stopword>ob</stopword>
-  <stopword>ober</stopword>
-  <stopword>obgleich</stopword>
-  <stopword>oder</stopword>
-  <stopword>ohne</stopword>
-  <stopword>paar</stopword>
-  <stopword>sehr</stopword>
-  <stopword>sei</stopword>
-  <stopword>sein</stopword>
-  <stopword>seine</stopword>
-  <stopword>seinem</stopword>
-  <stopword>seinen</stopword>
-  <stopword>seiner</stopword>
-  <stopword>seines</stopword>
-  <stopword>seit</stopword>
-  <stopword>seitdem</stopword>
-  <stopword>selbst</stopword>
-  <stopword>sich</stopword>
-  <stopword>sie</stopword>
-  <stopword>sind</stopword>
-  <stopword>so</stopword>
-  <stopword>sogar</stopword>
-  <stopword>solch</stopword>
-  <stopword>solche</stopword>
-  <stopword>solchem</stopword>
-  <stopword>solchen</stopword>
-  <stopword>solcher</stopword>
-  <stopword>solches</stopword>
-  <stopword>sondern</stopword>
-  <stopword>sonst</stopword>
-  <stopword>soviel</stopword>
-  <stopword>soweit</stopword>
-  <stopword>um</stopword>
-  <stopword>und</stopword>
-  <stopword>uns</stopword>
-  <stopword>unser</stopword>
-  <stopword>unsre</stopword>
-  <stopword>unsrem</stopword>
-  <stopword>unsren</stopword>
-  <stopword>unsrer</stopword>
-  <stopword>unsres</stopword>
-  <stopword>vom</stopword>
-  <stopword>von</stopword>
-  <stopword>vor</stopword>
-  <stopword>war</stopword>
-  <stopword>warum</stopword>
-  <stopword>was</stopword>
-  <stopword>wegen</stopword>
-  <stopword>weil</stopword>
-  <stopword>weit</stopword>
-  <stopword>welche</stopword>
-  <stopword>welchem</stopword>
-  <stopword>welchen</stopword>
-  <stopword>welcher</stopword>
-  <stopword>welches</stopword>
-  <stopword>wem</stopword>
-  <stopword>wen</stopword>
-  <stopword>wenn</stopword>
-  <stopword>wer</stopword>
-  <stopword>weshalb</stopword>
-  <stopword>wessen</stopword>
-  <stopword>wie</stopword>
-  <stopword>wir</stopword>
-  <stopword>wo</stopword>
-  <stopword>womit</stopword>
-  <stopword>während</stopword>
-  <stopword>wäre</stopword>
-  <stopword>wären</stopword>
-  <stopword>zu</stopword>
-  <stopword>zum</stopword>
-  <stopword>zur</stopword>
-  <stopword>zwar</stopword>
-  <stopword>zwischen</stopword>
-  <stopword>zwischens</stopword>
-  <stopword>über</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Italian_it.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Italian_it.xml
deleted file mode 100644
index 478b1d9..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Italian_it.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>a</stopword>
-  <stopword>affinchè</stopword>
-  <stopword>agl'</stopword>
-  <stopword>agli</stopword>
-  <stopword>ai</stopword>
-  <stopword>al</stopword>
-  <stopword>all'</stopword>
-  <stopword>alla</stopword>
-  <stopword>alle</stopword>
-  <stopword>allo</stopword>
-  <stopword>anche</stopword>
-  <stopword>anzichè</stopword>
-  <stopword>avere</stopword>
-  <stopword>bensì</stopword>
-  <stopword>che</stopword>
-  <stopword>chi</stopword>
-  <stopword>cioè</stopword>
-  <stopword>come</stopword>
-  <stopword>comunque</stopword>
-  <stopword>con</stopword>
-  <stopword>contro</stopword>
-  <stopword>cosa</stopword>
-  <stopword>da</stopword>
-  <stopword>dachè</stopword>
-  <stopword>dagl'</stopword>
-  <stopword>dagli</stopword>
-  <stopword>dai</stopword>
-  <stopword>dal</stopword>
-  <stopword>dall'</stopword>
-  <stopword>dalla</stopword>
-  <stopword>dalle</stopword>
-  <stopword>dallo</stopword>
-  <stopword>degl'</stopword>
-  <stopword>degli</stopword>
-  <stopword>dei</stopword>
-  <stopword>del</stopword>
-  <stopword>dell'</stopword>
-  <stopword>delle</stopword>
-  <stopword>dello</stopword>
-  <stopword>di</stopword>
-  <stopword>dopo</stopword>
-  <stopword>dove</stopword>
-  <stopword>dunque</stopword>
-  <stopword>durante</stopword>
-  <stopword>e</stopword>
-  <stopword>egli</stopword>
-  <stopword>eppure</stopword>
-  <stopword>essere</stopword>
-  <stopword>essi</stopword>
-  <stopword>finché</stopword>
-  <stopword>fino</stopword>
-  <stopword>fra</stopword>
-  <stopword>giacchè</stopword>
-  <stopword>gl'</stopword>
-  <stopword>gli</stopword>
-  <stopword>grazie</stopword>
-  <stopword>i</stopword>
-  <stopword>il</stopword>
-  <stopword>in</stopword>
-  <stopword>inoltre</stopword>
-  <stopword>io</stopword>
-  <stopword>l'</stopword>
-  <stopword>la</stopword>
-  <stopword>le</stopword>
-  <stopword>lo</stopword>
-  <stopword>loro</stopword>
-  <stopword>ma</stopword>
-  <stopword>mentre</stopword>
-  <stopword>mio</stopword>
-  <stopword>ne</stopword>
-  <stopword>neanche</stopword>
-  <stopword>negl'</stopword>
-  <stopword>negli</stopword>
-  <stopword>nei</stopword>
-  <stopword>nel</stopword>
-  <stopword>nell'</stopword>
-  <stopword>nella</stopword>
-  <stopword>nelle</stopword>
-  <stopword>nello</stopword>
-  <stopword>nemmeno</stopword>
-  <stopword>neppure</stopword>
-  <stopword>noi</stopword>
-  <stopword>nonchè</stopword>
-  <stopword>nondimeno</stopword>
-  <stopword>nostro</stopword>
-  <stopword>o</stopword>
-  <stopword>onde</stopword>
-  <stopword>oppure</stopword>
-  <stopword>ossia</stopword>
-  <stopword>ovvero</stopword>
-  <stopword>per</stopword>
-  <stopword>perchè</stopword>
-  <stopword>perciò</stopword>
-  <stopword>però</stopword>
-  <stopword>poichè</stopword>
-  <stopword>prima</stopword>
-  <stopword>purchè</stopword>
-  <stopword>quand'</stopword>
-  <stopword>quando</stopword>
-  <stopword>quantunque</stopword>
-  <stopword>quasi</stopword>
-  <stopword>quindi</stopword>
-  <stopword>se</stopword>
-  <stopword>sebbene</stopword>
-  <stopword>sennonchè</stopword>
-  <stopword>senza</stopword>
-  <stopword>seppure</stopword>
-  <stopword>si</stopword>
-  <stopword>siccome</stopword>
-  <stopword>sopra</stopword>
-  <stopword>sotto</stopword>
-  <stopword>su</stopword>
-  <stopword>subito</stopword>
-  <stopword>sugl'</stopword>
-  <stopword>sugli</stopword>
-  <stopword>sui</stopword>
-  <stopword>sul</stopword>
-  <stopword>sull'</stopword>
-  <stopword>sulla</stopword>
-  <stopword>sulle</stopword>
-  <stopword>sullo</stopword>
-  <stopword>suo</stopword>
-  <stopword>talchè</stopword>
-  <stopword>tu</stopword>
-  <stopword>tuo</stopword>
-  <stopword>tuttavia</stopword>
-  <stopword>tutti</stopword>
-  <stopword>un</stopword>
-  <stopword>una</stopword>
-  <stopword>uno</stopword>
-  <stopword>voi</stopword>
-  <stopword>vostro</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Norwegian_no.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Norwegian_no.xml
deleted file mode 100644
index b7f6f75..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Norwegian_no.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>alle</stopword>
-  <stopword>andre</stopword>
-  <stopword>arbeid</stopword>
-  <stopword>av</stopword>
-  <stopword>begge</stopword>
-  <stopword>bort</stopword>
-  <stopword>bra</stopword>
-  <stopword>bruke</stopword>
-  <stopword>da</stopword>
-  <stopword>denne</stopword>
-  <stopword>der</stopword>
-  <stopword>deres</stopword>
-  <stopword>det</stopword>
-  <stopword>din</stopword>
-  <stopword>disse</stopword>
-  <stopword>du</stopword>
-  <stopword>eller</stopword>
-  <stopword>en</stopword>
-  <stopword>ene</stopword>
-  <stopword>eneste</stopword>
-  <stopword>enhver</stopword>
-  <stopword>enn</stopword>
-  <stopword>er</stopword>
-  <stopword>et</stopword>
-  <stopword>folk</stopword>
-  <stopword>for</stopword>
-  <stopword>fordi</stopword>
-  <stopword>forsøke</stopword>
-  <stopword>fra</stopword>
-  <stopword>få</stopword>
-  <stopword>før</stopword>
-  <stopword>først</stopword>
-  <stopword>gjorde</stopword>
-  <stopword>gjøre</stopword>
-  <stopword>god</stopword>
-  <stopword>gå</stopword>
-  <stopword>ha</stopword>
-  <stopword>hadde</stopword>
-  <stopword>han</stopword>
-  <stopword>hans</stopword>
-  <stopword>hennes</stopword>
-  <stopword>her</stopword>
-  <stopword>hva</stopword>
-  <stopword>hvem</stopword>
-  <stopword>hver</stopword>
-  <stopword>hvilken</stopword>
-  <stopword>hvis</stopword>
-  <stopword>hvor</stopword>
-  <stopword>hvordan</stopword>
-  <stopword>hvorfor</stopword>
-  <stopword>i</stopword>
-  <stopword>ikke</stopword>
-  <stopword>inn</stopword>
-  <stopword>innen</stopword>
-  <stopword>kan</stopword>
-  <stopword>kunne</stopword>
-  <stopword>lage</stopword>
-  <stopword>lang</stopword>
-  <stopword>lik</stopword>
-  <stopword>like</stopword>
-  <stopword>makt</stopword>
-  <stopword>mange</stopword>
-  <stopword>med</stopword>
-  <stopword>meg</stopword>
-  <stopword>meget</stopword>
-  <stopword>men</stopword>
-  <stopword>mens</stopword>
-  <stopword>mer</stopword>
-  <stopword>mest</stopword>
-  <stopword>min</stopword>
-  <stopword>mye</stopword>
-  <stopword>må</stopword>
-  <stopword>måte</stopword>
-  <stopword>navn</stopword>
-  <stopword>nei</stopword>
-  <stopword>ny</stopword>
-  <stopword>nå</stopword>
-  <stopword>når</stopword>
-  <stopword>og</stopword>
-  <stopword>også</stopword>
-  <stopword>om</stopword>
-  <stopword>opp</stopword>
-  <stopword>oss</stopword>
-  <stopword>over</stopword>
-  <stopword>part</stopword>
-  <stopword>punkt</stopword>
-  <stopword>på</stopword>
-  <stopword>rett</stopword>
-  <stopword>riktig</stopword>
-  <stopword>samme</stopword>
-  <stopword>sant</stopword>
-  <stopword>si</stopword>
-  <stopword>siden</stopword>
-  <stopword>sist</stopword>
-  <stopword>skulle</stopword>
-  <stopword>slik</stopword>
-  <stopword>slutt</stopword>
-  <stopword>som</stopword>
-  <stopword>start</stopword>
-  <stopword>stille</stopword>
-  <stopword>så</stopword>
-  <stopword>tid</stopword>
-  <stopword>til</stopword>
-  <stopword>tilbake</stopword>
-  <stopword>tilstand</stopword>
-  <stopword>under</stopword>
-  <stopword>ut</stopword>
-  <stopword>uten</stopword>
-  <stopword>var</stopword>
-  <stopword>ved</stopword>
-  <stopword>verdi</stopword>
-  <stopword>vi</stopword>
-  <stopword>vil</stopword>
-  <stopword>ville</stopword>
-  <stopword>vite</stopword>
-  <stopword>vår</stopword>
-  <stopword>være</stopword>
-  <stopword>vært</stopword>
-  <stopword>å</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Polish_pl.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Polish_pl.xml
deleted file mode 100644
index 70c8d16..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Polish_pl.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-<stopword>i</stopword>
-<stopword>w</stopword>
-<stopword>z</stopword>
-<stopword>o</stopword>
-<stopword>na</stopword>
-<stopword>do</stopword>
-<stopword>a</stopword>
-<stopword>jest</stopword>
-<stopword>od</stopword>
-<stopword>przez</stopword>
-<stopword>to</stopword>
-<stopword>po</stopword>
-<stopword>się</stopword>
-<stopword>dla</stopword>
-<stopword>nie</stopword>
-<stopword>oraz</stopword>
-<stopword>jak</stopword>
-<stopword>za</stopword>
-<stopword>ze</stopword>
-<stopword>tym</stopword>
-<stopword>co</stopword>
-<stopword>przy</stopword>
-<stopword>tego</stopword>
-<stopword>ich</stopword>
-<stopword>ale</stopword>
-<stopword>tylko</stopword>
-<stopword>pod</stopword>
-<stopword>są</stopword>
-<stopword>jego</stopword>
-<stopword>jako</stopword>
-<stopword>czy</stopword>
-<stopword>że</stopword>
-<stopword>tak</stopword>
-<stopword>ma</stopword>
-<stopword>tej</stopword>
-<stopword>lub</stopword>
-<stopword>także</stopword>
-<stopword>jednak</stopword>
-<stopword>ten</stopword>
-<stopword>jej</stopword>
-<stopword>u</stopword>
-<stopword>już</stopword>
-<stopword>nad</stopword>
-<stopword>tych</stopword>
-<stopword>które</stopword>
-<stopword>te</stopword>
-<stopword>jeszcze</stopword>
-<stopword>bardzo</stopword>
-<stopword>może</stopword>
-<stopword>bez</stopword>
-<stopword>innych</stopword>
-<stopword>im</stopword>
-<stopword>przed</stopword>
-<stopword>wszystkich</stopword>
-<stopword>we</stopword>
-<stopword>można</stopword>
-<stopword>których</stopword>
-<stopword>wszystkim</stopword>
-<stopword>również</stopword>
-<stopword>który</stopword>
-<stopword>nawet</stopword>
-<stopword>też</stopword>
-<stopword>sobie</stopword>
-<stopword>tu</stopword>
-<stopword>nich</stopword>
-<stopword>było</stopword>
-<stopword>był</stopword>
-<stopword>będzie</stopword>
-<stopword>wielu</stopword>
-<stopword>go</stopword>
-<stopword>gdy</stopword>
-<stopword>wiele</stopword>
-<stopword>ta</stopword>
-<stopword>nas</stopword>
-<stopword>aby</stopword>
-<stopword>gdzie</stopword>
-<stopword>bo</stopword>
-<stopword>więc</stopword>
-<stopword>tam</stopword>
-<stopword>którzy</stopword>
-<stopword>która</stopword>
-<stopword>kilka</stopword>
-<stopword>między</stopword>
-<stopword>naszego</stopword>
-<stopword>była</stopword>
-<stopword>bardziej</stopword>
-<stopword>przede</stopword>
-<stopword>nam</stopword>
-<stopword>wszystko</stopword>
-<stopword>swoje</stopword>
-<stopword>której</stopword>
-<stopword>niż</stopword>
-<stopword>czyli</stopword>
-<stopword>zawsze</stopword>
-<stopword>którym</stopword>
-<stopword>takie</stopword>
-<stopword>bowiem</stopword>
-<stopword>nim</stopword>
-<stopword>poza</stopword>
-<stopword>właśnie</stopword>
-<stopword>iż</stopword>
-<stopword>były</stopword>
-<stopword>kiedy</stopword>
-<stopword>mogą</stopword>
-<stopword>mi</stopword>
-<stopword>którego</stopword>
-<stopword>mnie</stopword>
-<stopword>dlatego</stopword>
-<stopword>naszych</stopword>
-<stopword>jeśli</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Portuguese_pt.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Portuguese_pt.xml
deleted file mode 100644
index 1102318..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Portuguese_pt.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>a</stopword>
-  <stopword>abaixo</stopword>
-  <stopword>adiante</stopword>
-  <stopword>agora</stopword>
-  <stopword>ali</stopword>
-  <stopword>antes</stopword>
-  <stopword>aqui</stopword>
-  <stopword>atras</stopword>
-  <stopword>até</stopword>
-  <stopword>bastante</stopword>
-  <stopword>bem</stopword>
-  <stopword>com</stopword>
-  <stopword>como</stopword>
-  <stopword>contra</stopword>
-  <stopword>debaixo</stopword>
-  <stopword>demais</stopword>
-  <stopword>depois</stopword>
-  <stopword>depressa</stopword>
-  <stopword>devagar</stopword>
-  <stopword>direito</stopword>
-  <stopword>e</stopword>
-  <stopword>ela</stopword>
-  <stopword>elas</stopword>
-  <stopword>eles</stopword>
-  <stopword>em</stopword>
-  <stopword>entre</stopword>
-  <stopword>eu</stopword>
-  <stopword>fora</stopword>
-  <stopword>junto</stopword>
-  <stopword>longe</stopword>
-  <stopword>mais</stopword>
-  <stopword>menos</stopword>
-  <stopword>muito</stopword>
-  <stopword>ninguem</stopword>
-  <stopword>nunca</stopword>
-  <stopword>não</stopword>
-  <stopword>nós</stopword>
-  <stopword>onde</stopword>
-  <stopword>ou</stopword>
-  <stopword>para</stopword>
-  <stopword>por</stopword>
-  <stopword>porque</stopword>
-  <stopword>pouco</stopword>
-  <stopword>próximo</stopword>
-  <stopword>qual</stopword>
-  <stopword>quando</stopword>
-  <stopword>quanto</stopword>
-  <stopword>que</stopword>
-  <stopword>quem</stopword>
-  <stopword>se</stopword>
-  <stopword>sem</stopword>
-  <stopword>sempre</stopword>
-  <stopword>sim</stopword>
-  <stopword>sob</stopword>
-  <stopword>sobre</stopword>
-  <stopword>talvez</stopword>
-  <stopword>todas</stopword>
-  <stopword>todos</stopword>
-  <stopword>vagarosamente</stopword>
-  <stopword>você</stopword>
-  <stopword>vocês</stopword>
-  <stopword>êle</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Russian_ru.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Russian_ru.xml
deleted file mode 100644
index faedd55..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Russian_ru.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<stopwords>
-<stopword>а</stopword>
-<stopword>без</stopword>
-<stopword>более</stopword>
-<stopword>бы</stopword>
-<stopword>был</stopword>
-<stopword>была</stopword>
-<stopword>были</stopword>
-<stopword>было</stopword>
-<stopword>быть</stopword>
-<stopword>в</stopword>
-<stopword>вам</stopword>
-<stopword>ваÑ?</stopword>
-<stopword>веÑ?ь</stopword>
-<stopword>во</stopword>
-<stopword>вот</stopword>
-<stopword>вÑ?е</stopword>
-<stopword>вÑ?его</stopword>
-<stopword>вÑ?ех</stopword>
-<stopword>вы</stopword>
-<stopword>где</stopword>
-<stopword>да</stopword>
-<stopword>даже</stopword>
-<stopword>длÑ?</stopword>
-<stopword>до</stopword>
-<stopword>его</stopword>
-<stopword>ее</stopword>
-<stopword>еÑ?ли</stopword>
-<stopword>еÑ?ть</stopword>
-<stopword>еще</stopword>
-<stopword>же</stopword>
-<stopword>за</stopword>
-<stopword>здеÑ?ь</stopword>
-<stopword>и</stopword>
-<stopword>из</stopword>
-<stopword>или</stopword>
-<stopword>им</stopword>
-<stopword>их</stopword>
-<stopword>к</stopword>
-<stopword>как</stopword>
-<stopword>ко</stopword>
-<stopword>когда</stopword>
-<stopword>кто</stopword>
-<stopword>ли</stopword>
-<stopword>либо</stopword>
-<stopword>мне</stopword>
-<stopword>может</stopword>
-<stopword>мы</stopword>
-<stopword>на</stopword>
-<stopword>надо</stopword>
-<stopword>наш</stopword>
-<stopword>не</stopword>
-<stopword>него</stopword>
-<stopword>нее</stopword>
-<stopword>нет</stopword>
-<stopword>ни</stopword>
-<stopword>них</stopword>
-<stopword>но</stopword>
-<stopword>ну</stopword>
-<stopword>о</stopword>
-<stopword>об</stopword>
-<stopword>однако</stopword>
-<stopword>он</stopword>
-<stopword>она</stopword>
-<stopword>они</stopword>
-<stopword>оно</stopword>
-<stopword>от</stopword>
-<stopword>очень</stopword>
-<stopword>по</stopword>
-<stopword>под</stopword>
-<stopword>при</stopword>
-<stopword>Ñ?</stopword>
-<stopword>Ñ?о</stopword>
-<stopword>так</stopword>
-<stopword>также</stopword>
-<stopword>такой</stopword>
-<stopword>там</stopword>
-<stopword>те</stopword>
-<stopword>тем</stopword>
-<stopword>то</stopword>
-<stopword>того</stopword>
-<stopword>тоже</stopword>
-<stopword>той</stopword>
-<stopword>только</stopword>
-<stopword>том</stopword>
-<stopword>ты</stopword>
-<stopword>у</stopword>
-<stopword>уже</stopword>
-<stopword>хотÑ?</stopword>
-<stopword>чего</stopword>
-<stopword>чей</stopword>
-<stopword>чем</stopword>
-<stopword>что</stopword>
-<stopword>чтобы</stopword>
-<stopword>чье</stopword>
-<stopword>чьÑ?</stopword>
-<stopword>Ñ?та</stopword>
-<stopword>Ñ?ти</stopword>
-<stopword>Ñ?то</stopword>
-<stopword>Ñ?</stopword></stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Spanish_es.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Spanish_es.xml
deleted file mode 100644
index 2f45675..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Spanish_es.xml
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>a</stopword>
-  <stopword>acá</stopword>
-  <stopword>ahí</stopword>
-  <stopword>ajena</stopword>
-  <stopword>ajenas</stopword>
-  <stopword>ajeno</stopword>
-  <stopword>ajenos</stopword>
-  <stopword>al</stopword>
-  <stopword>algo</stopword>
-  <stopword>alguna</stopword>
-  <stopword>algunas</stopword>
-  <stopword>alguno</stopword>
-  <stopword>algunos</stopword>
-  <stopword>algún</stopword>
-  <stopword>allá</stopword>
-  <stopword>allí</stopword>
-  <stopword>aquel</stopword>
-  <stopword>aquella</stopword>
-  <stopword>aquellas</stopword>
-  <stopword>aquello</stopword>
-  <stopword>aquellos</stopword>
-  <stopword>aquí</stopword>
-  <stopword>cada</stopword>
-  <stopword>cierta</stopword>
-  <stopword>ciertas</stopword>
-  <stopword>cierto</stopword>
-  <stopword>ciertos</stopword>
-  <stopword>como</stopword>
-  <stopword>con</stopword>
-  <stopword>conmigo</stopword>
-  <stopword>consigo</stopword>
-  <stopword>contigo</stopword>
-  <stopword>cualquier</stopword>
-  <stopword>cualquiera</stopword>
-  <stopword>cualquieras</stopword>
-  <stopword>cuan</stopword>
-  <stopword>cuanta</stopword>
-  <stopword>cuantas</stopword>
-  <stopword>cuanto</stopword>
-  <stopword>cuantos</stopword>
-  <stopword>cuán</stopword>
-  <stopword>cuánta</stopword>
-  <stopword>cuántas</stopword>
-  <stopword>cuánto</stopword>
-  <stopword>cuántos</stopword>
-  <stopword>cómo</stopword>
-  <stopword>de</stopword>
-  <stopword>dejar</stopword>
-  <stopword>del</stopword>
-  <stopword>demasiada</stopword>
-  <stopword>demasiadas</stopword>
-  <stopword>demasiado</stopword>
-  <stopword>demasiados</stopword>
-  <stopword>demás</stopword>
-  <stopword>el</stopword>
-  <stopword>ella</stopword>
-  <stopword>ellas</stopword>
-  <stopword>ellos</stopword>
-  <stopword>esa</stopword>
-  <stopword>esas</stopword>
-  <stopword>ese</stopword>
-  <stopword>esos</stopword>
-  <stopword>esta</stopword>
-  <stopword>estar</stopword>
-  <stopword>estas</stopword>
-  <stopword>este</stopword>
-  <stopword>estos</stopword>
-  <stopword>hacer</stopword>
-  <stopword>hasta</stopword>
-  <stopword>jamás</stopword>
-  <stopword>junto</stopword>
-  <stopword>juntos</stopword>
-  <stopword>la</stopword>
-  <stopword>las</stopword>
-  <stopword>lo</stopword>
-  <stopword>los</stopword>
-  <stopword>mas</stopword>
-  <stopword>me</stopword>
-  <stopword>menos</stopword>
-  <stopword>mientras</stopword>
-  <stopword>misma</stopword>
-  <stopword>mismas</stopword>
-  <stopword>mismo</stopword>
-  <stopword>mismos</stopword>
-  <stopword>mucha</stopword>
-  <stopword>muchas</stopword>
-  <stopword>mucho</stopword>
-  <stopword>muchos</stopword>
-  <stopword>muchísima</stopword>
-  <stopword>muchísimas</stopword>
-  <stopword>muchísimo</stopword>
-  <stopword>muchísimos</stopword>
-  <stopword>muy</stopword>
-  <stopword>más</stopword>
-  <stopword>mía</stopword>
-  <stopword>mío</stopword>
-  <stopword>nada</stopword>
-  <stopword>ni</stopword>
-  <stopword>ninguna</stopword>
-  <stopword>ningunas</stopword>
-  <stopword>ninguno</stopword>
-  <stopword>ningunos</stopword>
-  <stopword>no</stopword>
-  <stopword>nos</stopword>
-  <stopword>nosotras</stopword>
-  <stopword>nosotros</stopword>
-  <stopword>nuestra</stopword>
-  <stopword>nuestras</stopword>
-  <stopword>nuestro</stopword>
-  <stopword>nuestros</stopword>
-  <stopword>nunca</stopword>
-  <stopword>os</stopword>
-  <stopword>otra</stopword>
-  <stopword>otras</stopword>
-  <stopword>otro</stopword>
-  <stopword>otros</stopword>
-  <stopword>para</stopword>
-  <stopword>parecer</stopword>
-  <stopword>poca</stopword>
-  <stopword>pocas</stopword>
-  <stopword>poco</stopword>
-  <stopword>pocos</stopword>
-  <stopword>por</stopword>
-  <stopword>porque</stopword>
-  <stopword>que</stopword>
-  <stopword>querer</stopword>
-  <stopword>quien</stopword>
-  <stopword>quienes</stopword>
-  <stopword>quienesquiera</stopword>
-  <stopword>quienquiera</stopword>
-  <stopword>quién</stopword>
-  <stopword>qué</stopword>
-  <stopword>ser</stopword>
-  <stopword>si</stopword>
-  <stopword>siempre</stopword>
-  <stopword>sr</stopword>
-  <stopword>sra</stopword>
-  <stopword>sres</stopword>
-  <stopword>sta</stopword>
-  <stopword>suya</stopword>
-  <stopword>suyas</stopword>
-  <stopword>suyo</stopword>
-  <stopword>suyos</stopword>
-  <stopword>sí</stopword>
-  <stopword>sín</stopword>
-  <stopword>tal</stopword>
-  <stopword>tales</stopword>
-  <stopword>tan</stopword>
-  <stopword>tanta</stopword>
-  <stopword>tantas</stopword>
-  <stopword>tanto</stopword>
-  <stopword>tantos</stopword>
-  <stopword>te</stopword>
-  <stopword>tener</stopword>
-  <stopword>ti</stopword>
-  <stopword>toda</stopword>
-  <stopword>todas</stopword>
-  <stopword>todo</stopword>
-  <stopword>todos</stopword>
-  <stopword>tomar</stopword>
-  <stopword>tuya</stopword>
-  <stopword>tuyo</stopword>
-  <stopword>tú</stopword>
-  <stopword>un</stopword>
-  <stopword>una</stopword>
-  <stopword>unas</stopword>
-  <stopword>unos</stopword>
-  <stopword>usted</stopword>
-  <stopword>ustedes</stopword>
-  <stopword>varias</stopword>
-  <stopword>varios</stopword>
-  <stopword>vosotras</stopword>
-  <stopword>vosotros</stopword>
-  <stopword>vuestra</stopword>
-  <stopword>vuestras</stopword>
-  <stopword>vuestro</stopword>
-  <stopword>vuestros</stopword>
-  <stopword>y</stopword>
-  <stopword>yo</stopword>
-  <stopword>él</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/analyzer/stopword/Swedish_sv.xml b/trunk/src/webapp/WEB-INF/analyzer/stopword/Swedish_sv.xml
deleted file mode 100644
index 70f7932..0000000
--- a/trunk/src/webapp/WEB-INF/analyzer/stopword/Swedish_sv.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<stopwords>
-  <stopword>ab</stopword>
-  <stopword>aldrig</stopword>
-  <stopword>all</stopword>
-  <stopword>alla</stopword>
-  <stopword>alltid</stopword>
-  <stopword>att</stopword>
-  <stopword>av</stopword>
-  <stopword>avser</stopword>
-  <stopword>avses</stopword>
-  <stopword>bakom</stopword>
-  <stopword>bra</stopword>
-  <stopword>bredvid</stopword>
-  <stopword>de</stopword>
-  <stopword>dem</stopword>
-  <stopword>den</stopword>
-  <stopword>denna</stopword>
-  <stopword>deras</stopword>
-  <stopword>dess</stopword>
-  <stopword>det</stopword>
-  <stopword>detta</stopword>
-  <stopword>du</stopword>
-  <stopword>dä</stopword>
-  <stopword>där</stopword>
-  <stopword>efter</stopword>
-  <stopword>eftersom</stopword>
-  <stopword>efterät</stopword>
-  <stopword>ej</stopword>
-  <stopword>eller</stopword>
-  <stopword>emot</stopword>
-  <stopword>en</stopword>
-  <stopword>ett</stopword>
-  <stopword>fastän</stopword>
-  <stopword>fort</stopword>
-  <stopword>framför</stopword>
-  <stopword>från</stopword>
-  <stopword>för</stopword>
-  <stopword>genom</stopword>
-  <stopword>gott</stopword>
-  <stopword>hamske</stopword>
-  <stopword>han</stopword>
-  <stopword>hellre</stopword>
-  <stopword>hon</stopword>
-  <stopword>hos</stopword>
-  <stopword>hur</stopword>
-  <stopword>här</stopword>
-  <stopword>i</stopword>
-  <stopword>in</stopword>
-  <stopword>ingen</stopword>
-  <stopword>innan</stopword>
-  <stopword>inte</stopword>
-  <stopword>ja</stopword>
-  <stopword>jag</stopword>
-  <stopword>lite</stopword>
-  <stopword>långsamt</stopword>
-  <stopword>långt</stopword>
-  <stopword>man</stopword>
-  <stopword>med</stopword>
-  <stopword>medan</stopword>
-  <stopword>mellan</stopword>
-  <stopword>mer</stopword>
-  <stopword>mera</stopword>
-  <stopword>mindre</stopword>
-  <stopword>mot</stopword>
-  <stopword>myckett</stopword>
-  <stopword>nej</stopword>
-  <stopword>nere</stopword>
-  <stopword>ni</stopword>
-  <stopword>nu</stopword>
-  <stopword>när</stopword>
-  <stopword>nära</stopword>
-  <stopword>och</stopword>
-  <stopword>oksa</stopword>
-  <stopword>om</stopword>
-  <stopword>på</stopword>
-  <stopword>sin</stopword>
-  <stopword>skall</stopword>
-  <stopword>som</stopword>
-  <stopword>så</stopword>
-  <stopword>sådan</stopword>
-  <stopword>till</stopword>
-  <stopword>tillräckligt</stopword>
-  <stopword>tillsammans</stopword>
-  <stopword>trots</stopword>
-  <stopword>under</stopword>
-  <stopword>uppe</stopword>
-  <stopword>ut</stopword>
-  <stopword>utan</stopword>
-  <stopword>utom</stopword>
-  <stopword>vad</stopword>
-  <stopword>var</stopword>
-  <stopword>varför</stopword>
-  <stopword>vart</stopword>
-  <stopword>varthän</stopword>
-  <stopword>vem</stopword>
-  <stopword>vems</stopword>
-  <stopword>vi</stopword>
-  <stopword>vid</stopword>
-  <stopword>vilken</stopword>
-  <stopword>väl</stopword>
-  <stopword>än</stopword>
-  <stopword>ännu</stopword>
-  <stopword>är</stopword>
-  <stopword>ånyo</stopword>
-  <stopword>över</stopword>
-</stopwords>
diff --git a/trunk/src/webapp/WEB-INF/db/cocoondb.properties b/trunk/src/webapp/WEB-INF/db/cocoondb.properties
deleted file mode 100644
index 3c9b073..0000000
--- a/trunk/src/webapp/WEB-INF/db/cocoondb.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-#HSQL database
-#Mon Mar 14 23:21:54 CET 2005
-hsqldb.cache_file_scale=1
-runtime.gc_interval=0
-hsqldb.first_identity=0
-version=1.7.3
-modified=yes
-hsqldb.script_format=0
-sql.enforce_size=false
-hsqldb.cache_size_scale=10
-hsqldb.cache_scale=14
-hsqldb.version=1.7.3
-hsqldb.log_size=200
-sql.enforce_strict_size=false
-readonly=false
-hsqldb.compatible_version=1.7.2
-hsqldb.original_version=1.7.1
-sql.compare_in_locale=false
-hsqldb.nio_data_file=true
-hsqldb.cache_version=1.7.0
diff --git a/trunk/src/webapp/WEB-INF/db/cocoondb.script b/trunk/src/webapp/WEB-INF/db/cocoondb.script
deleted file mode 100644
index 42212cb..0000000
--- a/trunk/src/webapp/WEB-INF/db/cocoondb.script
+++ /dev/null
@@ -1,49 +0,0 @@
--- Licensed to the Apache Software Foundation (ASF) under one or more
--- contributor license agreements.  See the NOTICE file distributed with
--- this work for additional information regarding copyright ownership.
--- The ASF licenses this file to You 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.
-
-CREATE USER SA PASSWORD "" ADMIN
-
-DROP TABLE qrtz_locks IF EXISTS
-DROP TABLE qrtz_scheduler_state IF EXISTS
-DROP TABLE qrtz_fired_triggers IF EXISTS
-DROP TABLE qrtz_paused_trigger_grps IF EXISTS
-DROP TABLE qrtz_calendars IF EXISTS
-DROP TABLE qrtz_trigger_listeners IF EXISTS
-DROP TABLE qrtz_blob_triggers IF EXISTS
-DROP TABLE qrtz_cron_triggers IF EXISTS
-DROP TABLE qrtz_simple_triggers IF EXISTS
-DROP TABLE qrtz_triggers IF EXISTS
-DROP TABLE qrtz_job_listeners IF EXISTS
-DROP TABLE qrtz_job_details IF EXISTS
-
-CREATE TABLE qrtz_job_details (JOB_NAME VARCHAR(80) NOT NULL, JOB_GROUP VARCHAR(80) NOT NULL, DESCRIPTION VARCHAR(120) NULL, JOB_CLASS_NAME VARCHAR(128) NOT NULL, IS_DURABLE VARCHAR(1) NOT NULL, IS_VOLATILE VARCHAR(1) NOT NULL, IS_STATEFUL VARCHAR(1) NOT NULL, REQUESTS_RECOVERY VARCHAR(1) NOT NULL, JOB_DATA BINARY NULL, PRIMARY KEY (JOB_NAME,JOB_GROUP))
-CREATE TABLE qrtz_job_listeners (JOB_NAME VARCHAR(80) NOT NULL, JOB_GROUP VARCHAR(80) NOT NULL, JOB_LISTENER VARCHAR(80) NOT NULL, PRIMARY KEY (JOB_NAME,JOB_GROUP,JOB_LISTENER), FOREIGN KEY (JOB_NAME,JOB_GROUP) REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
-CREATE TABLE qrtz_triggers (TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, JOB_NAME VARCHAR(80) NOT NULL, JOB_GROUP VARCHAR(80) NOT NULL, IS_VOLATILE VARCHAR(1) NOT NULL, DESCRIPTION VARCHAR(120) NULL, NEXT_FIRE_TIME NUMERIC(13) NULL, PREV_FIRE_TIME NUMERIC(13) NULL, TRIGGER_STATE VARCHAR(16) NOT NULL, TRIGGER_TYPE VARCHAR(8) NOT NULL, START_TIME NUMERIC(13) NOT NULL, END_TIME NUMERIC(13) NULL, CALENDAR_NAME VARCHAR(80) NULL, MISFIRE_INSTR NUMERIC(2) NULL, JOB_DATA BINARY NULL, PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (JOB_NAME,JOB_GROUP) REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
-CREATE TABLE qrtz_simple_triggers (TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, REPEAT_COUNT NUMERIC(7) NOT NULL, REPEAT_INTERVAL NUMERIC(12) NOT NULL, TIMES_TRIGGERED NUMERIC(7) NOT NULL, PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-CREATE TABLE qrtz_cron_triggers (TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, CRON_EXPRESSION VARCHAR(80) NOT NULL, TIME_ZONE_ID VARCHAR(80), PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-CREATE TABLE qrtz_blob_triggers (TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, BLOB_DATA BINARY NULL, PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-CREATE TABLE qrtz_trigger_listeners (TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, TRIGGER_LISTENER VARCHAR(80) NOT NULL, PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_LISTENER), FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP) REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-CREATE TABLE qrtz_calendars (CALENDAR_NAME VARCHAR(80) NOT NULL, CALENDAR BINARY NOT NULL, PRIMARY KEY (CALENDAR_NAME))
-CREATE TABLE qrtz_paused_trigger_grps (TRIGGER_GROUP VARCHAR(80) NOT NULL, PRIMARY KEY (TRIGGER_GROUP))
-CREATE TABLE qrtz_fired_triggers (ENTRY_ID VARCHAR(95) NOT NULL, TRIGGER_NAME VARCHAR(80) NOT NULL, TRIGGER_GROUP VARCHAR(80) NOT NULL, IS_VOLATILE VARCHAR(1) NOT NULL, INSTANCE_NAME VARCHAR(80) NOT NULL, FIRED_TIME NUMERIC(13) NOT NULL, STATE VARCHAR(16) NOT NULL, JOB_NAME VARCHAR(80) NULL, JOB_GROUP VARCHAR(80) NULL, IS_STATEFUL VARCHAR(1) NULL, REQUESTS_RECOVERY VARCHAR(1) NULL, PRIMARY KEY (ENTRY_ID))
-CREATE TABLE qrtz_scheduler_state (INSTANCE_NAME VARCHAR(80) NOT NULL, LAST_CHECKIN_TIME NUMERIC(13) NOT NULL, CHECKIN_INTERVAL NUMERIC(13) NOT NULL, RECOVERER VARCHAR(80) NULL, PRIMARY KEY (INSTANCE_NAME))
-CREATE TABLE qrtz_locks (LOCK_NAME VARCHAR(40) NOT NULL, PRIMARY KEY (LOCK_NAME))
-
-INSERT INTO qrtz_locks values('TRIGGER_ACCESS')
-INSERT INTO qrtz_locks values('JOB_ACCESS')
-INSERT INTO qrtz_locks values('CALENDAR_ACCESS')
-INSERT INTO qrtz_locks values('STATE_ACCESS')
-INSERT INTO qrtz_locks values('MISFIRE_ACCESS')
-
diff --git a/trunk/src/webapp/WEB-INF/entities/catalog.xsl b/trunk/src/webapp/WEB-INF/entities/catalog.xsl
deleted file mode 100644
index d9f7b3e..0000000
--- a/trunk/src/webapp/WEB-INF/entities/catalog.xsl
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:output omit-xml-declaration="yes"/>    
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-<!-- Insert new catalogs -->
-</xsl:template>
-   
-</xsl:stylesheet> 
diff --git a/trunk/src/webapp/WEB-INF/entities/web-app_2_3.dtd b/trunk/src/webapp/WEB-INF/entities/web-app_2_3.dtd
deleted file mode 100644
index b733607..0000000
--- a/trunk/src/webapp/WEB-INF/entities/web-app_2_3.dtd
+++ /dev/null
@@ -1,1063 +0,0 @@
-<!--

-Copyright (c) 2000 Sun Microsystems, Inc.,

-901 San Antonio Road,

-Palo Alto, California 94303, U.S.A.

-All rights reserved.

-

-Sun Microsystems, Inc. has intellectual property rights relating to

-technology embodied in the product that is described in this document.

-In particular, and without limitation, these intellectual property

-rights may include one or more of the U.S. patents listed at

-http://www.sun.com/patents and one or more additional patents or

-pending patent applications in the U.S. and in other countries.

-

-This document and the product to which it pertains are distributed

-under licenses restricting their use, copying, distribution, and

-decompilation.  This document may be reproduced and distributed but may

-not be changed without prior written authorization of Sun and its

-licensors, if any.

-

-Third-party software, including font technology, is copyrighted and

-licensed from Sun suppliers.

-

-Sun,  Sun Microsystems,  the Sun logo,  Java,  JavaServer Pages,  Java

-Naming and Directory Interface,  JDBC,  JDK,  JavaMail and  and

-Enterprise JavaBeans are trademarks or registered trademarks of Sun

-Microsystems, Inc. in the U.S. and other countries.

-

-Federal Acquisitions: Commercial Software - Government Users Subject to

-Standard License Terms and Conditions.

-

-DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED

-CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED

-WARRANTY OF MERCHANTABILITY, FITNESS FOR FOR A PARTICULAR PURPOSE OR

-NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH

-DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.

-

-

-_________________________________________________________________________

-

-Copyright (c) 2000 Sun Microsystems, Inc.,

-901 San Antonio Road,

-Palo Alto, California 94303, E'tats-Unis.

-Tous droits re'serve's.

-

-Sun Microsystems, Inc. a les droits de proprie'te' intellectuels

-relatants a` la technologie incorpore'e dans le produit qui est de'crit

-dans ce document. En particulier, et sans la limitation, ces droits de

-proprie'te' intellectuels peuvent inclure un ou plus des brevets

-ame'ricains e'nume're's a` http://www.sun.com/patents et un ou les

-brevets plus supple'mentaires ou les applications de brevet en attente

-dans les E'tats-Unis et dans les autres pays.

-

-Ce produit ou document est prote'ge' par un copyright et distribue'

-avec des licences qui en restreignent l'utilisation, la copie, la

-distribution, et la de'compilation.  Ce documention associe n peut

-e^tre reproduite et distribuer, par quelque moyen que ce soit, sans

-l'autorisation pre'alable et e'crite de Sun et de ses bailleurs de

-licence, le cas e'che'ant.

-

-Le logiciel de'tenu par des tiers, et qui comprend la technologie

-relative aux polices de caracte`res, est prote'ge' par un copyright et

-licencie' par des fournisseurs de Sun.

-

-Sun,  Sun Microsystems,  le logo Sun,  Java,  JavaServer Pages,  Java

-Naming and Directory Interface,  JDBC,  JDK,  JavaMail et  and

-Enterprise JavaBeans sont des marques de fabrique ou des marques

-de'pose'es de Sun Microsystems, Inc. aux E'tats-Unis et dans d'autres

-pays.

-

-LA DOCUMENTATION EST FOURNIE "EN L'E'TAT" ET TOUTES AUTRES CONDITIONS,

-DECLARATIONS ET GARANTIES EXPRESSES OU TACITES SONT FORMELLEMENT

-EXCLUES, DANS LA MESURE AUTORISEE PAR LA LOI APPLICABLE, Y COMPRIS

-NOTAMMENT TOUTE GARANTIE IMPLICITE RELATIVE A LA QUALITE MARCHANDE, A

-L'APTITUDE A UNE UTILISATION PARTICULIERE OU A L'ABSENCE DE

-CONTREFAC,ON.

--->

-

-<!--

-This is the XML DTD for the Servlet 2.3 deployment descriptor.

-All Servlet 2.3 deployment descriptors must include a DOCTYPE

-of the following form:

-

-  <!DOCTYPE web-app PUBLIC

-	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

-	"http://java.sun.com/dtd/web-app_2_3.dtd">

-

--->

-

-<!--

-The following conventions apply to all J2EE deployment descriptor

-elements unless indicated otherwise.

-

-- In elements that contain PCDATA, leading and trailing whitespace

-  in the data may be ignored.

-

-- In elements whose value is an "enumerated type", the value is

-  case sensitive.

-

-- In elements that specify a pathname to a file within the same

-  JAR file, relative filenames (i.e., those not starting with "/")

-  are considered relative to the root of the JAR file's namespace.

-  Absolute filenames (i.e., those starting with "/") also specify

-  names in the root of the JAR file's namespace.  In general, relative

-  names are preferred.  The exception is .war files where absolute

-  names are preferred for consistency with the servlet API.

--->

-

-

-<!--

-The web-app element is the root of the deployment descriptor for

-a web application.

--->

-<!ELEMENT web-app (icon?, display-name?, description?, distributable?,

-context-param*, filter*, filter-mapping*, listener*, servlet*,

-servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,

-error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,

-login-config?, security-role*, env-entry*, ejb-ref*,  ejb-local-ref*)>

-

-<!--

-The auth-constraint element indicates the user roles that should

-be permitted access to this resource collection. The role-name

-used here must either correspond to the role-name of one of the

-security-role elements defined for this web application, or be

-the specially reserved role-name "*" that is a compact syntax for

-indicating all roles in the web application. If both "*" and

-rolenames appear, the container interprets this as all roles.

-If no roles are defined, no user is allowed access to the portion of

-the web application described by the containing security-constraint.

-The container matches role names case sensitively when determining

-access.

-

-

-Used in: security-constraint

--->

-<!ELEMENT auth-constraint (description?, role-name*)>

-

-<!--

-The auth-method element is used to configure the authentication

-mechanism for the web application. As a prerequisite to gaining access to any web resources which are protected by an authorization

-constraint, a user must have authenticated using the configured

-mechanism. Legal values for this element are "BASIC", "DIGEST",

-"FORM", or "CLIENT-CERT".

-

-Used in: login-config

--->

-<!ELEMENT auth-method (#PCDATA)>

-

-<!--

-The context-param element contains the declaration of a web

-application's servlet context initialization parameters.

-

-Used in: web-app

--->

-<!ELEMENT context-param (param-name, param-value, description?)>

-

-<!--

-The description element is used to provide text describing the parent

-element.  The description element should include any information that

-the web application war file producer wants to provide to the consumer of

-the web application war file (i.e., to the Deployer). Typically, the tools

-used by the web application war file consumer will display the description

-when processing the parent element that contains the description.

-

-Used in: auth-constraint, context-param, ejb-local-ref, ejb-ref,

-env-entry, filter, init-param, resource-env-ref, resource-ref, run-as,

-security-role, security-role-ref, servlet, user-data-constraint,

-web-app, web-resource-collection

--->

-<!ELEMENT description (#PCDATA)>

-

-<!--

-The display-name element contains a short name that is intended to be

-displayed by tools.  The display name need not be unique.

-

-Used in: filter, security-constraint, servlet, web-app

-

-Example:

-

-<display-name>Employee Self Service</display-name>

--->

-<!ELEMENT display-name (#PCDATA)>

-

-<!--

-The distributable element, by its presence in a web application

-deployment descriptor, indicates that this web application is

-programmed appropriately to be deployed into a distributed servlet

-container

-

-Used in: web-app

--->

-<!ELEMENT distributable EMPTY>

-

-<!--

-The ejb-link element is used in the ejb-ref or ejb-local-ref

-elements to specify that an EJB reference is linked to an

-enterprise bean.

-

-The name in the ejb-link element is composed of a

-path name specifying the ejb-jar containing the referenced enterprise

-bean with the ejb-name of the target bean appended and separated from

-the path name by "#".  The path name is relative to the war file

-containing the web application that is referencing the enterprise bean.

-This allows multiple enterprise beans with the same ejb-name to be

-uniquely identified.

-

-Used in: ejb-local-ref, ejb-ref

-

-Examples:

-

-	<ejb-link>EmployeeRecord</ejb-link>

-

-	<ejb-link>../products/product.jar#ProductEJB</ejb-link>

-

--->

-<!ELEMENT ejb-link (#PCDATA)>

-

-<!--

-The ejb-local-ref element is used for the declaration of a reference to

-an enterprise bean's local home. The declaration consists of:

-

-	- an optional description

-	- the EJB reference name used in the code of the web application

-	  that's referencing the enterprise bean

-	- the expected type of the referenced enterprise bean

-	- the expected local home and local interfaces of the referenced

-	  enterprise bean

-	- optional ejb-link information, used to specify the referenced

-	  enterprise bean

-

-Used in: web-app

--->

-<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type,

-		local-home, local, ejb-link?)>

-

-<!--

-The ejb-ref element is used for the declaration of a reference to

-an enterprise bean's home. The declaration consists of:

-

-	- an optional description

-	- the EJB reference name used in the code of

-	  the web application that's referencing the enterprise bean

-	- the expected type of the referenced enterprise bean

-	- the expected home and remote interfaces of the referenced

-	  enterprise bean

-	- optional ejb-link information, used to specify the referenced

-	  enterprise bean

-

-Used in: web-app

--->

-<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type,

-		home, remote, ejb-link?)>

-

-<!--

-The ejb-ref-name element contains the name of an EJB reference. The

-EJB reference is an entry in the web application's environment and is

-relative to the java:comp/env context.  The name must be unique

-within the web application.

-

-It is recommended that name is prefixed with "ejb/".

-

-Used in: ejb-local-ref, ejb-ref

-

-Example:

-

-<ejb-ref-name>ejb/Payroll</ejb-ref-name>

--->

-<!ELEMENT ejb-ref-name (#PCDATA)>

-

-<!--

-The ejb-ref-type element contains the expected type of the

-referenced enterprise bean.

-

-The ejb-ref-type element must be one of the following:

-

-	<ejb-ref-type>Entity</ejb-ref-type>

-	<ejb-ref-type>Session</ejb-ref-type>

-

-Used in: ejb-local-ref, ejb-ref

--->

-<!ELEMENT ejb-ref-type (#PCDATA)>

-

-<!--

-The env-entry element contains the declaration of a web application's

-environment entry. The declaration consists of an optional

-description, the name of the environment entry, and an optional

-value.  If a value is not specified, one must be supplied

-during deployment.

--->

-<!ELEMENT env-entry (description?, env-entry-name, env-entry-value?,

-env-entry-type)>

-

-<!--

-The env-entry-name element contains the name of a web applications's

-environment entry.  The name is a JNDI name relative to the

-java:comp/env context.  The name must be unique within a web application.

-

-Example:

-

-<env-entry-name>minAmount</env-entry-name>

-

-Used in: env-entry

--->

-<!ELEMENT env-entry-name (#PCDATA)>

-

-<!--

-The env-entry-type element contains the fully-qualified Java type of

-the environment entry value that is expected by the web application's

-code.

-

-The following are the legal values of env-entry-type:

-

-	java.lang.Boolean

-	java.lang.Byte

-	java.lang.Character

-	java.lang.String

-	java.lang.Short

-	java.lang.Integer

-	java.lang.Long

-	java.lang.Float

-	java.lang.Double

-

-Used in: env-entry

--->

-<!ELEMENT env-entry-type (#PCDATA)>

-

-<!--

-The env-entry-value element contains the value of a web application's

-environment entry. The value must be a String that is valid for the

-constructor of the specified type that takes a single String

-parameter, or for java.lang.Character, a single character.

-

-Example:

-

-<env-entry-value>100.00</env-entry-value>

-

-Used in: env-entry

--->

-<!ELEMENT env-entry-value (#PCDATA)>

-

-<!--

-The error-code contains an HTTP error code, ex: 404

-

-Used in: error-page

--->

-<!ELEMENT error-code (#PCDATA)>

-

-<!--

-The error-page element contains a mapping between an error code

-or exception type to the path of a resource in the web application

-

-Used in: web-app

--->

-<!ELEMENT error-page ((error-code | exception-type), location)>

-

-<!--

-The exception type contains a fully qualified class name of a

-Java exception type.

-

-Used in: error-page

--->

-<!ELEMENT exception-type (#PCDATA)>

-

-<!--

-The extension element contains a string describing an

-extension. example: "txt"

-

-Used in: mime-mapping

--->

-<!ELEMENT extension (#PCDATA)>

-

-<!--

-Declares a filter in the web application. The filter is mapped to

-either a servlet or a URL pattern in the filter-mapping element, using

-the filter-name value to reference. Filters can access the

-initialization parameters declared in the deployment descriptor at

-runtime via the FilterConfig interface.

-

-Used in: web-app

--->

-<!ELEMENT filter (icon?, filter-name, display-name?, description?,

-filter-class, init-param*)>

-

-<!--

-The fully qualified classname of the filter.

-

-Used in: filter

--->

-<!ELEMENT filter-class (#PCDATA)>

-

-<!--

-Declaration of the filter mappings in this web application. The

-container uses the filter-mapping declarations to decide which filters

-to apply to a request, and in what order. The container matches the

-request URI to a Servlet in the normal way. To determine which filters

-to apply it matches filter-mapping declarations either on servlet-name,

-or on url-pattern for each filter-mapping element, depending on which

-style is used. The order in which filters are invoked is the order in

-which filter-mapping declarations that match a request URI for a

-servlet appear in the list of filter-mapping elements.The filter-name

-value must be the value of the <filter-name> sub-elements of one of the

-<filter> declarations in the deployment descriptor.

-

-Used in: web-app

--->

-<!ELEMENT filter-mapping (filter-name, (url-pattern | servlet-name))>

-

-<!--

-The logical name of the filter. This name is used to map the filter.

-Each filter name is unique within the web application.

-

-Used in: filter, filter-mapping

--->

-<!ELEMENT filter-name (#PCDATA)>

-

-<!--

-The form-error-page element defines the location in the web app

-where the error page that is displayed when login is not successful

-can be found. The path begins with a leading / and is interpreted

-relative to the root of the WAR.

-

-Used in: form-login-config

--->

-<!ELEMENT form-error-page (#PCDATA)>

-

-<!--

-The form-login-config element specifies the login and error pages

-that should be used in form based login. If form based authentication

-is not used, these elements are ignored.

-

-Used in: login-config

--->

-<!ELEMENT form-login-config (form-login-page, form-error-page)>

-

-<!--

-The form-login-page element defines the location in the web app

-where the page that can be used for login can be found. The path

-begins with a leading / and is interpreted relative to the root of the WAR.

-

-Used in: form-login-config

--->

-<!ELEMENT form-login-page (#PCDATA)>

-

-<!--

-The home element contains the fully-qualified name of the enterprise

-bean's home interface.

-

-Used in: ejb-ref

-

-Example:

-

-<home>com.aardvark.payroll.PayrollHome</home>

--->

-<!ELEMENT home (#PCDATA)>

-

-<!--

-The http-method contains an HTTP method (GET | POST |...).

-

-Used in: web-resource-collection

--->

-<!ELEMENT http-method (#PCDATA)>

-

-<!--

-The icon element contains small-icon and large-icon elements that

-specify the file names for small and a large GIF or JPEG icon images

-used to represent the parent element in a GUI tool.

-

-Used in: filter, servlet, web-app

--->

-<!ELEMENT icon (small-icon?, large-icon?)>

-

-<!--

-The init-param element contains a name/value pair as an

-initialization param of the servlet

-

-Used in: filter, servlet

--->

-<!ELEMENT init-param (param-name, param-value, description?)>

-

-<!--

-The jsp-file element contains the full path to a JSP file within

-the web application beginning with a `/'.

-

-Used in: servlet

--->

-<!ELEMENT jsp-file (#PCDATA)>

-

-<!--

-The large-icon element contains the name of a file

-containing a large (32 x 32) icon image. The file

-name is a relative path within the web application's

-war file.

-

-The image may be either in the JPEG or GIF format.

-The icon can be used by tools.

-

-Used in: icon

-

-Example:

-

-<large-icon>employee-service-icon32x32.jpg</large-icon>

--->

-<!ELEMENT large-icon (#PCDATA)>

-

-<!--

-The listener element indicates the deployment properties for a web

-application listener bean.

-

-Used in: web-app

--->

-<!ELEMENT listener (listener-class)>

-

-<!--

-The listener-class element declares a class in the application must be

-registered as a web application listener bean. The value is the fully qualified classname of the listener class.

-

-

-Used in: listener

--->

-<!ELEMENT listener-class (#PCDATA)>

-

-<!--

-The load-on-startup element indicates that this servlet should be

-loaded (instantiated and have its init() called) on the startup

-of the web application. The optional contents of

-these element must be an integer indicating the order in which

-the servlet should be loaded. If the value is a negative integer,

-or the element is not present, the container is free to load the

-servlet whenever it chooses. If the value is a positive integer

-or 0, the container must load and initialize the servlet as the

-application is deployed. The container must guarantee that

-servlets marked with lower integers are loaded before servlets

-marked with higher integers. The container may choose the order

-of loading of servlets with the same load-on-start-up value.

-

-Used in: servlet

--->

-<!ELEMENT load-on-startup (#PCDATA)>

-

-<!--

-

-The local element contains the fully-qualified name of the

-enterprise bean's local interface.

-

-Used in: ejb-local-ref

-

--->

-<!ELEMENT local (#PCDATA)>

-

-<!--

-

-The local-home element contains the fully-qualified name of the

-enterprise bean's local home interface.

-

-Used in: ejb-local-ref

--->

-<!ELEMENT local-home (#PCDATA)>

-

-<!--

-The location element contains the location of the resource in the web

-application relative to the root of the web application. The value of

-the location must have a leading `/'.

-

-Used in: error-page

--->

-<!ELEMENT location (#PCDATA)>

-

-<!--

-The login-config element is used to configure the authentication

-method that should be used, the realm name that should be used for

-this application, and the attributes that are needed by the form login

-mechanism.

-

-Used in: web-app

--->

-<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>

-

-<!--

-The mime-mapping element defines a mapping between an extension

-and a mime type.

-

-Used in: web-app

--->

-<!ELEMENT mime-mapping (extension, mime-type)>

-

-<!--

-The mime-type element contains a defined mime type. example:

-"text/plain"

-

-Used in: mime-mapping

--->

-<!ELEMENT mime-type (#PCDATA)>

-

-<!--

-The param-name element contains the name of a parameter. Each parameter

-name must be unique in the web application.

-

-

-Used in: context-param, init-param

--->

-<!ELEMENT param-name (#PCDATA)>

-

-<!--

-The param-value element contains the value of a parameter.

-

-Used in: context-param, init-param

--->

-<!ELEMENT param-value (#PCDATA)>

-

-<!--

-The realm name element specifies the realm name to use in HTTP

-Basic authorization.

-

-Used in: login-config

--->

-<!ELEMENT realm-name (#PCDATA)>

-

-<!--

-The remote element contains the fully-qualified name of the enterprise

-bean's remote interface.

-

-Used in: ejb-ref

-

-Example:

-

-<remote>com.wombat.empl.EmployeeService</remote>

--->

-<!ELEMENT remote (#PCDATA)>

-

-<!--

-The res-auth element specifies whether the web application code signs

-on programmatically to the resource manager, or whether the Container

-will sign on to the resource manager on behalf of the web application. In the

-latter case, the Container uses information that is supplied by the

-Deployer.

-

-The value of this element must be one of the two following:

-

-	<res-auth>Application</res-auth>

-	<res-auth>Container</res-auth>

-

-Used in: resource-ref

--->

-<!ELEMENT res-auth (#PCDATA)>

-

-<!--

-The res-ref-name element specifies the name of a resource manager

-connection factory reference.  The name is a JNDI name relative to the

-java:comp/env context.  The name must be unique within a web application.

-

-Used in: resource-ref

--->

-<!ELEMENT res-ref-name (#PCDATA)>

-

-<!--

-The res-sharing-scope element specifies whether connections obtained

-through the given resource manager connection factory reference can be

-shared. The value of this element, if specified, must be one of the

-two following:

-

-	<res-sharing-scope>Shareable</res-sharing-scope>

-	<res-sharing-scope>Unshareable</res-sharing-scope>

-

-The default value is Shareable.

-

-Used in: resource-ref

--->

-<!ELEMENT res-sharing-scope (#PCDATA)>

-

-<!--

-The res-type element specifies the type of the data source. The type

-is specified by the fully qualified Java language class or interface

-expected to be implemented by the data source.

-

-Used in: resource-ref

--->

-<!ELEMENT res-type (#PCDATA)>

-

-<!--

-The resource-env-ref element contains a declaration of a web application's

-reference to an administered object associated with a resource

-in the web application's environment.  It consists of an optional

-description, the resource environment reference name, and an

-indication of the resource environment reference type expected by

-the web application code.

-

-Used in: web-app

-

-Example:

-

-<resource-env-ref>

-    <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>

-    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>

-</resource-env-ref>

--->

-<!ELEMENT resource-env-ref (description?, resource-env-ref-name,

-		resource-env-ref-type)>

-

-<!--

-The resource-env-ref-name element specifies the name of a resource

-environment reference; its value is the environment entry name used in

-the web application code.  The name is a JNDI name relative to the

-java:comp/env context and must be unique within a web application.

-

-Used in: resource-env-ref

--->

-<!ELEMENT resource-env-ref-name (#PCDATA)>

-

-<!--

-The resource-env-ref-type element specifies the type of a resource

-environment reference.  It is the fully qualified name of a Java

-language class or interface.

-

-Used in: resource-env-ref

--->

-<!ELEMENT resource-env-ref-type (#PCDATA)>

-

-<!--

-The resource-ref element contains a declaration of a web application's

-reference to an external resource. It consists of an optional

-description, the resource manager connection factory reference name,

-the indication of the resource manager connection factory type

-expected by the web application code, the type of authentication

-(Application or Container), and an optional specification of the

-shareability of connections obtained from the resource (Shareable or

-Unshareable).

-

-Used in: web-app

-

-Example:

-

-    <resource-ref>

-	<res-ref-name>jdbc/EmployeeAppDB</res-ref-name>

-	<res-type>javax.sql.DataSource</res-type>

-	<res-auth>Container</res-auth>

-	<res-sharing-scope>Shareable</res-sharing-scope>

-    </resource-ref>

--->

-<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth,

-		res-sharing-scope?)>

-

-<!--

-The role-link element is a reference to a defined security role. The

-role-link element must contain the name of one of the security roles

-defined in the security-role elements.

-

-Used in: security-role-ref

--->

-<!ELEMENT role-link (#PCDATA)>

-

-<!--

-The role-name element contains the name of a security role.

-

-The name must conform to the lexical rules for an NMTOKEN.

-

-Used in: auth-constraint, run-as, security-role, security-role-ref

--->

-<!ELEMENT role-name (#PCDATA)>

-

-<!--

-The run-as element specifies the run-as identity to be used for the

-execution of the web application. It contains an optional description, and

-the name of a security role.

-

-Used in: servlet

--->

-<!ELEMENT run-as (description?, role-name)>

-

-<!--

-The security-constraint element is used to associate security

-constraints with one or more web resource collections

-

-Used in: web-app

--->

-<!ELEMENT security-constraint (display-name?, web-resource-collection+,

-auth-constraint?, user-data-constraint?)>

-

-<!--

-The security-role element contains the definition of a security

-role. The definition consists of an optional description of the

-security role, and the security role name.

-

-Used in: web-app

-

-Example:

-

-    <security-role>

-	<description>

-	    This role includes all employees who are authorized

-	    to access the employee service application.

-	</description>

-	<role-name>employee</role-name>

-    </security-role>

--->

-<!ELEMENT security-role (description?, role-name)>

-

-<!--

-The security-role-ref element contains the declaration of a security

-role reference in the web application's code. The declaration consists

-of an optional description, the security role name used in the code,

-and an optional link to a security role. If the security role is not

-specified, the Deployer must choose an appropriate security role.

-

-The value of the role-name element must be the String used as the

-parameter to the EJBContext.isCallerInRole(String roleName) method

-or the HttpServletRequest.isUserInRole(String role) method.

-

-Used in: servlet

-

--->

-<!ELEMENT security-role-ref (description?, role-name, role-link?)>

-

-<!--

-The servlet element contains the declarative data of a

-servlet. If a jsp-file is specified and the load-on-startup element is

-present, then the JSP should be precompiled and loaded.

-

-Used in: web-app

--->

-<!ELEMENT servlet (icon?, servlet-name, display-name?, description?,

-(servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>

-

-<!--

-The servlet-class element contains the fully qualified class name

-of the servlet.

-

-Used in: servlet

--->

-<!ELEMENT servlet-class (#PCDATA)>

-

-<!--

-The servlet-mapping element defines a mapping between a servlet

-and a url pattern

-

-Used in: web-app

--->

-<!ELEMENT servlet-mapping (servlet-name, url-pattern)>

-

-<!--

-The servlet-name element contains the canonical name of the

-servlet. Each servlet name is unique within the web application.

-

-Used in: filter-mapping, servlet, servlet-mapping

--->

-<!ELEMENT servlet-name (#PCDATA)>

-

-<!--

-The session-config element defines the session parameters for

-this web application.

-

-Used in: web-app

--->

-<!ELEMENT session-config (session-timeout?)>

-

-<!--

-The session-timeout element defines the default session timeout

-interval for all sessions created in this web application. The

-specified timeout must be expressed in a whole number of minutes.

-If the timeout is 0 or less, the container ensures the default

-behaviour of sessions is never to time out.

-

-Used in: session-config

--->

-<!ELEMENT session-timeout (#PCDATA)>

-

-<!--

-The small-icon element contains the name of a file

-containing a small (16 x 16) icon image. The file

-name is a relative path within the web application's

-war file.

-

-The image may be either in the JPEG or GIF format.

-The icon can be used by tools.

-

-Used in: icon

-

-Example:

-

-<small-icon>employee-service-icon16x16.jpg</small-icon>

--->

-<!ELEMENT small-icon (#PCDATA)>

-

-<!--

-The taglib element is used to describe a JSP tag library.

-

-Used in: web-app

--->

-<!ELEMENT taglib (taglib-uri, taglib-location)>

-

-<!--

-the taglib-location element contains the location (as a resource

-relative to the root of the web application) where to find the Tag

-Libary Description file for the tag library.

-

-Used in: taglib

--->

-<!ELEMENT taglib-location (#PCDATA)>

-

-<!--

-The taglib-uri element describes a URI, relative to the location

-of the web.xml document, identifying a Tag Library used in the Web

-Application.

-

-Used in: taglib

--->

-<!ELEMENT taglib-uri (#PCDATA)>

-

-<!--

-The transport-guarantee element specifies that the communication

-between client and server should be NONE, INTEGRAL, or

-CONFIDENTIAL. NONE means that the application does not require any

-transport guarantees. A value of INTEGRAL means that the application

-requires that the data sent between the client and server be sent in

-such a way that it can't be changed in transit. CONFIDENTIAL means

-that the application requires that the data be transmitted in a

-fashion that prevents other entities from observing the contents of

-the transmission. In most cases, the presence of the INTEGRAL or

-CONFIDENTIAL flag will indicate that the use of SSL is required.

-

-Used in: user-data-constraint

--->

-<!ELEMENT transport-guarantee (#PCDATA)>

-

-<!--

-The url-pattern element contains the url pattern of the mapping. Must

-follow the rules specified in Section 11.2 of the Servlet API

-Specification.

-

-Used in: filter-mapping, servlet-mapping, web-resource-collection

--->

-<!ELEMENT url-pattern (#PCDATA)>

-

-<!--

-The user-data-constraint element is used to indicate how data

-communicated between the client and container should be protected.

-

-Used in: security-constraint

--->

-<!ELEMENT user-data-constraint (description?, transport-guarantee)>

-

-<!--

-The web-resource-collection element is used to identify a subset

-of the resources and HTTP methods on those resources within a web

-application to which a security constraint applies. If no HTTP methods

-are specified, then the security constraint applies to all HTTP

-methods.

-

-Used in: security-constraint

--->

-<!ELEMENT web-resource-collection (web-resource-name, description?,

-url-pattern*, http-method*)>

-

-<!--

-The web-resource-name contains the name of this web resource

-collection.

-

-Used in: web-resource-collection

--->

-<!ELEMENT web-resource-name (#PCDATA)>

-

-<!--

-The welcome-file element contains file name to use as a default

-welcome file, such as index.html

-

-Used in: welcome-file-list

--->

-<!ELEMENT welcome-file (#PCDATA)>

-

-<!--

-The welcome-file-list contains an ordered list of welcome files

-elements.

-

-Used in: web-app

--->

-<!ELEMENT welcome-file-list (welcome-file+)>

-

-<!--

-The ID mechanism is to allow tools that produce additional deployment

-information (i.e., information beyond the standard deployment

-descriptor information) to store the non-standard information in a

-separate file, and easily refer from these tool-specific files to the

-information in the standard deployment descriptor.

-

-Tools are not allowed to add the non-standard information into the

-standard deployment descriptor.

--->

-

-<!ATTLIST auth-constraint id ID #IMPLIED>

-<!ATTLIST auth-method id ID #IMPLIED>

-<!ATTLIST context-param id ID #IMPLIED>

-<!ATTLIST description id ID #IMPLIED>

-<!ATTLIST display-name id ID #IMPLIED>

-<!ATTLIST distributable id ID #IMPLIED>

-<!ATTLIST ejb-link id ID #IMPLIED>

-<!ATTLIST ejb-local-ref id ID #IMPLIED>

-<!ATTLIST ejb-ref id ID #IMPLIED>

-<!ATTLIST ejb-ref-name id ID #IMPLIED>

-<!ATTLIST ejb-ref-type id ID #IMPLIED>

-<!ATTLIST env-entry id ID #IMPLIED>

-<!ATTLIST env-entry-name id ID #IMPLIED>

-<!ATTLIST env-entry-type id ID #IMPLIED>

-<!ATTLIST env-entry-value id ID #IMPLIED>

-<!ATTLIST error-code id ID #IMPLIED>

-<!ATTLIST error-page id ID #IMPLIED>

-<!ATTLIST exception-type id ID #IMPLIED>

-<!ATTLIST extension id ID #IMPLIED>

-<!ATTLIST filter id ID #IMPLIED>

-<!ATTLIST filter-class id ID #IMPLIED>

-<!ATTLIST filter-mapping id ID #IMPLIED>

-<!ATTLIST filter-name id ID #IMPLIED>

-<!ATTLIST form-error-page id ID #IMPLIED>

-<!ATTLIST form-login-config id ID #IMPLIED>

-<!ATTLIST form-login-page id ID #IMPLIED>

-<!ATTLIST home id ID #IMPLIED>

-<!ATTLIST http-method id ID #IMPLIED>

-<!ATTLIST icon id ID #IMPLIED>

-<!ATTLIST init-param id ID #IMPLIED>

-<!ATTLIST jsp-file id ID #IMPLIED>

-<!ATTLIST large-icon id ID #IMPLIED>

-<!ATTLIST listener id ID #IMPLIED>

-<!ATTLIST listener-class id ID #IMPLIED>

-<!ATTLIST load-on-startup id ID #IMPLIED>

-<!ATTLIST local id ID #IMPLIED>

-<!ATTLIST local-home id ID #IMPLIED>

-<!ATTLIST location id ID #IMPLIED>

-<!ATTLIST login-config id ID #IMPLIED>

-<!ATTLIST mime-mapping id ID #IMPLIED>

-<!ATTLIST mime-type id ID #IMPLIED>

-<!ATTLIST param-name id ID #IMPLIED>

-<!ATTLIST param-value id ID #IMPLIED>

-<!ATTLIST realm-name id ID #IMPLIED>

-<!ATTLIST remote id ID #IMPLIED>

-<!ATTLIST res-auth id ID #IMPLIED>

-<!ATTLIST res-ref-name id ID #IMPLIED>

-<!ATTLIST res-sharing-scope id ID #IMPLIED>

-<!ATTLIST res-type id ID #IMPLIED>

-<!ATTLIST resource-env-ref id ID #IMPLIED>

-<!ATTLIST resource-env-ref-name id ID #IMPLIED>

-<!ATTLIST resource-env-ref-type id ID #IMPLIED>

-<!ATTLIST resource-ref id ID #IMPLIED>

-<!ATTLIST role-link id ID #IMPLIED>

-<!ATTLIST role-name id ID #IMPLIED>

-<!ATTLIST run-as id ID #IMPLIED>

-<!ATTLIST security-constraint id ID #IMPLIED>

-<!ATTLIST security-role id ID #IMPLIED>

-<!ATTLIST security-role-ref id ID #IMPLIED>

-<!ATTLIST servlet id ID #IMPLIED>

-<!ATTLIST servlet-class id ID #IMPLIED>

-<!ATTLIST servlet-mapping id ID #IMPLIED>

-<!ATTLIST servlet-name id ID #IMPLIED>

-<!ATTLIST session-config id ID #IMPLIED>

-<!ATTLIST session-timeout id ID #IMPLIED>

-<!ATTLIST small-icon id ID #IMPLIED>

-<!ATTLIST taglib id ID #IMPLIED>

-<!ATTLIST taglib-location id ID #IMPLIED>

-<!ATTLIST taglib-uri id ID #IMPLIED>

-<!ATTLIST transport-guarantee id ID #IMPLIED>

-<!ATTLIST url-pattern id ID #IMPLIED>

-<!ATTLIST user-data-constraint id ID #IMPLIED>

-<!ATTLIST web-app id ID #IMPLIED>

-<!ATTLIST web-resource-collection id ID #IMPLIED>

-<!ATTLIST web-resource-name id ID #IMPLIED>

-<!ATTLIST welcome-file id ID #IMPLIED>

-<!ATTLIST welcome-file-list id ID #IMPLIED>

diff --git a/trunk/src/webapp/WEB-INF/xconf/lucene2.xconf b/trunk/src/webapp/WEB-INF/xconf/lucene2.xconf
deleted file mode 100644
index 358ceca..0000000
--- a/trunk/src/webapp/WEB-INF/xconf/lucene2.xconf
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<components>
-  <!-- Include dependencies -->
-  <include src="context://WEB-INF/xconf/cocoon-xsp.xconf"/>
-
-  <!-- Include roles -->
-  <include src="resource://org/apache/cocoon/components/search/lucene2.roles"/>
-
-  <!-- Search:
-    These are the components that handle the search. 
-    
-   -->
-	<analyzer_manager logger="core.search.analyzer_manager">
-		<analyzer id="standard" class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
-		<analyzer id="stopword_en" class="org.apache.cocoon.components.search.analyzer.ConfigurableStopwordAnalyzer" configfile="context://WEB-INF/analyzer/stopword/English_en.xml" checkupdate="true"/>
-		<analyzer id="stopword_fr" class="org.apache.cocoon.components.search.analyzer.ConfigurableStopwordAnalyzer" configfile="context://WEB-INF/analyzer/stopword/French_fr.xml" checkupdate="true"/>
-		<analyzer id="analyzer_research" class="org.apache.cocoon.components.search.analyzer.ConfigurablePerFieldAnalyzer" configfile="context://WEB-INF/analyzer/perfieldconf.xml" checkupdate="false"/>
-	</analyzer_manager>
-	
-	<index_manager logger="core.search.index_manager">
-		
-		<indexer role="org.apache.cocoon.components.search.components.Indexer/default" />
-		
-		<!-- ALL indexes (BE CAREFUL: 	Change the directory attribute) 		-->
-		<indexes>
-		
-			<!--
-			id attribute : the index id 
-			defaultAnalyzer: the id of the default analyzer (registered in AnalyzerManager)
-			directory: the location of the physical index 
-			-->
-			<index id="research" analyzer="analyzer_research" directory="d:\\index">
-				<structure>
-					<!--
-					type text:  tokenized , indexed   (with the additional attribute "storeText"  : stored/ unstored)
-					type keyword:  no tokenized , indexed, stored
-					type date = type keyword  but for specific date type
-					-->
-					<field id="title" type="text" storetext="true"/>
-					<field id="author" type="text"/>
-					<field id="description_fr" type="text" storetext="true"/>
-					<field id="description_en" type="text" storetext="true"/>
-					<field id="date" type="date" dateformat="yyyy-MM-dd"/> 
-					<field id="subject" type="keyword"/>
-					<field id="level" type="keyword"/> 
-					<field id="type" type="keyword" />
-					<field id="format" type="keyword" />
-					<field id="topic" type="keyword" />
-				</structure>
-			</index>
-			
-			<!-- STANDARD HTML INDEX  -->
-			<index id="HTML" analyzer="stopword_en" directory="d:\\index2" >
-				<structure>
-					<field id="url" type="keyword" />
-					<field id="title" type="text" storetext="true"/>
-					<field id="body" type="text" storetext="false"/>
-				</structure>
-			</index>
-		</indexes>
-	</index_manager>
-
-<!-- default indexer component -->	
-	<default_indexer logger="core.search.default_indexer">
-		<!-- number of lucene documents in the buffer -->
-		<buffersize>200</buffersize>
-	</default_indexer>
-	
-<!-- parallel indexer component -->		
-	<parallel_indexer logger="core.search.parallel_indexer">
-		<!-- number of thread (normaly = number of CPUs) -->
-		<numthread>2</numthread>
-	</parallel_indexer>
-	
-	
-</components>
diff --git a/trunk/src/webapp/error.xmap b/trunk/src/webapp/error.xmap
deleted file mode 100644
index 4d08128..0000000
--- a/trunk/src/webapp/error.xmap
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:resources>
-    <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    <map:pipeline>
-      <map:match pattern="**">
-        <map:generate type="notifying"/>
-        <map:transform src="fallback://lenya/xslt/exception/generic.xsl"/>
-        <map:call resource="style-cms-page" />
-        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-        <map:serialize type="xhtml" status-code="500" />
-      </map:match>
-    </map:pipeline>
-  </map:pipelines>
-  
-</map:sitemap>
diff --git a/trunk/src/webapp/global-sitemap.xmap b/trunk/src/webapp/global-sitemap.xmap
deleted file mode 100644
index 771b188..0000000
--- a/trunk/src/webapp/global-sitemap.xmap
+++ /dev/null
@@ -1,426 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-    
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <map:resources>
-
-    <map:resource name="style-cms-page">
-      <map:transform type="i18n">      
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-      <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-    </map:resource>  
-
-    <map:resource name="i18n">
-      <map:transform type="i18n">
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>
-    </map:resource>
-
-    <!-- do proxy transformation on css files for url('') links -->
-    <map:resource name="proxy-css">
-      <map:act type="resource-exists"
-        src="{url}.xml">
-        <map:generate src="{../url}.xml"/>
-        <map:transform src="fallback://lenya/resources/css/css.xsl">
-          <map:parameter name="root" value="/{page-envelope:publication-id}/{page-envelope:area}"/>
-        </map:transform>
-        <map:call resource="prepare-proxy-css"/>
-      </map:act>
-      <map:generate type="text" src="{url}.css"/>
-      <map:call resource="prepare-proxy-css"/>
-    </map:resource>
-
-    <!-- 
-      chaperon magic: parse css files, convert url('') links into xml snippets, feed them
-      to the standard proxy transformer, then convert the intermediate xml back to valid css.
-    -->
-    <map:resource name="prepare-proxy-css">
-      <map:transform type="pattern"
-        src="fallback://lenya/chaperon/grammars/link.xlex"/>
-      <map:transform
-        src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform
-        src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
-      <map:serialize type="text" mime-type="text/css"/>
-    </map:resource>
-
-  </map:resources>
-
-
-
-  <map:pipelines>
-  
-    <map:component-configurations>
-      <global-variables>
-        <!-- 
-          pipeline expiration time (governs the setting of "expires" headers for browser-side
-          caching), see http://cocoon.apache.org/2.1/userdocs/concepts/caching.html
-        -->
-        <pipeline-expiration>now</pipeline-expiration>
-      </global-variables>
-    </map:component-configurations>
-  
-    <!-- create a list of publications for the global welcome page: -->  
-    <map:pipeline>
-      <map:match pattern="aggregate-publications">
-        <map:generate type="directory" src="lenya/pubs"/>
-        <map:transform src="lenya/xslt/util/aggregate-publications.xsl"/>
-        <map:transform type="xinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-    </map:pipeline>
-
-    <!-- FIXME: this should go into a cforms support module -->
-
-    <map:pipeline>
-      <map:match pattern="cforms/ajax/**">
-        <map:read src="resource://org/apache/cocoon/ajax/resources/{1}"/>
-      </map:match>
-    </map:pipeline>   
-    <map:pipeline>
-      <map:match pattern="cforms/dojo/**">
-        <map:read src="resource://org/apache/cocoon/dojo/resources/{1}"/>
-      </map:match>
-    </map:pipeline> 
-    <map:pipeline>
-      <map:match pattern="cforms/forms/**">
-        <map:read src="resource://org/apache/cocoon/forms/resources/{1}"/>
-      </map:match>
-    </map:pipeline>
-
-
-    <map:pipeline>
-      <!-- serve "lenya/" resources (GUI and utilities) -->
-      <map:match pattern="lenya/**">
-        <map:mount uri-prefix="lenya" src="lenya/lenya.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-      </map:match>
-    </map:pipeline>
-
-    <!-- Menu generation: -->
-    <map:pipeline internal-only="true">
-
-      <!-- Generate a meta-stylesheet that adds the Lenya GUI menu to pages -->
-      <!-- lenya-page/{publication-id}/{area}/... -->
-      <map:match pattern="lenya-page/*/*/**">
-        <!-- no menu for revisions -->
-        <map:match type="request-parameter" pattern="lenya.revision">
-          <map:generate src="lenya/xslt/util/identity.xsl"/>
-          <map:serialize type="xml"/>
-        </map:match>
-        <!-- for everything else: --> 
-        <map:aggregate element="menu" ns="http://apache.org/cocoon/lenya/menubar/1.0">
-          <map:part src="cocoon:/menu-xml/{1}/{2}/{3}" strip-root="true"/>
-          <map:part src="cocoon:/menu-xml/modules/{1}/{2}.xml" strip-root="true"/>
-        </map:aggregate>
-        <map:transform src="lenya/xslt/menu/merge-menus.xsl"/>
-        <map:transform src="lenya/xslt/menu/filter-menu.xsl">
-          <map:parameter name="tabGroup" value="{usecase:tabGroup:{request-param:lenya.usecase}}"/>
-        </map:transform>
-        <!-- Disable menu items according to usecase policies -->
-        <map:transform type="usecasemenu"/>
-        <map:transform src="fallback://lenya/xslt/menu/menubar2xhtml.xsl">
-          <map:parameter name="publicationid" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
-          <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>
-          <map:parameter name="userid" value="{access-control:user-id}"/>
-          <map:parameter name="servertime" value="{date-i18n:currentDate}"/>
-          <map:parameter name="workflowstate" value="{workflow:state}"/>
-          <map:parameter name="islive" value="{workflow:variable.is_live}"/>
-          <map:parameter name="usecase" value="{request-param:lenya.usecase}"/>
-          <map:parameter name="tabGroup" value="{usecase:tabGroup:{request-param:lenya.usecase}}"/>
-          <map:parameter name="newMessages" value="{inbox:newMessageCount}"/>
-        </map:transform>
-        <map:call resource="i18n"/>
-        <!-- Generate the meta-stylesheet -->
-        <map:transform src="fallback://lenya/xslt/menu/menu2xslt.xsl">
-          <map:parameter name="publicationid" value="{1}"/>
-          <map:parameter name="area" value="{2}"/>
-          <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-
-
-      <!-- collect the menu items for all modules used in the publication -->
-      <!-- menu-xml/modules/{pub-id}/{area}.xml -->
-      <map:match pattern="menu-xml/modules/*/*.xml">
-        <map:generate src="aggregate-fallback://config/publication.xml"/>
-        <map:transform src="lenya/xslt/modules/modules2xinclude.xsl">
-          <map:parameter name="area" value="{2}"/>
-        </map:transform>
-        <map:transform type="xinclude"/>
-        <map:serialize type="xml"/>
-      </map:match>
-  
-      <!-- query menu items from modules (used by the xinclude above) -->
-      <!-- menu-xml/module/{area}/{module-id}.xml -->
-      <map:match pattern="menu-xml/module/*/*.xml">
-        <map:select type="resource-exists">
-          <map:when test="fallback://lenya/modules/{2}/menus.xmap">
-            <map:mount uri-prefix="menu-xml/module/{1}/" src="fallback://lenya/modules/{2}/menus.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate type="serverpages" src="lenya/content/menus/live.xsp"/>
-            <map:serialize type="xml"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-
-      <!-- global admin menu items -->
-      <!-- FIXME: this is actually independent from the publication-id! -->
-      <!-- menu-xml/{publication-id}/admin/... -->
-      <map:match pattern="menu-xml/*/admin/**" internal-only="true">
-        <map:generate type="serverpages" src="lenya/content/menus/admin.xsp"/>
-        <map:serialize type="xml"/>
-      </map:match>
-
-      <!-- include publication-specific menus -->
-      <!-- menu-xml/{publication-id}/... -->
-      <map:match pattern="menu-xml/*/**" internal-only="true">
-        <map:mount uri-prefix="menu-xml/{1}/" src="{fallback:menus.xmap}" check-reload="true" reload-method="synchron" pass-through="true"/>
-      </map:match>
-
-      <!-- FIXME: this is currently unused -->
-      <!-- Access Control Policies -->
-<!--
-      <map:match pattern="*/policies/**">
-        <map:mount uri-prefix="{1}/policies" src="lenya/pubs/{1}/policies-sitemap.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-      </map:match>
--->
-    </map:pipeline>
-
-
-    <!-- Module requests -->
-    
-    <!-- an extra handler for internal module requests to avoid the resource-exists check 
-         in the external requests matcher
-         FIXME: is the overhead reduction worth the extra complication?
-         FIXME: doesn't this mean that internal requests aren't served statically (see below) and
-         resources might not even be available to internal requests if the module sitemap doesn't
-         handle them?
-    -->
-    <map:pipeline internal-only="true">
-      <map:match pattern="modules/*/**">
-        <map:mount uri-prefix="modules/{1}/" src="fallback://lenya/modules/{1}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-      <map:match pattern="*/modules/*/**">
-        <map:mount uri-prefix="{1}/modules/{2}/" src="fallback://lenya/modules/{2}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-    </map:pipeline>
-
-
-    <map:pipeline>
-
-      <map:match pattern="modules/*/**">
-        <map:select type="resource-exists">
-          <!-- resource exists - serve statically -->
-          <map:when test="fallback://lenya/modules/{1}/resources/{2}">
-            <map:mount uri-prefix="modules/" src="fallback://lenya/module-resources.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-          </map:when>
-        </map:select>
-        <!-- resource doesn't exist or not handled by lenya/module-resources.xmap 
-             - delegate to module -->
-        <map:mount uri-prefix="modules/{1}/" src="fallback://lenya/modules/{1}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-
-      <!-- Publication specific Module requests -->
-      <!-- NOTE: the use of publication-specific modules is discouraged, since all modules are actually in one global scope.. -->
-      <!-- {publication-id}/modules/{module-id}/... -->
-      <map:match pattern="*/modules/*/**">
-        <map:select type="resource-exists">
-          <!-- resource exists - serve statically -->
-          <map:when test="fallback://lenya/modules/{2}/resources/{3}">
-            <map:mount uri-prefix="{1}/modules/" src="fallback://lenya/module-resources.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
-          </map:when>
-        </map:select>
-        <!-- resource doesn't exist or not handled by lenya/module-resources.xmap 
-             - delegate to module -->
-        <map:mount uri-prefix="{1}/modules/{2}/" src="fallback://lenya/modules/{2}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-
-    </map:pipeline>
-
-    <!-- Internal usecases -->
-    <!-- 
-       We match internal requests to the publication sitemap early to avoid the
-       time-consuming resource-exists operations in the subsequent pipelines
-       before the final publication matcher is reached.
-    -->
-    <map:pipeline internal-only="true">
-      <map:match pattern="*/**">
-        <map:mount uri-prefix="{1}" src="lenya/pubs/{1}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-    </map:pipeline>
-
-    <map:pipeline>
-
-      <!-- enter a module via request parameter -->
-      <map:match type="request-parameter" pattern="lenya.module">
-        <map:mount uri-prefix="" src="fallback://lenya/modules/{1}/sitemap.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-
-      <!-- delegate usecases to the usecase sitemap -->
-      <map:match type="usecase" pattern="*">
-        <map:mount uri-prefix="" src="lenya/usecase.xmap" check-reload="true" reload-method="synchron"/>
-      </map:match>
-
-    </map:pipeline>
-
-    <map:pipeline>
-
-      <!-- the Lenya welcome page with a list of available publications -->
-      <map:match pattern="index.html">
-        <map:aggregate element="aggregation-wrapper" label="aggregate">
-          <map:part src="cocoon:/aggregate-publications"/>
-          <map:part src="lenya/content/welcome.xml"/>
-          <map:part src="readme.xml"/>
-        </map:aggregate>
-        <map:transform src="lenya/xslt/util/welcome.xsl"/>
-        <map:call resource="style-cms-page"/>
-        <map:serialize />
-      </map:match>
-
-      <!-- any root-level request is directed to the welcome page -->
-      <map:match pattern="*">
-        <map:redirect-to uri="{proxy:/index.html}"/>
-      </map:match>
-
-      <!-- FIXME: this is apparently WebDAV-related. Does it have to be here, and what does it do? -->
-      <map:match pattern="*">
-        <map:select type="request-method">
-          <map:when test="PROPFIND">
-            <map:generate type="file" src="context://lenya/content/util/empty.xml"/>
-            <map:transform src="fallback://lenya/modules/webdav/xslt/init.xsl">
-              <map:parameter name="pubid" value="{page-envelope:publication-id}"/>
-              <map:parameter name="context" value="{request:contextPath}"/>
-            </map:transform>
-            <map:serialize type="xml" status-code="207"/>
-          </map:when>
-          <map:when test="OPTIONS">
-            <map:mount uri-prefix="" src="{fallback://lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
-          </map:when>
-        </map:select>
-      </map:match> 
-      <map:match pattern="{page-envelope:publication-id}/">
-        <map:select type="request-method">
-          <map:when test="PROPFIND">
-           <map:generate type="file" src="context://lenya/content/util/empty.xml"/>
-            <map:transform src="fallback://lenya/modules/webdav/xslt/init.xsl">
-              <map:parameter name="pubid" value="{page-envelope:publication-id}"/>
-              <map:parameter name="context" value="{request:contextPath}"/>            
-            </map:transform>
-            <map:serialize type="xml" status-code="207"/>
-          </map:when>
-          <map:when test="OPTIONS">
-            <map:mount uri-prefix="" src="{fallback://lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
-          </map:when>
-        </map:select>
-      </map:match>
-
-      <!-- redirect publication root requests to the publication's welcome page -->
-      <map:match pattern="*/">
-        <map:redirect-to uri="{proxy:/introduction.html}"/>
-      </map:match>
-      <map:match pattern="*/index.html">
-        <map:redirect-to uri="{proxy:/introduction.html}"/>
-      </map:match>
-
-      <!-- generate welcome pages for each publication with an aggregation of relevant READMEs -->
-      <map:match pattern="*/introduction.html">
-        <map:aggregate element="aggregation-wrapper">
-          <map:part src="aggregate-fallback://readme.xml"/>
-          <map:part src="lenya/pubs/{1}/config/publication.xml"/>
-        </map:aggregate>
-        <map:transform src="lenya/xslt/util/introduction.xsl"/>
-        <map:call resource="style-cms-page"/>
-        <map:serialize />
-      </map:match>
-     
-    </map:pipeline>
-  
-    <!-- an extra handler for internal publication requests to avoid the resource-exists check 
-         in the external requests matcher -->
-    <!-- FIXME: see comments for internal module request matcher above. -->
-    <map:pipeline internal-only="true">
-      <map:match pattern="*/**">
-        <map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}" check-reload="true" reload-method="synchron"/>
-      </map:match>
-    </map:pipeline>
-
-    <map:pipeline>
-
-      <!-- Resources -->
-      <!-- FIXME: doesn't this create a hefty overhead for all publication documents? -->
-      <!-- {publication-id}/{area}/{file} -->
-      <map:match pattern="*/*/**">
-        <map:act type="resource-exists-enhanced">
-          <map:parameter name="url" value="fallback://resources/{2}/{3}"/>
-          <map:parameter name="type" value="file"/>
-          <map:mount uri-prefix="" src="{fallback:lenya/resources.xmap}" check-reload="true" reload-method="synchron"/>
-        </map:act>
-        <!-- FIXME: please document the "shared" resources concept. Or maybe we can ditch it? -->
-        <map:act type="resource-exists-enhanced">
-          <map:parameter name="url" value="fallback://resources/shared/{3}"/>
-          <map:parameter name="type" value="file"/>
-          <map:mount uri-prefix="" src="{fallback:lenya/resources-shared.xmap}" check-reload="true" reload-method="synchron"/>
-        </map:act>
-        <!-- Ancestors resources, css, js, etc... -->
-        <!-- {publication-id}/{area}/{filename}.inherited.{extention} -->
-        <!-- FIXME: what is this mechanism used for? please document or provide a pointer to existing docs -->
-        <map:match pattern="*/*/**.inherited.*">
-          <map:act type="resource-exists-enhanced">
-            <map:parameter name="url" value="template-fallback://resources/shared/{3}.{4}"/>
-            <map:parameter name="type" value="file"/>
-            <map:mount uri-prefix="" src="{fallback:lenya/resources-shared.xmap}" check-reload="true" reload-method="synchron"/>
-          </map:act>
-        </map:match>
-      </map:match>
-
-     <!-- delegate publication requests to the publication sitemap -->
-     <map:match pattern="*/**">
-       <map:select type="parameter">
-         <map:parameter name="parameter-selector-test" value="{page-envelope:publication-id}"/>
-         <map:when test="">
-           <map:generate type="jx" src="lenya/content/exception/publication-does-not-exist.jx">
-             <map:parameter name="publicationId" value="{1}"/>
-           </map:generate>
-           <map:transform type="i18n">
-             <map:parameter name="locale" value="{request:locale}"></map:parameter>
-           </map:transform>
-           <map:call resource="style-cms-page"/>
-           <map:serialize status-code="404" />
-         </map:when>
-         <map:otherwise>
-           <map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}" check-reload="true" reload-method="synchron"/>
-         </map:otherwise>
-       </map:select>
-     </map:match>
-   </map:pipeline>
-
-</map:pipelines>
-
-</map:sitemap>
diff --git a/trunk/src/webapp/jcr-repository/jaas.config b/trunk/src/webapp/jcr-repository/jaas.config
deleted file mode 100644
index 8773b20..0000000
--- a/trunk/src/webapp/jcr-repository/jaas.config
+++ /dev/null
@@ -1,3 +0,0 @@
-Jackrabbit {
-   org.apache.jackrabbit.core.security.SimpleLoginModule required anonymousId="michi";
-};
diff --git a/trunk/src/webapp/jcr-repository/repository.xml b/trunk/src/webapp/jcr-repository/repository.xml
deleted file mode 100644
index 680acc2..0000000
--- a/trunk/src/webapp/jcr-repository/repository.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<Repository>
-    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-        <param name="path" value="${rep.home}/repository"/>
-    </FileSystem>
-    <Security appName="Jackrabbit">
-        <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/>
-    </Security>
-    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" />
-    <Workspace name="${wsp.name}">
-        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-            <param name="path" value="${wsp.home}"/>
-        </FileSystem>
-        <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
-        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
-            <param name="path" value="${wsp.home}/index"/>
-        </SearchIndex>
-    </Workspace>
-    <Versioning rootPath="${rep.home}/versions">
-        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-            <param name="path" value="${rep.home}/versions"/>
-        </FileSystem>
-        <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
-    </Versioning>
-</Repository>   
diff --git a/trunk/src/webapp/jcr-repository/repository/workspaces/default/workspace.xml b/trunk/src/webapp/jcr-repository/repository/workspaces/default/workspace.xml
deleted file mode 100644
index 58bf9f2..0000000
--- a/trunk/src/webapp/jcr-repository/repository/workspaces/default/workspace.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace name="default">
-        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-            <param name="path" value="${wsp.home}"/>
-        </FileSystem>
-        <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager"/>
-        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
-            <param name="path" value="${wsp.home}/index"/>
-        </SearchIndex>
-    </Workspace>
diff --git a/trunk/src/webapp/lenya.properties.xml b/trunk/src/webapp/lenya.properties.xml
deleted file mode 100644
index 8836bcd..0000000
--- a/trunk/src/webapp/lenya.properties.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<properties>
-  <property name="pubs.default.author" value="the Lenya community"/>
-</properties>
diff --git a/trunk/src/webapp/lenya/chaperon/grammars/link.xlex b/trunk/src/webapp/lenya/chaperon/grammars/link.xlex
deleted file mode 100644
index 890d778..0000000
--- a/trunk/src/webapp/lenya/chaperon/grammars/link.xlex
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
- <!-- (([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? -->
- <lexeme symbol="link">
-  <concat>
-   <concat minOccurs="0" maxOccurs="1">
-     <cstring content="\"/>
-   </concat>
-   <group>
-   <concat>
-    <cclass maxOccurs="*">
-     <cinterval min="A" max="Z"/>
-     <cinterval min="a" max="z"/>
-    </cclass>
-    <cstring content=":"/>
-    <cstring content="/"/>
-   </concat>
- 
-   <concat minOccurs="0">
-    <cstring content="/"/>
-    <cclass minOccurs="0" maxOccurs="*">
-     <cinterval min="A" max="Z"/>
-     <cinterval min="a" max="z"/>
-     <cinterval min="0" max="9"/>
-     <cset content="._-:"/>
-    </cclass>
-   </concat>
- 
-   <cclass minOccurs="0" maxOccurs="*">
-    <cinterval min="A" max="Z"/>
-    <cinterval min="a" max="z"/>
-    <cinterval min="0" max="9"/>
-    <cset content="._-:/"/>
-   </cclass>
-
-   <concat minOccurs="0">
-    <cstring content="?"/>
-    <cclass minOccurs="0" maxOccurs="*">
-     <cinterval min="A" max="Z"/>
-     <cinterval min="a" max="z"/>
-     <cinterval min="0" max="9"/>
-     <cset content="._-:/?"/>
-    </cclass>
-   </concat>
-
-   <concat minOccurs="0">
-    <cstring content="#"/>
-    <cclass minOccurs="0" maxOccurs="*">
-     <cinterval min="A" max="Z"/>
-     <cinterval min="a" max="z"/>
-     <cinterval min="0" max="9"/>
-     <cset content="._-:/?#"/>
-    </cclass>
-   </concat>
-   </group>
-  </concat>
- </lexeme>
-
- <lexeme symbol="cssurl">
-  <concat>
-      <group>
-       <concat>
-        <cstring content="u"/>
-        <cstring content="r"/>
-        <cstring content="l"/>
-       </concat>
-     
-       <concat minOccurs="0" maxOccurs="*">
-        <cstring content=" "/>
-       </concat>
-    
-       <concat>
-        <cstring content="("/>
-       </concat>
-       
-       <concat minOccurs="0" maxOccurs="*">
-        <cstring content=" "/>
-       </concat>
-       
-       <concat minOccurs="0" maxOccurs="1">
-        <cstring content="'"/>
-       </concat>
-      </group>
-      
-      <group>
-       <concat minOccurs="0">
-        <cstring content="/"/>
-        <cclass minOccurs="0" maxOccurs="*">
-         <cinterval min="A" max="Z"/>
-         <cinterval min="a" max="z"/>
-         <cinterval min="0" max="9"/>
-         <cset content="._-:"/>
-        </cclass>
-       </concat>
-     
-       <cclass minOccurs="0" maxOccurs="*">
-        <cinterval min="A" max="Z"/>
-        <cinterval min="a" max="z"/>
-        <cinterval min="0" max="9"/>
-        <cset content="._-:/"/>
-       </cclass>
-    
-       <concat minOccurs="0">
-        <cstring content="?"/>
-        <cclass minOccurs="0" maxOccurs="*">
-         <cinterval min="A" max="Z"/>
-         <cinterval min="a" max="z"/>
-         <cinterval min="0" max="9"/>
-         <cset content="._-:/?"/>
-        </cclass>
-       </concat>
-    
-       <concat minOccurs="0">
-        <cstring content="#"/>
-        <cclass minOccurs="0" maxOccurs="*">
-         <cinterval min="A" max="Z"/>
-         <cinterval min="a" max="z"/>
-         <cinterval min="0" max="9"/>
-         <cset content="._-:/?#"/>
-        </cclass>
-       </concat>
-      </group>
-      
-      <group>
-       <concat minOccurs="0" maxOccurs="1">
-        <cstring content="'"/>
-       </concat>   
-    
-       <concat minOccurs="0" maxOccurs="*">
-        <cstring content=" "/>
-       </concat>
-    
-       <concat>
-        <cstring content=")"/>
-       </concat>   
-      </group>
-      
-  </concat>
- </lexeme>
- 
- <lexeme symbol="email">
-  <concat>
-   <concat>
-    <concat minOccurs="0" maxOccurs="1">
-     <cstring content="\"/>
-    </concat>
-    <group>
-     <cclass maxOccurs="*">
-      <cinterval min="A" max="Z"/>
-      <cinterval min="a" max="z"/>
-      <cinterval min="0" max="9"/>
-      <cset content="._-:"/>
-     </cclass>
-    </group>
-    <cstring content="@"/>
-    <group>
-     <cclass maxOccurs="*">
-      <cinterval min="A" max="Z"/>
-      <cinterval min="a" max="z"/>
-      <cinterval min="0" max="9"/>
-      <cset content="._-:"/>
-     </cclass>
-    </group>
-   </concat>
-  </concat>
- </lexeme>
-</lexicon>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/chaperon/stylesheets/a-to-txt.xsl b/trunk/src/webapp/lenya/chaperon/stylesheets/a-to-txt.xsl
deleted file mode 100644
index 8f0ca11..0000000
--- a/trunk/src/webapp/lenya/chaperon/stylesheets/a-to-txt.xsl
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0" 
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  
-  <xsl:template match="xhtml:a">
-    <xsl:value-of select="@href"/>
-  </xsl:template>
-  
-  <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/chaperon/stylesheets/pattern-to-link.xsl b/trunk/src/webapp/lenya/chaperon/stylesheets/pattern-to-link.xsl
deleted file mode 100644
index d78e1dd..0000000
--- a/trunk/src/webapp/lenya/chaperon/stylesheets/pattern-to-link.xsl
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0" 
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:lex="http://chaperon.sourceforge.net/schema/lexemes/2.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml">
-  <xsl:template match="lex:lexeme[@symbol='link']">
-    <xsl:choose>
-<!-- it is possible to disable link writing by prefixing by '\' -->
-      <xsl:when test="not( starts-with( @text, '\') )"><xhtml:a href="{@text}">
-        <xsl:value-of select="@text"/></xhtml:a>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="lex:group[2]"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  <xsl:template match="lex:lexeme[@symbol='email']">
-    <xsl:choose>
-<!-- it is possible to disable link writing by prefixing by '\' -->
-      <xsl:when test="not( starts-with( @text, '\') )"><xhtml:a href="mailto:{@text}">
-        <xsl:value-of select="lex:group[2]"/> at <xsl:value-of select="lex:group[3]"/></xhtml:a>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="lex:group[2]"/>@<xsl:value-of select="lex:group[3]"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  <xsl:template match="lex:lexeme[@symbol='cssurl']"><xsl:value-of select="lex:group[2]"/><xhtml:a href="{lex:group[3]}"/><xsl:value-of select="lex:group[4]"/>
-  </xsl:template>
-  <xsl:template match="@*|*|text()|processing-instruction()" priority="-1">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
-    </xsl:copy>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-i18n.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-i18n.xconf
deleted file mode 100644
index b2e101b..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-i18n.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'date-i18n']">

-    <component-instance name="date-i18n" logger="core.modules.input" class="org.apache.cocoon.components.modules.input.DateInputModule">

-      <format>yyyy-MM-dd HH:mm:ss Z</format>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-iso8601-rfc822.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-iso8601-rfc822.xconf
deleted file mode 100644
index 9ec8184..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/date-iso8601-rfc822.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'date-iso8601-rfc822']">

-    <component-instance name="date-iso8601-rfc822" logger="core.modules.input" class="org.apache.lenya.cms.cocoon.components.modules.input.DateConverterModule">

-      <src-pattern>yyyy-MM-dd HH:mm:ss Z</src-pattern>

-      <pattern>EEE, dd MMM yyyy HH:mm:ss Z</pattern>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/defaults.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/defaults.xconf
deleted file mode 100644
index d732723..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/defaults.xconf
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'defaults']">

-    <component-instance name="defaults" class="org.apache.cocoon.components.modules.input.DefaultsModule">

-      <values>

-        <skin>lenya-site</skin>

-      </values>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/doc-info.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/doc-info.xconf
deleted file mode 100644
index 31ac58a..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/doc-info.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'doc-info']">

-    <component-instance logger="sitemap.modules.input.doc-info" name="doc-info"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.DocumentInfoModule"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/document-url.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/document-url.xconf
deleted file mode 100644
index 0f148bb..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/document-url.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'document-url']">

-    <component-instance logger="core.modules.input.document-url" name="document-url"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.DocumentURLModule"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/dublincore.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/dublincore.xconf
deleted file mode 100644
index 75b3593..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/dublincore.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'dublincore']">

-    <component-instance logger="sitemap.modules.input.dublincore" name="dublincore"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.MetaDataModule"

-      namespace="http://purl.org/dc/elements/1.1/"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/fallback.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/fallback.xconf
deleted file mode 100644
index 5ffe699..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/fallback.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'fallback']">

-    <component-instance logger="core.modules.input.fallback" name="fallback"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.PublicationTemplateFallbackModule">

-      <directory src="context:///lenya"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/forrest.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/forrest.xconf
deleted file mode 100644
index 2bfa81e..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/forrest.xconf
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'forrest']">

-    <component-instance logger="core.modules.input" name="forrest"

-      class="org.apache.cocoon.components.modules.input.ChainMetaModule">

-      <input-module name="request-param"/>

-      <input-module name="request-attr"/>

-      <input-module name="session-attr"/>

-      <input-module name="defaults"/>

-      <input-module name="page-envelope"/>

-      <input-module name="access-control"/>

-    </component-instance>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/page-envelope.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/page-envelope.xconf
deleted file mode 100644
index e9a2ed5..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/page-envelope.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'page-envelope']">

-    <component-instance logger="sitemap.modules.input.page-envelope" name="page-envelope"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.PageEnvelopeModule"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/realpath.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/realpath.xconf
deleted file mode 100644
index f4d4221..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/realpath.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'realpath']">

-    <component-instance

-      class="org.apache.cocoon.components.modules.input.RealPathModule"

-      logger="core.modules.input" name="realpath"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-exists.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-exists.xconf
deleted file mode 100644
index 0c29de1..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-exists.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'document-url']">

-    <component-instance logger="core.modules.input.resourceexists" name="resource-exists"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.ResourceExistsModule"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-type.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-type.xconf
deleted file mode 100644
index 882a256..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/input-modules/resource-type.xconf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'resource-type']">

-    <component-instance name="resource-type" logger="sitemap.modules.input.resource-type"

-      class="org.apache.lenya.cms.cocoon.components.modules.input.ResourceTypeModule"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-elements.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-elements.xconf
deleted file mode 100644
index 622bf07..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-elements.xconf
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-  This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/meta-data"

-    unless="/cocoon/meta-data/component-instance[@name = 'http://purl.org/dc/elements/1.1/']">

-    <component-instance name="http://purl.org/dc/elements/1.1/"

-      class="org.apache.lenya.cms.metadata.ConfigurableElementSet">

-      <element name="title" multiple="false" editable="true"/>

-      <element name="creator" multiple="false" editable="true"/>

-      <element name="subject" multiple="false" editable="true"/>

-      <element name="description" multiple="false" editable="true"/>

-      <element name="publisher" multiple="false" editable="true"/>

-      <element name="contributor" multiple="false" editable="true"/>

-      <element name="date" multiple="false" editable="true"/>

-      <element name="type" multiple="false" editable="true"/>

-      <element name="format" multiple="false" editable="true"/>

-      <element name="identifier" multiple="false" editable="true"/>

-      <element name="source" multiple="false" editable="true"/>

-      <element name="language" multiple="false" editable="true"/>

-      <element name="relation" multiple="false" editable="true"/>

-      <element name="coverage" multiple="false" editable="true"/>

-      <element name="rights" multiple="false" editable="true"/>

-    </component-instance>

-  </xconf>

-  

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-terms.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-terms.xconf
deleted file mode 100644
index 487bdb2..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/dc-terms.xconf
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-  This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/meta-data"

-    unless="/cocoon/meta-data/component-instance[@name = 'http://purl.org/dc/terms/']">

-    <component-instance name="http://purl.org/dc/terms/"

-      class="org.apache.lenya.cms.metadata.ConfigurableElementSet">

-      <element name="abstract" multiple="false" editable="true"/>

-      <element name="accessRights" multiple="false" editable="true"/>

-      <element name="alternative" multiple="false" editable="true"/>

-      <element name="audience" multiple="false" editable="true"/>

-      <element name="available" multiple="false" editable="true"/>

-      <element name="bibliographicCitation" multiple="false" editable="true"/>

-      <element name="conformsTo" multiple="false" editable="true"/>

-      <element name="created" multiple="false" editable="true"/>

-      <element name="dateAccepted" multiple="false" editable="true"/>

-      <element name="dateCopyrighted" multiple="false" editable="true"/>

-      <element name="dateSubmitted" multiple="false" editable="true"/>

-      <element name="educationLevel" multiple="false" editable="true"/>

-      <element name="extent" multiple="false" editable="true"/>

-      <element name="hasFormat" multiple="false" editable="true"/>

-      <element name="hasPart" multiple="false" editable="true"/>

-      <element name="hasVersion" multiple="false" editable="true"/>

-      <element name="isFormatOf" multiple="false" editable="true"/>

-      <element name="isPartOf" multiple="false" editable="true"/>

-      <element name="isReferencedBy" multiple="false" editable="true"/>

-      <element name="isReplacedBy" multiple="false" editable="true"/>

-      <element name="isRequiredBy" multiple="false" editable="true"/>

-      <element name="issued" multiple="false" editable="true"/>

-      <element name="isVersionOf" multiple="false" editable="true"/>

-      <element name="license" multiple="false" editable="true"/>

-      <element name="mediator" multiple="false" editable="true"/>

-      <element name="medium" multiple="false" editable="true"/>

-      <element name="modified" multiple="false" editable="true"/>

-      <element name="references" multiple="false" editable="true"/>

-      <element name="replaces" multiple="false" editable="true"/>

-      <element name="requires" multiple="false" editable="true"/>

-      <element name="rightsHolder" multiple="false" editable="true"/>

-      <element name="spatial" multiple="false" editable="true"/>

-      <element name="tableOfContents" multiple="false" editable="true"/>

-      <element name="temporal" multiple="false" editable="true"/>

-      <element name="valid" multiple="false" editable="true"/>

-    </component-instance>

-  </xconf>

-  

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/document.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/document.xconf
deleted file mode 100644
index 4801241..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/metadata/document.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-  This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/meta-data"

-    unless="/cocoon/meta-data/component-instance[@name = 'http://apache.org/lenya/metadata/document/1.0']">

-    <component-instance name="http://apache.org/lenya/metadata/document/1.0"

-      class="org.apache.lenya.cms.metadata.ConfigurableElementSet">

-      <element name="resourceType" multiple="false"/>

-      <element name="contentType" multiple="false"/>

-      <element name="mimeType" multiple="false"/>

-      <element name="expires" multiple="false"/>

-      <element name="extension" multiple="false"/>
-    </component-instance>

-  </xconf>

-  

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/contextutility.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/contextutility.xconf
deleted file mode 100644
index a445770..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/contextutility.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.cocoon.components.context.ContextUtility']">

-    <component role="org.apache.lenya.cms.cocoon.components.context.ContextUtility"

-      logger="lenya.cocoon.components"

-      class="org.apache.lenya.cms.cocoon.components.context.ContextUtility"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/document-builders.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/document-builders.xconf
deleted file mode 100644
index d82c075..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/document-builders.xconf
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/document-builders">

-    <document-builders>

-      <component-instance name="default" logger="lenya.publication"

-        class="org.apache.lenya.cms.publication.DefaultDocumentBuilder"/>

-    </document-builders>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/documentfactorybuilder.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/documentfactorybuilder.xconf
deleted file mode 100644
index 41710af..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/documentfactorybuilder.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.publication.DocumentFactoryBuilder']">

-    <component role="org.apache.lenya.cms.publication.DocumentFactoryBuilder"

-      logger="lenya.cocoon.components"

-      class="org.apache.lenya.cms.publication.DocumentFactoryBuilderImpl"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/lenya-roles.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/lenya-roles.xconf
deleted file mode 100644
index b852400..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/lenya-roles.xconf
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon"

-         unless="/cocoon/@user-roles"

-         add-attribute="user-roles"

-         value="/WEB-INF/classes/org/apache/lenya/lenya.roles"/>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/metadataregistry.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/metadataregistry.xconf
deleted file mode 100644
index 99682fc..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/metadataregistry.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.metadata.MetaDataRegistry']">

-    <component role="org.apache.lenya.cms.metadata.MetaDataRegistry"

-      logger="lenya.cocoon.components"

-      class="org.apache.lenya.cms.metadata.MetaDataRegistryImpl"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/shared-item-store.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/shared-item-store.xconf
deleted file mode 100644
index 8005452..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/shared-item-store.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.repository.SharedItemStore']">

-    <component role="org.apache.lenya.cms.repository.SharedItemStore"

-      logger="lenya.cocoon.components"

-      class="org.apache.lenya.cms.repository.SharedItemStoreImpl"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/site-managers.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/site-managers.xconf
deleted file mode 100644
index fd513b3..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/site-managers.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/site-managers">

-    <site-managers/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/store-janitor-memory.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/store-janitor-memory.xconf
deleted file mode 100644
index ef7139a..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/store-janitor-memory.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-<!-- increase the free memory to prevent out of memory errors -->

-  <xconf xpath="/cocoon/store-janitor"

-    remove="/cocoon/store-janitor/parameter[@name = 'freememory']"

-    unless="/cocoon/store-janitor/parameter[@name = 'freememory' and @value = '10000000']">

-    <parameter name="freememory" value="10000000"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/uuid-generator.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/misc/uuid-generator.xconf
deleted file mode 100644
index 255c378..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/misc/uuid-generator.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.cms.repository.UUIDGenerator']">

-    <component role="org.apache.lenya.cms.repository.UUIDGenerator"

-      logger="lenya.cocoon.components"

-      class="org.apache.lenya.cms.repository.AxisUUIDGenerator"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/metadata.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/metadata.xconf
deleted file mode 100644
index c8696e4..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/metadata.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon" unless="/cocoon/meta-data">

-    <meta-data/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/resource-types.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/resource-types.xconf
deleted file mode 100644
index 1157db3..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/resource-types.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon" unless="/cocoon/resource-types">

-    <resource-types/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/template-instantiators.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/template-instantiators.xconf
deleted file mode 100644
index e9810e5..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/prepare/template-instantiators.xconf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-

-  <xconf xpath="/cocoon" unless="/cocoon/template-instantiators">

-    <template-instantiators/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/add_datasources_element.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/add_datasources_element.xconf
deleted file mode 100644
index 5f6b713..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/add_datasources_element.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- This file creates an empty <datasources/> element in cocoon.xconf.

-  This is necessary to enable subsequent xpatch files (like datasources.xconf)

-  to patch datasource entries into this element. See bug 43581 for a

-  discussion/explanation. 

-  The name of this file has to alphabetically sort in before "datasources.xconf".

--->

-  

-<xconf xpath="/cocoon"

-  unless="datasources"

-  insert-before="/cocoon/hsqldb-server"
-  if-prop="patch.webapp">

-  <datasources>

-  </datasources>

-</xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/datasources.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/datasources.xconf
deleted file mode 100644
index 976c8c2..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/datasources.xconf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xconf xpath="/cocoon/datasources"

-    unless="/cocoon/datasources/jdbc[@name = 'LenyaScheduler']"
-    if-prop="patch.webapp">
-  <jdbc logger="core.datasources.lenya.scheduler" name="LenyaScheduler">

-    <pool-controller max="10" min="5">

-      <!-- use custom keep-alive query because HSQL does not accept 'SELECT 1' -->

-      <keep-alive>SELECT 1 FROM QRTZ_LOCKS</keep-alive>

-    </pool-controller>

-    <dburl>jdbc:hsqldb:hsql://localhost:9002/cocoondb</dburl>

-    <user>sa</user>

-    <password/>

-  </jdbc>

-</xconf>

- 

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/scheduler.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/scheduler.xconf
deleted file mode 100644
index 2c79fd8..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/scheduler/scheduler.xconf
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-  <!--

-  The scheduler has to be added after the HSQLDB server to ensure that the datasources are available.

-  -->

-

-  <xconf xpath="/cocoon"

-    remove="/cocoon/component[@role = 'org.apache.cocoon.components.cron.JobScheduler']"

-    insert-after="/cocoon/hsqldb-server"

-    unless="/cocoon/component[@role = 'org.apache.cocoon.components.cron.JobScheduler'][store/datasource = 'LenyaScheduler']"

-    if-prop="patch.webapp">

-    

-    <component class="org.apache.cocoon.components.cron.CocoonQuartzJobScheduler" logger="cron" role="org.apache.cocoon.components.cron.JobScheduler">

-      <!--+

-        | Definitions for a thread pool used to schedule jobs

-        +-->

-      <thread-pool>

-        <!--+

-          | Should we queue up execution requests if the pool is busy?

-          | Defaults to false

-          +-->

-        <use-queueing>false</use-queueing>

-        

-        <!--+

-          | How big should the queue be.

-          | Defaults to unlimited size (<0 == default)

-          +-->

-        <queue-size>-1</queue-size>

-        

-        <!--+

-          | The maximum size of the pool.

-          | Defaults to Integer.MAX_VALUE (<0 == default)

-          +-->

-        <max-pool-size>-1</max-pool-size>

-        

-        <!--+

-          | The minimum size of the pool.

-          | Defaults to 1 (<0 == default)

-          +-->

-        <min-pool-size>1</min-pool-size>

-        

-        <!--+

-          | How long will an idle thread be kept before it will be discarded.

-          | Defaults to 60000ms (<0 == default)

-          +-->

-        <keep-alive-time-ms>60000</keep-alive-time-ms>

-        

-        <!--+

-          | Which blocking policy should be used if the maximum pool

-          | size and queue size is bounded:

-          | Run:           (default) The thread making the execute

-          |                request runs the task itself. This policy

-          |                helps guard against lockup.

-          | Wait:          Wait until a thread becomes available.

-          | Abort:         Throw a RuntimeException

-          | Discard:       Throw away the current request and return.

-          | DiscardOldest: Throw away the oldest request and return.

-          +-->

-        <block-policy>RUN</block-policy>

-        

-        <!--+

-          | Should queued and running jobs be given a chance to finished

-          | on system shutdown. Defaults to true

-          +-->

-        <shutdown-graceful>true</shutdown-graceful>

-        

-        <!--+

-          | The maximum time to wait for running jobs to complete.

-          | Defaults to unlimited time (<0 == default)

-          +-->

-        <shutdown-wait-time-ms>5000</shutdown-wait-time-ms>

-      </thread-pool>

-      

-      <triggers/>

-      

-      <!--+

-        | Definition of the JobStore.

-        | Store type can be one of "ram" (default), "tx", or "cmt".

-        |

-        | "tx" and "cmt" stores require datasource configuration.

-        | (Attributes delegate and provider are optional)

-        +-->

-      <store delegate="org.quartz.impl.jdbcjobstore.StdJDBCDelegate" type="tx">

-        <datasource provider="excalibur">LenyaScheduler</datasource>

-      </store>

-      

-    </component>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/aggregate-fallback.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/aggregate-fallback.xconf
deleted file mode 100644
index ff2a91a..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/aggregate-fallback.xconf
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories"

-    unless="/cocoon/source-factories/component-instance[@name = 'aggregate-fallback']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.AggregatingFallbackSourceFactory"

-      logger="lenya.source.aggregatefallback" name="aggregate-fallback"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback.xconf
deleted file mode 100644
index 3caf08b..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'fallback']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.FallbackSourceFactory" logger="lenya.source.fallback" name="fallback"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/lenya.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/lenya.xconf
deleted file mode 100644
index 5b8193e..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/lenya.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'lenya']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.LenyaSourceFactory" logger="lenya.source.lenya" name="lenya" scheme="context:"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/site.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/site.xconf
deleted file mode 100644
index cad24ab..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/site.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'site']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.SiteSourceFactory" logger="lenya.source.site" name="site" scheme="site:"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/template-fallback.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/template-fallback.xconf
deleted file mode 100644
index 9c1bbe6..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/template-fallback.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'template-fallback']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.TemplateFallbackSourceFactory" logger="lenya.source.templatefallback" name="template-fallback"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/zip.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/zip.xconf
deleted file mode 100644
index da2e669..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/zip.xconf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <xconf xpath="/cocoon/source-factories" unless="/cocoon/source-factories/component-instance[@name = 'zip']">

-    <component-instance class="org.apache.lenya.cms.cocoon.source.ZipSourceFactory" logger="lenya.source.zip" name="zip"/>

-  </xconf>

diff --git a/trunk/src/webapp/lenya/config/cocoon-xconf/usecases/versioning/usecase-rollback.xconf b/trunk/src/webapp/lenya/config/cocoon-xconf/usecases/versioning/usecase-rollback.xconf
deleted file mode 100644
index 1600c28..0000000
--- a/trunk/src/webapp/lenya/config/cocoon-xconf/usecases/versioning/usecase-rollback.xconf
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->

-<!--

-    This file defines the publication specific use-cases

--->

-

-  <!-- temporarily commented out -->

-  <xconf xpath="/cocoon" unless="/cocoon">

-  </xconf>

-<!--

-    <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'rollback']">

-      <component-instance name="rollback" logger="lenya.publication"

-        class="org.apache.lenya.cms.site.usecases.Rollback">

-        <transaction policy="pessimistic"/>

-        <exit usecase="tab.revisions"/>

-      </component-instance>

-    </xconf>

--->    

diff --git a/trunk/src/webapp/lenya/config/parameters/default.xsp b/trunk/src/webapp/lenya/config/parameters/default.xsp
deleted file mode 100644
index 3f95087..0000000
--- a/trunk/src/webapp/lenya/config/parameters/default.xsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!-- Returns the value of the parameter "value" as URI parameter. -->
-
-<xsp:page
-  language="java"
-  xmlns:xsp="http://apache.org/xsp"  
->
-       
-<parameter xmlns="http://apache.org/cocoon/lenya/uri-parameters/1.0"><xsp:expr>parameters.getParameter("value", "")</xsp:expr></parameter>
-       
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/config/rc/revision-controller.xconf b/trunk/src/webapp/lenya/config/rc/revision-controller.xconf
deleted file mode 100644
index 278e161..0000000
--- a/trunk/src/webapp/lenya/config/rc/revision-controller.xconf
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<rcml>
-  <rcmlDirectory href="content/rcml"/>
-  <backupDirectory href="content/rcbak"/>
-</rcml>
diff --git a/trunk/src/webapp/lenya/config/scheduler/scheduler.xconf b/trunk/src/webapp/lenya/config/scheduler/scheduler.xconf
deleted file mode 100644
index 8fd2173..0000000
--- a/trunk/src/webapp/lenya/config/scheduler/scheduler.xconf
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<scheduler>
-
-  <jobs>
-    <job type="publish" class="org.apache.lenya.cms.scheduler.PublishingJob">
-      <title>Publish</title>
-      <parameters>
-        <publisher class="org.apache.lenya.cms.publishing.DefaultFilePublisher"/>
-      </parameters>
-    </job>
-  </jobs>
-  
-  <triggers>
-    <trigger type="cron" class="org.quartz.CronTrigger">
-      <title>Regular</title>
-    </trigger>
-    <trigger type="date" class="org.quartz.SimpleTrigger">
-      <title>Once</title>
-    </trigger>
-    <trigger type="andreas" class="org.quartz.AndreasTrigger">
-      <title>Andreas</title>
-    </trigger>
-  </triggers>
-  
-</scheduler>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/config/sitemap/actions.xmap b/trunk/src/webapp/lenya/config/sitemap/actions.xmap
deleted file mode 100644
index 850d9c8..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/actions.xmap
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!-- $Id: actions.xmap 280060 2005-09-11 01:56:31Z chestnut $  -->
-
-<xmap xpath="/sitemap/components/actions" unless="/sitemap/components/actions/action[@name = 'language-exists']" 
-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-   <map:action name="language-exists" logger="lenya.sitemap.action.language-exists" src="org.apache.lenya.cms.cocoon.acting.LanguageExistsAction"/>
-   <map:action name="request-parameter-exists" logger="sitemap.action.requestParameterExists" src="org.apache.cocoon.acting.RequestParameterExistsAction" />
-   <map:action name="reserved-checkin" src="org.apache.lenya.cms.cocoon.acting.ReservedCheckinAction" logger="sitemap.action.reserved-checkin"/>
-   <map:action name="reserved-checkout" src="org.apache.lenya.cms.cocoon.acting.ReservedCheckoutAction" logger="sitemap.action.reserved-checkout"/>
-   <map:action name="reserved-checkout-test" src="org.apache.lenya.cms.cocoon.acting.ReservedCheckoutTestAction" logger="sitemap.action.reserved-checkout-test"/>
-   <map:action name="discover-checkout" src="org.apache.lenya.cms.cocoon.acting.DiscoverCheckoutAction" logger="sitemap.action.discover-checkout"/>
-   <map:action name="set-header" logger="sitemap.action.set-header" src="org.apache.cocoon.acting.HttpHeaderAction"/>
-   <map:action name="resource-exists" logger="sitemap.action.resource-exists" src="org.apache.cocoon.acting.ResourceExistsAction"/>
-   <map:action name="resource-exists-enhanced" logger="sitemap.action.resource-exists-enhanced" src="org.apache.lenya.cms.cocoon.acting.ResourceExistsAction"/>
-   <map:action name="session-propagator" logger="sitemap.action.session-propagator" src="org.apache.cocoon.acting.SessionPropagatorAction"/>
-</xmap>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/config/sitemap/comments.xmap b/trunk/src/webapp/lenya/config/sitemap/comments.xmap
deleted file mode 100644
index 200c705..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/comments.xmap
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap" unless="not(//comment())" remove="//comment()"/>

diff --git a/trunk/src/webapp/lenya/config/sitemap/exceptionselector.xmap b/trunk/src/webapp/lenya/config/sitemap/exceptionselector.xmap
deleted file mode 100644
index 48ff033..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/exceptionselector.xmap
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/selectors/selector[@name = 'exception']" 

-      unless="/sitemap/components/selectors/selector[@name = 'exception']/exception[@name = 'sax-parsing']"

-      insert-before="/sitemap/components/selectors/selector[@name = 'exception']/exception[@class = 'java.lang.Throwable']">

-    <exception class="org.xml.sax.SAXParseException" name="sax-parsing"/>

-    <exception class="org.xml.sax.SAXException" name="sax" unroll="true"/>

-    <exception class="org.apache.cocoon.ProcessingException" name="processing" unroll="true"/>

-</xmap>      

diff --git a/trunk/src/webapp/lenya/config/sitemap/generators.xmap b/trunk/src/webapp/lenya/config/sitemap/generators.xmap
deleted file mode 100644
index 7186ab2..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/generators.xmap
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/generators" 

-  unless="/sitemap/components/generators/generator[@name = 'lenyaMetaData']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-

-  <map:generator label="content" logger="sitemap.generator.lenyaMetaData"

-    name="lenyaMetaData" pool-max="16"

-    src="org.apache.lenya.cms.cocoon.generation.LenyaMetaDataGenerator"/>
-    
-  <map:generator label="content" logger="sitemap.generator.sessionattr"
-    name="session-attr" pool-max="16"
-    src="org.apache.cocoon.generation.SessionAttributeGenerator"/>

-  

-</xmap>

diff --git a/trunk/src/webapp/lenya/config/sitemap/matchers.xmap b/trunk/src/webapp/lenya/config/sitemap/matchers.xmap
deleted file mode 100644
index f8fd857..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/matchers.xmap
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/matchers" unless="/sitemap/components/matchers/matcher[@name = 'usecase']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-     <map:matcher name="agent-match" logger="sitemap.matcher.referer-match" src="org.apache.cocoon.matching.WildcardHeaderMatcher">

-        <header-name>User-Agent</header-name>

-    </map:matcher>

-    <map:matcher name="usecase" logger="sitemap.matcher.usecase" src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">

-      <parameter-name>lenya.usecase</parameter-name>

-    </map:matcher>

-    <map:matcher name="step" logger="sitemap.matcher.step" src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">

-      <parameter-name>lenya.step</parameter-name>

-    </map:matcher>

-    <map:matcher name="registered-usecase" logger="sitemap.matcher.registered-usecase" src="org.apache.lenya.cms.cocoon.matching.UsecaseRegistrationMatcher"/>

-</xmap>      

diff --git a/trunk/src/webapp/lenya/config/sitemap/pipelines.xmap b/trunk/src/webapp/lenya/config/sitemap/pipelines.xmap
deleted file mode 100644
index 19b053c..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/pipelines.xmap
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap remove="/sitemap/pipelines"

-      unless="/sitemap/pipelines/pipeline/match[@pattern = 'lenya-screen.xsl']"

-      xpath="/sitemap"

-      insert-after="/sitemap/resources"

-      xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-

-<!-- =========================== Pipelines ================================= -->

-

-  <map:pipelines>

-

-    <!-- I18N  -->

-    <map:pipeline>

-      <map:match pattern="i18n-catalogue/**">

-        <map:mount uri-prefix="" src="lenya/i18n.xmap" check-reload="true" reload-method="synchron"/>

-      </map:match>

-    </map:pipeline>

-

-    <map:pipeline>

-    

-    <!-- Lenya GUI screen -->

-      <map:match pattern="lenya-screen.xsl">

-        <map:generate src="fallback://lenya/xslt/util/page2xhtml.xsl"/>

-        <map:serialize type="xml"/>

-      </map:match>

-      

-      <map:match pattern="ac.login" type="usecase">

-        <map:mount src="fallback://lenya/modules/usecase/usecase.xmap" uri-prefix="" check-reload="yes" reload-method="synchron"/>

-      </map:match>

-      <map:match pattern="ac.logout" type="usecase">

-        <map:mount src="fallback://lenya/modules/usecase/usecase.xmap" uri-prefix="" check-reload="yes" reload-method="synchron"/>

-      </map:match>

-

-    <!-- favicon -->

-    <map:match pattern="favicon.ico">

-      <map:read mime-type="image/x-icon" src="lenya/resources/images/lenya.ico"/>

-    </map:match>

-    </map:pipeline>

-

-    <map:pipeline internal-only="true">

-      <map:match pattern="**">

-        <map:mount uri-prefix="" src="global-sitemap.xmap" check-reload="true" reload-method="synchron"/>

-      </map:match>

-    </map:pipeline>

-      

-    <map:pipeline>

-
-    <map:match pattern="**">
-      
-      <!-- redirect to SSL if the policy requires this -->
-      <map:act type="ssl-redirect">
-        <map:redirect-to uri="{redirectUri}" session="true"/>
-      </map:act>
-      

-      <map:match pattern="*/webdav**">

-        <map:act type="authorizer">

-            <map:mount check-reload="true" reload-method="synchron" src="global-sitemap.xmap" uri-prefix=""/> 

-        </map:act>

-        <map:act type="authenticator">

-          <map:act type="authorizer">

-            <map:mount uri-prefix="" src="global-sitemap.xmap" check-reload="true" reload-method="synchron"/> 

-          </map:act>

-          <map:act type="set-header">

-            <map:parameter name="WWW-Authenticate" value="Basic Realm=lenya" />

-            <map:generate src="context://lenya/content/util/empty.xml" />

-            <map:transform src="fallback://lenya/xslt/exception/forbidden.xsl">

-              <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>

-              <map:parameter name="documenturl" value="{page-envelope:document-url}"/>

-              <map:parameter name="area" value="{page-envelope:area}"/>

-            </map:transform>

-            <map:serialize type="xhtml" status-code="401"/>

-          </map:act>

-        </map:act>

-        <map:act type="set-header">

-          <map:parameter name="WWW-Authenticate" value="Basic Realm=lenya" />

-          <map:generate src="context://lenya/content/util/empty.xml" />

-          <map:transform src="fallback://lenya/xslt/exception/forbidden.xsl">

-              <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>

-              <map:parameter name="documenturl" value="{page-envelope:document-url}"/>

-              <map:parameter name="area" value="{page-envelope:area}"/>

-          </map:transform>

-          <map:serialize type="xhtml" status-code="401"/>

-        </map:act>

-      </map:match>

-      <map:act type="authorizer">

-        <map:mount uri-prefix="" src="global-sitemap.xmap" check-reload="true" reload-method="synchron"/>

-      </map:act>

-      <map:redirect-to session="true" uri="{proxy:/{1}}?lenya.usecase=ac.login&amp;referrerQueryString={url-encode:{request:queryString}}"/>        
-    </map:match>

-

-    </map:pipeline>

-

-    <!-- this is the default error handler -->

-    <map:handle-errors>
-      <map:mount src="{fallback:error.xmap}" check-reload="true" reload-method="synchron" uri-prefix=""/>
-    </map:handle-errors>    

-    

-  </map:pipelines></xmap>

diff --git a/trunk/src/webapp/lenya/config/sitemap/resources.xmap b/trunk/src/webapp/lenya/config/sitemap/resources.xmap
deleted file mode 100644
index 0bbfb23..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/resources.xmap
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap unless="/sitemap/resources/resource[@name = 'style-cms-page']"

-  remove="/sitemap/resources"

-  xpath="/sitemap"

-  insert-after="/sitemap/views"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-  

-<!-- =========================== Resources ================================= -->

-

-  <map:resources>

-    <map:resource name="style-cms-page">

-      <map:transform type="i18n">      

-        <map:parameter name="locale" value="{request:locale}"/>

-      </map:transform>    

-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform type="proxy"/>

-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>

-    </map:resource>

-  </map:resources>

-

-</xmap>

diff --git a/trunk/src/webapp/lenya/config/sitemap/serializers.xmap b/trunk/src/webapp/lenya/config/sitemap/serializers.xmap
deleted file mode 100644
index b554952..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/serializers.xmap
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap remove="/sitemap/components/serializers"

-  unless="/sitemap/components/serializers/serializer[@name = 'patch-test']"

-  xpath="/sitemap/components"

-  insert-after="/sitemap/components/transformers"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-  

-  <map:serializers default="xhtml">

-

-    <!-- this declaration is just to test if the patch has already been applied -->

-    <map:serializer name="patch-test"  src="org.apache.cocoon.components.serializers.HTMLSerializer"/>

-

-    <map:serializer name="html" logger="sitemap.serializer.html" mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" 

-    pool-min="4" src="org.apache.cocoon.components.serializers.HTMLSerializer">

-      <doctype-default>loose</doctype-default>

-      <encoding>UTF-8</encoding>

-    </map:serializer>

-    

-    <map:serializer name="html-no-dtd" logger="sitemap.serializer.html-no-dtd" mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" pool-min="4" src="org.apache.cocoon.serialization.HTMLSerializer">

-      <buffer-size>1024</buffer-size>

-    </map:serializer>

-    

-    <map:serializer name="htmlnoi" logger="sitemap.serializer.htmlnoi" mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" pool-min="4" src="org.apache.cocoon.serialization.HTMLSerializer"> 

-      <indent>no</indent>

-      <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>

-      <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>

-      <encoding>UTF-8</encoding>

-    </map:serializer>

-    

-    <map:serializer name="xhtml" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="text/html; charset=utf-8" logger="sitemap.serializer.xhtml" pool-grow="2" pool-max="64" pool-min="2"> 

-      <doctype-public>-//W3C//DTD XHTML 1.0 Strict//EN</doctype-public>

-      <doctype-system>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</doctype-system>

-      <encoding>UTF-8</encoding>

-    </map:serializer>

-    

-    <map:serializer name="xml" logger="sitemap.serializer.xml" mime-type="text/xml; charset=utf-8" src="org.apache.cocoon.components.serializers.XMLSerializer">

-       <encoding>UTF-8</encoding>

-    </map:serializer>

-    

-    <map:serializer name="links" logger="sitemap.serializer.links" src="org.apache.cocoon.serialization.LinkSerializer"/>

-    

-    <map:serializer name="wml" logger="sitemap.serializer.wml" mime-type="text/vnd.wap.wml" src="org.apache.cocoon.serialization.XMLSerializer">

-     <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public>

-     <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctype-system>

-     <encoding>ASCII</encoding>

-     <omit-xml-declaration>yes</omit-xml-declaration>

-    </map:serializer>

-

-    <map:serializer name="text" logger="sitemap.serializer.text" mime-type="text/plain" src="org.apache.cocoon.serialization.TextSerializer">

-      <encoding>UTF-8</encoding>

-    </map:serializer>

-

-    <map:serializer name="fo2pdf" logger="sitemap.serializer.fo2pdf" mime-type="application/pdf" src="org.apache.cocoon.serialization.FOPSerializer"/>

-    <map:serializer name="fo2ps" logger="sitemap.serializer.fo2ps" mime-type="application/postscript" src="org.apache.cocoon.serialization.FOPSerializer"/>

-    <map:serializer name="fo2pcl" logger="sitemap.serializer.fo2pcl" mime-type="vnd.hp-PCL" src="org.apache.cocoon.serialization.FOPSerializer"/>

-    <map:serializer name="svgxml" logger="sitemap.serializer.svgxml" mime-type="image/svg-xml" src="org.apache.cocoon.serialization.XMLSerializer">

-      <doctype-public>-//W3C//DTD SVG 20000303 Stylable//EN</doctype-public>

-      <doctype-system>http://www.w3.org/TR/2000/03/WD-SVG-20000303/</doctype-system>

-    </map:serializer>

-    <map:serializer name="svg2jpeg" logger="sitemap.serializer.svg2png" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">

-      <parameter name="quality" type="float" value="0.9"/>

-    </map:serializer>

-    <map:serializer name="svg2png" logger="sitemap.serializer.svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer"/>

-    <map:serializer name="svg2tiff" logger="sitemap.serializer.svg2tiff" mime-type="image/tiff" src="org.apache.cocoon.serialization.SVGSerializer"/>

-

-  </map:serializers></xmap>

diff --git a/trunk/src/webapp/lenya/config/sitemap/transformers.xmap b/trunk/src/webapp/lenya/config/sitemap/transformers.xmap
deleted file mode 100644
index 5d3e6c3..0000000
--- a/trunk/src/webapp/lenya/config/sitemap/transformers.xmap
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<xmap xpath="/sitemap/components/transformers" 

-  unless="/sitemap/components/transformers/transformer[@name = 'link-rewrite']"

-  xmlns:map="http://apache.org/cocoon/sitemap/1.0">

-  

-    <map:transformer name="metaData" logger="lenya.sitemap.transformer.metaData" src="org.apache.lenya.cms.cocoon.transformation.MetaDataTransformer"/>

-    <map:transformer name="i18n" logger="sitemap.transformer.i18n" src="org.apache.cocoon.transformation.I18nTransformer">

-      <catalogues default="cmsui">

-         <catalogue id="cmsui" name="cmsui" location="cocoon://i18n-catalogue/"/>

-       </catalogues>

-       <untranslated-text>untranslated</untranslated-text>

-       <cache-at-startup>true</cache-at-startup>

-    </map:transformer>

-    <map:transformer name="pattern" 

-       src="org.apache.cocoon.transformation.PatternTransformer" 

-       logger="sitemap.transformer.pattern">

-       <parameter name="groups" value="true"/>

-    </map:transformer>

-</xmap>

diff --git a/trunk/src/webapp/lenya/content/about.xml b/trunk/src/webapp/lenya/content/about.xml
deleted file mode 100644
index c236a19..0000000
--- a/trunk/src/webapp/lenya/content/about.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  <page:body>
-    <h2>Apache Lenya @lenya.version@ (Revision: @lenya.revision@)</h2>
-    <p>
-      This software consists of voluntary contributions made by many individuals
-      on behalf of the <br /><a href="http://www.apache.org/">Apache Software Foundation</a>.
-    </p>
-    <p>
-      Apache Lenya includes software developed by the 
-      <a href="http://www.apache.org/">Apache Software Foundation</a>, 
-      <a href="http://w3c.org">W3C</a>, and 
-      <a href="http://sf.net/projects/websphinx">WebSPHINX</a>.
-    </p>
-    <p>
-      Copyright (C) 2006 The Apache Software Foundation. All rights reserved.
-    </p>
-    <form id="form-about-back">
-      <p>
-        <input type="button" value="Back" onClick="history.go(-1)" name="input-back" i18n:attr="value"/>
-      </p>
-    </form>		
-  </page:body>
-</page:page>
diff --git a/trunk/src/webapp/lenya/content/exception/document-does-not-exist.xsp b/trunk/src/webapp/lenya/content/exception/document-does-not-exist.xsp
deleted file mode 100644
index f92525f..0000000
--- a/trunk/src/webapp/lenya/content/exception/document-does-not-exist.xsp
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page 
-  language="java" 
-  xmlns:xsp="http://apache.org/xsp"
-  xmlns:input="http://apache.org/cocoon/xsp/input/1.0"
-  >
-  
-  <xsp:structure>
-    <xsp:include>org.apache.lenya.cms.publication.Document</xsp:include>
-    <xsp:include>org.apache.lenya.cms.publication.util.DocumentLanguagesHelper</xsp:include>
-    <xsp:include>org.apache.avalon.framework.service.WrapperServiceManager</xsp:include>
-  </xsp:structure>
-  
-  <missing-language>
-    
-    <xsp:logic>
-      DocumentLanguagesHelper helper = new DocumentLanguagesHelper(
-        objectModel, new WrapperServiceManager(this.manager));
-    </xsp:logic>
-    
-    <current-language><xsp:expr>helper.getLanguage()</xsp:expr></current-language>
-    <available-languages>
-      <xsp:logic>
-        String[] availableLanguages = helper.getLanguages();
-        String language = null;
-        for (int i = 0; i &lt; availableLanguages.length; i++) {
-          language = availableLanguages[i];
-          <xsp:content>
-            <available-language>
-              <language><xsp:expr>language</xsp:expr></language>
-              <url><xsp:expr>helper.getUrl(language)</xsp:expr></url>
-            </available-language>
-          </xsp:content>
-        }
-      </xsp:logic>
-    </available-languages>
-    
-  </missing-language>
-</xsp:page>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/content/exception/publication-does-not-exist.jx b/trunk/src/webapp/lenya/content/exception/publication-does-not-exist.jx
deleted file mode 100644
index 914a986..0000000
--- a/trunk/src/webapp/lenya/content/exception/publication-does-not-exist.jx
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
-  
-  <page:page
-    xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    xmlns="http://www.w3.org/1999/xhtml">
-    
-    <page:title><i18n:text>publication-does-not-exist</i18n:text></page:title>
-    
-    <page:body>
-      <p>
-        <i18n:translate>
-          <i18n:text>publication-...-does-not-exist</i18n:text>
-          <jx:set var="requestUri" value="${cocoon.request.requestURI}"/>
-          <jx:set var="contextPath" value="${cocoon.request.contextPath}"/>
-          <jx:set var="snippets" value="${requestUri.substring(contextPath.length()).split('/')}"/>
-          <i18n:param><jx:out value="${snippets[1]}"/></i18n:param>
-        </i18n:translate>
-      </p>
-      <p>
-        <a href="/index.html"><i18n:text>Back</i18n:text></a>
-      </p>
-    </page:body>
-    
-  </page:page>
-  
-</jx:template>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/content/introduction.xml b/trunk/src/webapp/lenya/content/introduction.xml
deleted file mode 100644
index 361a44e..0000000
--- a/trunk/src/webapp/lenya/content/introduction.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<page:page xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0">
-  <page:title>Apache Lenya @lenya.version@ (Revision:@lenya.revision@)</page:title>
-  <page:body>
-  
-    <div xmlns="http://www.w3.org/1999/xhtml" class="lenya-frontpage">
-    
-      <h2>Welcome to Apache Lenya</h2>
-      <p>
-        You have successfully installed Apache Lenya 
-        <strong>@lenya.version@</strong> (Revision: @lenya.revision@).
-        To start, click on any of the publications on the left, or create
-        a new publication.
-      </p>
-    
-      <h3>About</h3>
-      <p>
-        <a href="http://lenya.apache.org">Apache Lenya</a> is a Java-based
-        <a href="http://www.opensource.org">open-source</a> Content Management 
-        System. It is based on open standards such as 
-        <a href="http://www.w3c.org/XML/">XML</a> and 
-        <a href="http://www.w3c.org/TR/xslt">XSLT</a>. It is based on
-        <a href="http://cocoon.apache.org">Apache Cocoon</a>.
-      </p>
-      <p>
-        Lenya is a community project and is being developed under the aegis of the 
-        <a href="http://www.apache.org/">Apache Software Foundation (ASF)</a>. 
-        You are welcome to join our mailing lists and contribute!
-      </p>
-      
-      <h3>Features</h3>
-      <ul>
-        <li>supports multi-lingual websites</li>
-        <li>
-          includes several client-side content editors, many of them
-          WYSIWYG
-        </li>
-        <li>allows for complex workflows (edit/submit/review/publish)</li>
-        <li>
-          allows for arbitrary output, does not impose standard layouts or 
-          techniques (such as HTML tables) on the user
-        </li>
-        <li>
-          provides revision control, old page versions can be viewed and restored
-          if necessary
-        </li>
-        <li>
-          powerful XML processing capabilities thanks to the underlying Cocoon
-          engine
-        </li>
-        <li>...</li>
-      </ul>
-    </div>
-  
-  </page:body>
-</page:page>
diff --git a/trunk/src/webapp/lenya/content/menus/admin.xsp b/trunk/src/webapp/lenya/content/menus/admin.xsp
deleted file mode 100644
index 4174ab7..0000000
--- a/trunk/src/webapp/lenya/content/menus/admin.xsp
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page 
-    language="java" 
-    xmlns:xsp="http://apache.org/xsp"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns="http://apache.org/cocoon/lenya/menubar/1.0"
-    xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
->
-
-<menu>
-
-  <menus>
-    <menu i18n:attr="name" name="File">
-      <block>
-        <item uc:usecase="ac.logout" href="?"><i18n:text>Logout</i18n:text></item>
-      </block>
-    </menu>
-  </menus>
-
-</menu>
-
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/content/menus/live.xsp b/trunk/src/webapp/lenya/content/menus/live.xsp
deleted file mode 100644
index 71a893f..0000000
--- a/trunk/src/webapp/lenya/content/menus/live.xsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page 
-  language="java" 
-  xmlns:xsp="http://apache.org/xsp"
->
-
-<menu>
-
-</menu>
-
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/content/rc/fileReservedCheckInException.xsp b/trunk/src/webapp/lenya/content/rc/fileReservedCheckInException.xsp
deleted file mode 100644
index 574af47..0000000
--- a/trunk/src/webapp/lenya/content/rc/fileReservedCheckInException.xsp
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page language="java" xmlns:xsp="http://apache.org/xsp">
-
-<rc:exception xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0">
-  <xsp:logic>
-    String filename=parameters.getParameter("filename","null");
-    String checkType=parameters.getParameter("checkType","null");
-    String user=parameters.getParameter("user","null");
-    String date=parameters.getParameter("date","null");
-  </xsp:logic>
-  <rc:file-reserved-checkin-exception>
-    <rc:filename><xsp:expr>filename</xsp:expr></rc:filename>
-    <rc:checkType><xsp:expr>checkType</xsp:expr></rc:checkType>
-    <rc:user><xsp:expr>user</xsp:expr></rc:user>
-    <rc:date><xsp:expr>date</xsp:expr></rc:date>
-  </rc:file-reserved-checkin-exception>
-</rc:exception>
-
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/content/rc/fileReservedCheckOutException.xsp b/trunk/src/webapp/lenya/content/rc/fileReservedCheckOutException.xsp
deleted file mode 100644
index f049beb..0000000
--- a/trunk/src/webapp/lenya/content/rc/fileReservedCheckOutException.xsp
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page language="java" xmlns:xsp="http://apache.org/xsp">
-
-<rc:exception xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0">
-  <xsp:logic>
-    String user=parameters.getParameter("user","null");
-    String filename=parameters.getParameter("filename","null");
-    String date=parameters.getParameter("date","null");
-  </xsp:logic>
-  <rc:file-reserved-checkout-exception>
-    <rc:filename><xsp:expr>filename</xsp:expr></rc:filename>
-    <rc:user><xsp:expr>user</xsp:expr></rc:user>
-    <rc:date><xsp:expr>date</xsp:expr></rc:date>
-  </rc:file-reserved-checkout-exception>
-</rc:exception>
-
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/content/rc/genericException.xsp b/trunk/src/webapp/lenya/content/rc/genericException.xsp
deleted file mode 100644
index 5018dad..0000000
--- a/trunk/src/webapp/lenya/content/rc/genericException.xsp
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsp:page language="java" xmlns:xsp="http://apache.org/xsp">
-
-<rc:exception xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0">
-  <xsp:logic>
-    String filename=parameters.getParameter("filename","null");
-  </xsp:logic>
-  <rc:generic-exception>
-    <rc:filename><xsp:expr>filename</xsp:expr></rc:filename>
-    <rc:message><xsp:expr>parameters.getParameter("message","null")</xsp:expr></rc:message>
-  </rc:generic-exception>
-</rc:exception>
-
-</xsp:page>
diff --git a/trunk/src/webapp/lenya/content/util/empty.xml b/trunk/src/webapp/lenya/content/util/empty.xml
deleted file mode 100644
index 74d024a..0000000
--- a/trunk/src/webapp/lenya/content/util/empty.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!-- This is a simple xml file that can be used in pipelines where all the -->
-<!-- work is done in the xsl and they just need a dummy xml to start the -->
-<!-- pipeline. -->
-
-  <empty></empty>
diff --git a/trunk/src/webapp/lenya/content/welcome.xml b/trunk/src/webapp/lenya/content/welcome.xml
deleted file mode 100644
index cf2a0e1..0000000
--- a/trunk/src/webapp/lenya/content/welcome.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: introduction.xml 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-  <page:title>Apache Lenya @lenya.version@ (Revision:@lenya.revision@)</page:title>
-  <page:body>
-  
-    <h1>Welcome to Apache Lenya</h1>
-    <p>
-      You have successfully installed Apache Lenya 
-      <strong>@lenya.version@</strong> (Revision: @lenya.revision@).
-      To start, click on any of the publications on the left, or create
-      a new publication.
-    </p>
-  
-    <h2>About</h2>
-    <p>
-      <a href="http://lenya.apache.org">Apache Lenya</a> is a Java-based
-      <a href="http://www.opensource.org">open-source</a> Content Management 
-      System. It is based on open standards such as 
-      <a href="http://www.w3c.org/XML/">XML</a> and 
-      <a href="http://www.w3c.org/TR/xslt">XSLT</a>. It is based on
-      <a href="http://cocoon.apache.org">Apache Cocoon</a>.
-    </p>
-    <p>
-      Lenya is a community project and is being developed under the aegis of the 
-      <a href="http://www.apache.org/">Apache Software Foundation (ASF)</a>. 
-      You are welcome to join our mailing lists and contribute!
-    </p>
-    
-    <h2>Features</h2>
-    <ul>
-      <li>supports multi-lingual websites</li>
-      <li>
-        includes several client-side content editors, many of them
-        WYSIWYG
-      </li>
-      <li>allows for complex workflows (edit/submit/review/publish)</li>
-      <li>
-        allows for arbitrary output, does not impose standard layouts or 
-        techniques (such as HTML tables) on the user
-      </li>
-      <li>
-        provides revision control, old page versions can be viewed and restored
-        if necessary
-      </li>
-      <li>
-        powerful XML processing capabilities thanks to the underlying Cocoon
-        engine
-      </li>
-      <li>...</li>
-    </ul>
-  
-  </page:body>
-</page:page>
diff --git a/trunk/src/webapp/lenya/i18n.xmap b/trunk/src/webapp/lenya/i18n.xmap
deleted file mode 100644
index 5c87728..0000000
--- a/trunk/src/webapp/lenya/i18n.xmap
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!--
-  This sitemaps provides fallback message catalogues and catalogue merging.
-  The reason for the existence of this sitemap is mainly to avoid endless loops caused by mounts
-  in sitemap.xmap and global-sitemap.xmap.
--->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:resources>
-    <map:resource name="serializeCatalogue">
-      <map:select type="parameter">
-        <map:parameter name="parameter-selector-test" value="{page-envelope:is-publication}"/>
-        <map:when test="true">
-          <map:transform src="resources/i18n/modules2xinclude.xsl">
-            <map:parameter name="pubId" value="{page-envelope:publication-id}"/>
-            <map:parameter name="catalogue" value="{catalogue}"/>
-          </map:transform>
-        </map:when>
-      </map:select>
-      <map:transform type="xinclude"/>
-      <map:serialize type="xml"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    
-    <map:pipeline type="caching">
-      
-      <!-- i18n-catalogue/module/{module-id}/{catalogue}--> 
-      <map:match pattern="i18n-catalogue/module/*/*">
-        <map:select type="resource-exists">
-          <map:when test="aggregate-fallback://lenya/modules/{1}/resources/i18n/{2}">
-            <map:generate src="aggregate-fallback://lenya/modules/{1}/resources/i18n/{2}"/>
-          </map:when>
-          <!-- Modules are not required to contain a catalogue. -->
-          <map:otherwise>
-            <map:generate src="resources/i18n/emptyCatalogue.xml"/>
-          </map:otherwise>
-        </map:select>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match pattern="i18n-catalogue/**">
-        <map:select type="resource-exists">
-          <map:when test="aggregate-fallback://lenya/resources/i18n/{1}">
-            <map:generate src="aggregate-fallback://lenya/resources/i18n/{1}"/>
-            <map:call resource="serializeCatalogue">
-              <map:parameter name="catalogue" value="{1}"/>
-            </map:call>
-          </map:when>
-          <!-- We don't return an empty catalogue, otherwise the fallback from "en_us" to "en" wouldn't be triggered. -->
-        </map:select>
-      </map:match>
-      
-    </map:pipeline>  
-  </map:pipelines>
-  
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/lenya.xmap b/trunk/src/webapp/lenya/lenya.xmap
deleted file mode 100644
index ee2865a..0000000
--- a/trunk/src/webapp/lenya/lenya.xmap
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:resources>
-    <map:resource name="proxy-css">
-      <map:generate type="text" src="{url}.css"/>
-      <map:transform type="pattern" src="fallback://lenya/chaperon/grammars/link.xlex"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
-      <map:serialize type="text" mime-type="text/css"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      <!-- enable client side caching of resources -->
-      <map:parameter name="expires" value="{global:pipeline-expiration}"/>
-      
-      <!-- Lenya Core -->
-      
-      <!-- matches lenya/**.js -->
-      <map:match pattern="**.js">
-        <map:select type="resource-exists">
-          <map:when test="resources/{1}.xml">
-            <map:generate src="resources/{1}.xml"/>
-            <map:transform type="i18n">      
-              <map:parameter name="locale" value="{request:locale}"/>
-            </map:transform>    
-            <map:transform src="resources/javascript/javascript.xsl"/>
-            <map:serialize type="text" mime-type="application/x-javascript"/>
-          </map:when>
-          <map:otherwise>
-            <map:read src="resources/{1}.js" mime-type="application/x-javascript" />
-          </map:otherwise>
-        </map:select>
-      </map:match>
-      
-      <map:match pattern="**.rng">
-        <map:generate src="resources/{1}.rng"/>
-        <map:transform src="xslt/resources/translate-rng-includes.xsl"/>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <map:match pattern="css/**.css">
-        <map:call resource="proxy-css">
-          <map:parameter name="url" value="resources/css/{1}"/>
-        </map:call>
-      </map:match>
-    </map:pipeline>
-    
-    <map:pipeline>
-      <!-- enable client side caching of resources -->
-      <map:parameter name="expires" value="access plus 2 hours"/>
-      
-      <!-- matches lenya/**.jpg -->
-      <map:match pattern="**.jpg">
-        <map:read src="resources/{1}.jpg" mime-type="image/jpeg" />
-      </map:match>
-      
-      <!-- matches lenya/**.gif -->
-      <map:match pattern="**.gif">
-        <map:read src="resources/{1}.gif" mime-type="image/gif" />
-      </map:match>
-      
-      <!-- matches lenya/**.png -->
-      <map:match pattern="**.png">
-        <map:read src="resources/{1}.png" mime-type="image/png" />
-      </map:match>
-      
-      <!-- matches lenya/**.ext -->
-      <map:match pattern="images/**.*">
-        <map:read src="resources/images/{1}.{2}" mime-type="image/{2}" />
-      </map:match>
-    </map:pipeline>
-    
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/module-resources.xmap b/trunk/src/webapp/lenya/module-resources.xmap
deleted file mode 100644
index 5877117..0000000
--- a/trunk/src/webapp/lenya/module-resources.xmap
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: resources-shared.xmap 349588 2005-11-29 02:07:44Z chestnut $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:components>
-    <map:transformers default="xslt">
-      <!-- temporary fix for bxe. should be reconsidered -->
-      <map:transformer name="proxy-rng" logger="lenya.sitemap.transformer.proxy"
-        src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer">
-        <transform namespace="http://relaxng.org/ns/structure/1.0" element="include" attribute="href"/>
-      </map:transformer>
-    </map:transformers>
-  </map:components>
-
-  <map:resources>
-    <map:resource name="proxy-css">
-      <map:generate type="text" src="{url}.css"/>
-      <map:transform type="pattern" src="fallback://lenya/chaperon/grammars/link.xlex"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
-      <map:serialize type="text" mime-type="text/css"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    <map:pipeline internal-only="true">
-      <map:match pattern="*/**.*">
-        <map:match type="regexp" pattern="(.*\.)(rng)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/xml"/>
-        </map:match> 
-      </map:match>
-    </map:pipeline>
-    <map:pipeline>
-      
-      <!-- matches modules/*/**.css -->
-      <map:match pattern="*/**.css">
-        <!-- Only called if a {3}.css exists because of resource-exists-enhanced before -->
-        <map:call resource="proxy-css">
-           <map:parameter name="url" value="fallback://lenya/modules/{1}/resources/{2}"/>
-         </map:call>
-      </map:match>
-
-      <!-- matches modules/*/**.js -->
-      <map:match pattern="*/**.js">
-        <map:read src="fallback://lenya/modules/{1}/resources/{2}.js" mime-type="application/x-javascript" />
-      </map:match>
-
-      <map:match pattern="*/**.xsl">
-        <map:read src="fallback://lenya/modules/{1}/resources/{2}.xsl" mime-type="application/xslt+xml"/>
-      </map:match>
-      
-      <!-- matches modules/*/**.* -->
-      <map:match pattern="*/**.*">
-        
-        <map:match type="regexp" pattern="(.*\.)(html|HTML|htm|HTM)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/html"/>
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(xml)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/xml"/>
-        </map:match>        
-        <map:match type="regexp" pattern="(.*\.)(rng)$">
-          <map:generate src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}"/>
-          <map:transform src="fallback://lenya/xslt/resources/translate-rng-includes.xsl">
-            <map:parameter name="publicationid" value="{page-envelope:publication-id}"/>
-          </map:transform>
-          <map:transform type="proxy-rng"/>
-          <map:serialize type="xml"/>
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/jpeg" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(gif|GIF|Gif)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/gif" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(png|PNG|Png)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/png" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(tar\.gz|tgz)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/x-gtar" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/pdf">
-            <!-- TODO: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 -->
-            <map:parameter name="byte-ranges" value="false"/>
-          </map:read>
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(doc|DOC|Doc|dot|DOT|Dot)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/msword" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(rtf|RTF|Rtf)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/rtf" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(txt|TXT|Txt|asc|ASC|Asc|ascii|ASCII|Ascii)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="text/plain" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(xls|XLS|Xls|xlt|XLT|Xlt)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/vnd.ms-excel" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(ppt|PPT|Ppt|pot|POT|Pot)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/vnd.ms-powerpoint" />
-        </map:match>  
-        <map:match type="regexp" pattern="(.*\.)(swf|SWF|Swf)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/x-shockwave-flash" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(tif|TIF|Tif)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="image/tiff" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(eps|EPS|Eps)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/postscript" />
-        </map:match>  
-        <map:match type="regexp" pattern="(.*\.)(m3u|M3U|M3u)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/x-mpegurl" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(kar|KAR|Kar|mid|MID|Mid)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="audio/midi" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(smf|SMF|Smf)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/vnd.stardivision.math" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(mp3|MP3|Mp3)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="audio/mpeg" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(swa|SWA|Swa)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="audio/x-swa" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(mpg|MPG|Mpg|mpv|MPV|Mpv|mp4|MP4|Mp4)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="video/mpeg" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(mov|MOV|Mov)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="video/quicktime" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(bin|BIN|Bin|hqx|HQX|Hqx)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/mac-binhex40" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(sea|SEA|Sea)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/sea" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(sit|SIT|Sit)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/x-stuffit" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(zip|ZIP|Zip)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/zip" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(pct|PCT|Pct|jmx|JMX|Jmx|jcl|JCL|Jcl|qz|QZ|Qz|jbc|JBC|Jbc|jmt|JMT|Jmt|cfg|CFG|Cfg)$"> 
-          <map:read src="fallback://lenya/modules/{../1}/resources/{../2}.{../3}" mime-type="application/x-ms-word" />
-        </map:match>                                                
-      </map:match>
-      
-      <!-- matches pub-id/area/**favicon.ico -->
-      <map:match pattern="*/**favicon.ico">
-        <map:read src="fallback://lenya/modules/{1}/resources/{2}favicon.ico" mime-type="application/ico"/>
-      </map:match>
-
-    </map:pipeline>
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/resources-shared.xmap b/trunk/src/webapp/lenya/resources-shared.xmap
deleted file mode 100644
index 6cb5214..0000000
--- a/trunk/src/webapp/lenya/resources-shared.xmap
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:resources>
-    <map:resource name="proxy-css">
-      <map:generate type="text" src="{url}.css"/>
-      <map:transform type="pattern" src="fallback://lenya/chaperon/grammars/link.xlex"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
-      <map:serialize type="text" mime-type="text/css"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    
-    <map:pipeline>
-      <!-- enable client side caching of resources -->
-      <map:parameter name="expires" value="{global:pipeline-expiration}"/>
-      
-      <!-- Lenya Publications -->
-      
-      <!-- only look for inherited css ex: default.css -> @import url(default.inherited.css); -->
-      <!-- matches pub-id/area/css/*.inherited.css -->
-      <map:match pattern="*/*/css/*.inherited.css">
-         <map:call resource="proxy-css">
-           <map:parameter name="url" value="template-fallback://resources/shared/css/{3}"/>
-         </map:call>
-      </map:match>
-      
-      <!-- matches pub-id/area/css/*.css -->
-      <map:match pattern="*/*/css/*.css">
-        <map:call resource="proxy-css">
-           <map:parameter name="url" value="fallback://resources/shared/css/{3}"/>
-         </map:call>
-      </map:match>
-
-      <!-- matches pub-id/area/javascript/**.inherited.js -->
-      <map:match pattern="*/*/javascript/**.inherited.js">
-        <map:read src="template-fallback://resources/shared/javascript/{3}.js" mime-type="application/x-javascript" />
-      </map:match>
-      
-      <!-- matches pub-id/area/javascript/**.js -->
-      <map:match pattern="*/*/javascript/**.js">
-        <map:read src="fallback://resources/shared/javascript/{3}.js" mime-type="application/x-javascript" />
-      </map:match>
-
-      <!-- matches pub-id/area/**.* -->
-      <map:match pattern="*/*/**.*">
-        <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="image/jpeg" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(gif|GIF|Gif)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="image/gif" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(png|PNG|Png)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="image/png" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(tar\.gz|tgz)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/x-gtar" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/pdf">
-            <!-- TODO: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 -->
-            <map:parameter name="byte-ranges" value="false"/>
-          </map:read>
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(doc|DOC|Doc|dot|DOT|Dot)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/msword" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(rtf|RTF|Rtf)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/rtf" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(txt|TXT|Txt|asc|ASC|Asc|ascii|ASCII|Ascii)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="text/plain" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(xls|XLS|Xls|xlt|XLT|Xlt)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/vnd.ms-excel" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(ppt|PPT|Ppt|pot|POT|Pot)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/vnd.ms-powerpoint" />
-        </map:match>  
-        <map:match type="regexp" pattern="(.*\.)(swf|SWF|Swf)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/x-shockwave-flash" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(tif|TIF|Tif)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="image/tiff" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(eps|EPS|Eps)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/postscript" />
-        </map:match>  
-        <map:match type="regexp" pattern="(.*\.)(m3u|M3U|M3u)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/x-mpegurl" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(kar|KAR|Kar|mid|MID|Mid)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="audio/midi" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(smf|SMF|Smf)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/vnd.stardivision.math" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(mp3|MP3|Mp3)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="audio/mpeg" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(swa|SWA|Swa)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="audio/x-swa" />
-        </map:match> 
-        <map:match type="regexp" pattern="(.*\.)(mpg|MPG|Mpg|mpv|MPV|Mpv|mp4|MP4|Mp4)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="video/mpeg" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(mov|MOV|Mov)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="video/quicktime" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(bin|BIN|Bin|hqx|HQX|Hqx)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/mac-binhex40" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(sea|SEA|Sea)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/sea" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(sit|SIT|Sit)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/x-stuffit" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(zip|ZIP|Zip)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/zip" />
-        </map:match>
-        <map:match type="regexp" pattern="(.*\.)(pct|PCT|Pct|jmx|JMX|Jmx|jcl|JCL|Jcl|qz|QZ|Qz|jbc|JBC|Jbc|jmt|JMT|Jmt|cfg|CFG|Cfg)$"> 
-          <map:read src="fallback://resources/shared/{../3}.{../4}" mime-type="application/x-ms-word" />
-        </map:match>                                                
-      </map:match>
-      
-      <!-- matches pub-id/area/**favicon.ico -->
-      <map:match pattern="*/*/**favicon.ico">
-        <map:read src="fallback://resources/shared/favicon.ico" mime-type="application/ico"/>
-      </map:match>
-
-    </map:pipeline>
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/resources.xmap b/trunk/src/webapp/lenya/resources.xmap
deleted file mode 100644
index 70f4131..0000000
--- a/trunk/src/webapp/lenya/resources.xmap
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <map:resources>
-    <map:resource name="proxy-css">
-      <map:generate type="text" src="{url}.css"/>
-      <map:transform type="pattern" src="fallback://lenya/chaperon/grammars/link.xlex"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
-      <map:transform type="proxy"/>
-      <map:transform src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
-      <map:serialize type="text" mime-type="text/css"/>
-    </map:resource>
-  </map:resources>
-  
-  <map:pipelines>
-    <map:pipeline>
-      <map:parameter name="expires" value="{global:pipeline-expiration}"/>
-      
-      <!-- Lenya Publications -->      
-          <!-- matches pub-id/area/css/*.css -->
-          <map:match pattern="*/*/css/*.css">
-            <map:call resource="proxy-css">
-              <map:parameter name="url"
-                value="fallback://resources/css/{3}"/>
-            </map:call>
-          </map:match>
-
-          <!-- matches pub-id/area/javascript/**.js -->
-          <map:match pattern="*/*/javascript/**.js">
-            <map:read src="fallback://resources/javascript/{3}.js" mime-type="application/x-javascript" />
-          </map:match>
-
-          <!-- matches pub-id/area/**.* -->
-          <map:match pattern="*/*/**.*">
-           <map:match type="regexp" pattern="(.*\.)(jpg|JPG|Jpg|jpeg|Jpeg|JPEG)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="image/jpeg" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(gif|GIF|Gif)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="image/gif" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(png|PNG|Png)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="image/png" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(tar\.gz|tgz)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/x-gtar" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/pdf">
-                <!-- TODO: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 -->
-                <map:parameter name="byte-ranges" value="false"/>
-              </map:read>
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(doc|DOC|Doc|dot|DOT|Dot)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/msword" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(rtf|RTF|Rtf)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/rtf" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(txt|TXT|Txt|asc|ASC|Asc|ascii|ASCII|Ascii)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="text/plain" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(xls|XLS|Xls|xlt|XLT|Xlt)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/vnd.ms-excel" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(ppt|PPT|Ppt|pot|POT|Pot)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/vnd.ms-powerpoint" />
-           </map:match>  
-           <map:match type="regexp" pattern="(.*\.)(swf|SWF|Swf)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/x-shockwave-flash" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(tif|TIF|Tif)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="image/tiff" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(eps|EPS|Eps)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/postscript" />
-           </map:match>  
-           <map:match type="regexp" pattern="(.*\.)(m3u|M3U|M3u)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/x-mpegurl" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(kar|KAR|Kar|mid|MID|Mid)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="audio/midi" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(smf|SMF|Smf)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/vnd.stardivision.math" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(mp3|MP3|Mp3)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="audio/mpeg" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(swa|SWA|Swa)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="audio/x-swa" />
-           </map:match> 
-           <map:match type="regexp" pattern="(.*\.)(mpg|MPG|Mpg|mpv|MPV|Mpv|mp4|MP4|Mp4)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="video/mpeg" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(mov|MOV|Mov)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="video/quicktime" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(bin|BIN|Bin|hqx|HQX|Hqx)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/mac-binhex40" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(sea|SEA|Sea)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/sea" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(sit|SIT|Sit)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/x-stuffit" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(zip|ZIP|Zip)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/zip" />
-           </map:match>
-           <map:match type="regexp" pattern="(.*\.)(pct|PCT|Pct|jmx|JMX|Jmx|jcl|JCL|Jcl|qz|QZ|Qz|jbc|JBC|Jbc|jmt|JMT|Jmt|cfg|CFG|Cfg)$"> 
-              <map:read src="fallback://resources/{../2}/{../3}.{../4}" mime-type="application/x-ms-word" />
-           </map:match>                                                
-          </map:match>
-
-    </map:pipeline>
-  </map:pipelines>
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/resources/css/admin.css b/trunk/src/webapp/lenya/resources/css/admin.css
deleted file mode 100644
index bcae780..0000000
--- a/trunk/src/webapp/lenya/resources/css/admin.css
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-@import url(default.css);
-@import url(navigation.css);
diff --git a/trunk/src/webapp/lenya/resources/css/antlog.css b/trunk/src/webapp/lenya/resources/css/antlog.css
deleted file mode 100644
index da9fd36..0000000
--- a/trunk/src/webapp/lenya/resources/css/antlog.css
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-    .lenya-ant-bannercell {
-      border: 0px;
-      padding: 0px;
-    }
-    
-    table.lenya-ant-status {
-      font:bold 80% arial,helvetica,sans-serif;
-      background-color:#525D76;
-      color:#ffffff;
-    }
-    
-    table.lenya-ant-log tr td,
-    table.lenya-ant-log tr th {
-      font-size: 80%;
-    }
-    .lenya-ant-error {
-      color:red;
-      background-color: transparent;
-    }
-    .lenya-ant-warn {
-      color:maroon;
-      background-color: transparent;
-    }
-    .lenya-ant-info {
-      color:gray;
-      background-color: transparent;
-    }
-    .lenya-ant-debug{
-      color:gray;
-      background-color: transparent;
-    }
-    .lenya-ant-failed {
-      font-size:80%;
-      background-color: red;
-      color:#FFFFFF;
-      font-weight: bold
-    }
-    .lenya-ant-complete {
-      font-size:80%;
-      background-color: #525D76;
-      color:#FFFFFF;
-      font-weight: bold
-    }
-    
-    .lenya-ant-a td { 
-      background: #efefef;
-      color: black;
-    }
-    
-    .lenya-ant-b td { 
-      background: #fff;
-      color: black;
-    }
-    
diff --git a/trunk/src/webapp/lenya/resources/css/boxes.css b/trunk/src/webapp/lenya/resources/css/boxes.css
deleted file mode 100644
index 5ad770d..0000000
--- a/trunk/src/webapp/lenya/resources/css/boxes.css
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-  div.lenya-box {
-  background: url('/modules/svg/tab-topLeft-5-DDDCCF-CCCCCC.png') left top no-repeat;
-  width: auto;
-  max-width: 100%;
-  font-size: small;
-  margin-bottom: 10px;
-  }
-  
-  div.lenya-box-title {
-  background: url('/modules/svg/tab-topRight-5-DDDCCF-CCCCCC.png') right top no-repeat;
-  border-bottom: solid 1px #CCCCCC;
-  color: Black;
-  font-weight: bold;
-  padding: 2px 10px;
-  white-space: nowrap;
-  }
-  
-  div.lenya-box-body {
-  }
-  
-  div.lenya-box-content {
-  padding: 10px;
-  color: Black;
-  background-color: #F5F4E9;
-  border-left: solid 1px #CCCCCC;
-  border-right: solid 1px #CCCCCC;
-  }
-  
-  div.lenya-box-bottom {
-  background: url('/modules/svg/tab-bottomLeft-5-F5F4E9-CCCCCC.png') left bottom no-repeat;
-  }
-  
-  div.lenya-box-bottom-content {
-  background: url('/modules/svg/tab-bottomRight-5-F5F4E9-CCCCCC.png') right bottom no-repeat;
-  height: 5px;
-  }
-  
-  span.switch {
-  width: 2em;
-  cursor: pointer;
-  background-color: #F5F4E9;
-  border: solid 1px #CCCCCC;
-  color: Black;
-  }
diff --git a/trunk/src/webapp/lenya/resources/css/default.css b/trunk/src/webapp/lenya/resources/css/default.css
deleted file mode 100644
index 72107f7..0000000
--- a/trunk/src/webapp/lenya/resources/css/default.css
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-@import url(antlog.css);
-@import url(forms.css);
-@import url(tables.css);
-@import url(menu.css);
-@import url(tabs.css);
-@import url(boxes.css);
-  
-body {
-    margin: 0px;
-    padding: 0px;
-    font-family: Verdana, sans-serif;
-}
-
-h1 {
-    font-size: 150%;
-    padding: 0px;
-    margin: 0px;
-}
-
-h2 { font-size: 120%; }
-h3 { font-size: 110%; }
-h4 { font-size: 100%; }
-h5 { font-size: 90%; }
-h6 { font-size: 80%; }
-
-p {
-    font-size: small;
-}
-
-li {
-    font-size: small;
-}
-
-code, source {
-    font-family: monospace;
-    font-size: 100%;
-}
-
-source {
-    padding: 1em;
-    background-color: #F5F4E9;
-    color: black;
-}
-
-h1 code, h2 code, h3 code, h4 code {
-    font-weight: bold;
-    font-size: 130%; /* hack! the "font-size:small" in the other elements needs to go. */
-}
-
-.lenya-header {
-    vertical-align: bottom;
-    padding-left: 30px;
-    background-color: White;
-    border-bottom: solid 1px #B1B1B1;
-    color: black;
-}
-
-.lenya-body {
-    width: 100%;
-    height: 100%;
-    background-color: #F5F4E9;
-    color: black;
-}
-
-.lenya-project-logo {
-    vertical-align: bottom;
-    text-align: right;
-    border-bottom: solid 1px #B1B1B1;
-}
-
-td.lenya-content {
-    background-color: White;
-    padding: 30px;
-    vertical-align: top;
-    color: black;
-}
-
-td.lenya-sidebar {
-    border-right: solid 1px #B1B1B1;
-    vertical-align: top;
-    width: 20%;
-}
-
-td.lenya-frontpage {
-    background-color: White;
-    padding: 30px;
-    vertical-align: top;
-    color: black;
-}
-
-.lenya-page-title {
-    font-size: 130%;
-    font-weight: bold;
-}
-
-div.lenya-error {
-    padding: 5px;
-    margin: 5px 0px;
-    background-color: #FF9999;
-}
-
-.lenya-page-subtitle {
-    background-color: #E5F5F8;
-    border-bottom: solid 1px #B1B1B1;
-    font-size: 70%;
-    font-weight: bold;
-    text-align: right;
-    padding: 5px;
-    color: black;
-}
-
-.lenya-publication-item, .lenya-publication-item-createpublication {
-    padding: 0px 10px;
-    margin: 20px 0px;
-}
-
-.lenya-publication-item {
-    border-bottom: solid 1px #DDDCCF;
-}
-
-.lenya-publication-item-createpublication {
-    margin-bottom: 2em;
-}
-
-.lenya-sidebar a {
-    text-decoration: none;
-}
-
-.lenya-sidebar ul {
-    margin: 10px 0px;
-    padding: 10px 0px 10px 20px;
-    list-style: none;
-}
-
-.lenya-sidebar li {
-    padding: 0px;
-    margin: 3px 0px;
-    border-bottom: solid 1px #DDDCCF;
-}
-
-.lenya-sidebar-heading {
-    font-weight: bold;
-    font-size: 150%;
-    color: White;
-    background-color: #DDDCCF;
-    padding: 0px 10px 5px 10px;
-}
-
-.lenya-admin-required {
-	color: Red;
-}
-.lenya-no-border{
-  border: none;
-}
-
-a.sortArrow {
-  color: black;
-  text-decoration: none;
-  font-size: 8pt;
-}
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/css/forms.css b/trunk/src/webapp/lenya/resources/css/forms.css
deleted file mode 100644
index ef60ae3..0000000
--- a/trunk/src/webapp/lenya/resources/css/forms.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-form {
-	margin: 0px;
-	padding: 0px;
-}
-
-td.lenya-entry-caption {
-	text-align: right;
-	color: #606060;
-	background-color: transparent;
-}
-
-td.lenya-entry-caption h2{
-	text-align: center;
-    font-size: medium;
-}
-
-.lenya-form-element {
-    width: 300px;
-    font-family: Verdana, sans-serif;
-}
-
-.lenya-form-element-narrow {
-    width: 150px;
-    font-family: Verdana, sans-serif;
-}
-
-.lenya-form-element-verynarrow {
-    width: 100px;
-    font-family: Verdana, sans-serif;
-}
-
-.lenya-form-message-error {
-    font-weight: bold;
-    color: red;
-	background-color: transparent;
-}
-
-.lenya-form-message-success {
-    font-weight: bold;
-    color: navy;
-	background-color: transparent;
-}
-
-textarea {
-    font-size: small;
-}
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/css/ie6hacksonly.css b/trunk/src/webapp/lenya/resources/css/ie6hacksonly.css
deleted file mode 100644
index e11c256..0000000
--- a/trunk/src/webapp/lenya/resources/css/ie6hacksonly.css
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-/* internet explorer 6 hacks
-   the hacks work around the quirks mode
-   it is in effect because ie 6 misinterprets 
-   the xml declaration */
-   
-/* font size fixes */   
-#lenya-info-treecanvas span {
-  font-size: 11px;
-}
-
-.lenya-tabs,
-.lenya-tablink,
-.lenya-tablink-active,
-.lenya-tab, 
-.lenya-tab-sitetree,
-table.lenya-table-noborder td, 
-table.lenya-table-noborder th,
-table.lenya-table-list th, 
-table.lenya-table-list td, 
-table.lenya-table-list-noborder th, 
-table.lenya-table-list-noborder td,
-div.lenya-box,
-p,
-.lenya-body p,
-li {
-  font-size: x-small;
-}
-
-.lenya-tab h1, 
-.lenya-tab-sitetree h1 {
-  font-size: small;
-}
-
-/* hacks for the broken box model */
-#contentblock1.lenya-tab {
-  margin-left: 160px;
-}
-
-.lenya-tabs {
-  width: 160px;
-}
-
-/* fix for some malpositioned svg rounded corners (bottom right) */
-div.lenya-box-bottom {
-  position: relative;
-  right: 2px;
-  background-position: 2px bottom;
-}
-
-#contentblock1 div.lenya-box-bottom {
-  right: 0;
-  background-position: left bottom; 
-}
-
-/* ie 6 does not understand min-width, this is a workaround 
-   sorry for not beeing standards compliant here 
-   possibly this hack needs the quirks mode */
-.lenya-tab, .lenya-tab-sitetree {
-  height: expression(body.offsetHeight>100?'400':'auto');
-}
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/css/menu.css b/trunk/src/webapp/lenya/resources/css/menu.css
deleted file mode 100644
index 98ea904..0000000
--- a/trunk/src/webapp/lenya/resources/css/menu.css
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-body { background-color: #fff; margin: 0; padding: 0; }
-
-#lenya-menus { position: absolute; top: 0; left: 0; z-index: 2; width: 100%; height: 57px; background: url(/lenya/menu/images/menu-background.gif) 0 0 repeat-x; }
-
-#lenya-logo { position: absolute; z-index: 3; width: 90px; height: 25px; top: 31px; left: 100%; margin-left: -90px; }
-
-#lenya-cmsbody { position: absolute; width: 100%; top: 57px; left: 0px; z-index: 1; }
-
-#lenya-areas { float: left; height: 25px; margin: 5px 0 0 10px; }
-
-#lenya-info { float: right; height: 20px; margin: 9px 10px 0 0; font-size: 11px; font-family: Arial, "Lucida Grande", Verdana, Helvetica, sans-serif; line-height: 1; }
-
-#lenya-options { padding: 9px 0 0 27px; clear: both; height: 31px; font-size: 11px; font-family: Arial, "Lucida Grande", Verdana, Helvetica, sans-serif; line-height: 1; }
-
-#lenya-options ul { list-style: none; margin: 0; padding: 0; }
-
-#lenya-options ul li { float: left; width: 85px; }
-
-#lenya-options ul li, #lenya-options ul li a { display: block; color: #333; font-size: 12px; text-decoration: none; font-weight: bold; cursor: pointer; }
-
-#lenya-options ul li ul { position: absolute; display: block; width: 12em; top: 56px; border: 1px solid #c6c6c5; background: #f1f1f1; padding: 7px; visibility: hidden; }
-
-#lenya-options ul li ul#menu1 { left: 20px; }
-
-#lenya-options ul li ul#menu2 { left: 105px; }
-
-#lenya-options ul li ul#menu3 { left: 190px; }
-
-#lenya-options ul li ul#menu4 { left: 275px; }
-
-#lenya-options ul li ul#menu5 { left: 360px; }
-
-#lenya-options ul li ul#menu6 { left: 445px; }
-
-#lenya-options ul li ul li { width: 12em; }
-
-#lenya-options ul li ul li.lenya-menu-separator { border-bottom: 1px dotted #c6c5c5; margin: 4px 0; font-size: 1px; height: 2px; width: 95%; }
-
-#lenya-options ul li ul li { padding: 0; }
-
-#lenya-options ul li ul li.disabled { font-size: 11px; font-weight: normal; color: #999; cursor: default; }
-#lenya-options li.disabled a { color: #999; cursor: default; }
-  
-#lenya-options ul li.disabled { cursor: default; color: #999; }
-
-#lenya-options ul li ul li a {
-  font-size: 11px; font-weight: normal; padding: 2px 0 2px 2px; margin-left: 11px;
-}
-#lenya-options ul li ul li a img { border: none; vertical-align: top; }
-
-#lenya-options ul li ul li a:hover { background: #fff; }
-
-#info-messages a {  color: #fff; }
-
-#info-messages a:visited {  color: #fff; }
-
-#lenya-areas ul { margin: 0; padding: 0; }
-
-#lenya-areas ul li { list-style: none; float: left; display: block; margin: 0 1px 0 0; }
-
-#lenya-areas ul li a { color: #454646; display: block; text-decoration: none; text-align: center; padding: 9px 9px 0 9px; height: 16px !important; height /**/: 25px; display: inline-block; }
-
-#lenya-areas ul li a span { font: bold 10px/1.0 Arial, Verdana, sans-serif; text-transform: uppercase; vertical-align: top; }
-
-#lenya-areas ul li.area-active a { color: #3975b3; background: url(/lenya/menu/images/active.gif) 0 0 repeat-x; }
-
-#lenya-areas ul li.area-inactive a { background: url(/lenya/menu/images/inactive.gif) 0 0 repeat-x; }
-
-#lenya-areas ul li.area-inactive a:hover { background-position: 0 -25px; }
-
-#lenya-info ul { margin: 0; padding: 0; }
-
-#lenya-info ul li { list-style: none; display: block; float: left; font-size: 11px; color: #fff; padding: 0 5px; border-right: 1px solid #fff; }
-
-#lenya-info ul li#info-time { border: 0; }
-
-#page { width: 100%; height: 100%; }
-
-#lenyaMenuPlaceholder {
-    background: url('/modules/menubar/images/indicator.gif') 20px 20px no-repeat;
-    border-bottom: 1px solid #c6c6c5;
-    height: 57px;
-}
diff --git a/trunk/src/webapp/lenya/resources/css/navigation.css b/trunk/src/webapp/lenya/resources/css/navigation.css
deleted file mode 100644
index dbb603a..0000000
--- a/trunk/src/webapp/lenya/resources/css/navigation.css
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-/* menu */
-
-#menu {
-	margin: 20px 0px;
-}
-
-#menu a {
-    text-decoration: none;
-}
-
-#menu a:hover {
-    text-decoration: underline;
-}
-
-#menu .menublock-1 {
-    padding: 5px 0px 5px 20px;
-    list-style: none;
-}
-
-#menu .menublock-selected-1 {
-    padding: 5px 0px 5px 20px;
-    list-style: none;
-}
-
-#menu .menublock-1 a { color: #909090; background-color: transparent;}
-#menu .menublock-1 a:visited { }
-
-#menu .menublock-1 .menublock-2 { display: none; }
-
-#menu .menublock-selected-1 .menuitem-1 { font-weight: bold; }
-
-#menu .menuitem-1 {
-    padding: 0px;
-    margin: 3px 0px;
-    border-bottom: solid 1px #DDDCCF;
-}
-
-#menu .menuitem-2 { padding-left: 20px; padding-top: 2px; padding-bottom: 2px; font-size: 70%; }
-#menu .menuitem-2 a { color: #9090C0; background-color: transparent;}
-#menu .menuitem-3 { padding-left: 30px; padding-right: .5em; padding-top: .2em; padding-bottom: .2em; font-size: 60%; }
-
-#menu .menuitem-selected-1 {
-	font-weight: bold;
-    padding: 0px;
-    margin: 3px 0px;
-    border-bottom: solid 1px #DDDCCF;
-}
-
-#menu .menuitem-selected-2 { padding-left: 20px; margin-top: 2px; margin-bottom: 2px; font-size: 70%; }
-#menu .menuitem-selected-3 { padding-left: 30px; font-size: 60%; padding-right: .5em; padding-top: .2em; padding-bottom: .2em; }
-
diff --git a/trunk/src/webapp/lenya/resources/css/tables.css b/trunk/src/webapp/lenya/resources/css/tables.css
deleted file mode 100644
index 3234e6a..0000000
--- a/trunk/src/webapp/lenya/resources/css/tables.css
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-
-table.lenya-table {
-	color: Black;
-	background-color: White;
-	border-spacing: 0px;
-	border-collapse: collapse;
-}
-
-table.lenya-table-noborder {
-	border: 0px;
-	border-spacing: 0px;
-}
-
-table.lenya-table th {
-  background-color: #DDDCCF;
-	border: solid 1px #CCCCCC;
-	color: Black;
-	font-weight: bold;
-	padding: 3px 10px;
-	text-align: left;
-	vertical-align: top;
-	font-size: small;
-}
-
-table.lenya-table td {
-  background-color: #F5F4E9;
-	border: solid 1px #CCCCCC;
-	padding: 3px 10px;
-	font-size: small;
-	color: Black;
-}
-
-table.lenya-table-noborder td, table.lenya-table-noborder th {
-	border: 0px;
-	padding: 3px 10px;
-	font-size: small;
-}
-
-table.lenya-table-noborder th {
-  vertical-align: top;
-  text-align: left;
-}
-
-table.lenya-table-noborder-nopadding td {
-	border: 0px;
-	padding: 0px;
-	font-size: small;
-}
-
-table.lenya-table-noborder-nopadding th {
-	font-size: small;
-}
-
-table.lenya-table-list {
-  border: 2px solid #CCCCCC;
-	border-spacing: 0px;
-	border-collapse: collapse;
-}
-
-table.lenya-table-list th,
-table.lenya-table-list td,
-table.lenya-table-list-noborder th,
-table.lenya-table-list-noborder td {
-  text-align: left;
-  vertical-align: top;
-  padding: 2px 2em 2px 5px;
-  border-bottom: solid 1px #CCCCCC;
-	font-size: small;
-}
-
-table.lenya-table-list th {
-  background-color: #DDDCCF;
-  color: Black;
-}
-
-table.lenya-table-list tr.highlight {
-  background-color: #DDDCCF;
-  color: Black;
-}
-
-table.lenya-table-list a,
-table.lenya-table-list-noborder a {
-  text-decoration: none;
-}
-
-table.lenya-table-list-noborder {
-	border-spacing: 0px;
-	border-collapse: collapse;
-}
-
-table.lenya-table-list-noborder th {
-  font-weight: normal;
-  color: #999999;
-}
-
-table.lenya-table-list-noborder td {
-  border-bottom: none;
-}
-
-table.lenya-table-list-noborder td.border {
-  border-bottom: solid 1px #CCCCCC;
-}
-
-table.lenya-table-list-noborder th,
-table.lenya-table-list-noborder td {
-  padding-left: 0px;
-}
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/css/tabs.css b/trunk/src/webapp/lenya/resources/css/tabs.css
deleted file mode 100644
index 0d29699..0000000
--- a/trunk/src/webapp/lenya/resources/css/tabs.css
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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.
-*/
-/* Styles for tabs in Site / Meta Area */
-
-.lenya-tab, .lenya-tab-sitetree {
-  font-family: verdana, sans-serif;
-  font-size: small;
-  background-color: #F5F4E9; 
-  color: black;
-  border: solid 1px #CCCCCC;
-  vertical-align: top;
-  padding: 0 20px 20px 20px;
-  width: inherit;
-  min-height: 400px;
-}
-
-.lenya-tab h1, .lenya-tab-sitetree h1 {
-  font-size: medium;
-  margin-bottom: 10px;
-  border-bottom: solid 1px #CCCCCC;
-  padding: 10px 0px 5px 0px;
-}
-
-.lenya-tab h2, .lenya-tab-sitetree h2 {
-  font-size: medium;
-}
-  
-#contentblock1.lenya-tab-sitetree {
-  position: absolute;
-  left: 30px;
-  margin-left: 410px; 
-}
-  
-#contentblock1.lenya-tab {
-  position: absolute;
-  left: 30px;
-  margin-left: 140px; 
-}
-
-#contentblock1 .lenya-box {
-  display: relative;
-}
-
-.lenya-tabs {
-  float: left;
-  vertical-align: top;
-  width: 140px;
-}
-
-#lenya-info-treecanvas .lenya-tabs {
-  width: 200px; 
-}
-
-#lenya-info-treecanvas .lenya-tablink,
-#lenya-info-treecanvas .lenya-tablink-active {
-  position: relative;
-  left: 0px;
-  top: 1px;
-  float: left;
-  margin: 0em .5em 0em 0em;
-  padding: 0em .5em;
-  border: solid 1px #CCCCCC;
-}
-
-#lenya-info-treecanvas .lenya-tablink {
-  background-color: #DDDCCF;
-}
-
-#lenya-info-treecanvas .lenya-tablink:hover {
-  text-decoration: none;
-}
-
-#lenya-info-treecanvas .lenya-tablink-active {
-  border-bottom: solid 1px #F5F4E9;
-}
-
-.lenya-tablink, .lenya-tablink-active {
-  position: relative;
-  left: 1px;
-  font-size: small;
-  display: block;
-  margin-bottom: .2em;
-  padding: .2em 1em .2em .3em;
-  text-decoration: none;
-  border: solid 1px #CCCCCC;
-  border-right: none;
-}
-
-.lenya-tablink {
-  color: #666666;
-  border: solid 1px white; 
-  border-right: solid 1px #CCCCCC;
-  background-color: white;
-}
-
-.lenya-tablink:hover {
-  text-decoration: underline;
-}
-
-.lenya-tablink-active {
-  color: black;
-  font-weight: normal;
-  background-color: #F5F4E9; 
-  z-index: 1;
-}
-
-#lenya-info-body {
-  padding: 20px;
-}
-
-#lenya-info-treecanvas {
-  font-size: 11px;
-  float: left;
-  padding-right: 20px;
-  width: 250px;
-}
-  
-#lenya-info-tree {
-  clear: left;
-  padding: 10px;
-  background-color: #F5F4E9; 
-  border: solid 1px #CCCCCC;
-  font-family: verdana,helvetica, sans-serif; 
-  text-decoration: none;
-  color: black;  
-}
-
-#lenya-info-tree span {
-  color: #333333;
-  text-decoration: none;
-  cursor: pointer;
-  /* float: left; */
-  display: block;
-  margin-left: 22px;
-}
-
-#lenya-info-tree div {
-}
-
-#lenya-info-treecanvas .lenya-info-root { cursor: default; }
-#lenya-info-treecanvas .lenya-info-area { font-weight: bold; }
-#lenya-info-treecanvas .lenya-info-nolanguage { color: #AAAAAA; }
-#lenya-info-treecanvas .lenya-info-cut { color: #FFAAAA; font-style: italic; }
-#lenya-info-treecanvas .lenya-info-cut img { opacity: .2; }
-#lenya-info-treecanvas .lenya-info-protected { color: #CC3333; }
-#lenya-info-treecanvas span:hover { text-decoration: underline; }
-#lenya-info-treecanvas span.lenya-info-root:hover { text-decoration: none; }
-
-#lenya-info-tree table { 
-  border-spacing: 0px;
-  border-collapse: collapse;
-}
-
-#lenya-info-tree td {
-  vertical-align: top;
-  margin: 0px;
-  padding: 0px; 
-}
-
-#lenya-info-tree td.lenya-info-label-td {
-  vertical-align: top;
-  margin: 0px;
-  padding: 0px 0px 0px 2px; 
-}
-
-#lenya-info-treecanvas .treenode_icon {
-  float: left;
-  padding-right: 5px;
-  vertical-align: middle;
-  background-color: #F5F4E9;
-  text-decoration: none;
-}
-#lenya-info-treecanvas .selected_node span { background-color: rgb(221, 220, 207); }
-#lenya-info-treecanvas .treenode_sign { vertical-align: top; padding: 0px; }
-
-#lenya-info-content {
-  clear: both;
-  float: left;
-/*  margin: 0px 20px; */
-  font-size: small;
-}
-
-.lenyaTabTitle, .lenyaTabTitleActive {
-  float: left;
-  margin: 0 .5em 0 0;
-}
-
-.lenyaTabTitleActive {
-  background: url('/modules/svg/tab-topLeft-5-DDDCCF-DDDCCF.png') left top no-repeat;
-}
-
-.lenyaTabTitleActive a {
-  background: url('/modules/svg/tab-topRight-5-DDDCCF-DDDCCF.png') right top no-repeat;
-}
-
-.lenyaTabTitle a, .lenyaTabTitleActive a {
-  padding: .1em .7em .1em .7em;
-  display: block;
-}
-
-.lenyaTabTitle {
-  cursor: pointer;
-  background: url('/modules/svg/tab-topLeft-5-BBBBBB-BBBBBB.png') left top no-repeat;
-}
-
-.lenyaTabTitle a {
-  background: url('/modules/svg/tab-topRight-5-BBBBBB-BBBBBB.png') right top no-repeat;
-}
-
-
-.lenyaTabBody {
-  display: none;
-}
-  
-.lenyaTabBodyActive {
-  clear: both;
-  background-color: #DDDCCF;
-  margin: 0 0 1em 0;
-  padding: 1em .7em;
-}
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/css/xulmenu.css b/trunk/src/webapp/lenya/resources/css/xulmenu.css
deleted file mode 100644
index 3407db5..0000000
--- a/trunk/src/webapp/lenya/resources/css/xulmenu.css
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-<css xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

-    

-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

-

-<!--

-    @import url("chrome://global/skin/");

--->

-

-window {  

- 

-}

-

-#lenya-xul-menubar vbox {

- background-color: inherit;

-}

-

-#lenya-info { 

- float: right; 

- margin: 9px 10px 0px 0px;

- font-size: 11px; 

- font-family: Arial, "Lucida Grande", Verdana, Helvetica, sans-serif; 

- line-height: 1; 

-}

-

-tabbox {

- padding-top: 3px;

- background-color: #ababab;

- color: #ffffff;

-}

-

-tab { 

- vertical-align: middle;

- font: bold 10px/1.0 Arial, Verdana, sans-serif; text-transform: uppercase; 

-}

-

-tabs {

- 

- margin-left: 3px;

-}

-

-description {

- 

-}

-

-

-</css>

diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui.xml
deleted file mode 100644
index 9e99afa..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui.xml
+++ /dev/null
@@ -1,420 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">Save</message>
-  <message key="Submit">Submit</message>
-  <message key="Cancel">Cancel</message>
-  <message key="Delete">Delete</message>
-  <message key="NOTE">Note</message>
-  <message key="No referer">No referer</message>
-  <message key="Referer">Referer</message>
-  <message key="EXCEPTION">EXCEPTION</message>  
-  <message key="User">User</message>
-  <message key="live">live</message>
-  <message key="not live">not live</message>
-  <message key="authoring">authoring</message>
-  <message key="Authoring">Authoring</message>
-  <message key="review">review</message>
-  <message key="user">user</message>
-  <message key="Users">Users</message>
-  <message key="group">group</message>
-  <message key="Group">Group</message>
-  <message key="Groups">Groups</message>
-  <message key="Group ID">Group ID</message>
-  <message key="Yes">Yes</message>
-  <message key="No">No</message>
-  <message key="Description">Description</message>
-  <message key="Name">Name</message>
-  <message key="Full Name">Full Name</message>
-  <message key="required fields">required fields</message>
-  <message key="Search">Search</message>
-  <message key="Home">Home</message>
-  <message key="Title">Title</message>
-  <message key="Last modified">Last&#160;modified</message>
-  <message key="Overview">Overview</message>
-  <message key="Role">Role</message>
-  <message key="View">View</message>
-  <message key="Assets">Assets</message>
-  <message key="true">yes</message>
-  <message key="false">no</message>
-  <message key="Rename">Rename</message>
-  <message key="Modify">Modify</message>
-  <message key="Document">Document</message>
-  <message key="Date">Date</message>
-  <message key="Back">Back</message>
-  <message key="Add">Add</message>
-  <message key="Create">Create</message>
-  <message key="create-document">Create this document</message>
-  <message key="The Archive">Archive</message>
-  <message key="Trash">Trash</message>
-  <message key="Publisher">Publisher</message>
-  <message key="Navigation Title">Navigation Title</message>
-  <message key="Creator">Creator</message>
-  <message key="Language">Language</message>
-  <message key="Subject">Subject</message>
-  <message key="Rights">Rights</message>
-  <message key="Select File">Select File</message>
-  <message key="select-object">Select {0}</message>
-  <message key="Insert">Insert</message>
-  <message key="Insert File">Insert File</message>
-  <message key="upload-with-invalid-extension">You tried to upload a file with an invalid extension. Valid extensions are{0}. Note that extensions need to be in lowercase.</message>
-  <message key="upload-with-missing-title">You tried to upload a file without a title.</message>
-  <message key="filename-format-exception">The file name of the file you are trying to upload either has no extension, or contains characters which are not allowed, such as spaces or umlauts.</message>
-  <message key="Creation Date">Creation Date</message>
-  <message key="File Size">File Size</message>
-  <message key="Image">Image</message>
-  <message key="Link">Link</message>
-  <message key="Caption">Caption</message>
-  <message key="Height">Height</message>
-  <message key="Width">Width</message>
-  <message key="All rights reserved">All rights reserved.</message>
-  <message key="show">&#160;+&#160;</message>
-  <message key="hide">&#160;-&#160;</message>
-  <message key="Publication">Publication</message>
-  <message key="Publications">Publications</message>
-  <message key="... Publication">{0} Publication</message>
-  <message key="This Publication">This&#160;Publication</message>
-  <message key="Login as Editor">Login&#160;for&#160;authoring</message>
-  <message key="Live View">Live&#160;View</message>
-  <message key="Other Publications">Other&#160;Publications</message>
-  
-
-  <!-- publish screen -->     
-  <message key="Publish">Publish</message>  
-  <message key="Source File(s)">Source File(s)</message>
-
-  <!-- login screen -->
-  <message key="login-to-pub">Login to the {0} Publication</message>
-  <message key="Login">Login</message>
-  <message key="Password">Password</message>
-  <message key="Username">Username</message>
-  <message key="Authentication failed">Authentication failed</message>
-  <message key="try-user-lenya-alice">Try user {0} and password {1} (editor), or user {2} and password {3} (reviewer)</message>
-  <message key="try-user-lenya">Try user {0} and password {1}</message>
-  <message key="Access Denied">Access Denied</message>
-  <message key="user-not-authorized">The user '{0}' is not authorized to access the page '{1}'.</message>
-  <message key="have-another-account">If you have another user account with the corresponding privileges, please provide user name and password below.</message>
-
-  <!-- logout screen -->
-  <message key="logout-from-pub">Logout from the {0} Publication</message>
-  <message key="Your History">Your History</message>
-  <message key="Login to Authoring Area">Login to Authoring Area</message>
-
-  <!-- cms menu -->
-  <message key="New Document">New Document</message>
-  <message key="New ... Document">New {0} Document</message>
-  <message key="New Language Version">New Language Version</message>
-  <message key="Remove Language Version">Remove Language Version</message>
-  <message key="File">File</message>  
-  <message key="Edit">Edit</message>
-  <message key="Workflow">Workflow</message>
-  <message key="Deactivate">Deactivate</message>
-  <message key="Schedule">Schedule</message>
-  <message key="Copy">Copy</message>  
-  <message key="Paste">Paste</message>
-  <message key="Cut">Cut</message>
-  <message key="Help">Help</message>
-  <message key="Debug">Debug</message>
-  <message key="Delete">Delete</message>
-  <message key="Archive">Archive</message>
-  <message key="Restore">Restore</message>
-  <message key="Move Up">Move Up</message>
-  <message key="Move Down">Move Down</message>
-  <message key="Logout">Logout</message>
-  <message key="View Task Logs">View Task Logs</message>
-  <message key="Support">Support</message>
-  <message key="Documentation">Documentation</message>
-  <message key="System Documentation">System Documentation</message>
-  <message key="User Documentation">User Documentation</message>
-  <message key="About Apache Lenya">About Apache Lenya</message>
-  <message key="Apache Lenya Homepage">Apache Lenya Homepage</message>
-  <message key="With Kupu">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(Kupu)
-  </message>
-  <message key="With BXE">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(BXE)
-  </message>
-  <message key="With one Form">With one Form</message>
-  <message key="With Forms">With Forms</message>
-  <message key="Edit Metadata">Edit&#160;Metadata</message>
-  <message key="Edit Navigation Title">Edit&#160;Navigation&#160;Title</message>
-  <message key="Visible in Navigation">Visible in Navigation</message>
-  <message key="Rename URL">Rename&#160;URL</message>
-  
-  <!-- cms tabs -->
-  <message key="Server Time">Server Time</message>  
-  <message key="Workflow State">Workflow State</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">Administration</message>
-  <message key="really-delete?">Really delete {0}?</message>
-  <message key="Do you really want to delete the trash ?">Do you really want to delete the trash ?</message>
-  <message key="delete-object">Delete {0}</message>
-  <message key="delete-object?">Do you really want to delete {0}?</message>
-  <message key="Passwd">Passwd</message>
-  <message key="Switch User">Switch User</message>
-  <message key="Delete Trash">Delete Trash</message>
-  <message key="Cocoon and Server Status">Cocoon and Server Status</message>
-  
-    <!-- Group Administration -->
-  <message key="Profile">Profile</message>
-  <message key="Members">Members</message>
-  <message key="IP Ranges">IP&#160;Ranges</message>
-  <message key="Edit Profile">Edit Profile</message>
-  <message key="Edit Members">Edit Members</message>
-  <message key="Group Administration">Group Administration</message>
-  <message key="Add Group">Add Group</message>
-  <message key="Group Data">Group Data</message>
-  <message key="group_no_such_entry">The group {0} does not exist.</message>
-
-    <!-- User Administration -->
-  <message key="User Data">User&#160;Data</message>
-
-  <message key="CMS User ID">CMS&#160;User&#160;ID</message>
-  <message key="LDAP ID">LDAP&#160;ID</message>
-  <message key="Confirm password">Confirm&#160;password</message>
-  <message key="Add User">Add User</message>
-  <message key="User Administration">User Administration</message>
-  <message key="User Details">User Details</message>
-  <message key="All Groups">All Groups</message>
-  <message key="User Groups">User Groups</message>
-  <message key="Group Affiliation">Group Affiliation</message>
-  <message key="Change Password">Change Password</message>
-  <message key="Edit Group Affiliation">Edit Group Affiliation</message>
-  <message key="user_no_such_user">The user {0} does not exist.</message>
-  <message key="ldap_no_such_user">The user {0} does not exist in the LDAP directory.</message>
-
-    <!-- User Types -->
-  <message key="LDAP User">LDAP User</message>
-  <message key="Local User">CMS User</message>
-  
-    <!-- Role Administration -->
-  <message key="role_no_such_role">The role {0} does not exist.</message>
-
-    <!-- IP Range Administration -->
-  <message key="IP Range">IP&#160;Range</message>
-  <message key="IP Range ID">IP&#160;Range&#160;ID</message>
-  <message key="Network Address">Network&#160;Address</message>
-  <message key="Subnet Mask">Subnet&#160;Mask</message>
-  <message key="IP Range Administration">IP&#160;Range&#160;Administration</message>
-  <message key="Add IP Range">Add&#160;IP&#160;Range</message>
-  <message key="IP Range Profile">IP&#160;Range&#160;Profile</message>
-  
-  <!-- Site Overview -->
-  <message key="filterResourceType">Resource Type</message>
-  <message key="filterWorkflowState">Workflow State</message>
-  <message key="filterLanguage">Language</message>
-  <message key="filterLastModified">Last Modification</message>
-  <message key="filterDocumentId">Document ID</message>
-  <message key="keyResourceType">Resource Type</message>
-  <message key="keyWorkflowState">Workflow State</message>
-  <message key="keyLanguage">Language</message>
-  <message key="keyLastModified">Last Modified</message>
-  <message key="keyPath">Path</message>
-  <message key="keyCheckedOut">Checked Out By</message>
-  <message key="Update">Update</message>
-  
-  <!-- Site tab (info screens) -->
-  <message key="Available Languages">Available Languages</message>
-  <message key="This document is not available in this language.">This document is not available in this language.</message>
-  <message key="Document ID">Document ID</message>
-  <message key="Versions">Versions</message>
-  <message key="SSL Encryption">SSL&#160;Encryption</message>
-  <message key="Rollback to this version">Rollback to this version</message>
-  <message key="AC Archive">AC&#160;Archive</message>
-  <message key="AC Trash">AC&#160;Trash</message>
-  <message key="AC Auth">AC&#160;Auth</message>
-  <message key="AC Live">AC&#160;Live</message>
-  <message key="Scheduler">Scheduler</message>
-
-    <!-- Info screen actions-->
-  <message key="New Navigation Title">New Navigation Title</message>
-  <message key="Rename Document">Rename Document</message>
-  <message key="New Document ID">New Document ID</message>
-  <message key="No whitespace, no special characters">No whitespace, no special characters</message>
-      <!-- Scheduler -->
-  <message key="No active jobs">No active jobs.</message>
-  <message key="The job date has expired">The job date has expired.</message>
-  <message key="check the log files">check the log files</message>
-  <message key="Task">Task</message>
-  <message key="Day">Day</message>
-  <message key="Time">Time</message>
-
-      <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">The following documents have links to this document</message>
-  <message key="Delete Document">Delete Document</message>
-  <message key="delete-doc">Delete document {0}</message>
-  <message key="cannot-deactivate-unless-children-deactivated">This document cannot be deactivated unless the following child documents are deactivated</message>
-  <message key="delete-language-versions?">Do you really want to delete all language versions of the document {0}?</message>      
-  <message key="delete-doc-live">Cannot delete because document {0} is live!</message>
-
-      <!-- Archive document -->
-  <message key="Archive Document">Archive Document</message>
-  <message key="archive-doc">Archive document {0}</message>
-  <message key="archive-doc?">Do you really want to archive the document {0}?</message>
-      <!-- Restore document -->
-  <message key="Restore Document">Restore Document</message>
-  <message key="restore-doc">Restore document {0}</message>
-  <message key="restore-doc?">Do you really want to restore the document {0}?</message>
-      <!-- Rename document -->
-  <message key="Rename Document">Rename Document</message>
-  <message key="rename-doc">Rename document {0}</message>
-  <message key="rename-label-doc">Change navigation title of document {0}</message>
-      <!-- Copy document -->
-  <message key="Copy Document">Copy Document</message>
-  <message key="copy-doc-to-clip?">
-    Do you want to copy the document <xhtml:q>{0}</xhtml:q> and its descendants to the clipboard?
-    You can paste the subtree later at the location of your choosing.
-  </message>
-      <!-- Paste document -->
-  <message key="Paste Document">Paste Document</message>
-  <message key="paste-doc-from-clip?">Do you want to paste the document <xhtml:q>{0}</xhtml:q> from the clipboard?</message>
-
-      <!-- Cut document -->
-  <message key="Cut Document">Cut Document</message>
-  <message key="cut-doc-to-clip?">
-    Do you want to cut the document <xhtml:q>{0}</xhtml:q> and its descendants and move it to the clipboard?
-    You can paste the subtree later at the location of your choosing.
-  </message>
-
-  <!-- Workflow  --> 
-  <message key="Value">Value</message>
-  <message key="Event">Event</message>
-  <message key="Variables">Variables</message>
-  <message key="History">History</message>
-  <message key="State">State</message>   
-  <message key="IP Address">IP Address</message>   
-  <message key="edit">edit</message>
-  <message key="submit">submit</message>
-  <message key="reject">reject</message>
-  <message key="publish">publish</message>
-  <message key="delete">delete</message>
-  <message key="archive">archive</message>
-  <message key="restore">restore</message>
-  <message key="error-workflow-document">The event {0} is not executable on document "{1}"</message>
-  
-  <!-- Notification -->
-  <message key="notification-message">Lenya Notification</message>
-  <message key="document-published">A document you submitted was published: {0}</message>
-  <message key="document-submitted">A document has been submitted for you to review: {0}</message>
-  <message key="document-rejected">A document you submitted was rejected for the following reason: {0}, {1}</message>
-  
-  <!-- areas -->
-  <message key="authoring-area">Authoring</message>
-  <message key="live-area">Live</message>
-  <message key="archive-area">Archive</message>
-  <message key="trash-area">Trash</message>
-  <message key="staging-area">Staging</message>
-
-  <!-- Info asset  --> 
-  <message key="New Asset">New Asset</message>
-  
-  <!-- Info meta -->
-  <message key="Custom metadata">Custom metadata</message>
-  <message key="Show custom metadata">Show custom metadata</message>
-  <message key="Hide custom metadata">Hide custom metadata</message>
-  
-  <!-- Info RC  --> 
-  <message key="Current Version">Current Version</message>
-  <message key="Rollback to this revision">Rollback to this revision</message>
-
-  <!-- Info AC  --> 
-  <message key="SSL Encryption">SSL&#160;Encryption</message>
-  <message key="Access Object">Access&#160;Object</message>
-  <message key="visit">visit</message>
-  <message key="reviewer">reviewer</message>
-  <message key="editor">editor</message>
-  <message key="admin">admin</message>
-  <message key="world">world</message>
-  <message key="the world">the world</message>
-  
-  <!-- Scheduler --> 
-  <message key="New job">New&#160;job</message>
-  <message key="Active jobs">Active&#160;jobs</message>
-  <message key="Publish and Export">Publish and&#160;Export</message>
-  <message key="doc-has-links-to-unpublished">This document has links to the following unpublished documents:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">Please check the following possible causes of the exception.</message>   
-  <message key="exception.cause.createdoc.whitespace-in-id">The id is not allowed to have whitespaces</message>
-  <message key="exception.cause.createdoc.id-in-use">The id is already in use</message>   
-  <message key="failmessage.createdoc.invalidformat">Please enter a valid value in the ID field. A-Z, a-z, 0-9 or - are valid characters.</message>
-  <message key="failmessage.createdoc.required">Please input all required (*)  values.</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="lenya.assetupload.subtitle">Add to Asset Library</message>
-  <message key="Asset Library">Asset Library</message>
-  <message key="No assets available">No assets available</message>
-  <message key="Insert Asset">Insert Asset</message>
-  
-  <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">Insert Image</message>
-  <message key="lenya.imageupload.selectimage.label">Select Image</message>
-  <message key="lenya.imageupload.info.noimages">No images available.</message>  
-  <message key="lenya.imageupload.links.hint">External links have to start with 'http://', internal links have to start with '/'</message>  
-
-  <!-- Revision Controller -->
-  <message key="Reason">Reason</message>
-  <message key="Filename">File name</message>
-  <message key="lenya.rc.nocheckout">Resource could not be checked out</message>
-  <message key="lenya.rc.checkedoutalready">The resource has already been checked out by another user</message>
-  <message key="lenya.rc.nocheckin">Resource could not be checked in</message>
-  <message key="Generic Exception">Generic Exception</message>
-  <message key="Check the log files.">Check the log files.</message>
-  
-  <!--
-  Publication templating. Can't go in the module yet, since module
-  i18n is only supported in publications.
-  -->
-  <message key="create-publication">Create publication</message>
-  <message key="Create Publication from Template">Create Publication from Template</message>
-  <message key="Publication ID">Publication ID</message>
-  <message key="Publication Name">Publication Name</message>
-  <message key="Template">Template</message>
-  
-  <!-- Error messages of a general nature -->
-  <message key="error-document-form">Document is not well-formed: {0}</message>
-  <message key="error-validation">Schema validation failed: {0}</message>
-  <message key="error-missing-language">The requested document is not available for language: {0}</message>
-  <message key="error-document-existance-short">Document does not exist</message>
-  <message key="error-document-existance">The requested document {0} does not exist.</message>
-  <message key="error-generic">An error occured.</message>
-  <message key="error-404">404: Page not found</message>
-  
-  <message key="publication-does-not-exist">The publication does not exist</message>
-  <message key="publication-...-does-not-exist">The publication with the ID "{0}" does not exist.</message>
-  
-  <message key="configure-content-repository">
-    <xhtml:strong>Note:</xhtml:strong> Make sure that your content repository
-    is configured correctly within <xhtml:code>$PUB_HOME/config/(local.)publication.xml</xhtml:code>.
-  </message>
-  
-  <!-- Document meta data -->
-  <message key="http://apache.org/lenya/metadata/document/1.0">Document</message>
-  <message key="contentType">Content type</message>
-  <message key="expires">Expires after</message>
-  <message key="extension">Extension</message>
-  <message key="mimeType">MIME type</message>
-  <message key="resourceType">Resource type</message>
-  
-</catalogue>
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_de.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_de.xml
deleted file mode 100644
index 65c80ec..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_de.xml
+++ /dev/null
@@ -1,433 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">Speichern</message>
-  <message key="Submit">Einreichen</message>
-  <message key="Cancel">Abbrechen</message>
-  <message key="Delete">Löschen</message>
-  <message key="NOTE">Hinweis</message>
-  <message key="No referer">Keine Rückverweiseite</message>  
-  <message key="Referer">Rückverweis</message>
-  <message key="EXCEPTION">AUSNAHME</message>  
-  <message key="User">Benutzer</message>
-  <message key="live">live</message>
-  <message key="not live">nicht live</message>
-  <message key="authoring">Bearbeitung</message>
-  <message key="Authoring">Bearbeitung</message>
-  <message key="review">Freigabe</message>
-  <message key="trash">Papierkorb</message>
-  <message key="archive">Archiv</message>
-  <message key="user">Benutzer</message>
-  <message key="Users">Benutzer</message>  
-  <message key="User Profile">Benutzerprofil</message>  
-  <message key="Edit User Profile">Benutzerprofil bearbeiten</message>  
-  <message key="Default Menu Locale">Bevorzugte Menü-Sprache</message>  
-  <message key="Default Document Locale">Bevorzugte Dokumenten-Sprache</message>  
-  <message key="Group Profile">Gruppenprofil</message>  
-  <message key="Edit Group Profile">Gruppenprofil bearbeiten</message>  
-  <message key="group">Gruppe</message>
-  <message key="Group">Gruppe</message>
-  <message key="Groups">Gruppen</message>
-  <message key="Group ID">Gruppen-ID</message>
-  <message key="Yes">Ja</message>
-  <message key="No">Nein</message>
-  <message key="Description">Beschreibung</message>
-  <message key="Name">Name</message>
-  <message key="Full Name">Vor-&#160;und&#160;Nachname</message>
-  <message key="required fields">Pflichtfelder</message> 
-  <message key="Search">Suche</message>
-  <message key="Home">Startseite</message>
-  <message key="Title">Titel</message>
-  <message key="Last modified">Letzte&#160;Änderung</message>
-  <message key="Overview">Übersicht</message>  
-  <message key="Revisions">Revisionen</message>  
-  <message key="Role">Rolle</message>
-  <message key="View">Anzeigen</message>
-  <message key="Assets">Anlagen</message>
-  <message key="true">ja</message>
-  <message key="false">nein</message>
-  <message key="Rename">Umbenennen</message>
-  <message key="Modify">Ändern</message>
-  <message key="Document">Dokument</message>
-  <message key="Date">Datum</message>
-  <message key="Back">Zurück</message>
-  <message key="Add">Hinzufügen</message>
-  <message key="Create">Erstellen</message>
-  <message key="create-document">Dieses Dokument erstellen</message>
-  <message key="The Archive">Archiv</message>
-  <message key="Trash">Papierkorb</message>
-  <message key="Publisher">Herausgeber</message>
-  <message key="Navigation Title">Navigationstitel</message>
-  <message key="Creator">Ersteller</message>
-  <message key="Language">Sprache</message>
-  <message key="Subject">Betrifft</message>
-  <message key="Rights">Rechte</message>
-  <message key="Select File">Datei wählen</message>
-  <message key="select-object">{0}&#160;auswählen</message>
-  <message key="Insert">Einfügen</message>
-  <message key="Insert File">Datei einfügen</message>
-  <message key="upload-with-invalid-extension">Es dürfen nur Dateien mit folgenden Endungen hochgeladen werden{0}. Die Endung muss zudem klein geschrieben sein.</message>
-  <message key="upload-with-missing-title">Dateien müssen einen Titel haben.</message>
-  <message key="filename-format-exception">Der Name der gewählten Datei enthält Umlaute, Leerzeichen, unerlaubte Zeichen oder besitzt keine gültige Endung.</message>
-  <message key="Creation Date">Erstelldatum</message>
-  <message key="File Size">Dateigrösse</message>
-  <message key="Image">Bild</message>
-  <message key="Link">Verweis</message>
-  <message key="Caption">Überschrift</message>
-  <message key="All rights reserved">Alle Rechte vorbehalten.</message>
-  <message key="show">&#160;+&#160;</message>
-  <message key="hide">&#160;-&#160;</message>
-  <message key="Height">Höhe</message>
-  <message key="Width">Breite</message>
-  <message key="Publication">Publikation</message>
-  <message key="Publications">Publikationen</message>
-  <message key="... Publication">{0}-Publikation</message>
-  <message key="This Publication">Diese&#160;Publikation</message>
-  <message key="Login as Editor">Im&#160;System&#160;anmelden</message>
-  <message key="Live View">Live-Ansicht</message>
-  <message key="Other Publications">Andere&#160;Publikationen</message>
-  
-
-  <!-- publish screen --> 
-  <message key="Publish">Veröffentlichen</message>    
-  <message key="Source File(s)">Quelldatei(en)</message>
-  <message key="publish complete subtree">den gesamten Teilbaum veröffentlichen</message>
-   
-  <!-- logn screen -->        
-  <message key="login-to-pub">Anmelden an der {0}-Publikation</message>    
-  <message key="Login">Anmelden</message>
-  <message key="Password">Passwort</message>    
-  <message key="Username">Benutzername</message>                
-  <message key="Authentication failed">Anmeldung ist fehlgeschlagen</message>  
-  <message key="try-user-lenya-alice">Versuchen Sie Benutzername {0} und Passwort {1} (Bearbeiter), oder Benutzername {2} und Passwort {3} (Prüfer)</message>
-  <message key="try-user-lenya">Versuchen Sie Benutzername {0} und Passwort {1}</message>
-  <message key="Access Denied">Zugriff verweigert</message>
-  <message key="user-not-authorized">Der Benutzer '{0}' ist nicht berechtigt, auf die Seite '{1}' zuzugreifen.</message>
-  <message key="have-another-account">Wenn Sie ein weiteres Benutzerkonto mit den entsprechenden Berechtigungen haben, geben Sie bitte Benutzernamen und Passwort unten ein.</message>
-
-  <!-- logout screen -->
-  <message key="logout-from-pub">Abmelden von der {0} Publikation</message>
-  <message key="Your History">Ihr Verlauf</message>
-  <message key="Login to Authoring Area">An Autorenbereich anmelden</message>
-
-  <!-- cms menu -->
-  <message key="New Document">Neues Dokument</message>
-  <message key="New ... Document">Neues {0}-Dokument</message>
-  <message key="New Language Version">Neue Sprachversion</message>
-  <message key="Remove Language Version">Sprachversion löschen</message>
-  <message key="File">Datei</message>  
-  <message key="Edit">Bearbeiten</message>
-  <message key="Workflow">Arbeitsfluss</message>
-  <message key="Deactivate">Deaktivieren</message>
-  <message key="Schedule">Zeitsteuerung</message>  
-  <message key="Copy">Kopieren</message>  
-  <message key="Paste">Einfügen</message>
-  <message key="Cut">Ausschneiden</message>
-  <message key="Help">Hilfe</message>
-  <message key="Debug">Debug</message>
-  <message key="Delete">Löschen</message>
-  <message key="Archive">Archivieren</message>
-  <message key="Restore">Wiederherstellen</message>
-  <message key="Move Up">Nach oben</message>
-  <message key="Move Down">Nach unten</message>
-  <message key="Logout">Abmelden</message>
-  <message key="View Task Logs">Aufgabenberichte</message>
-  <message key="Support">Support</message>
-  <message key="Documentation">Dokumentation</message>
-  <message key="System Documentation">Systemdokumentation</message>
-  <message key="User Documentation">Benutzerdokumentation</message>
-  <message key="About Apache Lenya">Über Apache Lenya</message>
-  <message key="Apache Lenya Homepage">Apache Lenya Startseite</message>
-  <message key="With Kupu">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>-Editor&#160;(Kupu)
-  </message>
-  <message key="With BXE">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>-Editor&#160;(BXE)
-  </message>
-  <message key="With one Form">Mit Formulareditor</message>
-  <message key="With Forms">Mit Formwizard</message>
-  <message key="Edit Metadata">Metadaten bearbeiten</message>
-  <message key="Edit Navigation Title">Navigationstitel bearbeiten</message>
-  <message key="Visible in Navigation">Sichtbar in Navigation</message>
-  <message key="Rename URL">URL&#160;umbenennen</message>
-
-  <!-- cms tabs -->
-  <message key="Server Time">Serverzeit</message>  
-  <message key="Workflow State">Status</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">Administration</message>
-  <message key="really-delete?">{0} wirklich löschen ?</message>
-  <message key="Do you really want to delete the trash ?">Wollen Sie den Papierkorb wirklich leeren ?</message>
-  <message key="delete-object">{0} löschen</message>
-  <message key="delete-object?">Wollen Sie {0} wirklich löschen ?</message>  
-  <message key="Passwd">Passwort ändern</message>
-  <message key="Switch User">Benutzer wechseln</message>
-  <message key="Delete Trash">Papierkorb leeren</message>
-  <message key="Cocoon and Server Status">Cocoon- und Serverstatus</message>
-  
-    <!-- Group Administration -->
-  <message key="Profile">Profil</message>  
-  <message key="Members">Mitglieder</message>
-  <message key="IP Ranges">IP&#160;Bereiche</message>
-  <message key="Edit Profile">Profil&#160;ändern</message>
-  <message key="Edit Members">Mitglieder&#160;bearbeiten</message>
-  <message key="Group Administration">Gruppenadministration</message>
-  <message key="Add Group">Gruppe hinzufügen</message>
-  <message key="Group Data">Gruppendetails</message>
-  
-    <!-- User Administration -->
-  <message key="User Data">Benutzerdetails</message>
-  <message key="User ID">Benutzer</message>
-  <message key="CMS User ID">CMS&#160;Benutzer</message>
-  <message key="LDAP ID">LDAP&#160;ID</message>
-  <message key="Confirm password">Passwort&#160;bestätigen</message>
-  <message key="Add User">Benutzer hinzufügen</message>
-  <message key="User Administration">Benutzeradministration</message>
-  <message key="User Details">Benutzerdetails</message>
-  <message key="All Groups">Alle Gruppen</message>
-  <message key="User Groups">Benutzergruppen</message>
-  <message key="Group Affiliation">Gruppenmitgliedschaften</message>
-  <message key="Change Password">Passwort ändern</message>
-  <message key="Old Password">Bestehendes Passwort</message>
-  <message key="New Password">Neues Passwort</message>
-  <message key="Confirm Password">Passwort bestätigen</message>
-  <message key="Edit Group Affiliation">Mitgliedschaften ändern</message>
-  
-  <!-- IP Range Administration -->
-  <message key="IP Range">IP-Bereich</message>
-  <message key="IP Range ID">IP-Bereichs-ID</message>
-  <message key="Network Address">IP-Adresse</message>
-  <message key="Subnet Mask">Netzwerkmaske</message>
-  <message key="IP Range Administration">IP Administration</message>
-  <message key="Add IP Range">IP-Bereich&#160;hinzufügen</message>
-  <message key="IP Range Profile">IP-Bereichs-Profil</message>
-
-  <!-- User Types -->
-  <message key="LDAP User">LDAP User</message>
-  <message key="Local User">CMS User</message>
-
-  <!-- Site Overview -->
-  <message key="- all -">- alle -</message>
-  <message key="filterResourceType">Ressource-Typ</message>
-  <message key="filterWorkflowState">Workflow-Status</message>
-  <message key="filterLanguage">Sprache</message>
-  <message key="filterLastModified">Letzte Änderung</message>
-  <message key="filterDocumentId">Dokument-ID</message>
-  <message key="keyResourceType">Ressource-Typ</message>
-  <message key="keyWorkflowState">Workflow-Status</message>
-  <message key="keyLanguage">Sprache</message>
-  <message key="keyLastModified">Letzte Änderung</message>
-  <message key="keyDocumentId">Pfad</message>
-  <message key="keyCheckedOut">Ausgecheckt von</message>
-  <message key="Update">Aktualisieren</message>
-    
-    <!-- Site tab (info screens) -->
-  <message key="Available Languages">Verfügbare Sprachen</message>
-  <message key="This document is not available in this language.">Das Dokument ist in der gewünschten Sprache nicht vorhanden.</message>
-  <message key="Document ID">Dokument ID</message>
-  <message key="Versions">Versionen</message>
-  <message key="SSL Encryption">SSL-Verschlüsselung</message>
-  <message key="Rollback to this version">Zu dieser Version zurücksetzen</message>
-  <message key="AC Archive">Rechte&#160;Archiv</message>
-  <message key="AC Trash">Rechte&#160;Papierkorb</message>
-  <message key="AC Auth">Rechte&#160;Bearb.</message>
-  <message key="AC Live">Rechte&#160;Live</message>
-  <message key="Scheduler">Zeitsteuerung</message>
-
-  <!-- Info screen actions-->
-  <message key="New Navigation Title">Neuer Navigationstitel</message>
-  <message key="rename-document">Dokument {0} umbenennen</message>
-  <message key="New Document ID">Neue Dokument ID</message>
-  <message key="No whitespace, no special characters">Keine Leer- oder Sonderzeichen</message>
-
-      <!-- Scheduler -->
-  <message key="No active jobs">Keine aktiven Aufgaben.</message>
-  <message key="The job date has expired">Das Datum der Aufgabe ist abgelaufen.</message>
-  <message key="check the log files">Bitte überprüfen Sie die Log-Dateien.</message>
-  <message key="Task">Aufgabe</message>
-  <message key="Day">Tag</message>
-  <message key="Time">Zeit</message>
-      <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">Folgende Dokumente verweisen auf dieses Dokument</message>
-  <message key="Delete Document">Dokument löschen</message>
-  <message key="cannot-deactivate-unless-children-deactivated">Dieses Dokument kann erst deaktiviert werden, wenn alle untergeordneten Dokumente deaktiviert worden sind.</message>
-  <message key="delete-language-versions?">Wollen Sie wirklich alle Sprachversionen des Dokuments {0} löschen?</message>
-  
-      <!-- Archive document -->
-  <message key="Archive Document">Dokument archivieren</message>
-  <message key="archive-doc">Dokument {0} archivieren</message>
-  <message key="archive-doc?">Wollen Sie das Dokument {0} wirklich archivieren?</message>
-      <!-- Restore document -->
-  <message key="Restore Document">Dokument wiederherstellen</message>
-  <message key="restore-doc">Dokument {0} wiederherstellen</message>
-  <message key="restore-doc?">Wollen Sie das Dokument {0} wirklich wiederherstellen?</message>
-      <!--Rename document -->
-  <message key="Rename Document">Dokument umbenennen</message>
-  <message key="rename-doc">Dokument {0} umbenennen</message>
-  <message key="rename-label-doc">Navigationstitel des Dokuments {0} ändern</message>
-      <!-- Copy document -->
-  <message key="Copy Document">Dokument kopieren</message>
-  <message key="copy-doc">Dokument kopieren</message>
-  <message key="copy-doc-to-clip?">
-    Wollen Sie das Dokument <xhtml:q>{0}</xhtml:q> und die untergeordneten Dokumente in die Zwischenablage kopieren?
-    Sie können den Teilbaum später an gewünschter Stelle einfügen.
-  </message>
-      <!-- Paste document -->
-  <message key="Paste Document">Dokument einfügen</message>
-  <message key="paste-doc-from-clip?">Wollen Sie das Dokument <xhtml:q>{0}</xhtml:q> aus der Zwischenablage einfügen?</message>
-      <!-- Cut document -->
-  <message key="Cut Document">Dokument ausschneiden</message>
-  <message key="cut-doc-to-clip?">
-    Wollen Sie das Dokument <xhtml:q>{0}</xhtml:q> und die untergeordneten Dokumente ausschneiden und in die Zwischenablage verschieben?
-    Sie können den Teilbaum später an gewünschter Stelle einfügen.
-  </message>
-
-  <!-- Info workflow  --> 
-  <message key="Value">Wert</message>
-  <message key="Event">Ereignis</message>
-  <message key="Variables">Variablen</message>
-  <message key="History">Verlauf</message>
-  <message key="State">Status</message>
-  <message key="IP Address">IP Adresse</message>   
-  <message key="edit">bearbeiten</message>
-  <message key="submit">einreichen</message>
-  <message key="reject">ablehnen</message>
-  <message key="publish">veröffentlichen</message>
-  <message key="deactivate">deaktivieren</message>
-  <message key="delete">löschen</message>
-  <message key="restore">wiederherstellen</message>
-  <message key="error-workflow-document">Das Ereignis {0} kann nicht auf das Dokument "{1}" angewandt werden.</message>
-    
-  <!-- Notification -->
-  <message key="notification-message">Lenya-Benachrichtigung</message>
-  <message key="notify-submitter">Benachrichtigung an den einreichenden Nutzer senden</message>
-  <message key="document-published">Ein von Ihnen eingereichtes Dokument wurde publiziert: {0}</message>
-  
-  <!-- areas -->
-  <message key="authoring-area">Bearbeitung</message>
-  <message key="live-area">Live</message>
-  <message key="archive-area">Archiv</message>
-  <message key="trash-area">Papierkorb</message>
-  <message key="staging-area">Staging</message>
-
-  <!-- Info asset  --> 
-  <message key="New Asset">Neue Anlage</message>
-
-  <!-- Info RC  --> 
-  <message key="Current Version">Aktuelle Version</message>
-  <message key="Rollback to this revision">Zu dieser Version zurücksetzen</message>
-
-  <!-- Info AC  --> 
-  <message key="Access Object">Zugriffsobjekt</message>
-  <message key="Inherited Rights">Geerbte&#160;Rechte</message>
-  <message key="visit">besuchen</message>
-  <message key="reviewer">Prüfer</message>
-  <message key="editor">Bearbeiter</message>
-  <message key="admin">Admin</message>
-  <message key="world">Welt</message>
-  <message key="the world">Die Welt</message>
-
-  <!-- Scheduler --> 
-  <message key="New job">Neuer&#160;Job</message>
-  <message key="Active jobs">Aktive Aufgaben</message>
-  <message key="Publish and Export">Veröffentlichen und&#160;exportieren</message>
-  <message key="doc-has-links-to-unpublished">Dieses Dokument hat Referenzen auf folgende unveröffentlichte Dokumente:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">Bitte überprüfen Sie folgende Ursachen für die Ausnahme.</message>
-  <message key="Parent ID">Übergerodnete ID</message>
-  <message key="exception.cause.createdoc.whitespace-in-id">Die ID darf keine Leerzeichen enthalten.</message>
-  <message key="exception.cause.createdoc.id-in-use">Die ID ist schon vergeben.</message>   
-    <message key="failmessage.createdoc.invalidformat">Bitte geben sie einen gültigen Wert für "ID" ein. Gültige Zeichen sind A-Z, a-z, 0-9 oder -</message>
-    <message key="failmessage.createdoc.required">Bitte füllen Sie alle Pflichfelder (*) aus..</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="lenya.assetupload.subtitle">Zur Bibliothek hinzufügen</message>
-  <message key="Asset Library">Objektbibliothek</message>
-  <message key="No assets available">Keine Objekte verfügbar</message>
-  <message key="lenya.assetupload.title">Objekt einfügen</message>
-
-  <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">Bild einfügen</message>
-  <message key="lenya.imageupload.selectimage.label">Bild auswählen</message>
-  <message key="lenya.imageupload.info.noimages">Keine Bilder verfügbar.</message>
-  <message key="lenya.imageupload.links.hint">Externe Verweise müssen mit 'http://' und interne Verweise mit '/' beginnen.</message>  
-
-  <!-- Revision Controller -->
-  <message key="Reason">Grund</message>
-  <message key="Filename">Dateiname</message>
-  <message key="lenya.rc.nocheckout">Resource konnte nicht ausgecheckt werden</message>
-  <message key="lenya.rc.checkedoutalready">Die Ressource wurde bereits von jemand anders ausgecheckt.</message>
-  <message key="lenya.rc.nocheckin">Resource konnte nicht eingecheckt werden</message>
-  <message key="Generic Exception">Allgemeiner Fehler</message>
-  <message key="Check the log files.">Überprüfen Sie die Logdatei.</message>
-  
-  <!-- Publication introduction page -->
-  <message key="Publication properties">Eigenschaften der Publikation</message>
-  <message key="Available languages">Verfügbare Sprachen</message>
-  <message key="Available resource types">Verfügbare Ressource-Typen</message>
-  <message key="Required Lenya version">Benötigte Lenya-Version</message>
-  <message key="Required Lenya revision">Benötigte Lenya-Revision</message>
-  <message key="Required Cocoon version">Benötigte Cocoon-Version</message>
-  <message key="Modules used">Verwendete Module</message>
-  <message key="Templates used">Verwendete Templates</message>
-  <message key="Inherited: see template publication">Vererbt: Siehe Template-Publikation</message>
-  
-  <!--
-    Publication templating. Can't go in the module yet, since module
-    i18n is only supported in publications.
-  -->
-  <message key="create-publication">Publikation erstellen</message>
-  <message key="Create Publication from Template">Publikation von einer Vorlage erstellen</message>
-  <message key="Publication ID">Publikations-ID</message>
-  <message key="Publication Name">Name der Publikation</message>
-  <message key="Template">Vorlage</message>
-  
-  <!-- Error messages of a general nature -->
-  <message key="error-document-form">Dokument ist nicht wohlgeformt: {0}</message>
-  <message key="error-validation">Schema Validierung schlug fehl: {0}</message>
-  <message key="error-missing-language">Das angeforderte Dokument ist nicht verfügbar in der Sprache: {0}</message>
-  <message key="error-document-existance-short">Dokument existiert nicht</message>
-  <message key="error-document-existance">Das angeforderte Dokument {0} existiert nicht.</message>
-  <message key="error-generic">Ein Fehler ist aufgetreten.</message>
-  <message key="error-404">404: Seite nicht gefunden</message>
-  
-  <message key="publication-does-not-exist">Die Publikation existiert nicht</message>
-  <message key="publication-...-does-not-exist">Die Publikation mit der ID "{0}" existiert nicht.</message>
-  
-  <message key="configure-content-repository">
-    <xhtml:strong>Hinweis:</xhtml:strong> Überprüfen Sie, ob das Content-Repository
-    in <xhtml:code>$PUB_HOME/config/(local.)publication.xml</xhtml:code> richtig konfiguriert ist.
-  </message>
-
-  <!-- Document meta data -->
-  <message key="http://apache.org/lenya/metadata/document/1.0">Dokument</message>
-  <message key="contentType">Inhaltstyp</message>
-  <message key="expires">Läuft ab nach</message>
-  <message key="extension">Endung</message>
-  <message key="mimeType">MIME-Type</message>
-  <message key="resourceType">Ressourcen-Typ</message>
-  
-</catalogue>
-
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_es.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_es.xml
deleted file mode 100644
index 6a1c280..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_es.xml
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-
-  $Id$
-
-  @translators
-	Salvador Cobrero <salvador_cobrero_jimenez at dmr-consulting dot com>
-	David Pinelo <david dot pinelo at juntadeandalucia dot es>
-	Thorsten Scherler <thorsten at apache dot org>
-  J. Cayetano Delgado <jcdelgado at ingenia dot es>
-
--->
-
-<catalogue xml:lang="es" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">Guardar</message>
-  <message key="Submit">Aceptar</message>
-  <message key="Cancel">Cancelar</message>
-  <message key="Delete">Borrar</message>
-  <message key="NOTE">Nota</message>
-  <message key="No referer">Sin referencia</message>
-  <message key="Referer">Referencia</message>
-  <message key="EXCEPTION">EXCEPCIÓN</message>
-  <message key="User">Usuario</message>
-  <message key="live">producción</message>
-  <message key="not">no</message>
-  <message key="authoring">edición</message>
-  <message key="Authoring">Edición</message>
-  <message key="review">Revisión</message>
-  <message key="user">usuario</message>
-  <message key="Users">Usuarios</message>
-  <message key="group">grupo</message>
-  <message key="Group">Grupo</message>
-  <message key="Groups">Grupos</message>
-  <message key="Group ID">ID Grupo</message>
-  <message key="Yes">Sí</message>
-  <message key="No">No</message>
-  <message key="Description">Descripción</message>
-  <message key="Name">Nombre</message>
-  <message key="Full Name">Nombre&#160;completo</message>
-  <message key="required fields">campos&#160;requeridos</message>
-  <message key="Search">Buscar</message>
-  <message key="Home">Inicio</message>
-  <message key="Title">Título</message>
-  <message key="Last modified">Última modificación</message>
-  <message key="Overview">General</message>
-  <message key="Role">Rol</message>
-  <message key="View">Ver</message>
-  <message key="Assets">Activos</message>
-  <message key="true">sí</message>
-  <message key="false">no</message>
-  <message key="Rename">Renombrar</message>
-  <message key="Modify">Modificar</message>
-  <message key="Document">Documento</message>
-  <message key="Date">Fecha</message>
-  <message key="Back">Atrás</message>
-  <message key="Add">Añadir</message>
-  <message key="Create">Crear</message>
-  <message key="create-document">Crear documento</message>
-  <message key="The Archive">El&#160;Archivo</message>
-  <message key="Trash">Papelera</message>
-  <message key="Publisher">Editor</message>
-  <message key="Navigation Title">Título&#160;de&#160;la&#160;Navegación</message>
-  <message key="Creator">Autor</message>
-  <message key="Language">Idioma</message>
-  <message key="Subject">Tema</message>
-  <message key="Rights">Permisos</message>
-  <message key="Select File">Seleccione fichero</message>
-  <message key="select-object">Seleccione {0}</message>
-  <message key="Insert">Insertar</message>
-  <message key="Insert File">Insertar&#160;archivo</message>
-  <message key="upload-with-invalid-extension">Intentó&#160;cargar&#160;un&#160;archivo&#160;con&#160;una&#160;extensión&#160;no&#160;válida.&#160;Extensiones&#160;válidas&#160;son&#160;{0}.&#160; Nota:&#160;Las&#160;extensiones&#160;deben&#160;escribirse&#160;en&#160;minúsculas.</message>
-  <message key="upload-with-missing-title">Trató&#160;de&#160;cargar&#160;un&#160;archivo&#160;sin&#160;título.</message>
-  <message key="filename-format-exception">El&#160;nombre&#160;del&#160;archivo&#160;que&#160;está&#160;intentando&#160;cargar&#160;no&#160;tiene&#160;extensión&#160;o&#160;contiene&#160;caracteres&#160;no&#160;permitidos,&#160;tales&#160;como&#160;spacios&#160;o&#160;letras&#160;con&#160;acentos.</message>
-  <message key="Creation Date">Fecha&#160;de&#160;creación</message>
-  <message key="File Size">Tamaño&#160;del&#160;fichero</message>
-  <message key="Image">Imagen</message>
-  <message key="Link">Enlace</message>
-  <message key="Caption">Subtítulo</message>
-  <message key="Height">Altura</message>
-  <message key="Width">Anchura</message>
-  <message key="All rights reserved">Todos los derechos reservados.</message>
-  <message key="show">Ver</message>
-  <message key="hide">Ocultar</message>
-
-  <!-- submit screen -->
-  <message key="submit-for-approval">Enviar&#160;{0}&#160;para&#160;su&#160;aprobación</message>
-  <message key="submit-for-approval?">¿Desea&#160;enviar&#160;{0}&#160;para&#160;su&#160;aprobación?</message>
-
-  <!-- publish screen -->
-  <message key="Publish">Publicar</message>
-  <message key="Source File(s)">Archivo(s)&#160;Fuente</message>
-
-  <!-- login screen -->
-  <message key="login-to-pub">Entrar&#160;a&#160;la&#160;publicación&#160;{0}</message>
-  <message key="Login">Conexión</message>
-  <message key="Password">Contraseña</message>
-  <message key="Username">Nombre&#160;de&#160;usuario</message>
-  <message key="Authentication failed">Error&#160;en&#160;la&#160;autentificación</message>
-  <message key="try-user-lenya-alice">Pruebe con usuario {0} y contraseña {1} (editor) o usuario {2} y contraseña {3} (revisor)</message>
-  <message key="try-user-lenya">Pruebe con usuario {0} y contraseña {1}</message>
-  
-  <!-- logout screen -->
-  <message key="logout-from-pub">Salir&#160;de&#160;la&#160;Publicación&#160;{0}</message>
-  <message key="Your History">Su&#160;Historial</message>
-  <message key="Login to Authoring Area">Entrar&#160;en&#160;la&#160;Zona&#160;de&#160;Edición</message>
-
-  <!-- reject screen -->
-  <message key="Reject">Rechazar</message>
-  <message key="reject-doc">Rechazar documento {0}</message>
-  <message key="reject-doc?">¿Desea rechazar&#160;el&#160;documento&#160;{0}?</message>
-
-  <!-- cms menu -->
-  <message key="New Document">Nuevo&#160;documento</message>
-  <message key="New ... Document">Nuevo&#160;documento {0}</message>
-  <message key="New Language Version">Nueva&#160;versión&#160;de&#160;idioma</message>
-  <message key="Remove Language Version">Eliminar&#160;versión&#160;de&#160;idioma</message>
-  <message key="File">Archivo</message>
-  <message key="Edit">Editar</message>
-  <message key="Workflow">Flujo de trabajo</message>
-  <message key="Deactivate">Desactivar</message>
-  <message key="Schedule">Programar</message>
-  <message key="Copy">Copiar</message>
-  <message key="Paste">Pegar</message>
-  <message key="Cut">Cortar</message>
-  <message key="Help">Ayuda</message>
-  <message key="Debug">Depurar</message>
-  <message key="Delete">Borrar</message>
-  <message key="Archive">Archivar</message>
-  <message key="Restore">Recuperar</message>
-  <message key="Move Up">Subir</message>
-  <message key="Move Down">Bajar</message>
-  <message key="Logout">Salir</message>
-  <message key="View Task Logs">Ver&#160;bitácora&#160;de&#160;tareas</message>
-  <message key="Support">Soporte</message>
-  <message key="System Documentation">Documentación&#160;del&#160;sistema</message>
-  <message key="User Documentation">Documentación&#160;de&#160;usuario</message>
-  <message key="About Apache Lenya">Acerca&#160;de&#160;Apache&#160;Lenya</message>
-  <message key="Apache Lenya Homepage">Página&#160;principal&#160;de&#160;Apache&#160;Lenya</message>
- <message key="Edit with Kupu">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(Kupu)
-  </message>
-  <message key="Edit with BXE">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(BXE)
-  </message>
-  <message key="Edit with one Form">Editar&#160;con&#160;formulario&#160;Único</message>
-  <message key="Edit with Forms">Editar&#160;con&#160;formularios</message>
-  <message key="Edit Metadata">Editar&#160;Metadatos</message>
-  <message key="Edit Navigation Title">Editar&#160;título&#160;de&#160;navegación</message>
-  <message key="Visible in Navigation">Visible&#160;en&#160;la&#160;Navegacion</message>
-  <message key="Rename URL">Renombrar&#160;URL</message>
-  <message key="Download ODT">Descargar&#160; Documento OpenOffice</message>
-  <message key="Upload ODT">Enviar&#160;Documento OpenOffice</message>
-
-
-  <!-- cms tabs -->
-  <message key="Server Time">Hora&#160;del&#160;servidor</message>
-  <message key="Workflow State">Estado&#160;del&#160;flujo de trabajo</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">Administración</message>
-  <message key="really-delete?">¿Realmente desea borrar&#160;{0}?</message>
-  <message key="Do you really want to delete the trash ?">¿Seguro&#160;que&#160;desea&#160;vaciar&#160;la&#160;papelera?</message>
-  <message key="delete-object">¿Borrar&#160;{0}</message>
-  <message key="delete-object?">&#191;Realmente quiere borrar {0}?</message>
-  <message key="Passwd">Contraseña</message>
-  <message key="Switch User">Cambiar&#160;usuario</message>
-  <message key="Delete Trash">Vaciar&#160;papelera</message>
-  <message key="Cocoon and Server Status">Estado&#160;de&#160;Cocoon&#160;y&#160;del&#160;Servidor</message>
-
-    <!-- Group Administration -->
-  <message key="Profile">Perfil</message>
-  <message key="Members">Miembros</message>
-  <message key="IP Ranges">Rangos&#160;de IP</message>
-  <message key="Edit Profile">Editar&#160;Perfil</message>
-  <message key="Edit Members">Editar&#160;Miembros</message>
-  <message key="Group Administration">Administración de grupos</message>
-  <message key="Add Group">Añadir&#160;Grupo</message>
-  <message key="Group Data">Datos&#160;del&#160;Grupo</message>
-  <message key="group_no_such_entry">El grupo {0} no existe.</message>
-
-    <!-- User Administration -->
-  <message key="User Data">Datos&#160;del&#160;Usuario</message>
-
-  <message key="CMS User ID">ID&#160;del&#160;Usuario&#160;de&#160;CMS</message>
-  <message key="LDAP ID">ID&#160;LDAP</message>
-  <message key="Confirm password">Confirme&#160;contraseña</message>
-  <message key="Add User">Añadir Usuario</message>
-  <message key="User Administration">Administración del Usuario</message>
-  <message key="User Details">Detalles del Usuario</message>
-  <message key="All Groups">Todos los Grupos</message>
-  <message key="User Groups">Grupos del Usuario</message>
-  <message key="Group Affiliation">Afiliación a un Grupo</message>
-  <message key="Change Password">Cambiar Contraseña</message>
-  <message key="Edit Group Affiliation">Editar Afiliación de Grupo</message>
- <message key="user_no_such_user">El usuario {0} no existe.</message>
-  <message key="ldap_no_such_user">El usuario {0} no existe en el directorio LDAP.</message>
-
-    <!-- User Types -->
-  <message key="LDAP User">Usuario LDAP</message>
-  <message key="Local User">Usuario CMS</message>
-
-    <!-- Role Administration -->
-  <message key="role_no_such_role">No existe el rol {0}.</message>
-
-    <!-- IP Range Administration -->
-  <message key="IP Range">Rango&#160;de IP</message>
-  <message key="IP Range ID">ID&#160;del&#160;rango&#160;de IP</message>
-  <message key="Network Address">Dirección&#160;de&#160;red</message>
-  <message key="Subnet Mask">Máscara&#160;de&#160;la&#160;subred</message>
-  <message key="IP Range Administration">Administración&#160;del&#160;Rango&#160;IP</message>
-  <message key="Add IP Range">Añadir&#160;rango&#160;de IP</message>
-  <message key="IP Range Profile">Perfil&#160;del&#160;rango&#160;de IP</message>
-
-  <!-- Site Overview -->
-  <message key="filterResourceType">Tipo de Recurso</message>
-  <message key="filterWorkflowState">Estado de flujo de trabajo</message>
-  <message key="filterLanguage">Idioma</message>
-  <message key="filterLastModified">Ultima modificación</message>
-  <message key="filterDocumentId">Identificativo de documento</message>
-  <message key="keyResourceType">Tipo de Recurso</message>
-  <message key="keyWorkflowState">Estado de flujo de trabajo</message>
-  <message key="Live">En producción</message>
-  <message key="keyLanguage">Idioma</message>
-  <message key="keyLastModified">Ultima modificación</message>
-  <message key="keyPath">Identificativo de documento</message>
-  <message key="keyCheckedOut">Revisado por</message>
-  <message key="Update">Actualiza</message>
-
-  <!-- Site tab (info screens) -->
-  <message key="Available Languages">Idiomas Disponibles</message>
-  <message key="This document is not available in this language.">Este documento no se encuentra disponible en este idioma.</message>
-  <message key="Document ID">ID del Documento</message>
-  <message key="Versions">Versiones</message>
-  <message key="SSL Encryption">Cifrado&#160;SSL</message>
-  <message key="Rollback to this version">Deshacer hasta esta versión</message>
-  <message key="AC Archive">Archivo&#160;AC</message>
-  <message key="AC Trash">Papelera&#160;AC</message>
-  <message key="AC Auth">Edición&#160;AC</message>
-  <message key="AC Live">Producción&#160;AC</message>
-  <message key="Scheduler">Planificador</message>
-
-  <!-- Info screen actions-->
-  <message key="New Navigation Title">Nuevo título de navegación</message>
-  <message key="Rename Document">Renombrar Documento</message>
-  <message key="New Document ID">Nuevo ID de Documento</message>
-  <message key="No whitespace, no special characters">No se permiten espacios en blanco ni caracteres especiales</message>
-
-  <!-- Scheduler -->
-  <message key="No active jobs">No hay tareas activas.</message>
-  <message key="The job date has expired">La fecha de la tarea ha expirado.</message>
-  <message key="check the log files">compruebe los archivos de bitácora</message>
-  <message key="Task">Tarea</message>
-  <message key="Day">Día</message>
-  <message key="Time">Hora</message>
-
-  <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">Los siguientes documentos tienen enlaces a este documento</message>
-  <message key="Deactivate Document">Desactivar Documento</message>
-  <message key="deactivate-doc">Desactivar Documento {0}</message>
-  <message key="deactivate-doc?">¿Seguro que desea desactivar el documento {0}?</message>
-  <message key="Delete Document">Borrar Documento</message>
-  <message key="delete-doc">Borrar Documento {0}</message>
-  <message key="cannot-deactivate-unless-children-deactivated">No se puede desactivar este documento a menos que los documentos hijos siguientes sean desactivados</message>
-  <message key="delete-language-versions?">¿Desea realmente borrar todas las versiones en diferentes idioma s del documento {0}?</message>
-  <message key="delete-doc-live">No puedo borrar el documento {0} porque está en producción!</message>
-
-      <!-- Archive document -->
-  <message key="Archive Document">Archivar Documento</message>
-  <message key="archive-doc">Archivar documento {0}</message>
-  <message key="archive-doc?">¿Quiere realmente archivar el documento {0}?</message>
-      <!-- Rename document -->
-  <message key="Rename Document">Renombrar Documento</message>
-  <message key="rename-doc">Renombrar Documento {0}</message>
-  <message key="rename-label-doc">Cambiar el título de navegación del documento {0}</message>
-      <!-- Copy document -->
-  <message key="Copy Document">Copiar Documento</message>
-  <message key="copy-doc-to-clip?">¿Seguro que desea copiar el documento <xhtml:q>{0}</xhtml:q> al portapapeles? Más tarde puede pegar el documento en el lugar que elija.</message>
-      <!-- Paste document -->
-  <message key="Paste Document">Pegar Documento</message>
-  <message key="paste-doc-from-clip?">¿Seguro que desea pegar el documento <xhtml:q>{0}</xhtml:q> desde el portapapeles?</message>
-
-      <!-- Cut document -->
-  <message key="Cut Document">Cortar Documento</message>
-  <message key="cut-doc">Cortar documento {0}</message>
-  <message key="cut-doc-to-clip?">¿Seguro que desea cortar el documento {0} y moverlo al portapapeles? Más tarde puede pegar el documento en el lugar que elija.</message>
-
-  <!-- Info Asset -->
-  <message key="Insert Image">Insertar imagen</message>
-  <message key="Insert Asset">Insertar activo</message>
-  <message key="Asset Upload">Cargar activo</message>
-  <message key="Insert a new Image">Insertar nueva imagen</message>
-  <message key="Upload an Asset">Cargar un activo</message>
-
-  <!-- Workflow  -->
-  <message key="Value">Valor</message>
-  <message key="Event">Evento</message>
-  <message key="Variables">Variables</message>
-  <message key="History">Historial</message>
-  <message key="State">Estado</message>
-  <message key="IP Address">Dirección IP</message>
-  <message key="edit">editar</message>
-  <message key="submit">enviar</message>
-  <message key="reject">rechazar</message>
-  <message key="publish">publicar</message>
-  <message key="error-workflow-document">El evento  {0} no es ejecutable en el documento "{1}"</message>
-
-  <!-- Notification -->
-  <message key="notification-message">Notificación</message>
-  <message key="notify-submitter">notificar al remitente</message>
-  <message key="document-published">Se ha publicado un documento remitido por usted: {0}</message>
-
-  <!-- Info asset  -->
-  <message key="New Asset">Nuevo activo</message>
-
-  <!-- Info meta -->
-  <message key="Custom metadata">Metadatos personalizados</message>
-  <message key="Show custom metadata">Muestra metadatos personalizados</message>
-  <message key="Hide custom metadata">Oculta metadatos personalizados</message>
-
-  <!-- Info RC  -->
-  <message key="Current Version">Versión Actual</message>
-  <message key="Rollback to this revision">Deshacer hasta esta revisión</message>
-
-  <!-- Info AC  -->
-  <message key="SSL Encryption">Cifrado&#160;SSL</message>
-  <message key="Access Object">Acceder&#160;al&#160;Objecto</message>
-  <message key="visit">visitante</message>
-  <message key="reviewer">revisor</message>
-  <message key="editor">editor</message>
-  <message key="admin">administrador</message>
-  <message key="world">todos</message>
-  <message key="the world">todos</message>
-
-  <!-- Scheduler -->
-  <message key="New job">Nueva tarea</message>
-  <message key="Active jobs">Tareas activas</message>
-  <message key="Publish and Export">Publicar&#160;y&#160;exportar</message>
-  <message key="doc-has-links-to-unpublished">Este documento tiene enlaces a los siguientes documentos sin publicar:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">Por favor, compruebe las siguientes posibles causas de la excepción.</message>
-  <message key="exception.cause.createdoc.whitespace-in-id">No se permiten espacios en blanco en el ID</message>
-  <message key="exception.cause.createdoc.id-in-use">El ID ya está siendo utilizado</message>
-  <message key="failmessage.createdoc.invalidformat">Por favor, introduce un valor válido en el campo ID. A-Z, a-z, 0-9 o - son caracteres válidos.</message>
-  <message key="failmessage.createdoc.required">Por favor, introduzca todos los valores obligatorios (*).</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="Add to Asset Library">Añadir librería de activos</message>
-  <message key="Asset Library">Librer&#237;a de activos</message>
-  <message key="No assets available">No hay activos disponibles</message>
-  <message key="Insert Asset">Insertar activo</message>
-
-    <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">Insertar imagen</message>
-  <message key="lenya.imageupload.selectimage.label">Elegir Imagen</message>
-  <message key="lenya.imageupload.info.noimages">No hay imágenes disponibles.</message>
-  <message key="lenya.imageupload.links.hint">Los enlaces externos deben comenzar con 'http://', los enlaces internos deben comenzar con '/'</message>
-
-  <!-- Revision Controller -->
-  <message key="Reason">Razón</message>
-  <message key="Filename">Nombre de archivo</message>
-  <message key="lenya.rc.nocheckout">No se puede obtener el recurso</message>
-  <message key="lenya.rc.checkedoutalready">Otro usuario está trabajando en el recurso</message>
-  <message key="lenya.rc.nocheckin">No se puede enviar el recurso</message>
-  <message key="Generic Exception">Excepción Genérica</message>
-  <message key="Check the log files.">Revise los archivos de bitácora.</message>
-
-  <!-- Error messages of a general nature -->
-  <message key="error-document-form">El documento no está bien formado: {0}</message>
-  <message key="error-validation">La validación del esquema falló: {0}</message>
-  <message key="error-missing-language">El documento solicitado no está disponible para el idioma: {0}</message>
-  <message key="error-document-existance">El documento solicitado {0} con documento-id {1} no existe.</message>
-  <message key="error-generic">Ocurrió un error.</message>
-  <message key="error-404">404: Página no encontrada</message>
-  <!--.odt.upload -->
-  <message key="Upload odt">Enviar Documento OpenOffice</message>
-  <message key="HEADSUP:">Atención:</message>
-  <message key="The existing document will be overwritten!">El documento existente será sobrescrito</message>
-
-</catalogue>
-
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_fr.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_fr.xml
deleted file mode 100644
index 4ddd88c..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_fr.xml
+++ /dev/null
@@ -1,365 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- 
-	$Id$ 
-	@translators Olivier Lange <wire at petit-atelier dot ch>
-	-->
-
-<catalogue xml:lang="fr" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">Enregistrer</message>
-  <message key="Submit">Soumettre</message>
-  <message key="Cancel">Annuler</message>
-  <message key="Delete">Supprimer</message>
-  <message key="NOTE">Note</message>
-  <message key="No referer">Pas de référent</message>
-  <message key="Referer">Référent</message>
-  <message key="EXCEPTION">EXCEPTION</message>
-  <message key="User">Utilisateur</message>
-  <message key="Live">En ligne</message>
-  <message key="live">en ligne</message>
-  <message key="not">pas</message>
-  <message key="authoring">rédaction</message>
-  <message key="Authoring">Rédaction</message>
-  <message key="review">réviser</message>
-  <message key="user">utilisateur</message>
-  <message key="Users">Utilisateurs</message>
-  <message key="group">groupe</message>
-  <message key="Group">Groupe</message>
-  <message key="Groups">Groupes</message>
-  <message key="Group ID">ID Groupe</message>
-  <message key="Yes">Oui</message>
-  <message key="No">Non</message>
-  <message key="Description">Description</message>
-  <message key="Name">Nom</message>
-  <message key="Full Name">Nom complet</message>
-  <message key="required fields">Champs obligatoires</message>
-  <message key="Search">Rechercher</message>
-  <message key="Home">Accueil</message>
-  <message key="Title">Titre</message>
-  <message key="Last modified">Dernière&#160;mise&#160;à&#160;jour</message>
-  <message key="Overview">Résumé</message>
-  <message key="Role">R&#244;le</message>
-  <message key="View">Vue</message>
-  <message key="Assets">Actifs</message>
-  <message key="true">oui</message>
-  <message key="false">non</message>
-  <message key="Rename">Renommer</message>
-  <message key="Modify">Modifier</message>
-  <message key="Document">Document</message>
-  <message key="Date">Date</message>
-  <message key="Back">Retour</message>
-  <message key="Add">Ajouter</message>
-  <message key="Create">Créer</message>
-  <message key="The Archive">Archive</message>
-  <message key="Trash">Corbeille</message>
-  <message key="Publisher">Editeur</message>
-  <message key="Navigation Title">Titre navigation</message>
-  <message key="Creator">Créateur</message>
-  <message key="Language">Langue</message>
-  <message key="Subject">Sujet</message>
-  <message key="Rights">Droits</message>
-  <message key="Select File">Sélectionnez un fichier</message>
-  <message key="select-object">Sélectionnez {0}</message>
-  <message key="Insert">Insérer</message>
-  <message key="Insert File">Insérer un fichier</message>
-  <message key="upload-with-invalid-extension">Vous avez tenté de charger un fichier avec une extension invalide. Les extensions valides sont{0}</message>
-  <message key="filename-format-exception">Le nom du fichier que vous tentez de charger n'a soit pas d'extension, soit contient des caractères qui ne sont pas autorisés, tels que des espaces ou des caractères accentués.</message>
-  <message key="Creation Date">Date de création</message>
-  <message key="File Size">Taille</message>
-  <message key="Image">Image</message>
-  <message key="Link">Lien</message>
-  <message key="Caption">Légende</message>
-  <message key="Height">Hauteur</message>
-  <message key="Width">Largeur</message>
-
-  <!-- submit screen -->
-  <message key="submit-for-approval">Soumettre {0} pour approbation</message>
-  <message key="submit-for-approval?">Voulez-vous soumettre {0} pour approbation?</message>
-
-  <!-- publish screen -->
-  <message key="Publish">Publier</message>
-  <message key="Source File(s)">Fichier(s) source(s)</message>
-
-  <!-- login screen -->
-  <message key="login-to-pub">CONNEXION à la publication {0}</message>
-  <message key="Login">Se connecter</message>
-  <message key="Password">Mot de passe</message>
-  <message key="Username">Utilisateur</message>
-  <message key="Authentication failed">L'authentification a échoué</message>
-  <message key="try-user-lenya">Essayez l'utilisateur {0} et le mot de passe {1}</message>
-  <message key="try-user-lenya-alice">Essayez l'utilisateur {0} et le mot de passe {1} (éditeur) ou l'utilisateur {2} et le mot de passe {3} (réviseur)</message>
-  
-  <!-- logout screen -->
-  <message key="logout-from-pub">DECONNEXION de la publication {0}</message>
-  <message key="Your History">Votre historique</message>
-  <message key="Login to Authoring Area">Se connecter à l'espace de rédaction</message>
-
-  <!-- reject screen -->
-  <message key="Reject">Rejeter</message>
-  <message key="reject-doc?">Voulez-vous rejeter le document {0}?</message>
-
-  <!-- cms menu -->
-  <message key="New Document">Nouveau document</message>
-  <message key="New ... Document">Nouveau document {0}</message>
-  <message key="New Language Version">Nouvelle traduction</message>
-  <message key="Remove Language Version">Supprimer la traduction</message>
-  <message key="File">Fichier</message>
-  <message key="Edit">Edition</message>
-  <message key="Workflow">Workflow</message>
-  <message key="Deactivate">Désactiver</message>
-  <message key="Schedule">Agender</message>
-  <message key="Copy">Copier</message>
-  <message key="Paste">Coller</message>
-  <message key="Cut">Couper</message>
-  <message key="Help">Aide</message>
-  <message key="Debug">Débogage</message>
-  <message key="Delete">Effacer</message>
-  <message key="Archive">Archiver</message>
-  <message key="Restore">Restaurer</message>
-  <message key="Move Up">Déplacer vers le haut</message>
-  <message key="Move Down">Déplacer vers le bas</message>
-  <message key="Logout">Se déconnecter</message>
-  <message key="View Task Logs">Consulter le journal</message>
-  <message key="Support">Support</message>
-  <message key="System Documentation">Documentation système</message>
-  <message key="User Documentation">Documentation utilisateur</message>
-  <message key="About Apache Lenya">A propos de Apache Lenya</message>
-  <message key="Apache Lenya Homepage">Accueil de Apache Lenya</message>
-  <message key="Edit with Kupu">Rédacteur&#160;<xhtml:abbr
-    title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;(Kupu)
-  </message>
-  <message key="Edit with BXE">Rédacteur&#160;<xhtml:abbr
-    title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;(BXE)
-  </message>
-  <message key="Edit with one Form">Rédacteur&#160;De&#160;Source</message>
-  <message key="Edit with Forms">Rédacteur&#160;De&#160;Formes</message>
-  <message key="Edit Metadata">Editer&#160;les&#160;méta-données</message>
-  <message key="Edit Navigation Title">Editer&#160;le&#160;titre&#160;de&#160;navigation</message>
-  <message key="Rename URL">Renommer&#160;URL</message>
-
-  <!-- cms tabs -->
-  <message key="Server Time">Horodate</message>
-  <message key="Workflow State">Statut</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">Administration</message>
-  <message key="really-delete?">Effacer {0}?</message>
-  <message key="Do you really want to delete the trash ?">Voulez-vous vraiment vider la corbeille ?</message>
-  <message key="delete-object">Effacer {0}</message>
-  <message key="delete-object?">Voulez-vous vraiment effacer {0}?</message>
-  <message key="Passwd">Mot de passe</message>
-  <message key="Switch User">Changer d'utilisateur</message>
-  <message key="Delete Trash">Vider la corbeille</message>
-  <message key="Cocoon and Server Status">Statut du serveur et&#160;de&#160;Cocoon</message>
-
-    <!-- Group Administration -->
-  <message key="Profile">Profil</message>
-  <message key="Members">Membres</message>
-  <message key="IP Ranges">Plages&#160;IP</message>
-  <message key="IP Range Groups">Groupes de plages&#160;IP</message>
-  <message key="Edit Profile">Editer le profil</message>
-  <message key="Edit Members">Editer les membres</message>
-  <message key="Group Administration">Administration des groupes</message>
-  <message key="Add Group">Ajouter un groupe</message>
-  <message key="Group Data">Détail du groupe</message>
-  <message key="group_no_such_entry">Le groupe {0} n'existe pas.</message>
-
-    <!-- User Administration -->
-  <message key="User Data">Détail&#160;de&#160;l'utilisateur</message>
-  <message key="User ID">ID&#160;utilisateur</message>
-  <message key="CMS User ID">ID&#160;utilisateur&#160;CMS</message>
-  <message key="LDAP ID">ID&#160;LDAP</message>
-  <message key="Confirm password">Confirmez&#160;le&#160;mot&#160;de&#160;passe</message>
-  <message key="Add User">Nouvel utilisateur</message>
-  <message key="User Administration">Administration des utilisateurs</message>
-  <message key="User Details">Détail des utilisateurs</message>
-  <message key="All Groups">Tous les groupes</message>
-  <message key="User Groups">Groupes d'utilisateurs</message>
-  <message key="Group Affiliation">Affiliation aux groupes</message>
-  <message key="Change Password">Changer le mot de passe</message>
-  <message key="Edit Group Affiliation">Editer l'affiliation</message>
-  <message key="user_no_such_user">L'utilisateur {0} n'existe pas.</message>
-  <message key="ldap_no_such_user">L'utilisateur {0} ne figure pas dans l'annuaire LDAP.</message>
-
-    <!-- IP Range Administration -->
-  <message key="IP Range">Plage&#160;IP</message>
-  <message key="IP Range ID">ID&#160;de&#160;plage&#160;IP</message>
-  <message key="Network Address">Adresse&#160;réseau</message>
-  <message key="Subnet Mask">Masque&#160;de&#160;sous-réseau</message>
-  <message key="IP Range Administration">Administrer&#160;plage&#160;IP</message>
-  <message key="Add IP Range">Ajouter&#160;une&#160;plage&#160;IP</message>
-  <message key="IP Range Profile">Profil&#160;de&#160;plage&#160;IP</message>
-
-  <message key="filterResourceType">Type de resource</message>
-  <message key="filterWorkflowState">Statut</message>
-  <message key="filterLanguage">Langue</message>
-  <message key="filterLastModified">Dernière&#160;mise&#160;à&#160;jour</message>
-  <message key="filterDocumentId">ID du document</message>
-  <message key="keyResourceType">Type de resource</message>
-  <message key="keyWorkflowState">Statut</message>
-  <message key="keyLanguage">Langue</message>
-  <message key="keyLastModified">Dernière&#160;mise&#160;à&#160;jour</message>
-  <message key="keyPath">ID du document</message>
-  <message key="keyCheckedOut">Extrait par</message>
-  <message key="Update">Actualisation</message>
-
-  <!-- Site tab (info screens) -->
-  <message key="Available Languages">Langues disponibles</message>
-  <message key="This document is not available in this language.">Ce document n'est pas disponible dans cette langue.</message>
-  <message key="Document ID">ID du document</message>
-  <message key="Versions">Versions</message>
-  <message key="SSL Encryption">Encrpytage&#160;SSL</message>
-  <message key="Rollback to this version">Restaurer cette version</message>
-  <message key="AC Archive">Archive&#160;CA</message>
-  <message key="AC Trash">Corbeille&#160;CA</message>
-  <message key="AC Auth">CA&#160;auth.</message>
-  <message key="AC Live">CA&#160;en&#160;ligne</message>
-  <message key="Scheduler">Echéancier</message>
-  <message key="Meta">Méta</message>
-
-    <!-- Info screen actions-->
-  <message key="New Navigation Title">Nouveau titre de navigation</message>
-  <message key="Rename Document">Renommer document</message>
-  <message key="New Document ID">Nouvel ID de document</message>
-  <message key="No whitespace, no special characters">Pas d'espaces, pas de caractères spéciaux</message>
-      <!-- Scheduler -->
-  <message key="No active jobs">Pas de tâche active.</message>
-  <message key="The job date has expired">La date de la tâche est échue.</message>
-  <message key="check the log files">Consultez les journaux d'exécution (logfiles)</message>
-  <message key="Task">Tâche</message>
-  <message key="Day">Jour</message>
-  <message key="Time">Heure</message>
-      <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">Les documents suivants ont des liens qui référencent ce document</message>
-  <message key="Deactivate Document">Désactiver le document</message>
-  <message key="deactivate-doc">Désactiver le document {0}</message>
-  <message key="deactivate-doc?">Voulez-vous vraiment désactiver le document {0}?</message>
-  <message key="Delete Document">Supprimer le document</message>
-  <message key="delete-doc">Supprimer le document {0}</message>
-  <message key="cannot-deactivate-unless-children-deactivated">Ce document ne peut pas &#234;tre désactivé tant que les documents subordonnés suivants n'auront pas été également désactivés</message>
-  <message key="delete-language-versions?">Voulez-vous vraiment supprimer toutes les traductions du document {0}?</message>
-  <message key="delete-doc-live">Le document {0} ne peut &#234;tre supprimé, car il est en ligne!</message>
-      <!-- Archive document -->
-  <message key="Archive Document">Archiver le document</message>
-  <message key="archive-doc">Archiver le document {0}</message>
-  <message key="archive-doc?">Voulez-vous vraiment archiver le document {0}?</message>
-      <!-- Rename document -->
-  <message key="Rename Document">Renommer le document</message>
-  <message key="rename-doc">Renommer le document {0}</message>
-  <message key="rename-label-doc">Changer le titre de navigation du document {0}</message>
-      <!-- Copy document -->
-  <message key="Copy Document">Copier le document</message>
-  <message key="copy-doc-to-clip?">Voulez-vous copier le document <xhtml:q>{0}</xhtml:q> vers le presse-papiers? Vous pourrez le coller ultérieurement à l'endroit de votre choix.</message>
-      <!-- Paste document -->
-  <message key="Paste Document">Coller le document</message>
-  <message key="paste-doc-from-clip?">Voulez-vous coller le document <xhtml:q>{0}</xhtml:q> à partir du presse-papiers?</message>
-      <!-- Cut document -->
-  <message key="Cut Document">Couper le document</message>
-  <message key="cut-doc">Couper le document {0}</message>
-  <message key="cut-doc-to-clip?">Voulez-vous couper le document {0} vers le presse-papiers? Vous pourrez le coller ultérieurement à l'endroit de votre choix.</message>
-
-  <!-- Info Asset -->
-  <message key="Insert Image">Insérer une Image</message>
-  <message key="Insert Asset">Insérer un Actif</message>
-  <message key="Asset Upload">Télécharger un Actif</message>
-  <message key="Insert a new Image">Insérer une nouv. Image</message>
-  <message key="Upload an Asset">Télécharger un Actif</message>
-
-  <!-- Info workflow  -->
-  <message key="Value">Valeur</message>
-  <message key="Event">Evénement</message>
-  <message key="Variables">Variables</message>
-  <message key="History">Historique</message>
-  <message key="State">Statut</message>
-  <message key="IP Address">Adresse IP</message>
-  <message key="edit">éditer</message>
-  <message key="submit">soumettre</message>
-  <message key="reject">rejeter</message>
-  <message key="publish">publier</message>
-  <message key="error-workflow-document">L'événement {0} n'est pas exécutable pour le document "{1}"</message>
-
- <!-- Notification -->
-  <message key="notification-message">Notification de Lenya</message>
-  <message key="notify-submitter">Notifier le soumetteur</message>
-  <message key="document-published">Un document que vous avez soumis pour approbation a été publié: {0}</message>
-
-  <!-- Info asset  -->
-  <message key="New Asset">Nouvel Actif</message>
-
-  <!-- Info RC  -->
-  <message key="Current Version">Version actuelle</message>
-  <message key="Rollback to this revision">Restaurer cette version</message>
-
-  <!-- Info AC  -->
-  <message key="SSL Encryption">Chiffrement&#160;SSL</message>
-  <message key="Access Object">Objet&#160;d'accès</message>
-  <message key="Inherited Rights">Droits hérités</message>
-  <message key="visit">visiter</message>
-  <message key="reviewer">réviseur</message>
-  <message key="editor">éditeur</message>
-  <message key="admin">admin.</message>
-  <message key="world">monde</message>
-  <message key="the world">le monde</message>
-
-  <!-- Scheduler -->
-  <message key="New job">Nouvelle&#160;tâche</message>
-  <message key="Active jobs">Tâches&#160;actives</message>
-  <message key="Publish and Export">Publier et&#160;Exporter</message>
-  <message key="doc-has-links-to-unpublished">Ce document possède des liens qui référencent les documents non-publiés suivants:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">Veuillez examiner les causes possibles suivantes de cette exception.</message>
-  <message key="exception.cause.createdoc.whitespace-in-id">L'identificateur (ID) ne peut pas comporter de caractères d'espacement</message>
-  <message key="exception.cause.createdoc.id-in-use">L'identificateur (ID) est déjà utilisé</message>
-  <message key="failmessage.createdoc.invalidformat">Veuillez entrer une valeur valide dans le champ de l'identificateur (ID). Les caractères A-Z, a-z, 0-9 ou - sont valides.</message>
-  <message key="failmessage.createdoc.required">Veuillez renseigner tous les champs obligatoires (*).</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="Add to Asset Library">Ajouter à la librairie des actifs</message>
-  <message key="Asset Library">Librairie des actifs</message>
-  <message key="No assets available">Pas d'actifs disponibles</message>
-  <message key="Insert Asset">Ajouter un actif</message>
-
-  <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">Insérer une Image</message>
-  <message key="lenya.imageupload.selectimage.label">Sélectionner une Image</message>
-  <message key="lenya.imageupload.info.noimages">Aucune image disponible.</message>  
-  <message key="lenya.imageupload.links.hint">Les liens externes doivent commencer par 'http://', les liens internes doivent commencer par '/'</message>  
-
-  <!-- Revision Controller -->
-  <message key="Reason">Cause</message>
-  <message key="Filename">Nom du fichier</message>
-  <message key="lenya.rc.nocheckout">La resource ne peut pas &#234;tre extraite</message>
-  <message key="lenya.rc.checkedoutalready">La resource a déjà été extraite par un autre utilisateur.</message>
-  <message key="lenya.rc.nocheckin">La resource ne peut pas &#234;tre enregistrée</message>
-  <message key="Generic Exception">Exception générique</message>
-  <message key="Check the log files.">Consultez les journaux d'exécution (log files).</message>
-
-  <!-- Error messages of a general nature -->
-  <message key="error-document-form">Le document n'est pas bien formé: {0}</message>
-  <message key="error-validation">La validation avec le schéma a échoué: {0}</message>
-  <message key="error-missing-language">Le document demandé n'est pas disponible pour la langue: {0}</message>
-  <message key="error-document-existance-short">Le doument n'existe pas</message>
-  <message key="error-document-existance">Le document demandé {0} avec comme id {1} n'existe pas.</message>
-  <message key="error-generic">Une erreur est survenue.</message>
-  <message key="error-404">404: Page non trouvée</message>
-
-</catalogue>
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_it.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_it.xml
deleted file mode 100644
index 95223c7..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_it.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
-  
-  $Id$ 
-  @translators Giampaolo Trapasso  <trapo at trapo dot it>
--->
-
-<catalogue xml:lang="it" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-	<!-- common used words -->
-	<message key="Save">Salva</message>
-	<message key="Submit">Sottoponi</message>
-	<message key="Cancel">Annulla</message>
-	<message key="Delete">Cancella</message>
-	<message key="NOTE">Nota</message>
-	<message key="No referer">Nessuna pagina di provenienza</message>
-	<message key="Referer">Pagina di provenienza</message>
-	<message key="EXCEPTION">ECCEZZIONE</message>
-	<message key="User">Utente</message>
-	<message key="live">pubblicato</message>
-	<message key="not">non</message>
-	<message key="authoring">composizione</message>
-	<message key="Authoring">Composizione</message>
-	<message key="review">revisione</message>
-	<message key="user">utente</message>
-	<message key="Users">Utenti</message>
-	<message key="group">gruppo</message>
-	<message key="Group">Gruppo</message>
-	<message key="Groups">Gruppi</message>
-	<message key="Group ID">ID Gruppo</message>
-	<message key="Yes">Sì</message>
-	<message key="No">No</message>
-	<message key="Description">Descrizione</message>
-	<message key="Name">Nome</message>
-	<message key="Full Name">Nome Completo</message>
-	<message key="required fields">campi richiesti</message>
-	<message key="Search">Cerca</message>
-	<message key="Home">Home</message>
-	<message key="Title">Titolo</message>
-	<message key="Last modified">Ultima&#160;modifica</message>
-	<message key="Overview">Vista generale</message>
-	<message key="Role">Ruolo</message>
-	<message key="View">Vedi</message>
-	<message key="Assets">Risorse</message>
-	<message key="true">sì</message>
-	<message key="false">no</message>
-	<message key="Rename">Rinomina</message>
-	<message key="Modify">Modifica</message>
-	<message key="Document">Documento</message>
-	<message key="Date">Data</message>
-	<message key="Back">Indietro</message>
-	<message key="Add">Aggiungi</message>
-	<message key="Create">Crea</message>
-	<message key="The Archive">Archivio</message>
-	<message key="Trash">Cestino</message>
-	<message key="Publisher">Editore</message>
-	<message key="Navigation Title">Titolo di Navigazione</message>
-	<message key="Creator">Creatore</message>
-	<message key="Language">Lingua</message>
-	<message key="Subject">Argomento</message>
-	<message key="Rights">Diritti</message>
-	<message key="Select File">Seleziona File</message>
-	<message key="select-object">Seleziona {0}</message>
-	<message key="Insert">Inserisci</message>
-	<message key="Insert File">Inserisci File</message>
-	<message key="upload-with-invalid-extension">Hai provato a inviare un file con una estensione non valida. Le estensioni valide sono {0}</message>
-	<message key="filename-format-exception">Il nome del file che stai cercando di trasferire non ha estensioni o contiene caratteri non ammessi come spazi e lettere accentate.</message>
-	<message key="Creation Date">Data creazione</message>
-	<message key="File Size">Dimensione File</message>
-	<message key="Image">Immagine</message>
-	<!-- submit screen -->
-	<message key="submit-for-approval">Proponi {0} per la pubblicazione</message>
-	<message key="submit-for-approval?">Vuoi proporre {0} per la pubblicazione?</message>
-	<!-- publish screen -->
-	<message key="Publish">Pubblica</message>
-	<message key="Source File(s)">File sorgente/i</message>
-	<!-- login screen -->
-	<message key="login-to-pub">Login nella Pubblicazione {0}</message>
-	<message key="Login">Login</message>
-	<message key="Password">Password</message>
-	<message key="Username">Nome utente</message>
-	<message key="Authentication failed">Autenticazione fallita</message>
-	<message key="try-user-lenya-alice">Prova utente {0} e password {1} (editore) o utente {2} e password {3} (revisore)</message>
-  <message key="try-user-lenya">Prova utente {0} e password {1}</message>
-  <!-- logout screen -->
-	<message key="logout-from-pub">Logout dalla Pubblicazione {0}</message>
-	<message key="Your History">Le tue modifiche</message>
-	<message key="Login to Authoring Area">Login nell'area Authoring</message>
-	<!-- reject screen -->
-	<message key="Reject">Respingi</message>
-	<message key="reject-doc?">Vuoi respingere il documento {0}?</message>
-	<!-- cms menu -->
-	<message key="New Document">Nuovo Documento</message>
-  <message key="New ... Document">Nuovo Documento {0}</message>
-  <message key="New Language Version">Nuova Lingua</message>
-	<message key="Remove Language Version">Rimuovi Lingua</message>
-	<message key="File">File</message>
-	<message key="Edit">Modifica</message>
-	<message key="Workflow">Workflow</message>
-	<message key="Deactivate">Disattiva</message>
-	<message key="Schedule">Pianifica</message>
-	<message key="Copy">Copia</message>
-	<message key="Paste">Incolla</message>
-	<message key="Cut">Taglia</message>
-	<message key="Help">Help</message>
-	<message key="Debug">Debug</message>
-	<message key="Delete">Cancella</message>
-	<message key="Archive">Archivia</message>
-	<message key="Restore">Ripristina</message>
-	<message key="Move Up">Sposta in Alto</message>
-	<message key="Move Down">Sposta in Basso</message>
-	<message key="Logout">Logout</message>
-	<message key="View Task Logs">Mostra Log delle Attività</message>
-	<message key="Support">Supporto</message>
-	<message key="System Documentation">Documentazione di Sistema</message>
-	<message key="User Documentation">Documentazione Utente</message>
-	<message key="About Apache Lenya">Informazioni su Apache Lenya</message>
-	<message key="Apache Lenya Homepage">Homepage di Apache Lenya </message>
-	<message key="Edit with Epoz">Modifica con Kupu</message>
-	<message key="Edit with BXE">Modifica con BXE</message>
-	<message key="Edit with one Form">Modifica con una Form</message>
-	<message key="Edit with Forms">Modifica con Forms</message>
-	<message key="Edit Metadata">Modifica&#160;Metadati</message>
-	<message key="Edit Navigation Title">Modifica&#160;Titolo&#160;Navigazione</message>
-	<message key="Rename URL">Rinomina&#160;URL</message>
-	<!-- cms tabs -->
-	<message key="Server Time">Ora Server</message>
-	<message key="Workflow State">Stato Workflow</message>
-	<!-- Administration tab -->
-	<message key="Administration">Amministrazione</message>
-	<message key="really-delete?">Vuoi davvero cancellare {0}?</message>
-	<message key="Do you really want to delete the trash ?">Svuotare il cestino?</message>
-	<message key="delete-object">Cancella {0}</message>
-	<message key="delete-object?">Vuoi davvero cancellare {0}?</message>
-	<message key="Passwd">Passwd</message>
-	<message key="Switch User">Cambia Utente</message>
-	<message key="Delete Trash">Svuota Cestino</message>
-	<message key="Cocoon and Server Status">Stato Cocoon e Server</message>
-	<!-- Group Administration -->
-	<message key="Profile">Profilo</message>
-	<message key="Members">Membri</message>
-	<message key="IP Ranges">Intervalli&#160;IP</message>
-	<message key="Edit Profile">Modifica Profilo</message>
-	<message key="Edit Members">Modifica Membri</message>
-	<message key="Group Administration">Amministrazione Gruppo</message>
-	<message key="Add Group">Aggiungi Gruppo</message>
-	<message key="Group Data">Dati Gruppo</message>
-	<!-- User Administration -->
-	<message key="User Data">Dati&#160;Utente</message>
-	<message key="CMS User ID">ID&#160;Utente&#160;CMS</message>
-	<message key="LDAP ID">ID&#160;LDAP</message>
-	<message key="Confirm password">Conferma&#160;password</message>
-	<message key="Add User">Aggiungi Utente</message>
-	<message key="User Administration">Amministrazione Utente</message>
-	<message key="User Details">Dettagli Utente</message>
-	<message key="All Groups">Tutti i Gruppi</message>
-	<message key="User Groups">Gruppi Utente</message>
-	<message key="Group Affiliation">Gruppi di Appartenenza</message>
-	<message key="Change Password">Cambia Password</message>
-	<message key="Edit Group Affiliation">Modifica Gruppi di Appartenenza</message>
-	<!-- IP Range Administration -->
-	<message key="IP Range">Intervallo&#160;IP</message>
-	<message key="IP Range ID">ID&#160;Intervallo&#160;IP</message>
-	<message key="Network Address">Indirizzo&#160;di Rete</message>
-	<message key="Subnet Mask">Subnet&#160;Mask</message>
-	<message key="IP Range Administration">Amministrazione&#160;Intervalli&#160;IP</message>
-	<message key="Add IP Range">Aggiungi&#160;Intervallo&#160;IP</message>
-	<message key="IP Range Profile">Profilo&#160;Intervallo&#160;IP</message>
-	<!-- Site tab (info screens) -->
-	<message key="Available Languages">Lingue Disponibili</message>
-	<message key="This document is not available in this language.">Questo documento non è disponibile in questa lingua</message>
-	<message key="Document ID">ID Documento</message>
-	<message key="Versions">Versioni</message>
-	<message key="SSL Encryption">Codifica&#160;SSL</message>
-	<message key="Rollback to this version">Ripristina questa versione</message>
-	<message key="AC Archive">Archivio&#160;AC</message>
-	<message key="AC Trash">Cestino&#160;AC</message>
-	<message key="AC Auth">AC&#160;Auth</message>
-	<message key="AC Live">AC&#160;Live</message>
-	<message key="Scheduler">Scheduler</message>
-	<!-- Info screen actions-->
-	<message key="New Navigation Title">Nuovo Titolo Navigazione</message>
-	<message key="Rename Document">Rinomina Documento</message>
-	<message key="New Document ID">Nuovo ID Documento</message>
-	<message key="No whitespace, no special characters">Niente spazi, niente caratteri speciali</message>
-	<!-- Scheduler -->
-	<message key="No active jobs">Nessun job attivo.</message>
-	<message key="The job date has expired">La data del job è scaduta</message>
-	<message key="check the log files">controllare i file di log</message>
-	<message key="Task">Task</message>
-	<message key="Day">Giorno</message>
-	<message key="Time">Ora</message>
-	<!-- Deactivate and delete -->
-	<message key="docs-have-links-to-doc">I seguenti documenti hanno link su questo documento</message>
-	<message key="Deactivate Document">Disattiva Documento</message>
-	<message key="deactivate-doc">Disattiva documento {0}</message>
-	<message key="deactivate-doc?">Vuoi veramente disattivare il documento {0}?</message>
-	<message key="Delete Document">Cancella Documento</message>
-	<message key="delete-doc">Cancella documento {0}</message>
-	<message key="cannot-deactivate-unless-children-deactivated">Questo documento non può essere disattivato se i documenti figli non sono disattivati</message>
-	<message key="delete-language-versions?">Vuoi veramente cancellare tutte le lingue del documento {0}?</message>
-	<!-- Archive document -->
-	<message key="Archive Document">Archivia Documento</message>
-	<message key="archive-doc">Archivia documento {0}</message>
-	<message key="archive-doc?">Vuoi veramente archiviare il documento {0}?</message>
-	<!-- Rename document -->
-	<message key="Rename Document">Rinomina Documento</message>
-	<message key="rename-doc">Rinomina documento {0}</message>
-	<!-- Copy document -->
-	<message key="Copy Document">Copia Documento</message>
-  <message key="copy-doc-to-clip?">Vuoi copiare il documento <xhtml:q>{0}</xhtml:q> negli appunti? Puoi incollare successivamente il documento in un'altra posizione.</message>
-	<!-- Paste document -->
-	<message key="Paste Document">Incolla Documento</message>
-  <message key="paste-doc-from-clip?">Vuoi incollare il documento </xhtml:q>{0}</message> dagli appunti?</message>
-	<!-- Cut document -->
-	<message key="Cut Document">Taglia Documento</message>
-  <message key="cut-doc-to-clip?">Vuoi tagliare il documento <xhtml:q>{0}</xhtml:q> and muoverlo negli appunti? Puoi incollare successivamente il documento in un'altra posizione.</message>
-	<!-- Info Asset -->
-	<message key="Insert Image">Inserisci Immagine</message>
-	<message key="Insert Asset">Inserisci Risorsa</message>
-	<message key="Asset Upload">Invia Risorsa</message>
-	<message key="Insert a new Image">Inserisci una nuova Immagine</message>
-	<message key="Upload an Asset">Invia una Risorsa</message>
-	<!-- Info workflow  -->
-	<message key="Value">Valore</message>
-	<message key="Event">Evento</message>
-	<message key="Variables">Variabili</message>
-	<message key="History">Storia</message>
-	<message key="State">Stato</message>
-	<message key="IP Address">Indirizzo IP</message>
-	<message key="edit">modifica</message>
-	<message key="submit">sottoponi</message>
-	<message key="reject">respingi</message>
-	<message key="publish">publica</message>
-	<!-- Info asset  -->
-	<message key="New Asset">Nuova Risorsa</message>
-	<!-- Info RC  -->
-	<message key="Current Version">Versione Corrente</message>
-	<message key="Rollback to this revision">Ripristina questa versione</message>
-	<!-- Info AC  -->
-	<message key="SSL Encryption">Codifica&#160;SSL</message>
-	<message key="Access Object">Access&#160;Object</message>
-	<message key="visit">visita</message>
-	<message key="reviewer">revisore</message>
-	<message key="editor">editore</message>
-	<message key="admin">amministratore</message>
-	<message key="world">mondo</message>
-	<message key="the world">il mondo</message>
-	<!-- Scheduler -->
-	<message key="New job">Nuovo&#160;job</message>
-	<message key="Active jobs">Job&#160;attivi</message>
-	<message key="Publish and Export">Pubblica e&#160;Esporta</message>
-	<message key="doc-has-links-to-unpublished">Questo documento ha link ai seguenti documenti non pubblicati:</message>
-	<!-- New Document -->
-	<message key="Please check the following possible causes of the exception">Controllare per favore le possibili cause dell'eccezione</message>
-	<message key="exception.cause.createdoc.whitespace-in-id">L'ID non può avere spazi</message>
-	<message key="exception.cause.createdoc.id-in-use">Questo ID è già usato</message>
-	<message key="failmessage.createdoc.invalidformat">Inserire un testo valido nel campo ID. A-Z, a-z, 0-9 o - sono caratteri validi.</message>
-	<message key="failmessage.createdoc.required">Riempire tutti i campi obbligatori (sono segnati con *).</message>
-	<!-- Asset Upload/Insert Dialog -->
-	<message key="Add to Asset Library">Aggiungi alla Libreria Risorse</message>
-	<message key="Asset Library">Libreria Risorse</message>
-	<message key="No assets available">Nessuna risorsa disponibile</message>
-	<message key="Insert Asset">Inserisci Risorsa</message>
-</catalogue>
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_ja.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_ja.xml
deleted file mode 100644
index 7923c3b..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_ja.xml
+++ /dev/null
@@ -1,331 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<catalogue xml:lang="ja" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">保存</message>
-  <message key="Submit">送信</message>
-  <message key="Cancel">キャンセル</message>
-  <message key="Delete">削除</message>
-  <message key="NOTE"><注></message>
-  <message key="No referer">参照無し</message>
-  <message key="Referer">参照</message>
-  <message key="EXCEPTION">例外</message>
-  <message key="User">ユーザ</message>
-  <message key="live">ライブ</message>
-  <message key="not">not</message>
-  <message key="authoring">オーサリング</message>
-  <message key="Authoring">オーサリング</message>
-  <message key="review">レビュー</message>
-  <message key="user">ユーザ</message>
-  <message key="Users">ユーザ群</message>
-  <message key="group">グループ</message>
-  <message key="Group">グループ</message>
-  <message key="Groups">グループ群</message>
-  <message key="Group ID">グループ ID</message>
-  <message key="Yes">はい</message>
-  <message key="No">いいえ</message>
-  <message key="Description">説明</message>
-  <message key="Name">名前</message>
-  <message key="Full Name">フルネーム</message>
-  <message key="required fields">必須フィールド</message>
-  <message key="Search">検索</message>
-  <message key="Home">ホーム</message>
-  <message key="Title">タイトル</message>
-  <message key="Last modified">最終更新日</message>
-  <message key="Overview">概要</message>
-  <message key="Role">ロール</message>
-  <message key="View">ビュー</message>
-  <message key="Assets">アセット</message>
-  <message key="true">はい</message>
-  <message key="false">いいえ</message>
-  <message key="Rename">名前変更</message>
-  <message key="Modify">修正</message>
-  <message key="Document">ドキュメント</message>
-  <message key="Date">日付</message>
-  <message key="Back">戻る</message>
-  <message key="Add">追加</message>
-  <message key="Create">作成</message>
-  <message key="The Archive">アーカイブ</message>
-  <message key="Trash">ゴミ箱</message>
-  <message key="Publisher">発行者</message>
-  <message key="Navigation Title">ナビゲーションタイトル</message>
-  <message key="Creator">作成者</message>
-  <message key="Language">言語</message>
-  <message key="Subject">題名</message>
-  <message key="Rights">権利</message>
-  <message key="Select File">ファイル選択</message>
-  <message key="select-object">{0} の選択</message>
-  <message key="Insert">挿入</message>
-  <message key="Insert File">ファイル挿入</message>
-  <message key="upload-with-invalid-extension">拡張子の正しくないファイルをアップロードしようとしました。正しい拡張子は {0} です。拡張子名は小文字(a,b,c,...)にしてください</message>
-  <message key="upload-with-missing-title">タイトルの無いファイルをアップロードしようとしました</message>
-  <message key="filename-format-exception">アップロードしようとしたファイルの名前に拡張子がないか或いは半角スペースやウムラウトといった使用不可能な文字が含まれています</message>
-  <message key="Creation Date">作成日</message>
-  <message key="File Size">ファイルサイズ</message>
-  <message key="Image">イメージ</message>
-  <message key="Link">リンク</message>
-  <message key="Caption">キャプション</message>
-  <message key="All rights reserved">All rights reserved.</message>
-
-  <!-- submit screen -->
-  <message key="submit-for-approval">承認用に {0} を送信</message>
-  <message key="submit-for-approval?">承認用に {0} を送信しますか?</message>
-
-  <!-- publish screen -->
-  <message key="Publish">パブリッシュ</message>
-  <message key="Source File(s)">ソースファイル</message>
-
-  <!-- login screen -->
-  <message key="login-to-pub">{0} パブリケーションへのログイン</message>
-  <message key="Login">ログイン</message>
-  <message key="Password">パスワード</message>
-  <message key="Username">ユーザ名</message>
-  <message key="Authentication failed">認証失敗</message>
-  <message key="try-user-lenya-alice">ユーザ {0} のパスワード {1} (編集者)、あるいは、ユーザ {2} のパスワード {3} (レビュアー)を使ってください</message>
-  
-  <!-- logout screen -->
-  <message key="logout-from-pub">{0} パブリケーションからのログアウト</message>
-  <message key="Your History">履歴</message>
-  <message key="Login to Authoring Area">オーサリングエリアへのログイン</message>
-
-  <!-- reject screen -->
-  <message key="Reject">拒否</message>
-  <message key="reject-doc?">ドキュメント {0} を拒否しますか?</message>
-
-  <!-- cms menu -->
-  <message key="New Document">新規ドキュメント</message>
-  <message key="New ... Document">新規ドキュメント {0}</message>
-  <message key="New Language Version">新規言語バージョン</message>
-  <message key="Remove Language Version">言語バージョンの削除</message>
-  <message key="File">ファイル</message>
-  <message key="Edit">編集</message>
-  <message key="Workflow">ワークフロー</message>
-  <message key="Deactivate">アクティベート解除</message>
-  <message key="Schedule">スケジュール</message>
-  <message key="Copy">コピー</message>
-  <message key="Paste">貼り付け</message>
-  <message key="Cut">切り取り</message>
-  <message key="Help">ヘルプ</message>
-  <message key="Debug">デバッグ</message>
-  <message key="Delete">削除</message>
-  <message key="Archive">アーカイブ</message>
-  <message key="Restore">リストア</message>
-  <message key="Move Up">上へ</message>
-  <message key="Move Down">下へ</message>
-  <message key="Logout">ログアウト</message>
-  <message key="View Task Logs">View Task Logs</message>
-  <message key="Support">サポート</message>
-  <message key="System Documentation">システムドキュメント</message>
-  <message key="User Documentation">ユーザドキュメント</message>
-  <message key="About Apache Lenya">Apache Lenya について</message>
-  <message key="Apache Lenya Homepage">Apache Lenya ホームページ</message>
-  <message key="Edit with Kupu">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(Kupu)
-  </message>
-  <message key="Edit with BXE">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(BXE)
-  </message>
-  <message key="Edit with one Form">ソースエディタ</message>
-  <message key="Edit with Forms">フォームエディタ</message>
-  <message key="Edit Metadata">メタデータの編集</message>
-  <message key="Edit Navigation Title">ナビゲーションタイトルの編集</message>
-  <message key="Rename URL">URLの変更</message>
-
-  <!-- cms tabs -->
-  <message key="Server Time">サーバ時間</message>
-  <message key="Workflow State">ワークフロー状態</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">管理</message>
-  <message key="really-delete?">本当に {0} を削除しますか?</message>
-  <message key="Do you really want to delete the trash ?">本当にゴミ箱を削除しますか?</message>
-  <message key="delete-object">{0} の削除</message>
-  <message key="delete-object?">本当に {0} を削除しますか?</message>
-  <message key="Passwd">パスワード</message>
-  <message key="Switch User">ユーザ切替</message>
-  <message key="Delete Trash">ゴミ箱の削除</message>
-  <message key="Cocoon and Server Status">Cocoon/Serverのステータス</message>
-
-    <!-- Group Administration -->
-  <message key="Profile">プロフィール</message>
-  <message key="Members">メンバー</message>
-  <message key="IP Ranges">IP範囲</message>
-  <message key="Edit Profile">プロフィール編集</message>
-  <message key="Edit Members">メンバー編集</message>
-  <message key="Group Administration">グループ管理</message>
-  <message key="Add Group">グループ追加</message>
-  <message key="Group Data">グループデータ</message>
-
-    <!-- User Administration -->
-  <message key="User Data">ユーザデータ</message>
-  <message key="CMS User ID">CMSユーザID</message>
-  <message key="LDAP ID">LDAP&#160;ID</message>
-  <message key="Confirm password">パスワード確認</message>
-  <message key="Add User">ユーザ追加</message>
-  <message key="User Administration">ユーザ管理</message>
-  <message key="User Details">ユーザ詳細</message>
-  <message key="All Groups">すべてのグループ</message>
-  <message key="User Groups">ユーザグループ</message>
-  <message key="Group Affiliation">グループアフィリエート</message>
-  <message key="Change Password">パスワード変更</message>
-  <message key="Edit Group Affiliation">グループアフィリエートの編集</message>
-
-    <!-- User Types -->
-  <message key="LDAP User">LDAP ユーザ</message>
-  <message key="Local User">CMS ユーザ</message>
-
-    <!-- IP Range Administration -->
-  <message key="IP Range">IP範囲</message>
-  <message key="IP Range ID">IP範囲ID</message>
-  <message key="Network Address">ネットワークアドレス</message>
-  <message key="Subnet Mask">サブネットマスク</message>
-  <message key="IP Range Administration">IP範囲管理</message>
-  <message key="Add IP Range">IP範囲の追加</message>
-  <message key="IP Range Profile">IP範囲のプロフィール</message>
-
-  <!-- Site tab (info screens) -->
-  <message key="Available Languages">利用可能言語</message>
-  <message key="This document is not available in this language.">このドキュメントで指定の言語は対応していません</message>
-  <message key="Document ID">ドキュメントID</message>
-  <message key="Versions">バージョン</message>
-  <message key="SSL Encryption">SSL暗号化</message>
-  <message key="Rollback to this version">このバージョンへロールバック</message>
-  <message key="AC Archive">ACアーカイブ</message>
-  <message key="AC Trash">ACゴミ箱</message>
-  <message key="AC Auth">AC&#160;Auth</message>
-  <message key="AC Live">AC&#160;Live</message>
-  <message key="Scheduler">スケジューラ</message>
-
-    <!-- Info screen actions-->
-  <message key="New Navigation Title">新規ナビゲーションタイトル</message>
-  <message key="Rename Document">ドキュメントの名前変更</message>
-  <message key="New Document ID">新規ドキュメントID</message>
-  <message key="No whitespace, no special characters">空白無し特殊文字無し</message>
-      <!-- Scheduler -->
-  <message key="No active jobs">有効なジョブ無し</message>
-  <message key="The job date has expired">このジョブは有効期限切れです</message>
-  <message key="check the log files">ログファイルの確認</message>
-  <message key="Task">タスク</message>
-  <message key="Day">Day</message>
-  <message key="Time">Time</message>
-      <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">以下のドキュメントにはこのドキュメントへのリンクがあります</message>
-  <message key="Deactivate Document">ドキュメントのアクティベート解除</message>
-  <message key="deactivate-doc">ドキュメント {0} のアクティベート解除</message>
-  <message key="deactivate-doc?">本当にドキュメント {0} のアクティベートを解除しますか?</message>
-  <message key="Delete Document">ドキュメントの削除</message>
-  <message key="delete-doc">ドキュメント {0} の削除</message>
-  <message key="cannot-deactivate-unless-children-deactivated">以下の子ドキュメントがアクティベート解除状態でなければ、このドキュメントのアクティベートを解除できません</message>
-  <message key="delete-language-versions?">本当にドキュメント {0} のすべての言語バージョンを削除してもよろしいですか?</message>
-      <!-- Archive document -->
-  <message key="Archive Document">ドキュメントのアーカイブ</message>
-  <message key="archive-doc">ドキュメント {0} のアーカイブ</message>
-  <message key="archive-doc?">本当にドキュメント {0} をアーカイブしますか?</message>
-      <!-- Rename document -->
-  <message key="Rename Document">ドキュメントの名前変更</message>
-  <message key="rename-doc">ドキュメント {0} の名前変更</message>
-      <!-- Copy document -->
-  <message key="Copy Document">ドキュメントのコピー</message>
-  <message key="copy-doc-to-clip?">ドキュメント {0} をコピーしクリップボードに移動させますか? お好みの場所に後で貼り付けをすることが出来ます</message>
-      <!-- Paste document -->
-  <message key="Paste Document">ドキュメントの貼り付け</message>
-  <message key="paste-doc-from-clip?">クリップボードからドキュメント {0} を貼り付けしますか?</message>
-      <!-- Cut document -->
-  <message key="Cut Document">ドキュメントの切り取り</message>
-  <message key="cut-doc-to-clip?">ドキュメント {0} を切り取りクリップボードに移動させますか? お好みの場所に後で貼り付けをすることが出来ます</message>
-    <!--Change visibility in navigation -->
-  <message key="Change">変更</message>
-  <message key="Change Document visiblity in navigation">ナビゲーションでのドキュメントの可視性の変更</message>
-  <message key="Visibility in navigation">ナビゲーションでの可視性</message>
-  <message key="visible">可視</message>
-  <message key="hidden">不可視</message>
-
-  <!-- Info Asset -->
-  <message key="Insert Image">イメージの挿入</message>
-  <message key="Insert Asset">アセットの挿入</message>
-  <message key="Asset Upload">アセットのアップロード</message>
-  <message key="Insert a new Image">新規イメージの挿入</message>
-  <message key="Upload an Asset">アセットのアップロード</message>
-
-  <!-- Info workflow  -->
-  <message key="Value">値</message>
-  <message key="Event">イベント</message>
-  <message key="Variables">変数</message>
-  <message key="History">履歴</message>
-  <message key="State">状況</message>
-  <message key="IP Address">IPアドレス</message>
-  <message key="edit">編集</message>
-  <message key="submit">送信</message>
-  <message key="reject">拒否</message>
-  <message key="publish">パブリッシュ</message>
-
-  <!-- Info asset  -->
-  <message key="New Asset">新規アセット</message>
-
-  <!-- Info RC  -->
-  <message key="Current Version">現在のバージョン</message>
-  <message key="Rollback to this revision">このリビジョンにロールバック</message>
-
-  <!-- Info AC  -->
-  <message key="SSL Encryption">SSL 暗号化</message>
-  <message key="Access Object">Access&#160;Object</message>
-  <message key="visit">訪問</message>
-  <message key="reviewer">reviewer</message>
-  <message key="editor">編集者</message>
-  <message key="admin">管理者</message>
-  <message key="world">世界</message>
-  <message key="the world">世界</message>
-
-  <!-- Scheduler -->
-  <message key="New job">新規ジョブ</message>
-  <message key="Active jobs">有効なジョブ</message>
-  <message key="Publish and Export">パブリッシュ/エクスポート</message>
-  <message key="doc-has-links-to-unpublished">このドキュメントには以下のパブリッシュされていないドキュメントへのリンクが含まれています:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">例外が発生しました:以下の可能性がありますので確認してください</message>
-  <message key="exception.cause.createdoc.whitespace-in-id">ID に空白文字を含めることは出来ません</message>
-  <message key="exception.cause.createdoc.id-in-use">この ID は既に使われています</message>
-  <message key="failmessage.createdoc.invalidformat">ID フィールドには 正しい文字を入れてください: A-Z, a-z, 0-9 あるいは - のみが利用可能です</message>
-  <message key="failmessage.createdoc.required">必須項目 (*) の値をすべて満たしてください</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="lenya.assetupload.subtitle">アセットライブラリへの追加</message>
-  <message key="Asset Library">アセットライブラリ</message>
-  <message key="No assets available">アセットは利用不可能です</message>
-  <message key="Insert Asset">アセットの挿入</message>
-
-  <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">イメージの挿入</message>
-  <message key="lenya.imageupload.selectimage.label">イメージの選択</message>
-  <message key="lenya.imageupload.info.noimages">イメージは利用不可能です</message>
-  <message key="lenya.imageupload.links.hint">外部リソースへのリンクは 'http://' から始め、内部リソースへは '/' から始めるようにしてください</message>
-
-  <!-- Revision Controller -->
-  <message key="Reason">理由</message>
-  <message key="Filename">ファイル名</message>
-  <message key="lenya.rc.nocheckout">リソースがチェックアウト(check out)できませんでした</message>
-  <message key="lenya.rc.checkedoutalready">このリソースは既に他のユーザがチェックアウトしています</message>
-  <message key="lenya.rc.nocheckin">リソースをチェックインできませんでした</message>
-  <message key="Generic Exception">一般的例外</message>
-  <message key="Check the log files.">ログファイルを確認してください</message>
-</catalogue>
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_nl.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_nl.xml
deleted file mode 100644
index e9e8eec..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_nl.xml
+++ /dev/null
@@ -1,378 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<catalogue xml:lang="nl" xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <!-- common used words -->
-  <message key="Save">Opslaan</message>
-  <message key="Submit">Verstuur</message>
-  <message key="Cancel">Afbreken</message>
-
-  <message key="Delete">Verwijder</message>
-  <message key="NOTE">Let Op</message>
-  <message key="No referer">Geen terugverwijzing</message>
-  <message key="Referer">Terugverwijzing</message>
-  <message key="EXCEPTION">EXCEPTIE</message>
-  <message key="User">Gebruiker</message>
-
-  <message key="live">live</message>
-  <message key="not">niet</message>
-  <message key="authoring">schrijven</message>
-  <message key="Authoring">Schrijven</message>
-  <message key="review">controle</message>
-  <message key="user">gebruiker</message>
-
-  <message key="Users">Gebruikers</message>
-  <message key="group">groep</message>
-  <message key="Group">Groep</message>
-  <message key="Groups">Groepen</message>
-  <message key="Group ID">Groep ID</message>
-  <message key="Yes">Ja</message>
-
-  <message key="No">Nee</message>
-  <message key="Description">Beschrijving</message>
-  <message key="Name">Naam</message>
-  <message key="Full Name">Volledige naam</message>
-  <message key="required fields">verplichte velden</message>
-  <message key="Search">Zoek</message>
-
-  <message key="Home">Startpagina</message>
-  <message key="Title">Titel</message>
-  <message key="Last modified">Laatste&#160;wijziging</message>
-  <message key="Overview">Overzicht</message>
-  <message key="Role">Rol</message>
-  <message key="View">Aanzicht</message>
-
-  <message key="Assets">Onderdelen</message>
-  <message key="true">ja</message>
-  <message key="false">nee</message>
-  <message key="Rename">Hernoemen</message>
-  <message key="Modify">Veranderen</message>
-  <message key="Document">Document</message>
-
-  <message key="Date">Datum</message>
-  <message key="Back">Terug</message>
-  <message key="Add">Toevoegen</message>
-  <message key="Create">Maken</message>
-  <message key="The Archive">Het Archief</message>
-  <message key="Trash">Prullenbak</message>
-
-  <message key="Publisher">Eigenaar</message>
-  <message key="Navigation Title">Navigatie Titel</message>
-  <message key="Creator">Maker</message>
-  <message key="Language">Taal</message>
-  <message key="Subject">Onderwerp</message>
-  <message key="Rights">Rechten</message>
-
-  <message key="Select File">Kies Bestand</message>
-  <message key="select-object">Kies {0}</message>
-  <message key="Insert">Toevoegen</message>
-  <message key="Insert File">Bestand toevoegen</message>
-  <message key="upload-with-invalid-extension">U heeft geprobeerd een bestand met een onjuiste extentie toe te voegen.  Juiste extenties zijn{0}.  Merk op dat extenties met kleine letters moeten worden geschreven.</message>
-  <message key="upload-with-missing-title">U heeft geprobeerd een bestand zonder een titel toe te voegen.</message>
-
-  <message key="filename-format-exception">De bestandsnaam van het bestand dat u probeert toe te voegen heeft geen extentie of bevat karakters die niet zijn toegestaan zoals spaties of trema's.</message>
-  <message key="Creation Date">Aanmaak datum</message>
-  <message key="File Size">Bestands omvang</message>
-  <message key="Image">Afbeelding</message>
-  <message key="Link">Verwijzing</message>
-  <message key="Caption">Onderschrift</message>
-
-  <message key="All rights reserved">Alle rechten voorbehouden.</message>
-
-  <!-- submit screen -->
-  <message key="submit-for-approval">Bied {0} aan voor goedkeuring</message>
-  <message key="submit-for-approval?">Wilt u {0} aanbieden voor goedkeuring?</message>
-
-  <!-- publish screen -->
-  <message key="Publish">Publiceer</message>
-
-  <message key="Source File(s)">Bron Bestand(en)</message>
-
-  <!-- login screen -->
-  <message key="login-to-pub">Aanmelden voor de {0} Publicatie</message>
-  <message key="Login">Inloggen</message>
-  <message key="Password">Wachtwoord</message>
-  <message key="Username">Gebruikersnaam</message>
-
-  <message key="Authentication failed">Authenticatie mislukt</message>
-  <message key="try-user-lenya-alice">Probeer gebruiker {0} met wachtwoord {1} (auteur), of gebruiker {2} en wachtwoord {3} (reviewer)</message>
-  <message key="try-user-lenya">Probeer gebruiker {0} met wachtwoord {1}</message>
-  
-  <!-- logout screen -->
-  <message key="logout-from-pub">Afmelden voor de {0} Publicatie</message>
-  <message key="Your History">Uw historie</message>
-  <message key="Login to Authoring Area">Inloggen in het schrijf onderdeel</message>
-
-  <!-- reject screen -->
-  <message key="Reject">Afwijzen</message>
-  <message key="reject-doc?">Wilt u het document {0} afwijzen?</message>
-
-  <!-- cms menu -->
-  <message key="New Document">Nieuw Document</message>
-  <message key="New ... Document">Nieuw {0} Document</message>
-  <message key="New Language Version">Nieuwe taal versie</message>
-
-  <message key="Remove Language Version">Verwijder taal versie</message>
-  <message key="File">Bestand</message>
-  <message key="Edit">Wijzig</message>
-  <message key="Workflow">Workflow</message>
-  <message key="Deactivate">Deactivate</message>
-  <message key="Schedule">Schedule</message>
-
-  <message key="Copy">Kopieer</message>
-  <message key="Paste">Plakken</message>
-  <message key="Cut">Knippen</message>
-  <message key="Help">Help</message>
-  <message key="Debug">Debug</message>
-  <message key="Delete">Verwijder</message>
-
-  <message key="Archive">Archiveer</message>
-  <message key="Restore">Herstel</message>
-  <message key="Move Up">Verplaats omhoog</message>
-  <message key="Move Down">Verplaats omlaag</message>
-  <message key="Logout">Uitloggen</message>
-  <message key="View Task Logs">Bekijk taak logs</message>
-
-  <message key="Support">Ondersteuning</message>
-  <message key="System Documentation">Systeem&#160;Documentatie</message>
-  <message key="User Documentation">Gebruikers Documentatie</message>
-  <message key="About Apache Lenya">Over Apache Lenya</message>
-  <message key="Apache Lenya Homepage">Apache Lenya Startpagina</message>
-  <message key="Wijzig met Kupu">
-
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;All&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(Kupu)
-  </message>
-  <message key="Wijzig met BXE">
-    <xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;All&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;Editor&#160;(BXE)
-  </message>
-  <message key="Edit with one Form">Broncode&#160;Editor</message>
-  <message key="Edit with Forms">Formulier&#160;Editor</message>
-
-  <message key="Edit Metadata">Wijzig&#160;Metadata</message>
-  <message key="Edit Navigation Title">Wijzig&#160;Navigatie&#160;Titel</message>
-  <message key="Rename URL">Hernoem&#160;URL</message>
-
-  <!-- cms tabs -->
-  <message key="Server Time">Server Tijd</message>
-
-  <message key="Workflow State">Workflow Status</message>
-
-  <!-- Administration tab -->
-  <message key="Administration">Beheer</message>
-  <message key="really-delete?">{0} echt verwijderen?</message>
-  <message key="Do you really want to delete the trash ?">Weet u zeker dat u de prullenbak wilt legen?</message>
-  <message key="delete-object">Verwijder {0}</message>
-
-  <message key="delete-object?">Weet u zeker dat u {0} wilt verwijderen?</message>
-  <message key="Passwd">Wachtwoord</message>
-  <message key="Switch User">Van gebruiker wisselen</message>
-  <message key="Delete Trash">Prullenbak legen</message>
-  <message key="Cocoon and Server Status">Status van Cocoon en de Server</message>
-
-    <!-- Group Administration -->
-
-  <message key="Profile">Profiel</message>
-  <message key="Members">Leden</message>
-  <message key="IP Ranges">IP&#160;Bereiken</message>
-  <message key="Edit Profile">Wijzig Profiel</message>
-  <message key="Edit Members">Wijzig Leden</message>
-  <message key="Group Administration">Groep Beheer</message>
-
-  <message key="Add Group">Groep Toevoegen</message>
-  <message key="Group Data">Groep Gegevens</message>
-
-    <!-- User Administration -->
-  <message key="User Data">Gebruiker&#160;Gegevens</message>
-
-  <message key="CMS User ID">CMS&#160;Gebruiker&#160;ID</message>
-
-  <message key="LDAP ID">LDAP&#160;ID</message>
-  <message key="Confirm password">Bevestig&#160;wachtwoord</message>
-  <message key="Add User">Gebruiker toevoegen</message>
-  <message key="User Administration">Gebruiker Beheer</message>
-  <message key="User Details">Gebruiker Details</message>
-
-  <message key="All Groups">Alle Groepen</message>
-  <message key="User Groups">Gebruiker Groepen</message>
-  <message key="Group Affiliation">Group Toewijzing</message>
-  <message key="Change Password">Verander Wachtwoord</message>
-  <message key="Edit Group Affiliation">Wijzig groep toewijzing</message>
-
-    <!-- User Types -->
-
-  <message key="LDAP User">LDAP Gebruiker</message>
-  <message key="Local User">CMS Gebruiker</message>
-
-    <!-- IP Range Administration -->
-  <message key="IP Range">IP&#160;Bereik</message>
-  <message key="IP Range ID">IP&#160;Bereik&#160;ID</message>
-
-  <message key="Network Address">Netwerk&#160;Adres</message>
-  <message key="Subnet Mask">Subnet&#160;Masker</message>
-  <message key="IP Range Administration">IP&#160;Bereik&#160;Beheer</message>
-  <message key="Add IP Range">IP&#160;Range&#160;Toevoegen</message>
-
-  <message key="IP Range Profile">IP&#160;Bereik&#160;Profiel</message>
-
-  <!-- Site tab (info screens) -->
-  <message key="Available Languages">Beschikbare Talen</message>
-  <message key="This document is not available in this language.">Dit document is niet beschikbaar in deze taal.</message>
-  <message key="Document ID">Document ID</message>
-
-  <message key="Versions">Versies</message>
-  <message key="SSL Encryption">SSL&#160;Encryptie</message>
-  <message key="Rollback to this version">Herstel naar deze versie</message>
-  <message key="AC Archive">AC&#160;Archief</message>
-  <message key="AC Trash">AC&#160;Prullenbak</message>
-
-  <message key="AC Auth">AC&#160;Aut</message>
-  <message key="AC Live">AC&#160;Live</message>
-  <message key="Scheduler">Scheduler</message>
-
-    <!-- Info screen actions-->
-  <message key="New Navigation Title">Nieuwe Navigatie Titel</message>
-
-  <message key="Rename Document">Hernoem Document</message>
-  <message key="New Document ID">Nieuw Document ID</message>
-  <message key="No whitespace, no special characters">Geen witruimte, geen speciale karakters</message>
-      <!-- Scheduler -->
-  <message key="No active jobs">Geen actieve opdrachten.</message>
-  <message key="The job date has expired">De opdracht datum is verlopen.</message>
-
-  <message key="check the log files">controleer de log bestanden</message>
-  <message key="Task">Opdracht</message>
-  <message key="Day">Dag</message>
-  <message key="Time">Tijd</message>
-      <!-- Deactivate and delete -->
-  <message key="docs-have-links-to-doc">De volgende documenten hebben een link naar dit document</message>
-
-  <message key="Deactivate Document">Deactiveer Document</message>
-  <message key="deactivate-doc">Deactiveer document {0}</message>
-  <message key="deactivate-doc?">Wilt u echt het document {0} deactiveren?</message>
-  <message key="Delete Document">Verwijder Document</message>
-  <message key="delete-doc">Verwijder document {0}</message>
-  <message key="cannot-deactivate-unless-children-deactivated">Dit document kan niet worden gedeactiveerd voordat de volgende kind documenten worden gedeactiveerd</message>
-
-  <message key="delete-language-versions?">Wilt u echt all taal versies van het document {0} verwijderen?</message>
-      <!-- Archive document -->
-  <message key="Archive Document">Archiveer Document</message>
-  <message key="archive-doc">Archiveer document {0}</message>
-  <message key="archive-doc?">Wilt u echt het document {0} archiveren?</message>
-      <!-- Rename document -->
-  <message key="Rename Document">Hernoem Document</message>
-
-  <message key="rename-doc">Hernoem document {0}</message>
-      <!-- Copy document -->
-  <message key="Copy Document">Kopieer Document</message>
-  <message key="copy-doc-to-clip?">Wilt u het document <xhtml:q>{0}</xhtml:q> kopieren naar het clipboard? U kan het document later plakken op een lokatie naar keuze.</message>
-      <!-- Paste document -->
-  <message key="Paste Document">Document Plakken</message>
-
-  <message key="paste-doc-from-clip?">Wilt u het document <xhtml:q>{0}</xhtml:q> plakken vanaf het clipboard?</message>
-      <!-- Cut document -->
-  <message key="Cut Document">Document Knippen</message>
-  <message key="cut-doc-to-clip?">Wilt u het document <xhtml:q>{0}</xhtml:q> knippen en verplaatsen naar het clipboard? U kunt het document later plakken op een lokatie naar keuze.</message>
-
-    <!--Change visibility in navigation -->
-  <message key="Change">Aanpassen</message>
-  <message key="Change Document visiblity in navigation">Verander de document zichtbaarheid in de navigatie</message>
-  <message key="Visibility in navigation">Zichtbaarheid in navigatie</message>
-  <message key="visible">zichtbaar</message>
-  <message key="hidden">verborgen</message>
-
-  <!-- Info Asset -->
-  <message key="Insert Image">Afbeelding Toevoegen</message>
-  <message key="Insert Asset">Onderdeel Toevoegen</message>
-  <message key="Asset Upload">Onderdeel Inladen</message>
-  <message key="Insert a new Image">Nieuwe Afbeelding Toevoegen</message>
-  <message key="Upload an Asset">Inladen van een Onderdeel</message>
-
-  <!-- Info workflow  -->
-  <message key="Value">Waarde</message>
-  <message key="Event">Gebeurtenis</message>
-  <message key="Variables">Variabelen</message>
-  <message key="History">Historie</message>
-  <message key="State">Status</message>
-
-  <message key="IP Address">IP Adres</message>
-  <message key="edit">wijzig</message>
-  <message key="submit">aanbieden</message>
-  <message key="reject">wijs af</message>
-  <message key="publish">publiceer</message>
-
-  <!-- Info asset  -->
-
-  <message key="New Asset">New Onderdeel</message>
-
-  <!-- Info RC  -->
-  <message key="Current Version">Huidige Versie</message>
-  <message key="Rollback to this revision">Keer terug naar deze versie</message>
-
-  <!-- Info AC  -->
-  <message key="SSL Encryption">SSL&#160;Encryptie</message>
-
-  <message key="Access Object">Benader&#160;Objekt</message>
-  <message key="visit">bezoek</message>
-  <message key="reviewer">reviewer</message>
-  <message key="editor">auteur</message>
-  <message key="admin">beheer</message>
-  <message key="world">wereld</message>
-
-  <message key="the world">de wereld</message>
-
-  <!-- Scheduler -->
-  <message key="New job">Nieuw&#160;opdracht</message>
-  <message key="Active jobs">Actieve&#160;opdrachten</message>
-  <message key="Publish and Export">Publiseer en&#160;Export</message>
-
-  <message key="doc-has-links-to-unpublished">Dit document heeft links naar de volgende niet gepubliceerde documenten:</message>
-
-  <!-- New Document -->
-  <message key="Please check the following possible causes of the exception">Controleer aub de volgende mogelijke oorzaken van de exceptie.</message>
-  <message key="exception.cause.createdoc.whitespace-in-id">Het is niet toegestaan om witruimte in de id te gebruiken</message>
-  <message key="exception.cause.createdoc.id-in-use">De id is al in gebruik</message>
-  <message key="failmessage.createdoc.invalidformat">Vul aub een valide waarde voor het ID veld in. A-Z, a-z, 0-9 of - zijn valide characters.</message>
-
-  <message key="failmessage.createdoc.required">Aub all verplichte velden (*) invullen.</message>
-
-  <!-- Asset Upload/Insert Dialog -->
-  <message key="lenya.assetupload.subtitle">Voeg toe aan Onderdelen bibliotheek</message>
-  <message key="Asset Library">Onderdelen Bibliotheek</message>
-  <message key="No assets available">Geen Onderdelen beschikbaar</message>
-  <message key="Insert Asset">Onderdeel toevoegen</message>
-
-  <!-- Image Upload/Insert Dialog -->
-  <message key="lenya.imageupload.title">Afbeelding Toevoegen</message>
-  <message key="lenya.imageupload.selectimage.label">Selecteer Afbeelding</message>
-  <message key="lenya.imageupload.info.noimages">Geen afbeeldingen beschikbaar.</message>
-  <message key="lenya.imageupload.links.hint">Externe links moeten beginnen met 'http://', interne links moeten beginnen met '/'</message>
-
-  <!-- Revision Controller -->
-
-  <message key="Reason">Reden</message>
-  <message key="Filename">Bestandsnaam</message>
-  <message key="lenya.rc.nocheckout">Middel kon niet worden uitgechecked</message>
-  <message key="lenya.rc.checkedoutalready">Het middel is in bewerking door een andere gebruiker</message>
-  <message key="lenya.rc.nocheckin">Middel kon niet worden ingechecked</message>
-  <message key="Generic Exception">Algemene Exceptie</message>
-
-  <message key="Check the log files.">Controleer de log bestanden.</message>
-</catalogue>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_pt.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_pt.xml
deleted file mode 100644
index 885eae7..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_pt.xml
+++ /dev/null
@@ -1,332 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-  $Id: cmsui_pt.xml 111676 2005-06-15 23:50:43Z gregor $

-

-   @translators Rolando Isidoro <rli at uninova dot pt>

-

--->

-

-<catalogue xml:lang="pt" xmlns:xhtml="http://www.w3.org/1999/xhtml">

-

-  <!-- common used words -->

-  <message key="Save">Guardar</message>

-  <message key="Submit">Submeter</message>

-  <message key="Cancel">Cancelar</message>

-  <message key="Delete">Eliminar</message>

-  <message key="NOTE">Nota</message>

-  <message key="No referer">Sem referência</message>

-  <message key="Referer">Referência</message>

-  <message key="EXCEPTION">EXCEPÇÃO</message>

-  <message key="User">Utilizador</message>

-  <message key="live">produção</message>

-  <message key="not">não</message>

-  <message key="authoring">edição</message>

-  <message key="Authoring">Edição</message>

-  <message key="review">Revisão</message>

-  <message key="user">utilizador</message>

-  <message key="Users">Utilizadores</message>

-  <message key="group">grupo</message>

-  <message key="Group">Grupo</message>

-  <message key="Groups">Grupos</message>

-  <message key="Group ID">ID Grupo</message>

-  <message key="Yes">Sim</message>

-  <message key="No">Não</message>

-  <message key="Description">Descrição</message>

-  <message key="Name">Nome</message>

-  <message key="Full Name">Nome completo</message>

-  <message key="required fields">campos necessários</message>

-  <message key="Search">Procurar</message>

-  <message key="Home">Início</message>

-  <message key="Title">Título</message>

-  <message key="Last modified">Última modificação</message>

-  <message key="Overview">Geral</message>

-  <message key="Role">Rol</message>

-  <message key="View">Ver</message>

-  <message key="Assets">Activos</message>

-  <message key="true">verdade</message>

-  <message key="false">falso</message>

-  <message key="Rename">Renomear</message>

-  <message key="Modify">Modificar</message>

-  <message key="Document">Documento</message>

-  <message key="Date">Data</message>

-  <message key="Back">Atrás</message>

-  <message key="Add">Adicionar</message>

-  <message key="Create">Criar</message>

-  <message key="The Archive">O&#160;Arquiivo</message>

-  <message key="Trash">Reciclagem</message>

-  <message key="Publisher">Editor</message>

-  <message key="Navigation Title">Título de Navegação</message>

-  <message key="Creator">Autor</message>

-  <message key="Language">Idioma</message>

-  <message key="Subject">Tema</message>

-  <message key="Rights">Permissões</message>

-  <message key="Select File">Seleccione ficheiro</message>

-  <message key="select-object">Seleccione {0}</message>

-  <message key="Insert">Inserir</message>

-  <message key="Insert File">Inserir&#160;ficheiro</message>

-  <message key="upload-with-invalid-extension">Tentou adicionar um ficheiro com uma extensão inválida. As extensões válidas são {0}</message>

-  <message key="upload-with-missing-title">Tentou adicionar um ficheiro sem título.</message>

-  <message key="filename-format-exception">O nome do ficheiro que está a tentar adicionar não tem extensão ou contém caractéres não permitidos.</message>

-  <message key="Creation Date">Data de criação</message>

-  <message key="File Size">Tamanho do ficheiro</message>

-  <message key="Image">Imagem</message>

-  <message key="Link">Link</message>

-  <message key="Caption">Subtítulo</message>

-  <message key="All rights reserved">Todos os direitos reservados.</message>

-

-  <!-- submit screen -->

-  <message key="submit-for-approval">Submeter {0} para aprovação</message>

-  <message key="submit-for-approval?">Deseja submeter {0} para aprovação?</message>

-

-  <!-- publish screen -->

-  <message key="Publish">Publicar</message>

-  <message key="Source File(s)">Ficheiro(s) Fonte</message>

-

-  <!-- login screen -->

-  <message key="login-to-pub">Aceder à publicação {0}</message>

-  <message key="Login">Login</message>

-  <message key="Password">Password</message>

-  <message key="Username">Nome do utilizador</message>

-  <message key="Authentication failed">Erro na autenticação</message>

-  <message key="try-user-lenya-alice">Tente com utilizador {0} e password {1} (editor) ou utilizador {2} e password {3} (revisor)</message>

-  <message key="try-user-lenya">Tente com utilizador {0} e password {1}</message>
-  

-  <!-- logout screen -->

-  <message key="logout-from-pub">Sair da publicação {0}</message>

-  <message key="Your History">O seu historial</message>

-  <message key="Login to Authoring Area">Aceder à àrea de edição</message>

-

-  <!-- reject screen -->

-  <message key="Reject">Rejeitar</message>

-  <message key="reject-doc?">Deseja rejeitar o documento {0}?</message>

-

-  <!-- cms menu -->

-  <message key="New Document">Novo documento</message>

-  <message key="New ... Document">Novo documento {0}</message>
-  <message key="New Language Version">Nova versão de idioma</message>

-  <message key="Remove Language Version">Eliminar versão de idioma</message>

-  <message key="File">Ficheiro</message>

-  <message key="Edit">Editar</message>

-  <message key="Workflow">Workflow</message>

-  <message key="Deactivate">Desactivar</message>

-  <message key="Schedule">Calendário</message>

-  <message key="Copy">Copiar</message>

-  <message key="Paste">Colar</message>

-  <message key="Cut">Cortar</message>

-  <message key="Help">Ajuda</message>

-  <message key="Debug">Debug</message>

-  <message key="Delete">Eliminar</message>

-  <message key="Archive">Arquivar</message>

-  <message key="Restore">Recuperar</message>

-  <message key="Move Up">Mover para cima</message>

-  <message key="Move Down">Mover para baixo</message>

-  <message key="Logout">Sair</message>

-  <message key="View Task Logs">Ver registos de tarefas</message>

-  <message key="Support">Suporte</message>

-  <message key="System Documentation">Documentação do sistema</message>

-  <message key="User Documentation">Documentação do utilizador</message>

-  <message key="About Apache Lenya">Sobre o ApacheLenya</message>

-  <message key="Apache Lenya Homepage">Homepage do Apache Lenya</message>

-  <message key="Edit with Kupu">

-    Editor&#160;<xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;(Kupu)

-  </message>

-  <message key="Edit with BXE">

-    Editor&#160;<xhtml:abbr title="What&#160;You&#160;See&#160;Is&#160;What&#160;You&#160;Get">WYSIWYG</xhtml:abbr>&#160;(BXE)

-  </message>

-  <message key="Edit with one Form">Editor&#160;de&#160;código&#160;fonte</message>

-  <message key="Edit with Forms">Editor&#160;Forms</message>

-  <message key="Edit Metadata">Editar&#160;Metadata</message>

-  <message key="Edit Navigation Title">Editar&#160;título&#160;de&#160;navegação</message>

-  <message key="Rename URL">Renomear&#160;URL</message>

-

-  <!-- cms tabs -->

-  <message key="Server Time">Hora do servidor</message>

-  <message key="Workflow State">Estado do workflow</message>

-

-  <!-- Administration tab -->

-  <message key="Administration">Administração</message>

-  <message key="really-delete?">Deseja ;realmente eliminar {0}?</message>

-  <message key="Do you really want to delete the trash ?">Deseja realmente esvaziar a reciclagem?</message>

-  <message key="delete-object">Eliminar {0}?</message>

-  <message key="delete-object?">Deseja realmente eliminar {0}?</message>

-  <message key="Passwd">Password</message>

-  <message key="Switch User">Mudar&#160;de&#160;utilizador</message>

-  <message key="Delete Trash">Esvaziar&#160;reciclagem</message>

-  <message key="Cocoon and Server Status">Estado&#160;do&#160;Servidor&#160;e&#160;do&#160;Cocoon</message>

-

-    <!-- Group Administration -->

-  <message key="Profile">Perfil</message>

-  <message key="Members">Membros</message>

-  <message key="IP Ranges">Intervalos&#160;IP</message>

-  <message key="Edit Profile">Editar&#160;Perfil</message>

-  <message key="Edit Members">Editar&#160;Membros</message>

-  <message key="Group Administration">Administração&#160;de&#160;grupos</message>

-  <message key="Add Group">Adicionar&#160;Grupo</message>

-  <message key="Group Data">Dados&#160;do&#160;Grupo</message>

-

-    <!-- User Administration -->

-  <message key="User Data">Dados&#160;do&#160;Utilizador</message>

-

-  <message key="CMS User ID">ID&#160;do&#160;Utilizador&#160;do&#160;CMS</message>

-  <message key="LDAP ID">ID&#160;de&#160;LDAP</message>

-  <message key="Confirm password">Confirme&#160;password</message>

-  <message key="Add User">Adicionar Utilizador</message>

-  <message key="User Administration">Administração do Utilizador</message>

-  <message key="User Details">Detalhes do Utilizador</message>

-  <message key="All Groups">Todos os Grupos</message>

-  <message key="User Groups">Grupos do Utilizador</message>

-  <message key="Group Affiliation">Afiliação a um Grupo</message>

-  <message key="Change Password">Alterar Password</message>

-  <message key="Edit Group Affiliation">Editar Afiliação de Grupo</message>

-

-    <!-- IP Range Administration -->

-  <message key="IP Range">Intervalo&#160;IP</message>

-  <message key="IP Range ID">ID&#160;do&#160;Intervalo&#160;IP</message>

-  <message key="Network Address">Endereço&#160;de&#160;rede</message>

-  <message key="Subnet Mask">Máscara&#160;da&#160;subrede</message>

-  <message key="IP Range Administration">Administração&#160;do&#160;intervalo&#160;IP</message>

-  <message key="Add IP Range">Adicionar&#160;intervalo&#160;IP</message>

-  <message key="IP Range Profile">Perfil&#160;do&#160;intervalo&#160;IP</message>

-

-  <!-- Site tab (info screens) -->

-  <message key="Available Languages">Idiomas Disponíveis</message>

-  <message key="This document is not available in this language.">Este documento não se encontra disponível no idioma seleccionado.</message>

-  <message key="Document ID">ID do Documento</message>

-  <message key="Versions">Versões</message>

-  <message key="SSL Encryption">Cifragem&#160;SSL</message>

-  <message key="Rollback to this version">Rollback para versão anterior</message>

-  <message key="AC Archive">Arquivo&#160;AC</message>

-  <message key="AC Trash">Reciclagem&#160;AC</message>

-  <message key="AC Auth">Edição&#160;AC</message>

-  <message key="AC Live">Produção&#160;AC</message>

-  <message key="Scheduler">Calendário</message>

-  <message key="Inherited Rights">Permissões herdadas</message>

-

-    <!-- Info screen actions-->

-  <message key="New Navigation Title">Novo título de navegação</message>

-  <message key="Rename Document">Renomear Documento</message>

-  <message key="New Document ID">Novo ID do Documento</message>

-  <message key="No whitespace, no special characters">Não são permitidos espaços em branco nem caractéres especiais</message>

-      <!-- Scheduler -->

-<message key="No active jobs">Não há tarefas activas.</message>

-   <message key="The job date has expired">A data da tarefa expirou.</message>

-  <message key="check the log files">verifique os ficheiros de log</message>

-  <message key="Task">Tarefa</message>

-  <message key="Day">Dia</message>

-  <message key="Time">Hora</message>

-      <!-- Deactivate and delete -->

-  <message key="docs-have-links-to-doc">Os seguintes documentos têm links para este documento</message>

-  <message key="Deactivate Document">Desactivar Documento</message>

-  <message key="deactivate-doc">Desactivar Documento {0}</message>

-  <message key="deactivate-doc?">Deseja realmente desactivar o documento {0}?</message>

-  <message key="Delete Document">Eliminar Documento</message>

-  <message key="delete-doc">Eliminar documento {0}</message>

-  <message key="cannot-deactivate-unless-children-deactivated">Não é possível desactivar este documento a menos que os seguintes documentos descendentes sejam desactivados</message>

-  <message key="delete-language-versions?">Deseja realmente eliminar todas as versões existentes em diferentes idiomas do documento {0}?</message>

-      <!-- Archive document -->

-  <message key="Archive Document">Arquivar Documento</message>

-  <message key="archive-doc">Arquivar documento {0}</message>

-  <message key="archive-doc?">Deseja realmente arquivar o documento {0}?</message>

-      <!-- Rename document -->

-  <message key="Rename Document">Renomear Documento</message>

-  <message key="rename-doc">Renomear Documento {0}</message>

-      <!-- Copy document -->

-  <message key="Copy Document">Copiar Documento</message>

-  <message key="copy-doc-to-clip?">Deseja realmente copiar o documento <xhtml:q>{0}</xhtml:q> para o clipboard? Mais tarde poderá colar o documento numa localização escolhida por si.</message>

-      <!-- Paste document -->

-  <message key="Paste Document">Colar Documento</message>

-  <message key="paste-doc-from-clip?">Deseja realmente colar o documento <xhtml:q>{0}</xhtml:q> do clipboard?</message>

-      <!-- Cut document -->

-  <message key="Cut Document">Cortar Documento</message>

-  <message key="cut-doc-to-clip?">Deseja realmente cortar o documento <xhtml:q>{0}</xhtml:q> e movê-lo para o clipboard? Mais tarde poderá colar o documento numa localização escolhida por si.</message>

-    <!--Change visibility in navigation -->

-  <message key="Change">Alterar</message>

-  <message key="Change Document visiblity in navigation">Alterar a visibilidade do documento na navegação</message>

-  <message key="Visibility in navigation">Visibilidade na navegação</message>

-  <message key="visible">visível</message>

-  <message key="hidden">oculto</message>

-

-  <!-- Info Asset -->

-  <message key="Insert Image">Inserir Imagem</message>

-  <message key="Insert Asset">Inserir Objecto</message>

-  <message key="Asset Upload">Adição de activos</message>

-  <message key="Insert a new Image">Inserir uma Imagem</message>

-  <message key="Upload an Asset">Adicionar um activo</message>

-

-  <!-- Info workflow  -->

-  <message key="Value">Valor</message>

-  <message key="Event">Evento</message>

-  <message key="Variables">Variáveis</message>

-  <message key="History">Historial</message>

-  <message key="State">Estado</message>

-  <message key="IP Address">Endereço IP</message>

-  <message key="edit">editar</message>

-  <message key="submit">submeter</message>

-  <message key="reject">rejeitar</message>

-  <message key="publish">publicar</message>

-

-  <!-- Info asset  -->

-  <message key="New Asset">Novo Activo</message>

-

-  <!-- Info RC  -->

-  <message key="Current Version">Versão Actual</message>

-  <message key="Rollback to this revision">Rollback para esta revisão</message>

-

-  <!-- Info AC  -->

-  <message key="SSL Encryption">Cifragem&#160;SSL</message>

-  <message key="Access Object">Acceso&#160;ao&#160;Objecto</message>

-  <message key="visit">visitante</message>

-  <message key="reviewer">revisor</message>

-  <message key="editor">editor</message>

-  <message key="admin">admin</message>

-  <message key="world">todos</message>

-  <message key="the world">todos</message>

-

-  <!-- Scheduler -->

-  <message key="New job">Nova tarefa</message>

-  <message key="Active jobs">Tarefas activas</message>

-  <message key="Publish and Export">Publicar&#160;e&#160;Exportar</message>

-  <message key="doc-has-links-to-unpublished">Este documento tem links para os seguintes documentos não publicados:</message>

-

-  <!-- New Document -->

-  <message key="Please check the following possible causes of the exception">Por favor comprove as seguintes possíveis causas da excepção.</message>

-  <message key="exception.cause.createdoc.whitespace-in-id">Não são permitidos espaços em branco no id</message>

-  <message key="exception.cause.createdoc.id-in-use">O id inserido já está em utilização</message>

-  <message key="failmessage.createdoc.invalidformat">Por favor introduza um valor válido no campo ID. A-Z, a-z, 0-9 ou - são caracteres válidos.</message>

-  <message key="failmessage.createdoc.required">Por favor introduza todos os valores obrigatórios (*).</message>

-

-  <!-- Asset Upload/Insert Dialog -->

-  <message key="Add to Asset Library">Adicionar à biblioteca de activos</message>

-  <message key="Asset Library">Biblioteca de activos</message>

-  <message key="No assets available">Não há activos disponíveis</message>

-  <message key="Insert Asset">Inserir Objecto</message>

-  <!-- Image Upload/Insert Dialog -->

-  <message key="lenya.imageupload.title">Inserir Imagem</message>

-  <message key="lenya.imageupload.selectimage.label">Seleccionar Imagem</message>

-  <message key="lenya.imageupload.info.noimages">Não há imagens disponíveis.</message>

-  <message key="lenya.imageupload.links.hint">Os links externos devem começar por 'http://', os links internos devem começar por '/'</message>

-

-  <!-- Revision Controller -->

-  <message key="Reason">Razão</message>

-  <message key="Filename">Nome do ficheiro</message>

-  <message key="lenya.rc.nocheckout">O recurso não pôde ser obtido</message>

-  <message key="lenya.rc.checkedoutalready">O recurso já foi obtido por outro utilizador</message>

-  <message key="lenya.rc.nocheckin">O recurso não pôde ser devolvido</message>

-  <message key="Generic Exception">Excepção Genérica</message>

-  <message key="Check the log files.">Verificar os ficheiros de log.</message>

-</catalogue>

diff --git a/trunk/src/webapp/lenya/resources/i18n/cmsui_ru.xml b/trunk/src/webapp/lenya/resources/i18n/cmsui_ru.xml
deleted file mode 100644
index 8d96250..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/cmsui_ru.xml
+++ /dev/null
@@ -1,365 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-<!-- $Id: cmsui.xml 125536 2005-01-18 19:04:09Z gregor $ -->

-<catalogue xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="ru">

-<!-- common used words -->

-<message key="Save">Сохранить</message>

-<message key="Submit">Отправить</message>

-<message key="Cancel">Отмена</message>

-<message key="Delete">Удалить</message>

-<message key="NOTE">Заметка</message>

-<message key="No referer">Нет сссылок</message>

-

-<message key="Referer">Ссылка</message>

-<message key="EXCEPTION">ИСКЛЮЧЕНИЕ</message>

-<message key="User">Пользователь</message>

-<message key="Live">Опубликованное</message>

-<message key="Authoring">разработка</message>

-<message key="not">не</message>

-<message key="review">отзыв</message>

-<message key="user">пользователь</message>

-<message key="Users">Пользователи</message>

-

-<message key="group">группа</message>

-<message key="Group">Группа</message>

-<message key="Groups">Группы</message>

-<message key="Group ID">Идентификатор группы</message>

-<message key="Yes">Да</message>

-<message key="No">Нет</message>

-<message key="Description">Описание</message>

-<message key="Name">Имя</message>

-<message key="Full Name">Полное имя</message>

-

-<message key="required fields">обязательные поля</message>

-<message key="Search">Поиск</message>

-<message key="Home">Home</message>

-<message key="Title">Заголовок</message>

-<message key="Last modified">Последнее изменение</message>

-<message key="Overview">Обзор</message>

-<message key="Role">Роль</message>

-<message key="View">Вид</message>

-<message key="Assets">Ресурсы</message>

-

-<message key="true">да</message>

-<message key="false">нет</message>

-<message key="Rename">Переименовать</message>

-<message key="Modify">Изменить</message>

-<message key="Document">Документ</message>

-<message key="Date">Дата</message>

-<message key="Back">Назад</message>

-<message key="Add">Добавить</message>

-<message key="Create">Создать</message>

-

-<message key="The Archive">Архив</message>

-<message key="Trash">Корзина</message>

-<message key="Publisher">Издатель</message>

-<message key="Navigation Title">Навигационный заголовок</message>

-<message key="Creator">Создатель</message>

-<message key="Language">Язык</message>

-<message key="Subject">Тема</message>

-<message key="Rights">Права</message>

-<message key="Select File">Выберите файл</message>

-

-<message key="select-object">Выберите {0}</message>

-<message key="Insert">Вставить</message>

-<message key="Insert File">Вставить файл</message>

-<message key="upload-with-invalid-extension">У загружаемого файла  неправильное расширение. Правильные расширения{0}. Расширение должно быть в нижнем регистре (маленькими буквами).</message>

-<message key="upload-with-missing-title">Загружамый файл без названия.</message>

-<message key="filename-format-exception">У загружаемого файла не указано расширение или его имя содержит недопустимые символы, например, пробелы или умляуты.</message>

-<message key="Creation Date">Дата создания</message>

-<message key="File Size">Размер файла</message>

-

-<message key="Image">Изображение</message>

-<message key="Link">Ссылка</message>

-<message key="Caption">Всплывающая подсказка</message>

-<message key="All rights reserved">Все права защищены.</message>

-<!-- used as tabs names AND states -->

-<message key="live">опубликовано</message>

-<message key="authoring">разработка</message>

-<message key="Site">сайт</message>

-<message key="admin">админ</message>

-

-<!-- state -->

-<message key="not live">неопубликовано</message>

-<!-- submit screen -->

-<message key="submit-for-approval">Отправить {0} на утверждение</message>

-<message key="submit-for-approval?">Хотите отправить {0} на утверждение?</message>

-<!-- publish screen -->

-<message key="Publish">Опубликовать</message>

-<message key="Source File(s)">Исходный файл (или файлы исходные)</message>

-<!-- login screen -->

-<message key="login-to-pub">Войти в {0} публикацию</message>

-<message key="Login">Логин</message>

-

-<message key="Password">Пароль</message>

-<message key="Username">Имя пользователя</message>

-<message key="Authentication failed">Авторизация провалилась</message>

-<message key="try-user-lenya-alice">Попробуйте логин {0} и пароль {1} (редактор), или логин {2} и пароль {3} (обозреватель)</message>

-<message key="try-user-lenya">Попробуйте логин {0} и пароль {1}</message>
-<!-- logout screen -->

-<message key="logout-from-pub">Выйти из {0} Публикации</message>

-<message key="Your History">Ваша история</message>

-<message key="Login to Authoring Area">Войти в авторскую зону</message>

-<!-- reject screen -->

-<message key="Reject">Отклонить</message>

-

-<message key="reject-doc?">Хотите отклонить документ {0}?</message>

-<!-- cms menu -->

-<message key="New Document">Новый документ</message>

-<message key="New ... Document">Новый {0} документ</message>
-<message key="New Language Version">Версия на другом языке</message>

-<message key="Remove Language Version">Удалить версию на другом языке</message>

-<message key="File">Файл</message>

-<message key="Edit">Редактировать</message>

-<message key="Workflow">Техпроцесс</message>

-<message key="Deactivate">Отключить</message>

-

-<message key="Schedule">График</message>

-<message key="Copy">Копировать</message>

-<message key="Paste">Вставить</message>

-<message key="Cut">Вырезать</message>

-<message key="Help">Помощь</message>

-<message key="Debug">Отладить</message>

-<message key="Delete">Удалить</message>

-<message key="Archive">Архивировать</message>

-<message key="Restore">Восстановить</message>

-

-<message key="Move Up">Сместить вверх</message>

-<message key="Move Down">Сместить вниз</message>

-<message key="Logout">Выход</message>

-<message key="View Task Logs">Посмотреть журналы задач</message>

-<message key="Support">Техподдержка</message>

-<message key="System Documentation">Системная Документация</message>

-<message key="User Documentation">Пользовательская документация</message>

-<message key="About Apache Lenya">О проекте Apache Lenya</message>

-<message key="Apache Lenya Homepage">Сайт проекта Apache Lenya</message>

-

-<message key="Edit with Kupu">Редактор <xhtml:abbr title="What You See Is What You Get">WYSIWYG</xhtml:abbr> (Kupu)</message>

-<message key="Edit with BXE">Редактор <xhtml:abbr title="What You See Is What You Get">WYSIWYG</xhtml:abbr> (BXE)</message>

-<message key="Edit with one Form">Редактор исходных текстов</message>

-<message key="Edit with Forms">Редактор форм</message>

-<message key="Edit Metadata">Редактировать метаданные</message>

-<message key="Edit Navigation Title">Редактировать навигационный заголовок</message>

-<message key="Rename URL">Переименовать URL</message>

-

-<message key="Change node visibility">Переключить видимость</message>

-<!-- cms tabs -->

-<message key="Server Time">Время на сервере</message>

-<message key="Workflow State">Состояние техпроцесса</message>

-<!-- Administration tab -->

-<message key="Administration">Администрирование</message>

-<message key="really-delete?">Правда удалить {0}?</message>

-<message key="Do you really want to delete the trash ?">Дейсвительно хотите удалить корзину ?</message>

-<message key="delete-object">Удалить {0}</message>

-<message key="delete-object?">Дейсвительно хотите удалить {0}?</message>

-

-<message key="Passwd">Пароль</message>

-<message key="Switch User">Сменить пользователя</message>

-<message key="Delete Trash">Удалить корзину</message>

-<message key="Cocoon and Server Status">Cocoon and Server Status</message>

-<!-- Group Administration -->

-<message key="Profile">Параметры</message>

-<message key="Members">Участники</message>

-<message key="IP Ranges">Диапазоны IP-адресов</message>

-<message key="Edit Profile">Редактировать параметры</message>

-

-<message key="Edit Members">Редактировать членов</message>

-<message key="Group Administration">Администрирование групп</message>

-<message key="Add Group">Добавить группы</message>

-<message key="Group Data">Данные группы</message>

-<!-- User Administration -->

-<message key="User Data">Данные пользователя</message>

-<message key="CMS User ID">Идентификатор пользователя CMS</message>

-<message key="LDAP ID">Идентификатор LDAP</message>

-<message key="Confirm password">Подтвердить пароль</message>

-

-<message key="Add User">Добавить пользователя</message>

-<message key="User Administration">Управление пользователями</message>

-<message key="User Details">Детали пользователя</message>

-<message key="All Groups">Все группы</message>

-<message key="User Groups">Пользовательские группы</message>

-<message key="Group Affiliation">Членство в группе</message>

-<message key="Change Password">Сменить пароль</message>

-<message key="Edit Group Affiliation">Редактировать членство в группе</message>

-<message key="This group already exists.">Такая группа уже существует.</message>

-

-<message key="This is not a valid group ID.">Некорректный идентификатор группы.</message>

-<message key="This user already exists.">Такой пользователь уже существует.</message>

-<message key="This is not a valid user ID.">Некорректный идентификатор CMS пользователя.</message>

-<message key="Please enter an e-mail address.">Введите адрес e-mail.</message>

-<message key="This LDAP user ID does not exist.">Такой пользователь LDAP не существуте.</message>

-<message key="Password and confirmed password are not equal.">Пароль и подтверждение пароля не совпадают.</message>

-<message key="The password must be at least six characters long.">Пароль должен быть как минимум 6 символов.</message>

-<message key="The password must contain at least one number.">Пароль должен содержать как минимум одну цифру.</message>

-<message key="You cannot change the password of this user.">Вы не можете сменить пароль для этого пользователя.</message>

-

-<!-- User Types -->

-<message key="LDAP User">Пользователь LDAP</message>

-<message key="Local User">Локальный пользователь</message>

-<!-- IP Range Administration -->

-<message key="IP Range">Диапазон IP-адресов</message>

-<message key="IP Range ID">Идентификатор диапазона IP-адресов</message>

-<message key="Network Address">Сетевой адрес</message>

-<message key="Subnet Mask">Маска подсети</message>

-<message key="IP Range Administration">Администрирование диапазонов IP-адресов</message>

-

-<message key="Add IP Range">Добавить диапазон IP-адресов</message>

-<message key="IP Range Profile">Настройки диапазона IP-адресов</message>

-<!-- Site tab (info screens) -->

-<message key="Available Languages">Доступные языки</message>

-<message key="This document is not available in this language.">На этом языке документ не доступен.</message>

-<message key="Document ID">Идентификатор документа</message>

-<message key="Versions">Версии</message>

-<message key="SSL Encryption">SSL шифрование</message>

-<message key="Rollback to this version">Откатиться к этой версии</message>

-

-<message key="AC Archive">AC Архива</message>

-<message key="AC Trash">AC Корзины</message>

-<message key="AC Live">AC Просмотра</message>

-<message key="AC Auth">AC Разработки</message>

-<message key="Scheduler">Планировщик</message>

-<!-- Info screen actions-->

-<message key="New Navigation Title">Новый заголовок навигации</message>

-<message key="Rename Document">Переименовать документ</message>

-<message key="New Document ID">Новый идентификатор документа</message>

-

-<message key="No whitespace, no special characters">Без пробелов и спецсимволов</message>

-<!-- Scheduler -->

-<message key="No active jobs">Нет активных заданий.</message>

-<message key="The job date has expired">Задание просрочено.</message>

-<message key="check the log files">проверить файлы журналов</message>

-<message key="Task">Задание</message>

-<message key="Day">День</message>

-<message key="Time">Время</message>

-<!-- Deactivate and delete -->

-<message key="docs-have-links-to-doc">Следующие документы ссылаются на этот документ</message>

-

-<message key="Deactivate Document">Отключить документ</message>

-<message key="deactivate-doc">Отключить документ {0}</message>

-<message key="deactivate-doc?">Вы действительно хотите отключить документ {0}?</message>

-<message key="Delete Document">Удалить документ</message>

-<message key="delete-doc">Удалить документ {0}</message>

-<message key="cannot-deactivate-unless-children-deactivated">Этот документ не может быть отклчен пока следующие дочерние документы не отключены</message>

-<message key="delete-language-versions?">Вы действительно хотите удалить версии документа {0} на всех языках?</message>

-<!-- Archive document -->

-<message key="Archive Document">Архивировать документ</message>

-

-<message key="archive-doc">Архивировать документ {0}</message>

-<message key="archive-doc?">Вы действительно хотите заархивировать документ {0}?</message>

-<!-- Rename document -->

-<message key="Rename Document">Переименовать документ</message>

-<message key="rename-doc">Переименовать документ {0}</message>

-<!-- Copy document -->

-<message key="Copy Document">Копировать документ</message>

-<message key="copy-doc-to-clip?">Хотите скопировать документ <xhtml:q>{0}</xhtml:q> В буфер обмена? Скопированный документ можно будет вставить после в выбранное место.</message>

-<!-- Paste document -->

-

-<message key="Paste Document">Вставить документ</message>

-<message key="paste-doc-from-clip?">Хотите вставить документ <xhtml:q>{0}</xhtml:q> из буфера обмена?</message>

-<!-- Cut document -->

-<message key="Cut Document">Вырезать документ</message>

-<message key="cut-doc-to-clip?">Хотите вырезать документ <xhtml:q>{0}</xhtml:q> и переместить его в буфер обмена? Вырезанный документ можно будет вставить после в выбранное место.</message>

-<!--Change visibility in navigation -->

-<message key="Change">Изменить</message>

-<message key="Change Document visiblity in navigation">Выберите видимость документа в навигации</message>

-

-<message key="Visibility in navigation">Видимость в навигации</message>

-<message key="visible">видимый</message>

-<message key="hidden">скрытый</message>

-<!-- Info Asset -->

-<message key="Insert Image">Вставить изображение</message>

-<message key="Insert Asset">Вставить ресурс</message>

-<message key="Asset Upload">Загрузка ресурса</message>

-<message key="Insert a new Image">Вставить новое изображение</message>

-<message key="Upload an Asset">Загрузить ресурс</message>

-

-<!-- Info workflow  -->

-<message key="Value">Значение</message>

-<message key="Event">Событие</message>

-<message key="Variables">Переменные</message>

-<message key="History">История</message>

-<message key="State">Состояние</message>

-<message key="IP Address">IP Адрес</message>

-<message key="edit">редактировать</message>

-<message key="submit">отправить</message>

-

-<message key="reject">отклонить</message>

-<message key="publish">опубликовать</message>

-<!-- Info asset  -->

-<message key="New Asset">Новый ресурс</message>

-<!-- Info RC  -->

-<message key="Current Version">Текущая версия</message>

-<message key="Rollback to this revision">Откатиться к этой версии</message>

-<!-- Info AC  -->

-<message key="SSL Encryption">SSL шифрование</message>

-<message key="Access Object">Объект доступа</message>

-

-<message key="visit">посещение</message>

-<message key="reviewer">обозреватель</message>

-<message key="editor">редактор</message>

-<message key="world">world</message>

-<message key="the world">the world</message>

-<!-- Scheduler -->

-<message key="New job">Новое задание</message>

-<message key="Active jobs">Текущие задания</message>

-<message key="Publish and Export">Опубликовать и экспортировать</message>

-

-<message key="doc-has-links-to-unpublished">Документ ссылается на следующие неопубликованные документы:</message>

-<!-- New Document -->

-<message key="Please check the following possible causes of the exception">Провертье следующие причины исключения, пожалуйста.</message>

-<message key="exception.cause.createdoc.whitespace-in-id">Идентификатор не может содержать пробелов</message>

-<message key="exception.cause.createdoc.id-in-use">Идентификатор уже используется</message>

-<message key="failmessage.createdoc.invalidformat">Введите пожалуйста допустимое значение в поле ID. A-Z, a-z, 0-9 или - составляют допустимое значение.</message>

-<message key="failmessage.createdoc.required">Заполните все обязательные (*) поля пожалуйста.</message>

-<!-- Asset Upload/Insert Dialog -->

-<message key="lenya.assetupload.subtitle">Пополнить библиотеку ресурсов</message>

-<message key="Asset Library">Библиотека ресурсов</message>

-

-<message key="No assets available">Нет доступных ресурсов</message>

-<message key="Insert Asset">Вставить ресурс</message>

-<message key="lenya.assetuploa.no.asset.selected">Ресурс не выбран. Выберите что-нибудь.</message>

-<message key="lenya.imageupload.no.image.selected">Изображение не выбрано. Выберите что-нибудь.</message>

-<!-- Image Upload/Insert Dialog -->

-<message key="lenya.imageupload.title">Вставить изображение</message>

-<message key="lenya.imageupload.selectimage.label">Выберите изображение</message>

-<message key="lenya.imageupload.info.noimages">Нет доступных изображений.</message>

-<message key="lenya.imageupload.links.hint">Внешние ссылки должны начинаться с  'http://', а внутренние &#151; с  '/'</message>

-

-<!-- Revision Controller -->

-<message key="Reason">Причина</message>

-<message key="Filename">Файл</message>

-<message key="lenya.rc.nocheckout">Ресурс не может быть извлечён</message>

-<message key="lenya.rc.checkedoutalready">Ресурс был уже излвечён другим пользователем</message>

-<message key="lenya.rc.nocheckin">Реурс не может быть записан</message>

-<message key="Generic Exception">Общее исключение</message>

-<message key="Check the log files.">Проверьте файлы журналов.</message>

-

-<message key="User ID">Идентификатор пользователя</message>

-

-<message key="rename-document">Переименование документа {0}</message>

-<message key="Inherited Rights">Унаследованные права</message>

-<message key="Parent ID">Родительский идентификатор</message>

-<message key="lenya.assetupload.title">Objekt einfügen</message>

-<message key="Add to Asset Library">Добавить в библиотеку ресурсов</message>

-<message key="New document">Nouveau document</message>

-<message key="IP Range Groups">Группы IP-адресов</message>

-<message key="IP Range Overview">Обзор IP-адресов</message>

-<message key="Meta">Мета</message>

-

-<message key="Resource Type">Тип документа</message>

-</catalogue>

diff --git a/trunk/src/webapp/lenya/resources/i18n/emptyCatalogue.xml b/trunk/src/webapp/lenya/resources/i18n/emptyCatalogue.xml
deleted file mode 100644
index 48c3674..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/emptyCatalogue.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: cmsui_de.xml 446542 2006-09-15 08:14:39Z andreas $ -->

-

-<catalogue/>

-

-

diff --git a/trunk/src/webapp/lenya/resources/i18n/modules2xinclude.xsl b/trunk/src/webapp/lenya/resources/i18n/modules2xinclude.xsl
deleted file mode 100644
index 9304d3b..0000000
--- a/trunk/src/webapp/lenya/resources/i18n/modules2xinclude.xsl
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: xinclude.xsl 123414 2004-12-27 14:52:24Z gregor $ -->

-

-<xsl:stylesheet version="1.0"

-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

-  xmlns:xi="http://www.w3.org/2001/XInclude"

-  xmlns:lenya="http://apache.org/cocoon/lenya/publication/1.1"

-  >

-

-  <xsl:param name="pubId"/>

-  <xsl:param name="catalogue"/>

-

-

-  <xsl:template match="catalogue">

-    <xsl:copy>

-      <xsl:copy-of select="@*|node()"/>

-      <xsl:apply-templates select="document('aggregate-fallback://config/publication.xml')/*/lenya:modules/lenya:module"/>

-    </xsl:copy>

-  </xsl:template>

-

-  <xsl:template match="lenya:module">

-    <xsl:if test="not(preceding-sibling::module[@name = current()/@name])">

-      <xi:include href="cocoon:/i18n-catalogue/module/{@name}/{$catalogue}"

-        xpointer="xpointer(/catalogue/message)"/>

-    </xsl:if>

-  </xsl:template>

-

-</xsl:stylesheet>

diff --git a/trunk/src/webapp/lenya/resources/images/delete.gif b/trunk/src/webapp/lenya/resources/images/delete.gif
deleted file mode 100644
index d11cf60..0000000
--- a/trunk/src/webapp/lenya/resources/images/delete.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/editor/add.png b/trunk/src/webapp/lenya/resources/images/editor/add.png
deleted file mode 100644
index b2ede20..0000000
--- a/trunk/src/webapp/lenya/resources/images/editor/add.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/editor/delete.png b/trunk/src/webapp/lenya/resources/images/editor/delete.png
deleted file mode 100644
index 8b57fd1..0000000
--- a/trunk/src/webapp/lenya/resources/images/editor/delete.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/editor/edit.png b/trunk/src/webapp/lenya/resources/images/editor/edit.png
deleted file mode 100644
index c86f3a0..0000000
--- a/trunk/src/webapp/lenya/resources/images/editor/edit.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/icons/empty-icon.png b/trunk/src/webapp/lenya/resources/images/icons/empty-icon.png
deleted file mode 100644
index 2ad29b6..0000000
--- a/trunk/src/webapp/lenya/resources/images/icons/empty-icon.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/insert.gif b/trunk/src/webapp/lenya/resources/images/insert.gif
deleted file mode 100644
index 1211990..0000000
--- a/trunk/src/webapp/lenya/resources/images/insert.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/lenya.ico b/trunk/src/webapp/lenya/resources/images/lenya.ico
deleted file mode 100644
index 4ed561a..0000000
--- a/trunk/src/webapp/lenya/resources/images/lenya.ico
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/project-logo-small.png b/trunk/src/webapp/lenya/resources/images/project-logo-small.png
deleted file mode 100644
index 01df427..0000000
--- a/trunk/src/webapp/lenya/resources/images/project-logo-small.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/project-logo.png b/trunk/src/webapp/lenya/resources/images/project-logo.png
deleted file mode 100644
index 81d3105..0000000
--- a/trunk/src/webapp/lenya/resources/images/project-logo.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/closed-collection-L.gif b/trunk/src/webapp/lenya/resources/images/tree/closed-collection-L.gif
deleted file mode 100644
index ca7993e..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/closed-collection-L.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/closed-collection-T.gif b/trunk/src/webapp/lenya/resources/images/tree/closed-collection-T.gif
deleted file mode 100644
index 1b444ab..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/closed-collection-T.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/empty.gif b/trunk/src/webapp/lenya/resources/images/tree/empty.gif
deleted file mode 100644
index 52d520f..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/empty.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/non-collection-L.gif b/trunk/src/webapp/lenya/resources/images/tree/non-collection-L.gif
deleted file mode 100644
index 374a0fa..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/non-collection-L.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/non-collection-T.gif b/trunk/src/webapp/lenya/resources/images/tree/non-collection-T.gif
deleted file mode 100644
index e72a39e..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/non-collection-T.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/opened-collection-L.gif b/trunk/src/webapp/lenya/resources/images/tree/opened-collection-L.gif
deleted file mode 100644
index fb352b5..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/opened-collection-L.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/opened-collection-T.gif b/trunk/src/webapp/lenya/resources/images/tree/opened-collection-T.gif
deleted file mode 100644
index bffc399..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/opened-collection-T.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/tree/vertical-line.gif b/trunk/src/webapp/lenya/resources/images/tree/vertical-line.gif
deleted file mode 100644
index 336f653..0000000
--- a/trunk/src/webapp/lenya/resources/images/tree/vertical-line.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/util/pixel.gif b/trunk/src/webapp/lenya/resources/images/util/pixel.gif
deleted file mode 100644
index 8f09684..0000000
--- a/trunk/src/webapp/lenya/resources/images/util/pixel.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/util/uploadasset.gif b/trunk/src/webapp/lenya/resources/images/util/uploadasset.gif
deleted file mode 100644
index f32855c..0000000
--- a/trunk/src/webapp/lenya/resources/images/util/uploadasset.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/images/util/uploadimage.gif b/trunk/src/webapp/lenya/resources/images/util/uploadimage.gif
deleted file mode 100644
index 0a89e64..0000000
--- a/trunk/src/webapp/lenya/resources/images/util/uploadimage.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/javascript/javascript.xsl b/trunk/src/webapp/lenya/resources/javascript/javascript.xsl
deleted file mode 100644
index 5b7f841..0000000
--- a/trunk/src/webapp/lenya/resources/javascript/javascript.xsl
+++ /dev/null
@@ -1,8 +0,0 @@
-<xsl:stylesheet version="1.0"

-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

-  

-<xsl:template match="script">

-  <xsl:apply-templates/>

-</xsl:template>

-  

-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/resources/javascript/validation.xml b/trunk/src/webapp/lenya/resources/javascript/validation.xml
deleted file mode 100644
index d606201..0000000
--- a/trunk/src/webapp/lenya/resources/javascript/validation.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: image.xsl 56062 2004-10-30 19:20:06Z gregor $ -->

-

-<script xmlns:i18n="http://apache.org/cocoon/i18n/2.1"

-        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

-

- /* check files to be uploaded against a list of valid extensions, required title and no whitespace in filenames */

-  function check_upload(fileinput, ext) {

-    var i = 0;

-    var delimiter = ' '; 

-    var thefile = fileinput["properties.asset.data"].value;

-    var title = fileinput["properties.asset.title"].value;

-    if (title == "") {

-     alert("<i18n:translate><i18n:text key="upload-with-missing-title"/></i18n:translate>"); 

-     return false;

-    }

-    var _tempArray = new Array();

-    _tempArray = ext.split(delimiter);

-    for(i in _tempArray) { 

-      if(thefile.indexOf('.' + _tempArray[i]) != -1) { // file has one of the accepted extensions. 

-           return true; 

-      } 

-     } // file does not have one of the accepted extensions. 

-     alert("<i18n:translate><i18n:text key="upload-with-invalid-extension"/><i18n:param>:\n\n"+ext+"\n</i18n:param></i18n:translate>"); 

-     return false;

-  } 

-function validRequired(formField,fieldLabel)

-{

-	var result = true;

-

-	if (formField.value == "")

-	{

-		alert('<i18n:text key="failmessage.createdoc.required"/>');

-		formField.focus();

-		result = false;

-	}

-	

-	return result;

-}

-

-function validContent(formField,fieldLabel)

-{

-	var result = true;

-	

-	if (formField.value.match("[^a-zA-Z0-9\\-]+"))

-	{

-		alert('<i18n:text key="failmessage.createdoc.invalidformat"/>');

-		formField.focus();

-		result = false;

-	}

-	

-	return result;

-}

-

-function check_num(obj) {

-  var value = parseInt(obj.value);

-  if (value &amp;&amp; 0 &lt;= value &amp;&amp; value &lt;= 255) {

-  obj.value = "" + parseInt(obj.value);

-  }

-  else {

-    obj.value = "0";

-  }

-}

-</script>

diff --git a/trunk/src/webapp/lenya/resources/menu/images/active.gif b/trunk/src/webapp/lenya/resources/menu/images/active.gif
deleted file mode 100644
index 095de8f..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/active.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/admin_active.gif b/trunk/src/webapp/lenya/resources/menu/images/admin_active.gif
deleted file mode 100644
index f1cb124..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/admin_active.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/admin_active.png b/trunk/src/webapp/lenya/resources/menu/images/admin_active.png
deleted file mode 100644
index a9a9834..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/admin_active.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/admin_inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/admin_inactive.gif
deleted file mode 100644
index f860b46..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/admin_inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/apache-lenya_logo_black.png b/trunk/src/webapp/lenya/resources/menu/images/apache-lenya_logo_black.png
deleted file mode 100644
index 89a42ee..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/apache-lenya_logo_black.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/authoring_active.gif b/trunk/src/webapp/lenya/resources/menu/images/authoring_active.gif
deleted file mode 100644
index f32ac68..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/authoring_active.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/authoring_inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/authoring_inactive.gif
deleted file mode 100644
index b078f1c..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/authoring_inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/blau_anfang.gif b/trunk/src/webapp/lenya/resources/menu/images/blau_anfang.gif
deleted file mode 100644
index eacd291..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/blau_anfang.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/blau_anfang_oben.gif b/trunk/src/webapp/lenya/resources/menu/images/blau_anfang_oben.gif
deleted file mode 100644
index 181f0f3..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/blau_anfang_oben.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/bottombg.gif b/trunk/src/webapp/lenya/resources/menu/images/bottombg.gif
deleted file mode 100644
index b0d3a00..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/bottombg.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/checked.png b/trunk/src/webapp/lenya/resources/menu/images/checked.png
deleted file mode 100644
index 331685d..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/checked.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/checkedPlaceholder.png b/trunk/src/webapp/lenya/resources/menu/images/checkedPlaceholder.png
deleted file mode 100644
index 36abd8b..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/checkedPlaceholder.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/dotted.gif b/trunk/src/webapp/lenya/resources/menu/images/dotted.gif
deleted file mode 100644
index c256dae..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/dotted.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/edit.gif b/trunk/src/webapp/lenya/resources/menu/images/edit.gif
deleted file mode 100644
index 97fc42d..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/edit.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/file.gif b/trunk/src/webapp/lenya/resources/menu/images/file.gif
deleted file mode 100644
index 1fb9194..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/file.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/frame-bg_oben.gif b/trunk/src/webapp/lenya/resources/menu/images/frame-bg_oben.gif
deleted file mode 100644
index 3afae56..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/frame-bg_oben.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/grau-bg.gif b/trunk/src/webapp/lenya/resources/menu/images/grau-bg.gif
deleted file mode 100644
index ed1ca42..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/grau-bg.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/grau-bg2.gif b/trunk/src/webapp/lenya/resources/menu/images/grau-bg2.gif
deleted file mode 100644
index 2f7cc91..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/grau-bg2.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/grau-bg3.gif b/trunk/src/webapp/lenya/resources/menu/images/grau-bg3.gif
deleted file mode 100644
index e88b610..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/grau-bg3.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/grau-bg4.gif b/trunk/src/webapp/lenya/resources/menu/images/grau-bg4.gif
deleted file mode 100644
index 2b25650..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/grau-bg4.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/grau.gif b/trunk/src/webapp/lenya/resources/menu/images/grau.gif
deleted file mode 100644
index 84c9cff..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/grau.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/help.gif b/trunk/src/webapp/lenya/resources/menu/images/help.gif
deleted file mode 100644
index fc30e9b..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/help.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/inactive.gif
deleted file mode 100644
index 8fe4208..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/info_active.gif b/trunk/src/webapp/lenya/resources/menu/images/info_active.gif
deleted file mode 100644
index db5c161..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/info_active.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/info_inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/info_inactive.gif
deleted file mode 100644
index 3e490bf..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/info_inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/lenya-logo.gif b/trunk/src/webapp/lenya/resources/menu/images/lenya-logo.gif
deleted file mode 100644
index 2b24a30..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/lenya-logo.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/lenya.gif b/trunk/src/webapp/lenya/resources/menu/images/lenya.gif
deleted file mode 100644
index a5b93a2..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/lenya.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/lenya_oben.gif b/trunk/src/webapp/lenya/resources/menu/images/lenya_oben.gif
deleted file mode 100644
index 20cf519..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/lenya_oben.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/lenya_oben_2.gif b/trunk/src/webapp/lenya/resources/menu/images/lenya_oben_2.gif
deleted file mode 100644
index b1b1178..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/lenya_oben_2.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/lenya_unten.gif b/trunk/src/webapp/lenya/resources/menu/images/lenya_unten.gif
deleted file mode 100644
index 5fe6f04..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/lenya_unten.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/live_inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/live_inactive.gif
deleted file mode 100644
index 29a3c35..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/live_inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/menu-background.gif b/trunk/src/webapp/lenya/resources/menu/images/menu-background.gif
deleted file mode 100644
index fd19040..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/menu-background.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/menu-bg.gif b/trunk/src/webapp/lenya/resources/menu/images/menu-bg.gif
deleted file mode 100644
index f58931a..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/menu-bg.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/menu-bg_2.gif b/trunk/src/webapp/lenya/resources/menu/images/menu-bg_2.gif
deleted file mode 100644
index c551939..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/menu-bg_2.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/menu-bg_anfang.gif b/trunk/src/webapp/lenya/resources/menu/images/menu-bg_anfang.gif
deleted file mode 100644
index 12b8853..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/menu-bg_anfang.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/menu_bg_anfang2.gif b/trunk/src/webapp/lenya/resources/menu/images/menu_bg_anfang2.gif
deleted file mode 100644
index 6ff01e6..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/menu_bg_anfang2.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/pixel.gif b/trunk/src/webapp/lenya/resources/menu/images/pixel.gif
deleted file mode 100644
index 8f09684..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/pixel.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/search.gif b/trunk/src/webapp/lenya/resources/menu/images/search.gif
deleted file mode 100644
index 5acb6b3..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/search.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/staging_active.gif b/trunk/src/webapp/lenya/resources/menu/images/staging_active.gif
deleted file mode 100644
index 20943c6..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/staging_active.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/staging_inactive.gif b/trunk/src/webapp/lenya/resources/menu/images/staging_inactive.gif
deleted file mode 100644
index 33db07d..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/staging_inactive.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/unchecked.png b/trunk/src/webapp/lenya/resources/menu/images/unchecked.png
deleted file mode 100644
index c289661..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/unchecked.png
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/images/unten.gif b/trunk/src/webapp/lenya/resources/menu/images/unten.gif
deleted file mode 100644
index 7f1a2e0..0000000
--- a/trunk/src/webapp/lenya/resources/menu/images/unten.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/src/webapp/lenya/resources/menu/menu.js b/trunk/src/webapp/lenya/resources/menu/menu.js
deleted file mode 100644
index aa46fb0..0000000
--- a/trunk/src/webapp/lenya/resources/menu/menu.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*

-* Licensed to the Apache Software Foundation (ASF) under one or more

-* contributor license agreements.  See the NOTICE file distributed with

-* this work for additional information regarding copyright ownership.

-* The ASF licenses this file to You 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.

-*/

-

-var numberOfMenus = 5; // change this if you have a different number of menus

-var activeMenu = null; //defines which menu is currently open

-

-//runs at onload of window        

-function initialize() {

-    userEventsInit(); //set up all user events

-}

-

-function menuOver() {

-    document.onclick = null;

-    if (window.event != null) window.event.cancelBubble=true; // IE requires this

-}

-

-function menuOut() {

-    document.onclick = eventHideMenu;

-    if (window.event != null) window.event.cancelBubble=true; // IE requires this

-}

-

-//turns on the display for nav menus

-function eventShowMenu(e) {

-    var obj;

-    if (activeMenu != null) eventHideMenu();

-    activeMenu = "menu"+this.id.substring(3,this.id.length)

-    obj = document.getElementById(activeMenu);

-    if (obj != null) obj.style.visibility = "visible";

-    if (document.all) document.onclick = eventHideMenu; // IE requires this

-    if (window.event != null) window.event.cancelBubble=true; // IE requires this

-}

-

-//hides nav menus and pop ups

-function eventHideMenu() {

-    var obj;

-    document.onclick = null;

-    if (activeMenu != null) {

-        obj = document.getElementById(activeMenu);

-        obj.style.visibility = "hidden";

-    }

-}

-

-//nav events

-function userEventsInit() {

-    var obj;

-    var i;

-    for (i=1; i <= numberOfMenus; i++) {

-	    obj = document.getElementById("nav"+i);

-	    if (obj != null) {

-		    obj.onclick = eventShowMenu;

-	    }

-	

-	    obj = document.getElementById("menu"+i);

-	    if (obj != null) {

-		    obj.onmouseover = menuOver;

-		    obj.onmouseout = menuOut;

-	    }

-    }

- }

diff --git a/trunk/src/webapp/lenya/resources/schemas/dublincore/dublincore.rng b/trunk/src/webapp/lenya/resources/schemas/dublincore/dublincore.rng
deleted file mode 100644
index 8363730..0000000
--- a/trunk/src/webapp/lenya/resources/schemas/dublincore/dublincore.rng
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: dublincore.rng 42702 2004-03-13 12:34:18Z gregor $ -->
-    
-<grammar xmlns="http://relaxng.org/ns/structure/1.0"
-         xmlns:dc="http://purl.org/dc/elements/1.1/"
-         xmlns:dcterms="http://purl.org/dc/terms/"
-         >
-
-<!-- Dublin Core Schema -->
-
-<define name="dublincore">
-  <interleave>
-    
-  <optional><element name="dc:title"><text/></element></optional>
-  <optional><element name="dc:creator"><text/></element></optional>
-  <optional><element name="dc:subject"><text/></element></optional>
-  <optional><element name="dc:description"><text/></element></optional>
-  <optional><element name="dc:publisher"><text/></element></optional>
-  <optional><element name="dc:contributor"><text/></element></optional>
-  <optional><element name="dc:date"><text/></element></optional>
-  <optional><element name="dc:type"><text/></element></optional>
-  <optional><element name="dc:format"><text/></element></optional>
-  <optional><element name="dc:identifier"><text/></element></optional>
-  <optional><element name="dc:source"><text/></element></optional>
-  <optional><element name="dc:language"><text/></element></optional>
-  <optional><element name="dc:relation"><text/></element></optional>
-  <optional><element name="dc:coverage"><text/></element></optional>
-  <optional><element name="dc:rights"><text/></element></optional>
-  
-  <optional><element name="dcterms:audience"><text/></element></optional>
-  <optional><element name="dcterms:alternative"><text/></element></optional>
-  <optional><element name="dcterms:tableOfContents"><text/></element></optional>
-  <optional><element name="dcterms:abstract"><text/></element></optional>
-  <optional><element name="dcterms:created"><text/></element></optional>
-  <optional><element name="dcterms:valid"><text/></element></optional>
-  <optional><element name="dcterms:available"><text/></element></optional>
-  <optional><element name="dcterms:issued"><text/></element></optional>
-  <optional><element name="dcterms:modified"><text/></element></optional>
-  <optional><element name="dcterms:extent"><text/></element></optional>
-  <optional><element name="dcterms:medium"><text/></element></optional>
-  <optional><element name="dcterms:isVersionOf"><text/></element></optional>
-  <optional><element name="dcterms:hasVersion"><text/></element></optional>
-  <optional><element name="dcterms:isReplacedBy"><text/></element></optional>
-  <optional><element name="dcterms:replaces"><text/></element></optional>
-  <optional><element name="dcterms:isRequiredBy"><text/></element></optional>
-  <optional><element name="dcterms:requires"><text/></element></optional>
-  <optional><element name="dcterms:isPartOf"><text/></element></optional>
-  <optional><element name="dcterms:hasPart"><text/></element></optional>
-  <optional><element name="dcterms:isReferencedBy"><text/></element></optional>
-  <optional><element name="dcterms:references"><text/></element></optional>
-  <optional><element name="dcterms:isFormatOf"><text/></element></optional>
-  <optional><element name="dcterms:hasFormat"><text/></element></optional>
-  <optional><element name="dcterms:conformsTo"><text/></element></optional>
-  <optional><element name="dcterms:spatial"><text/></element></optional>
-  <optional><element name="dcterms:temporal"><text/></element></optional>
-  <optional><element name="dcterms:mediator"><text/></element></optional>
-  <optional><element name="dcterms:dateAccepted"><text/></element></optional>
-  <optional><element name="dcterms:dateCopyrighted"><text/></element></optional>
-  <optional><element name="dcterms:dateSubmitted"><text/></element></optional>
-  <optional><element name="dcterms:educationLevel"><text/></element></optional>
-  <optional><element name="dcterms:accessRights"><text/></element></optional>
-  <optional><element name="dcterms:bibliographicCitation"><text/></element></optional>
-  
-  </interleave>
-</define>
-
-</grammar>
diff --git a/trunk/src/webapp/lenya/resources/schemas/lenya.rng b/trunk/src/webapp/lenya/resources/schemas/lenya.rng
deleted file mode 100644
index dc88251..0000000
--- a/trunk/src/webapp/lenya/resources/schemas/lenya.rng
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: lenya.rng 160958 2005-04-11 21:40:46Z andreas $ -->
-
-<grammar ns="http://www.w3.org/1999/xhtml"
-         xmlns="http://relaxng.org/ns/structure/1.0"
-         xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
-         xmlns:dc="http://purl.org/dc/elements/1.1/"
-         xmlns:dcterms="http://purl.org/dc/terms/"
-         xmlns:xhtml="http://www.w3.org/1999/xhtml"
-         >
-
-
-<include href="dublincore/dublincore.rng"/>
-
-
-<define name="lenya.meta">
-  <element name="lenya:meta">
-    <ref name="dublincore"/>
-  </element>
-</define>
-
-
-<define name="lenya.asset">
-  <element name="lenya:asset">
-    <attribute name="src"><ref name="Text.datatype"/></attribute>
-    <text/>
-  </element>
-</define>
-
-
-<!-- namespace dummy attributes -->
-<define name="dummy.attlist">
-  <optional><attribute name="dummy"><ref name="Text.datatype"/></attribute></optional>
-  <optional><attribute name="dc:dummy"><ref name="Text.datatype"/></attribute></optional>
-  <optional><attribute name="dcterms:dummy"><ref name="Text.datatype"/></attribute></optional>
-  <optional><attribute name="lenya:dummy"><ref name="Text.datatype"/></attribute></optional>
-  <optional><attribute name="xhtml:dummy"><ref name="Text.datatype"/></attribute></optional>
-</define>
-
-
-</grammar>
diff --git a/trunk/src/webapp/lenya/usecase.xmap b/trunk/src/webapp/lenya/usecase.xmap
deleted file mode 100644
index 7a2d644..0000000
--- a/trunk/src/webapp/lenya/usecase.xmap
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: usecase.xmap 45963 2004-09-13 10:05:56Z andreas $ -->
-
-<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-  
-  <!-- =========================== Views ================================= -->
-
-  <map:views>
-    <map:view from-label="aggregation" name="aggregation">
-      <map:serialize type="xml"/>
-    </map:view>
-    <map:view from-label="xsp" name="xsp">
-      <map:serialize type="xml"/>
-    </map:view>
-  </map:views>
-  
-  <!-- =========================== Resources ================================= -->
-
-  <map:resources>
-    <map:resource name="style-cms-page">
-      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
-      <map:transform type="i18n">
-        <map:parameter name="locale" value="{request:locale}"/>
-      </map:transform>    
-      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
-    </map:resource>
-  </map:resources>
-  
-  <!-- =========================== Pipelines ================================ -->
-  <map:pipelines>
-  
-    <!-- =================================================================== -->
-    <!-- Usecases that use the Usecase Framework -->
-    <!-- =================================================================== -->
-    
-    <map:pipeline>
-      <map:match type="registered-usecase">
-        <map:mount src="fallback://lenya/modules/usecase/usecase.xmap" uri-prefix="" check-reload="yes" reload-method="synchron"/>
-      </map:match>
-    </map:pipeline>
- 
-    <!-- =================================================================== -->
-    <!-- Notification Pipelines -->
-    <!-- =================================================================== -->
-    
-    <map:pipeline>
-      
-      <!-- notification/{publication-id}/{usecase}.xml -->
-      <map:match pattern="notification/*/*.xml">
-        <map:select type="resource-exists">
-          <map:when test="fallback://config/notification/notification.xconf">
-            <map:generate src="fallback://config/notification/notification.xconf"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate src="config/notification/notification.xconf"/>
-          </map:otherwise>      
-        </map:select>
-        <map:transform src="fallback://lenya/xslt/notification/notification2message.xsl">
-          <map:parameter name="usecase" value="{2}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!-- notification/{publication-id}/{usecase}.xsl -->
-      <map:match pattern="notification/*/*.xsl">
-        <map:generate src="cocoon:/notification/{1}/{2}.xml"/>
-        <map:transform src="fallback://lenya/xslt/notification/message2xslt.xsl">
-          <map:parameter name="usecase" value="{2}"/>
-          <map:parameter name="server-uri" value="http://{request:serverName}:{request:serverPort}"/>
-          <map:parameter name="document-url" value="{request:contextPath}/{page-envelope:publication-id}/{page-envelope:area}{page-envelope:document-url}"/>
-        </map:transform>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-    </map:pipeline>
-
-    <!-- =================================================================== -->
-    <!-- Usecase Pipelines -->
-    <!-- =================================================================== -->
-    
-    <map:pipeline type="noncaching">
-      
-      <!-- {publication-id}/{area}/{uri}-->
-      <map:match pattern="*/*/**">
-        
-        <!-- mount publication-specific usecase sitemap -->
-        <map:match type="usecase" pattern="*">
-          <map:act src="fallback://usecase-{1}.xmap" type="resource-exists">
-            <map:mount check-reload="true" reload-method="synchron" src="{fallback://usecase-{../1}.xmap}" uri-prefix="{../../1}"/>
-          </map:act>
-        </map:match>
-        
-        <!-- Mount separate usecase sitemap if it exists. -->
-        <map:match type="usecase" pattern="*">
-          <map:act src="usecases/{1}/usecase-{1}.xmap" type="resource-exists">
-            <map:mount check-reload="true" reload-method="synchron" src="usecases/{../1}/usecase-{../1}.xmap" uri-prefix=""/>
-          </map:act>
-        </map:match>
-
-        
-        <!-- CheckOut -->
-        <map:match pattern="checkout" type="usecase">
-          
-          <map:match pattern="checkout" type="step">
-            <map:act type="reserved-checkout">
-              <map:generate src="content/rc/{exception}.xsp" type="serverpages">
-                <map:parameter name="user" value="{user}"/>
-                <map:parameter name="filename" value="{filename}"/>
-                <map:parameter name="date" value="{date}"/>
-              </map:generate>
-              <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-              <map:call resource="style-cms-page"/>
-              <map:serialize />
-            </map:act>
-            <map:redirect-to session="true" uri="{request:requestURI}"/>
-          </map:match>
-          
-        </map:match>
-        
-        
-        <!-- CheckIn -->
-        <map:match pattern="checkin" type="usecase">
-          
-          <map:match pattern="checkin" type="step">
-            <map:act type="reserved-checkin">
-              <map:parameter name="backup" value="{request-param:backup}"/>
-              <map:generate src="content/rc/{exception}.xsp" type="serverpages">
-                <map:parameter name="user" value="{user}"/>
-                <map:parameter name="filename" value="{filename}"/>
-                <map:parameter name="checkType" value="{checkType}"/>
-                <map:parameter name="date" value="{date}"/>
-              </map:generate>
-              <map:transform src="fallback://lenya/xslt/rc/rco-exception.xsl"/>
-              <map:call resource="style-cms-page"/>
-              <map:serialize />
-            </map:act>
-            <map:redirect-to session="true" uri="{request:requestURI}"/>
-          </map:match>
-          
-        </map:match>
-
-        <!-- To use this code, you need to add the legacy modules to your local.build.properties. -->
-        <!-- initialize the workflow -->
-        <!--
-        <map:match type="usecase" pattern="initworkflow">
-          <map:act type="task">
-            <map:parameter name="task-id" value="ant"/>
-            <map:parameter name="target" value="initworkflow"/>
-            <map:parameter name="properties.initworkflow.document-uuid" value="{page-envelope:document-uuid}"/>
-            <map:parameter name="properties.initworkflow.document-type" value="{page-envelope:document-type}"/>
-            <map:parameter name="properties.initworkflow.language" value="{page-envelope:document-language}"/>
-            <map:parameter name="properties.initworkflow.user-id" value="{access-control:user-id}"/>
-            <map:parameter name="properties.initworkflow.machine-ip" value="{access-control:ip-address}"/>
-            <map:redirect-to session="true" uri="{request:requestURI}"/>
-          </map:act>
-        </map:match>
-
-        <map:match pattern="transition" type="usecase">
-          <map:act type="task">
-            <map:parameter name="publication-id" value="{../1}"/>
-            <map:parameter name="task-id" value="empty"/>
-            <map:redirect-to session="true" uri="{request:requestURI}"/>
-          </map:act>
-        </map:match>
-        -->
-        
-      </map:match>
-      
-    </map:pipeline>
-    
-  </map:pipelines>
-  
-</map:sitemap>
diff --git a/trunk/src/webapp/lenya/xslt/admin/page2xhtml.xsl b/trunk/src/webapp/lenya/xslt/admin/page2xhtml.xsl
deleted file mode 100644
index 9ba9743..0000000
--- a/trunk/src/webapp/lenya/xslt/admin/page2xhtml.xsl
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-	  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-	  xmlns="http://www.w3.org/1999/xhtml"
-	  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-      xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-	  >
-	  
-	  
-<xsl:param name="contextprefix"/>
-
-<xsl:template match="/cmsbody">
-    <html>
-      <head>
-        <title><xsl:value-of select="page:page/page:title"/></title>
-        <link rel="stylesheet" type="text/css"
-          href="{$contextprefix}/lenya/css/admin.css" title="admin css"/>
-      </head>
-      <body>
-        <xsl:apply-templates/>
-      </body>
-    </html>
-</xsl:template>
-
-
-<xsl:template match="page:page">
-  <table class="lenya-body" border="0" cellpadding="0" cellspacing="0">
-    <tr>
-      <td class="lenya-sidebar">
-        <div class="lenya-sidebar-heading">Administration</div>
-        <xsl:copy-of select="/cmsbody/xhtml:div[@id = 'menu']"/>
-      </td>
-      <td class="lenya-content">
-        <div style="margin-bottom: 10px">
-          <h1><xsl:apply-templates select="page:title/node()"/></h1>
-        </div>
-        <xsl:apply-templates select="page:body/node()"/>
-      </td>
-    </tr>
-  </table>
-</xsl:template>
-
-
-<!-- do not copy menu -->
-<xsl:template match="xhtml:div[@id = 'menu']"/>
-
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-  </xsl:copy>
-</xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/admin/root.xsl b/trunk/src/webapp/lenya/xslt/admin/root.xsl
deleted file mode 100644
index 56d3cbc..0000000
--- a/trunk/src/webapp/lenya/xslt/admin/root.xsl
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  >
-  
-  <xsl:param name="contextprefix"/>
-
-   <xsl:template match="/">
-    <html>
-      <head>
-        <link href="{$contextprefix}/lenya/css/default.css" rel="stylesheet" type="text/css"/>
-      </head>
-
-      <body>
-        <div id="lenya-info-body">
-          <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-              <td valign="top" width="80%">
-                <div id="lenya-info-content">
-                  <!-- support both old-style tabs and new-style JX tabs -->
-                  <xsl:choose>
-                    <xsl:when test="/page:page">
-                      <xsl:copy-of select="page:page/node()"/>
-                    </xsl:when>
-                    <xsl:otherwise>
-                      <xsl:copy-of select="*"/>
-                    </xsl:otherwise>
-                  </xsl:choose>
-                </div>
-              </td>
-            </tr>
-          </table>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-
-</xsl:stylesheet> 
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/xslt/admin/status2html.xsl b/trunk/src/webapp/lenya/xslt/admin/status2html.xsl
deleted file mode 100644
index 9ef2d9e..0000000
--- a/trunk/src/webapp/lenya/xslt/admin/status2html.xsl
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:status="http://apache.org/cocoon/status/2.0">
- 
-  <xsl:template match="status:statusinfo">
-    <div>
-      <h2><xsl:value-of select="@status:host"/> - <xsl:value-of select="@status:date"/></h2>
-      <xsl:apply-templates/>
-    </div>
-  </xsl:template>
-
-  <xsl:template match="status:group">
-    <h3><xsl:value-of select="@status:name"/></h3>
-    <ul><xsl:apply-templates select="status:value"/></ul>
-    <xsl:apply-templates select="status:group"/>
-  </xsl:template>
-
-  <xsl:template match="status:value">
-    <li>
-      <span class="description"><xsl:value-of select="@status:name"/><xsl:text>: </xsl:text></span>    
-
-<!--
-          <ul>
-             <xsl:apply-templates />
-          </ul>
--->
-      <xsl:choose>
-        <xsl:when test="contains(@status:name,'free') or contains(@status:name,'total')">
-          <xsl:call-template name="suffix">
-            <xsl:with-param name="bytes" select="number(.)"/>
-          </xsl:call-template>
-        </xsl:when>      
-        <xsl:when test="count(status:line) &lt;= 1">
-          <xsl:value-of select="status:line"/>
-        </xsl:when>
-        <xsl:otherwise>
-          <ul>
-             <xsl:apply-templates />
-          </ul>
-        </xsl:otherwise>
-      </xsl:choose>
-    </li>
-  </xsl:template>
-
-  <xsl:template match="status:line">
-    <li><xsl:value-of select="."/></li>
-  </xsl:template>
-
-	<xsl:template name="suffix">
-		<xsl:param name="bytes"/>
-		<xsl:choose>
-			<!-- More than 4 MB (=4194304) -->
-			<xsl:when test="$bytes &gt;= 4194304">
-				<xsl:value-of select="round($bytes div 10485.76) div 100"/> MB
-			</xsl:when>
-			<!-- More than 4 KB (=4096) -->
-			<xsl:when test="$bytes &gt; 4096">
-				<xsl:value-of select="round($bytes div 10.24) div 100"/> KB
-			</xsl:when>
-			<!-- Less -->
-			<xsl:otherwise>
-				<xsl:value-of select="$bytes"/> B
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-  
-</xsl:stylesheet>
-
diff --git a/trunk/src/webapp/lenya/xslt/authoring/addJavaScript.xsl b/trunk/src/webapp/lenya/xslt/authoring/addJavaScript.xsl
deleted file mode 100644
index a0ce1b9..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/addJavaScript.xsl
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
- >
-
-  <xsl:param name="scriptSRC"/>
-
-  <xsl:template match="node()[local-name()='head']">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-      <xsl:if test="$scriptSRC">
-        <script type="text/javascript" src="{$scriptSRC}">&#160;</script>
-      </xsl:if>
-    </xsl:copy>
-  </xsl:template>
-
-  <!-- Identity transformation -->
-  <xsl:template match="@*|*">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/authoring/addMetaData.xsl b/trunk/src/webapp/lenya/xslt/authoring/addMetaData.xsl
deleted file mode 100644
index 3f47b86..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/addMetaData.xsl
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:dcterms="http://purl.org/dc/terms/"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  exclude-result-prefixes="xhtml dcterms"
- >
-
-  <xsl:param name="creator"/>
-  <xsl:param name="title"/>
-  <xsl:param name="description"/>
-  <xsl:param name="subject"/>
-  <xsl:param name="language"/>
-  <xsl:param name="publisher"/>
-  <xsl:param name="date"/>
-  <xsl:param name="rights"/>
-
-  <xsl:template match="dc:creator[$creator!='']">
-    <dc:creator>
-      <xsl:value-of select="$creator"/>
-    </dc:creator>
-  </xsl:template>  
-
-  <xsl:template match="dc:title[$title!='']">
-    <dc:title>
-      <xsl:value-of select="$title"/>
-    </dc:title>
-  </xsl:template>  
-
-  <xsl:template match="dc:description[$description!='']">
-    <dc:description>
-      <xsl:value-of select="$description"/>
-    </dc:description>
-  </xsl:template>  
-
-  <xsl:template match="dc:subject[$subject!='']">
-    <dc:subject>
-      <xsl:value-of select="$subject"/>
-    </dc:subject>
-  </xsl:template>  
-
-  <xsl:template match="dc:language[$language!='']">
-    <dc:language>
-      <xsl:value-of select="$language"/>
-    </dc:language>
-  </xsl:template>  
-
-  <xsl:template match="dc:publisher[$publisher!='']">
-    <dc:publisher>
-      <xsl:value-of select="$publisher"/>
-    </dc:publisher>
-  </xsl:template>  
-
-  <xsl:template match="dc:date[$date!='']">
-    <dc:date>
-      <xsl:value-of select="$date"/>
-    </dc:date>
-  </xsl:template>  
-
-  <xsl:template match="dc:rights[$rights!='']">
-    <dc:rights>
-      <xsl:value-of select="$rights"/>
-    </dc:rights>
-  </xsl:template>  
-
-  <!-- Identity transformation -->
-  <xsl:template match="@*|*">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/authoring/asset-upload.xsl b/trunk/src/webapp/lenya/xslt/authoring/asset-upload.xsl
deleted file mode 100644
index 47306a4..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/asset-upload.xsl
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-    xmlns:lenya-info="http://apache.org/cocoon/lenya/info/1.0"
-    xmlns:wf="http://apache.org/cocoon/lenya/workflow/1.0"
-    xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-    xmlns:usecase="http://apache.org/cocoon/lenya/usecase/1.0"
-    exclude-result-prefixes="lenya-info wf rc dc usecase page i18n"
-    >
-
-<xsl:param name="lenya.usecase" select="'asset'"/>
-<xsl:param name="lenya.step"/>
-<xsl:param name="error"/>
-<xsl:param name="extensions" select="'doc dot rtf txt asc ascii xls xlw xlt ppt pot gif jpg png tif eps pct m3u kar mid smf mp3 swa mpg mpv mp4 mov bin sea hqx sit zip jmx jcl qz jbc jmt cfg pdf'"/>
-
-  <xsl:param name="contextprefix"/>
-
-<xsl:template match="/lenya-info:info">
-  <page:page>
-    <page:title><i18n:text key="lenya.assetupload.subtitle"/></page:title>
-    <page:body>
-      <xsl:apply-templates select="lenya-info:assets"/>
-    </page:body>
-  </page:page>
-</xsl:template>
-
-
-<xsl:template match="lenya-info:assets">
-  <xsl:call-template name="pre-body"/>
-  <xsl:call-template name="upload-form"/>
-  <xsl:call-template name="library-form"/>
-</xsl:template>
-
-
-<!--
-Override this template to add scripts etc.
--->
-<xsl:template name="pre-body"/>
-
-
-<xsl:template name="upload-form">
-  <div class="lenya-box">
-    <div class="lenya-box-title"><i18n:text key="lenya.assetupload.subtitle"/></div>
-    <div class="lenya-box-body">
-      <form name="fileinput" id="fileinput" action="" method="post" enctype="multipart/form-data" onsubmit="return check_upload(fileinput, ext)">
-        <input type="hidden" name="lenya.usecase" value="{$lenya.usecase}"/>
-        <input type="hidden" name="lenya.step" value="asset-upload"/>
-        <input type="hidden" name="task-id" value="insert-asset"/>
-        <input type="hidden" name="uploadtype" value="asset"/>
-        <input type="hidden" name="properties.asset.date" value="{/lenya-info:info/lenya-info:assets/lenya-info:date}"/>
-        <input type="hidden" name="properties.insert.asset.document-uuid" value="{/lenya-info:info/lenya-info:assets/lenya-info:document-uuid}"/>
-        <input type="hidden" name="properties.insert.asset.language" value="{/lenya-info:info/lenya-info:assets/lenya-info:language}"/>
-        <table class="lenya-table-noborder">
-          <xsl:if test="$error = 'true'">
-            <tr>
-              <td colspan="2" class="lenya-form-caption">
-                <span class="lenya-form-message-error"><i18n key="filename-format-exception"/></span>
-              </td>
-            </tr>
-          </xsl:if>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Select File</i18n:text>:</td><td><input class="lenya-form-element" type="file" name="properties.asset.data" 
-                onchange="imagepreview(this)"/><br/>(<i18n:text>No whitespace, no special characters</i18n:text>)</td>
-          </tr>
-          <tr><td>&#160;</td></tr>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Title</i18n:text>*:</td><td><input class="lenya-form-element" type="text" name="properties.asset.title"/></td>
-          </tr>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Creator</i18n:text>:</td><td><input class="lenya-form-element" type="text" name="properties.asset.creator" value="{/lenya-info:info/lenya-info:assets/lenya-info:creator}"/></td>
-          </tr>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Rights</i18n:text>:</td><td><input class="lenya-form-element" type="text" name="properties.asset.rights" value="All rights reserved."/></td>
-          </tr>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Preview</i18n:text>:</td><td><img src="" id="preview" style="visibility: hidden; height: 100px;"/></td>
-          </tr>
-          <tr><td>&#160;</td></tr>
-          <tr>
-            <td/>
-            <td>
-              <input i18n:attr="value" type="submit" value="Add" name="input-add"/>&#160;
-              <input i18n:attr="value" type="button" onClick="location.href='javascript:window.close();';" value="Cancel" name="input-cancel"/>
-            </td>
-          </tr>
-        </table>
-      </form>
-    </div>
-  </div>
-</xsl:template>
-
-
-<xsl:template name="library-form">
-  <div class="lenya-box">
-    <div class="lenya-box-title"><i18n:text>Asset Library</i18n:text></div>
-    <div class="lenya-box-body">
-      <form name="assetlibrary" id="assetlibrary" action="">
-        <table class="lenya-table-noborder">
-          <xsl:if test="not(lenya-info:asset)">
-            <tr><td colspan="5" class="lenya-form-caption"><i18n:text>No assets available</i18n:text></td></tr>
-          </xsl:if>
-          <tr>
-            <td class="lenya-form-caption"><i18n:text>Title</i18n:text>:</td>
-            <td colspan="4">
-              <input id="assetTitle" class="lenya-form-element" type="text" name="properties.insert.asset.title" value=""/>
-              <input type="hidden" id="assetSource" name="properties.asset.data" value=""/>
-              <input type="hidden" id="assetExtent" name="extent" value=""/>
-            </td>
-          </tr>
-          <xsl:apply-templates select="lenya-info:asset"/>
-          <tr>
-            <td/>
-            <td colspan="4">
-              <xsl:call-template name="library-buttons"/>
-            </td>
-          </tr>
-        </table>
-      </form>
-    </div>
-  </div>
-</xsl:template>
-
-
-<xsl:template match="lenya-info:asset">
-  <tr>
-    <td/>
-    <td>
-      <input type="radio" name="asset"
-        onclick="document.getElementById('assetTitle').value = '{dc:title}';
-                 document.getElementById('assetSource').value = '{dc:source}';
-                 document.getElementById('assetExtent').value = '{dc:extent}';"/>
-    </td>
-    <td>
-        <xsl:if test="dc:format = 'image/jpeg' or dc:format = 'image/gif' or  dc:format = 'image/png'">
-            <img src="{../lenya-info:documentnodeid}/{dc:source}" style="height: 32px; vertical-align: middle;"/>&#160;
-        </xsl:if>
-        <xsl:value-of select="dc:title"/>
-    </td>
-    <td><xsl:value-of select="dc:extent"/> KB</td>
-    <td><xsl:value-of select="dc:date"/></td>
-  </tr>
-</xsl:template>
-
-
-<xsl:template name="library-buttons"/>
-
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/authoring/edit/addSourceTags.xsl b/trunk/src/webapp/lenya/xslt/authoring/edit/addSourceTags.xsl
deleted file mode 100644
index 74dc0e5..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/edit/addSourceTags.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: addSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->

-

-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

-

-<xsl:param name="source"/>

-

-<xsl:template match="/">

-  <open>

-  <source:write xmlns:source="http://apache.org/cocoon/source/1.0">

-    <source:source><xsl:value-of select="$source"/></source:source>

-    <source:fragment>

-      <xsl:copy-of select="."/>

-    </source:fragment>

-  </source:write>

-    <content>

-      <xsl:copy-of select="."/>

-    </content>

-  </open>

-</xsl:template>

-

-</xsl:stylesheet>

diff --git a/trunk/src/webapp/lenya/xslt/authoring/edit/removeSourceTags.xsl b/trunk/src/webapp/lenya/xslt/authoring/edit/removeSourceTags.xsl
deleted file mode 100644
index 722610c..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/edit/removeSourceTags.xsl
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: removeSourceTags.xsl 42703 2004-03-13 12:57:53Z gregor $ -->

-

-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

-

-<xsl:template match="/">

-  <xsl:copy-of select="/open/content/*"/>

-</xsl:template>

-

-</xsl:stylesheet>

diff --git a/trunk/src/webapp/lenya/xslt/authoring/edit/replace-predefined-entities.xsl b/trunk/src/webapp/lenya/xslt/authoring/edit/replace-predefined-entities.xsl
deleted file mode 100644
index 90e5abd..0000000
--- a/trunk/src/webapp/lenya/xslt/authoring/edit/replace-predefined-entities.xsl
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
->
-
-<xsl:output indent="no"/>
-
-<!-- FIXME: CDATA is also being modified by replace-predefined-entities.xsl, which actually shouldn't -->
-
-
-<xsl:template match="text()">
-  <xsl:call-template name="search-and-replace">
-    <xsl:with-param name="string" select="."/>
-  </xsl:call-template>
-</xsl:template>
-
-
-
-<xsl:template match="node()|@*" priority="-1">
-  <xsl:copy>
-    <xsl:apply-templates select="node()|@*"/>
-  </xsl:copy>
-</xsl:template>
-
-
-
-
-<xsl:template name="search-and-replace">
-<xsl:param name="string"/>
-
-<xsl:choose>
-<xsl:when test="contains($string, '&lt;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&lt;')"/></xsl:call-template>&amp;lt;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&lt;')"/></xsl:call-template>
-</xsl:when>
-<xsl:when test="contains($string, '&gt;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&gt;')"/></xsl:call-template>&amp;gt;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&gt;')"/></xsl:call-template>
-</xsl:when>
-<xsl:when test="contains($string, '&amp;')">
-  <xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-before($string, '&amp;')"/></xsl:call-template>&amp;amp;<xsl:call-template name="search-and-replace"><xsl:with-param name="string" select="substring-after($string, '&amp;')"/></xsl:call-template>
-</xsl:when>
-<!-- FIXME: &quot; and &apos; -->
-<xsl:otherwise>
-  <xsl:value-of select="$string"/>
-</xsl:otherwise>
-</xsl:choose>
-</xsl:template> 
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/cforms/add-xhtml-namespace.xsl b/trunk/src/webapp/lenya/xslt/cforms/add-xhtml-namespace.xsl
deleted file mode 100644
index 4d7066c..0000000
--- a/trunk/src/webapp/lenya/xslt/cforms/add-xhtml-namespace.xsl
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <xsl:template match="*[namespace-uri()='']">
-    <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
-      <xsl:apply-templates select="@*|node()|text()"/>
-    </xsl:element>
-  </xsl:template>
-  
-    <!--
-    Workaround to prevent the serializer from collapsing these
-    elements, since browsers currently can not handle things like
-      <textarea/>
-    The XHTML serializer currently used by Lenya can not be
-    configured to avoid this collapsing; as long as that is the case
-    this workaround is needed.
-    -->  
-  <xsl:template match="node()[local-name() = 'textarea' or local-name() = 'script' or local-name() = 'style']">
-   <xsl:element name="{local-name()}" namespace="http://www.w3.org/1999/xhtml">
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-	  <xsl:if test="string-length(.) = 0"><xsl:text> </xsl:text></xsl:if>
-    </xsl:element>
-  </xsl:template>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/cforms/forms-dojoarea-styling.xsl b/trunk/src/webapp/lenya/xslt/cforms/forms-dojoarea-styling.xsl
deleted file mode 100644
index 9bd5799..0000000
--- a/trunk/src/webapp/lenya/xslt/cforms/forms-dojoarea-styling.xsl
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fi="http://apache.org/cocoon/forms/1.0#instance"
-                exclude-result-prefixes="fi">
-
-  <xsl:template match="head" mode="forms-dojoarea">
-    <script type="text/javascript">
-        dojo.require("dojo.widget.Editor");
-    </script>
-  </xsl:template>
-
-  <xsl:template match="body" mode="forms-dojoarea"/>
-
-  <!--+
-      | fi:field with @type 'dojoarea'
-      +-->
-  <xsl:template match="fi:field[fi:styling[@type='dojoarea']]">
-    <textarea dojoType="Editor" id="{@id}" name="{@id}" title="{fi:hint}"
-      items="bold;italic;underline;strikethrough;">
-      <!-- remove carriage-returns (occurs on certain versions of IE and doubles linebreaks at each submit) -->
-      <xsl:apply-templates select="fi:value/node()" mode="dojoarea-copy"/>
-    </textarea>
-  </xsl:template>
-
-  <xsl:template match="@*|*" mode="dojoarea-copy">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()" mode="dojoarea-copy"/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="text()" mode="dojoarea-copy">
-    <xsl:copy-of select="translate(., '&#13;', '')"/>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/cforms/forms-samples-styling.xsl b/trunk/src/webapp/lenya/xslt/cforms/forms-samples-styling.xsl
deleted file mode 100644
index c8e2a72..0000000
--- a/trunk/src/webapp/lenya/xslt/cforms/forms-samples-styling.xsl
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:fi="http://apache.org/cocoon/forms/1.0#instance">
-
-  <!--+ Include styling stylesheets, one for the widgets, the other one for the
-      | page. As 'forms-advanced-field-styling.xsl' is a specialization of
-      | 'forms-field-styling.xsl' the latter one is imported there. If you don't
-      | want advanced styling of widgets, change it here!
-      | See xsl:include as composition and xsl:import as extension/inheritance.
-      +-->
-  <xsl:include href="resource://org/apache/cocoon/forms/resources/forms-page-styling.xsl"/>
-  <xsl:include href="resource://org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl"/>
-  <xsl:include href="fallback://lenya/xslt/cforms/forms-dojoarea-styling.xsl"/>
-
-  <!-- Location of the resources directory, where JS libs and icons are stored -->
-  <xsl:param name="resources-uri"/>
-
-  <xsl:template match="head[//fi:*]">
-    <head>
-      <xsl:apply-templates/>
-      <xsl:apply-templates select="." mode="forms-page"/>
-      <xsl:apply-templates select="." mode="forms-field"/>
-      <xsl:apply-templates select="." mode="forms-dojoarea"/>
-    </head>
-  </xsl:template>
-
-  <xsl:template match="body[//fi:*]">
-    <body>
-      <!--+ !!! If template with mode 'forms-page' adds text or elements
-          |        template with mode 'forms-field' can no longer add attributes!!!
-          +-->
-      <xsl:apply-templates select="." mode="forms-page"/>
-      <xsl:apply-templates select="." mode="forms-field"/>
-      <xsl:apply-templates/>
-    </body>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/cforms/strip-xhtml-namespace.xsl b/trunk/src/webapp/lenya/xslt/cforms/strip-xhtml-namespace.xsl
deleted file mode 100644
index 10fa381..0000000
--- a/trunk/src/webapp/lenya/xslt/cforms/strip-xhtml-namespace.xsl
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml">
-
-  <xsl:template match="xhtml:*">
-    <xsl:element name="{local-name()}">
-      <xsl:apply-templates select="@*|node()|text()"/>
-    </xsl:element>
-  </xsl:template>
-
-
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl b/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl
deleted file mode 100644
index 1cecf07..0000000
--- a/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-  <xsl:import href="../util/page-util.xsl"/>
-  
-  <xsl:param name="pub"/>
-  <xsl:param name="area"/>
-  <xsl:param name="path"/>
-  <xsl:param name="requestUrl"/>
-  <xsl:param name="contextPath"/>
-  
-  <xsl:variable name="language"><xsl:value-of select="/missing-language/current-language"/></xsl:variable>
-  <xsl:variable name="prefix" select="concat($contextPath, '/', $pub, '/', $area)"/>
-  <xsl:variable name="documentUrl" select="substring($requestUrl, string-length($prefix) + 1)"/>
-  
-  <xsl:template match="/">
-    
-    <html>
-      <head>
-        <title>
-          <xsl:choose>
-            <xsl:when test="missing-language/available-languages/available-language">
-              <i18n:text>Document not available for this language</i18n:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <i18n:text>error-404</i18n:text>
-            </xsl:otherwise>
-          </xsl:choose>
-        </title>
-      </head>
-      <body>
-        <div id="body">
-          <xsl:choose>
-            <xsl:when test="missing-language/available-languages/available-language">
-              <h1>
-                <i18n:translate>
-                  <i18n:text i18n:key="error-missing-language" />
-                  <i18n:param>'<xsl:value-of select="$language"/>'</i18n:param>
-                </i18n:translate>
-              </h1>
-              <p>
-                <i18n:translate>
-                  <i18n:text i18n:key="error-missing-language" />
-                  <i18n:param>'<xsl:value-of select="$language"/>'</i18n:param>
-                </i18n:translate>
-              </p>
-              <p>
-                <i18n:text>The following languages are available:</i18n:text>
-              </p>
-              <ul>
-                <xsl:apply-templates select="missing-language/available-languages/available-language"/>
-              </ul>
-            </xsl:when>
-            <xsl:otherwise>
-              <h1><i18n:text>error-document-existance-short</i18n:text></h1>
-              <p>
-                <i18n:translate>
-                  <i18n:text i18n:key="error-document-existance" />
-                  <i18n:param>'<xsl:value-of select="$documentUrl"/>'</i18n:param>
-                </i18n:translate>
-              </p>
-              <xsl:if test="$area = 'authoring'">
-                <p>
-                  <a href="?lenya.usecase=sitemanagement.create&amp;path={$path}"><i18n:text>create-document</i18n:text></a>
-                </p>
-                <p>
-                  <i18n:text>configure-content-repository</i18n:text>
-                </p>
-              </xsl:if>
-            </xsl:otherwise>
-          </xsl:choose>
-        </div>
-      </body>
-    </html>
-  </xsl:template>
-  
-  <xsl:template match="available-languages/available-language">
-    <li>
-      <a><xsl:attribute name="href"><xsl:value-of select="url"/></xsl:attribute><xsl:value-of select="language"/></a>
-    </li>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/exception/forbidden.xsl b/trunk/src/webapp/lenya/xslt/exception/forbidden.xsl
deleted file mode 100644
index 520a8cb..0000000
--- a/trunk/src/webapp/lenya/xslt/exception/forbidden.xsl
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <xsl:param name="documentid"/>
-  <xsl:param name="documenturl"/>
-
-  <xsl:template match="/">
-    
-    <page:page>
-      <page:title><i18n:text>forbidden-401</i18n:text></page:title>
-      <page:body>
-	<div class="lenya-box">
-	  <div class="lenya-box-title"><i18n:text>error-document-forbidden-short</i18n:text></div>
-	  <div class="lenya-box-body">
-	    <p>
-      <i18n:translate>
-        <i18n:text i18n:key="error-document-forbidden" />
-        <i18n:param>'<xsl:value-of select="$documenturl"/>'</i18n:param>
-        <i18n:param>'<xsl:value-of select="$documentid"/>'</i18n:param>
-      </i18n:translate>
-	    </p>
-	  </div>
-	</div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/exception/generic.xsl b/trunk/src/webapp/lenya/xslt/exception/generic.xsl
deleted file mode 100644
index 36ea624..0000000
--- a/trunk/src/webapp/lenya/xslt/exception/generic.xsl
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:error="http://apache.org/cocoon/error/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-  
-  <xsl:import href="fallback://lenya/xslt/util/page-util.xsl"/>
-  <xsl:import href="fallback://lenya/xslt/util/toggle.xsl"/>
-
-  <xsl:template match="error:notify">
-    
-    <page:page>
-      <page:title>Apache Lenya: <i18n:text i18n:key="error-generic" /></page:title>
-      <page:head>
-        <style>
-          h1 { color: #336699; text-align: left; margin: 0px 0px 30px 0px; padding: 0px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #336699;}
-          p.message { padding: 10px 30px 10px 30px; font-weight: bold; font-size: 130%; border-width: 1px; border-style: dashed; border-color: #336699; }
-          p.description { padding: 10px 30px 20px 30px; border-width: 0px 0px 1px 0px; border-style: solid; border-color: #336699;}
-          p.topped { padding-top: 10px; border-width: 1px 0px 0px 0px; border-style: solid; border-color: #336699; }
-          pre { font-size: 120%; }
-          span.description { color: #336699; font-weight: bold; }
-          span.switch { cursor: pointer; margin-left: 5px; text-decoration: underline; }
-        </style>
-      </page:head>
-      <page:body>
-        <xsl:apply-templates select="." mode="onload"/>
-        <xsl:call-template name="toggle-script"/>
-        <div class="lenya-box">
-          <div class="lenya-box-title"><i18n:text i18n:key="error-generic" /></div>
-          <div class="lenya-box-body">
-            <p>
-                <xsl:value-of select="error:message"/>
-            </p>
-            <p>
-                <xsl:value-of select="error:description"/>
-            </p>
-              <xsl:apply-templates select="error:extra"/>
-          </div>
-        </div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-
-  <xsl:template match="error:extra">
-    <xsl:choose>
-     <xsl:when test="contains(@error:description,'stacktrace')">
-      <p class="stacktrace">
-       <span class="description"><xsl:value-of select="@error:description"/></span>
-       <span class="switch" id="{@error:description}-switch" onclick="toggle('{@error:description}')">[<i18n:text i18n:key="hide" />]</span>
-       <pre id="{@error:description}">
-         <xsl:value-of select="translate(.,'&#13;','')"/>
-       </pre>
-      </p>
-     </xsl:when>
-     <xsl:otherwise>
-      <p class="extra">
-       <span class="description"><xsl:value-of select="@error:description"/>:&#160;</span>
-       <xsl:value-of select="."/>
-      </p>
-     </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <xsl:template match="error:notify" mode="onload">
-    <xsl:attribute name="onload">
-      <xsl:for-each select="error:extra[contains(@error:description,'stacktrace')]">
-        <xsl:text>toggle('</xsl:text>
-        <xsl:value-of select="@error:description"/>
-        <xsl:text>');</xsl:text>
-      </xsl:for-each>
-    </xsl:attribute>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/exception/not-published-yet.xsl b/trunk/src/webapp/lenya/xslt/exception/not-published-yet.xsl
deleted file mode 100644
index 1666344..0000000
--- a/trunk/src/webapp/lenya/xslt/exception/not-published-yet.xsl
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <xsl:import href="../util/page-util.xsl"/>
-  
-  <xsl:template match="/">
-    
-    <page:page>
-      <page:title><i18n:text>Page not published yet</i18n:text></page:title>
-      <page:body>
-	<div class="lenya-box">
-	  <div class="lenya-box-title"><i18n:text>Page not published yet</i18n:text></div>
-	  <div class="lenya-box-body">
-	    <p>
-	      <i18n:text>An error occured. Most likely you are trying access a
-	      page which has not been published yet.</i18n:text></p>
-	      
-	    <p><i18n:text>To publish this page click on the <strong>File</strong> menu
-	      within the Authoring area and then click on the
-	      <strong>Publish</strong> menu item.</i18n:text></p>
-	  </div>
-	</div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/exception/parent-node-not-found.xsl b/trunk/src/webapp/lenya/xslt/exception/parent-node-not-found.xsl
deleted file mode 100644
index d8f0ef5..0000000
--- a/trunk/src/webapp/lenya/xslt/exception/parent-node-not-found.xsl
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  >
-  
-  <xsl:import href="../util/page-util.xsl"/>
-  
-  <xsl:variable name="separator" select="','"/>
-  
-  <xsl:template match="/">
-    
-    <page:page>
-      <page:title><i18n:text>Parent document not found</i18n:text></page:title>
-      <page:body>
-	<div class="lenya-box">
-	  <div class="lenya-box-title"><i18n:text>Error while publishing</i18n:text></div>
-	  <div class="lenya-box-body">
-	    <p>
-	      <i18n:text>An error occured while publishing. Most likely you are trying
-	      to publish a document whose parent document hasn't been
-	      published yet.</i18n:text></p>
-	    <p><i18n:text>Try to publish the parent document first.</i18n:text></p>
-	  </div>
-	</div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/menu/filter-menu.xsl b/trunk/src/webapp/lenya/xslt/menu/filter-menu.xsl
deleted file mode 100644
index 422fb14..0000000
--- a/trunk/src/webapp/lenya/xslt/menu/filter-menu.xsl
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  Removes blocks and items which will not be displayed in the current view.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0">
-
-  <xsl:param name="tabGroup"/>
-
-  <xsl:variable name="currentTab">
-    <xsl:choose>
-      <xsl:when test="$tabGroup != ''"><xsl:value-of select="$tabGroup"/></xsl:when>
-      <xsl:otherwise>authoring</xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  
-  <xsl:template match="menu:block">
-    <xsl:if test="not(@areas) or contains(@areas, $currentTab)">
-      <xsl:copy>
-        <xsl:apply-templates select="@*|node()"/>
-      </xsl:copy>
-    </xsl:if>
-  </xsl:template>
-
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/menu/menu2xhtml.xsl b/trunk/src/webapp/lenya/xslt/menu/menu2xhtml.xsl
deleted file mode 100644
index f04d3ae..0000000
--- a/trunk/src/webapp/lenya/xslt/menu/menu2xhtml.xsl
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-<xsl:param name="contextprefix"/>
-<xsl:param name="usecase"/>
-  
-  <xsl:param name="position"></xsl:param>
-  
-  
-  <xsl:template match="/menu:menu">
-    <ul id="menu{$position}">
-      <xsl:apply-templates select="menu:menus/menu:menu/menu:block"/>
-    </ul>
-  </xsl:template>
-  
-
-  <xsl:template match="menu:block">
-    <xsl:apply-templates select="menu:title"/>
-    <xsl:apply-templates select="menu:menu | menu:item"/>
-		
-    <xsl:if test="position() != last()">
-      <li class="lenya-menu-separator"></li>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template match="menu:title">
-    <li class="lenya-menu-title">
-      <xsl:apply-templates select="node()"/>
-    </li>
-  </xsl:template>
-  
-  
-  <xsl:template name="checkItem">
-    <xsl:if test="@checked">
-      <xsl:variable name="image">
-        <xsl:choose>
-          <xsl:when test="@checked = 'true'">
-            <xsl:text>checked.png</xsl:text>
-          </xsl:when>
-          <xsl:when test="@checked = 'false'">
-            <xsl:text>unchecked.png</xsl:text>
-          </xsl:when>
-        </xsl:choose>
-      </xsl:variable>
-      <xsl:attribute name="style">
-        <xsl:text>background: url('</xsl:text>
-        <xsl:value-of select="$contextprefix"/><xsl:text>/lenya/menu/images/</xsl:text>
-        <xsl:value-of select="$image"/>
-        <xsl:text>') left 2px no-repeat;</xsl:text>
-      </xsl:attribute>
-    </xsl:if>
-  </xsl:template>
-  
-  	
-  <xsl:template match="menu:item">
-    <xsl:choose>
-      <xsl:when test="@href">
-        <li>
-          <xsl:call-template name="checkItem"/>
-          <a>
-          <xsl:attribute name="href">
-            <xsl:value-of select="@href"/>
-            <xsl:apply-templates select="@*[local-name() != 'href']"/>
-            <xsl:text/>
-            <!--
-            <xsl:if test="$currentTab = 'site'">
-              <xsl:choose>
-                <xsl:when test="contains(@href, '?')">
-                  <xsl:text>&amp;</xsl:text>
-                </xsl:when>
-                <xsl:otherwise>
-                  <xsl:text>?</xsl:text>
-                </xsl:otherwise>
-              </xsl:choose>
-            </xsl:if>
-            -->
-          </xsl:attribute>
-          <span><xsl:apply-templates select="i18n:*|text()"/></span>
-        </a></li>
-      </xsl:when>
-      <xsl:otherwise>
-        <li class="disabled">
-          <xsl:call-template name="checkItem"/>
-          <a>
-            <xsl:for-each select="menu:message">
-              <xsl:copy>
-                <i18n:translate>
-                  <i18n:text><xsl:value-of select="text()"/></i18n:text>
-                  <xsl:for-each select="menu:parameter">
-                    <i18n:param><xsl:value-of select="normalize-space(text())"/></i18n:param>
-                  </xsl:for-each>
-                </i18n:translate>
-              </xsl:copy>
-            </xsl:for-each>
-            <span><xsl:apply-templates select="i18n:*|text()"/></span>
-          </a>
-        </li>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  
-  <xsl:template match="menu:item/text()">
-    <xsl:value-of select="normalize-space(.)"/>
-  </xsl:template>
-  
-  
-  <xsl:template match="menu:item/i18n:*">
-    <xsl:copy-of select="."/>
-  </xsl:template>
-  
-  
-  <xsl:template match="menu:item/@uc:usecase">
-    <xsl:text/>
-    <xsl:choose>
-      <xsl:when test="contains(../@href, '?')">&amp;</xsl:when>
-      <xsl:otherwise>?</xsl:otherwise>
-    </xsl:choose>
-    <xsl:text/>lenya.usecase=<xsl:value-of select="normalize-space(.)"/><xsl:text/>
-    <xsl:if test="$usecase != ''">
-      <xsl:text>&amp;lenya.exitUsecase=</xsl:text><xsl:value-of select="$usecase"/><xsl:text/>
-    </xsl:if>
-  </xsl:template>
-  
-  <xsl:template match="menu:item/@uc:step">
-    <xsl:text/>&amp;lenya.step=<xsl:value-of select="normalize-space(.)"/><xsl:text/>
-  </xsl:template>
-  
-  <xsl:template match="menu:item/@*[not(namespace-uri() = 'http://apache.org/cocoon/lenya/usecase/1.0')]"><xsl:copy-of select="."/></xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/menu/menu2xslt.xsl b/trunk/src/webapp/lenya/xslt/menu/menu2xslt.xsl
deleted file mode 100644
index 65d9ae7..0000000
--- a/trunk/src/webapp/lenya/xslt/menu/menu2xslt.xsl
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:xso="http://apache.org/cocoon/lenya/xslt/1.0"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  exclude-result-prefixes="menu"
-  >
-  
-  <xsl:param name="contextprefix"/>
-  <xsl:param name="publicationid"/>
-  <xsl:param name="area"/>
-  <xsl:param name="documenturl"/>
-  
-  <xsl:namespace-alias stylesheet-prefix="xso" result-prefix="xsl"/>
-  
-  <xsl:template match="/">
-    
-    <xso:stylesheet version="1.0"
-      xmlns:xhtml="http://www.w3.org/1999/xhtml"
-      exclude-result-prefixes="xhtml">
-      
-      <xso:output method="xml" indent="yes"/>
-      
-      <xsl:if test="$area != 'live'">
-        
-        <xso:template match="/">
-          <html>
-            <head>
-              <xso:call-template name="title"/>
-              <script src="{$contextprefix}/lenya/menu/menu.js" type="text/javascript">&#160;</script>
-              <link href="{$contextprefix}/lenya/css/menu.css" rel="stylesheet" type="text/css"/>
-              <link rel="icon" href="{$contextprefix}/favicon.ico" type="image/ico"/>
-              <xso:apply-templates select="xhtml:html/xhtml:head/*[local-name() != 'title']"/>
-               <!-- internet explorer 6 switches to quirks mode with the xml declaration
-                   the quirks layout inconsistencies are fixed in a ie6 only stylesheet -->
-              <xso:variable name="contextprefix">
-                <xsl:value-of select="$contextprefix"/>
-              </xso:variable>
-              <xso:comment>[if IE 6]<![CDATA[>]]>&lt;link rel="stylesheet" type="text/css" href="<xso:value-of select="$contextprefix"/>/lenya/css/ie6hacksonly.css" /><![CDATA[<![endif]]]></xso:comment>
-            </head>
-            <body>
-              <xso:apply-templates select="xhtml:html/xhtml:body/@*"/>
-              <xsl:apply-templates select="xhtml:div/xhtml:div[@id = 'lenya-logo']"/>
-              <xsl:apply-templates select="xhtml:div/xhtml:div[@id = 'lenya-menus']"/>
-              <div id="lenya-cmsbody">
-                <xso:apply-templates select="xhtml:html/xhtml:body/node()"/>
-              </div>
-              <script type="text/javascript"> initialize(); </script>
-            </body>
-          </html>
-        </xso:template>
-        
-        <xso:template name="title">
-          <title>
-            Apache Lenya |
-            <xsl:value-of select="$publicationid"/> |
-            <xsl:value-of select="$area"/> |
-            <xsl:value-of select="$documenturl"/> |
-            <xso:value-of select="xhtml:html/xhtml:head/xhtml:title"/>
-          </title>
-        </xso:template>
-        
-      </xsl:if>
-      
-      <xso:template match="xhtml:script">
-        <xso:copy>
-          <xso:apply-templates select="@*|node()"/>
-          <xso:if test="not(.//text())"><xso:text>&#160;</xso:text></xso:if>
-        </xso:copy>
-      </xso:template>
-      
-      <xso:template match="xhtml:*">
-        <xso:element name="{string('{local-name()}')}">
-          <xso:apply-templates select="@*|node()"/>
-        </xso:element>
-      </xso:template>
-      
-      
-      <xso:template match="@*|node()">
-        <xso:copy>
-          <xso:apply-templates select="@*|node()"/>
-        </xso:copy>
-      </xso:template>
-      
-    </xso:stylesheet>
-    
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:*">
-    <xsl:element name="{local-name()}">
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:element>
-  </xsl:template>
-  
-  
-  <!-- add only first message as title attribute --> 
-  <xsl:template match="menu:message[preceding-sibling::menu:message]"/>
-  
-  <xsl:template match="menu:message">
-    <xsl:attribute name="title">
-      <xsl:value-of select="."/>
-    </xsl:attribute>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/menu/menubar2xhtml.xsl b/trunk/src/webapp/lenya/xslt/menu/menubar2xhtml.xsl
deleted file mode 100644
index 9263817..0000000
--- a/trunk/src/webapp/lenya/xslt/menu/menubar2xhtml.xsl
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xhtml.xsl 568636 2007-08-22 14:54:40Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-
-  <xsl:import href="menu2xhtml.xsl"/>
-      
-<xsl:param name="contextprefix"/>
-<xsl:param name="publicationid"/>
-<xsl:param name="area"/>
-<xsl:param name="documenturl"/>
-<xsl:param name="documentid"/>
-<xsl:param name="userid"/>
-<xsl:param name="servertime"/>
-<xsl:param name="workflowstate"/>
-<xsl:param name="islive"/>
-<xsl:param name="usecase"/>
-<xsl:param name="tabGroup"/>
-<xsl:param name="newMessages"/>
-  
-<xsl:variable name="currentTab">
-  <xsl:choose>
-    <xsl:when test="$tabGroup != ''"><xsl:value-of select="$tabGroup"/></xsl:when>
-    <xsl:otherwise>authoring</xsl:otherwise>
-  </xsl:choose>
-</xsl:variable>
-
-<xsl:variable name="image-prefix"><xsl:value-of select="$contextprefix"/>/lenya/menu/images</xsl:variable>
- 
-<xsl:template match="/menu:menu">
-  
-  <div>
-    
-  <!-- Lenya graphic -->
-  <div id="lenya-logo">
-    <img src="{$image-prefix}/lenya-logo.gif" alt="Lenya" />
-  </div>
-
-  <div id="lenya-menus">
-
-    <!-- The main tabs for the different areas of Lenya -->
-    <div id="lenya-areas">
-      <ul>
-        
-        <!-- ADMIN TAB -->
-        <xsl:if test="not(menu:tabs/menu:tab[@label = 'admin']/@show = 'false')">
-          <xsl:call-template name="area-tab">
-            <xsl:with-param name="tab-area"><xsl:value-of select="$area"/></xsl:with-param>
-            <xsl:with-param name="tabName">admin</xsl:with-param>
-            <xsl:with-param name="queryString">?lenya.usecase=admin.users</xsl:with-param>
-          </xsl:call-template>
-        </xsl:if>
-          
-        <xsl:if test="not(menu:tabs/menu:tab[@label = 'info']/@show = 'false')">
-          <xsl:call-template name="area-tab">
-            <xsl:with-param name="tab-area"><xsl:value-of select="$area"/></xsl:with-param>
-            <xsl:with-param name="queryString">?lenya.usecase=tab.overview</xsl:with-param>
-            <xsl:with-param name="tabName">site</xsl:with-param>
-          </xsl:call-template>
-        </xsl:if>
-          
-        <!-- AUTHORING TAB -->
-        <xsl:call-template name="area-tab">
-          <xsl:with-param name="tab-area"><xsl:value-of select="$area"/></xsl:with-param>
-          <xsl:with-param name="tabName"><xsl:value-of select="$area"/></xsl:with-param>
-        </xsl:call-template>
-          
-        <!-- STAGING TAB -->
-        <xsl:if test="menu:tabs/menu:tab[@label = 'staging']/@show = 'true'">
-          <xsl:call-template name="area-tab">
-            <xsl:with-param name="tab-area">staging</xsl:with-param>
-          </xsl:call-template>
-        </xsl:if>
-          
-        <!-- LIVE TAB -->
-        <xsl:if test="not(menu:tabs/menu:tab[@label = 'live']/@show = 'false')">
-          <xsl:call-template name="area-tab">
-            <xsl:with-param name="tab-area">live</xsl:with-param>
-            <xsl:with-param name="target">_blank</xsl:with-param>
-            <xsl:with-param name="tabName">live</xsl:with-param>
-          </xsl:call-template>
-        </xsl:if>
-          
-      </ul>
-    </div>
- 
-    <!-- General information about the state  of the page, etc. -->
-    <div id="lenya-info">
-      <ul>
-        <xsl:if test="$workflowstate != ''">
-          <xsl:call-template name="workflow"/>
-        </xsl:if>
-        <li id="info-user"><i18n:text>User</i18n:text>: <span id="logged-user"><xsl:value-of select="$userid"/></span></li>
-        <li id="info-messages">
-          <a href="?lenya.usecase=notification.inbox">
-            <xsl:choose>
-              <xsl:when test="$newMessages = '0'">
-                <i18n:text>Inbox</i18n:text>
-              </xsl:when>
-              <xsl:when test="$newMessages = '1'">
-                <i18n:text>unread-message</i18n:text>
-              </xsl:when>
-              <xsl:otherwise>
-                <i18n:translate>
-                  <i18n:text>unread-messages</i18n:text>
-                  <i18n:param><xsl:value-of select="$newMessages"/></i18n:param>
-                </i18n:translate>
-              </xsl:otherwise>
-            </xsl:choose>
-          </a>
-        </li>
-        <li id="info-time"><i18n:text>Server Time</i18n:text>: <span id="server-time"><xsl:value-of select="$servertime"/></span></li>
-      </ul>
-    </div>
-
-    <!-- drop down menus for area options -->
-    <div id="lenya-options">
-      <ul>
-        <xsl:apply-templates select="menu:menus/menu:menu" mode="nav"/>
-      </ul>
-    </div>
-    
-  </div>
-
-  </div>
-
-</xsl:template>
-  
-  
-  <xsl:template name="area-tab">
-    <xsl:param name="tab-area"/>
-    <xsl:param name="tab-area-prefix" select="$tab-area"/>
-    <xsl:param name="target" select="'_self'"/>
-    <xsl:param name="queryString"/>
-    <xsl:param name="tabName"/>
-    
-    <xsl:variable name="tab-documenturl">
-      <xsl:choose>
-        <!-- 
-           Document URLs are not meaningful in some areas. In that case, set the URL to
-           "/". The publication sitemap currently takes care of mapping that to a default page (index.html).
-           FIXME: that solution is sub-optimal, because it breaks when a user deletes the /index page.
-           There should be a mapper from "/" to "first entry in sitetree", and if that does not exist, to a 
-           "create document?" message.
-        -->
-        <!-- from or to the admin area, there's no concept of "document" (it's all usecases) -->
-        <xsl:when test="$tab-area = 'admin' or $area = 'admin'">/</xsl:when>
-        <!-- FIXME: what is documentid? -->
-        <xsl:when test="($currentTab = 'site') and $documentid = '/'">/</xsl:when>
-        <!-- catch missing trailing slash in urls with just the area: -->
-        <xsl:when test="not($documenturl)">/</xsl:when>
-        <!-- the default case is: use the current $documenturl for the new tab link. -->
-        <xsl:otherwise><xsl:value-of select="$documenturl"/></xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:choose>
-      <xsl:when test="$tabName = $currentTab">
-        <!-- 
-           FIXME: why do we normalize-space here? fiddling with uris is none of our business. 
-           Looks like a workaround for a real bug that should be fixed. Sure, we don't allow spaces
-           in document URLs, but that policy decision is made elsewhere.
-        -->
-        <li id="area-{$tab-area}-active" class="area-active"><a href="/{$publicationid}/{$tab-area}{normalize-space($tab-documenturl)}{$queryString}" target="{$target}"><span><i18n:text><xsl:value-of select="$tabName"/></i18n:text></span></a></li>
-      </xsl:when>
-      <xsl:otherwise>
-        <li id="area-{$tab-area}" class="area-inactive"><a href="/{$publicationid}/{$tab-area}{normalize-space($tab-documenturl)}{$queryString}" target="{$target}"><span><i18n:text><xsl:value-of select="$tabName"/></i18n:text></span></a></li>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  
-  <xsl:template name="workflow">
-    <li id="info-state"><i18n:text>Workflow State</i18n:text>: <span name="workflow-state" id="workflow-state"><i18n:text><xsl:value-of select="$workflowstate"/></i18n:text></span></li>
-    <li id="info-live">
-      <xsl:choose>
-        <xsl:when test="$islive = 'false'">
-          <i18n:text>not live</i18n:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <i18n:text>live</i18n:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </li>
-  </xsl:template>
-  
-  <!--
-  <xsl:template match="menu:menu//menu:menu">
-    <li class="lenya-menu-title"><xsl:value-of select="@name"/></li>
-    <xsl:apply-templates select="*"/>
-  </xsl:template>
-  -->
-  
-  <xsl:template match="menu:menu" mode="nav">
-    <li>
-      <xsl:choose>
-        <xsl:when test="*">
-          <xsl:attribute name="id">nav<xsl:value-of select="position()"/></xsl:attribute>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:attribute name="class">disabled</xsl:attribute>
-        </xsl:otherwise>
-      </xsl:choose>
-      <i18n:text><xsl:value-of select="@name"/></i18n:text>
-      <xsl:if test="*">
-        <ul id="menu{position()}">
-          <xsl:apply-templates select="menu:block"/>
-        </ul>
-      </xsl:if>
-    </li>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/menu/merge-menus.xsl b/trunk/src/webapp/lenya/xslt/menu/merge-menus.xsl
deleted file mode 100644
index f20ba02..0000000
--- a/trunk/src/webapp/lenya/xslt/menu/merge-menus.xsl
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: menu2xhtml.xsl 178289 2005-05-24 21:30:01Z andreas $ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-  <xsl:template match="/menu:menu">
-    <xsl:copy>
-      <xsl:apply-templates select="*"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <!--
-    Apply the first <menus>.
-  -->
-  <xsl:template match="menu:menus[not(preceding-sibling::menu:menus)]">
-    <xsl:copy>
-      <xsl:apply-templates select="menu:menu"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <!--
-    Apply the <menu> children of the first <menus>.
-    Insert items of module menus (which have preceding siblings)
-    before the items of this menu.
-  -->
-  <xsl:template match="/menu:menu/menu:menus[1]/menu:menu">
-    <xsl:copy>
-      <xsl:apply-templates select="@*"/>
-      <xsl:apply-templates select="/menu:menu/menu:menus[preceding-sibling::menu:menus]/menu:menu[@name = current()/@name]/*"/>
-      <xsl:apply-templates select="*"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="menu:menus[preceding-sibling::menu:menus]"/>
-  
-  
-  <!--
-    Don't apply the <menu> children of the subsequent <block>s with a certain ID.
-  -->
-  <xsl:template match="menu:block">
-    <xsl:if test="not(preceding::menu:block[@id = current()/@id])">
-      <xsl:copy>
-        <xsl:apply-templates select="@*|menu:item"/>
-        <xsl:apply-templates select="following::menu:block[@id = current()/@id]/menu:item"/>
-      </xsl:copy>
-    </xsl:if>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/modules/modules2xinclude.xsl b/trunk/src/webapp/lenya/xslt/modules/modules2xinclude.xsl
deleted file mode 100644
index 4504036..0000000
--- a/trunk/src/webapp/lenya/xslt/modules/modules2xinclude.xsl
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: xinclude.xsl 123414 2004-12-27 14:52:24Z gregor $ -->

-

-<xsl:stylesheet version="1.0"

-    xmlns:lenya="http://apache.org/cocoon/lenya/publication/1.1"
-    xmlns:menu="http://apache.org/cocoon/lenya/menubar/1.0"

-    xmlns:xi="http://www.w3.org/2001/XInclude"

-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

->

-

-  <xsl:param name="area"/>

-

-  <xsl:template match="lenya:publication">
-    <menu:menu>
-      <xsl:apply-templates select="lenya:modules/lenya:module"/>
-    </menu:menu>
-  </xsl:template>

-

-  <xsl:template match="lenya:module">
-    <xsl:if test="not(preceding-sibling::lenya:module[@name = current()/@name])">
-      <xi:include href="cocoon:/menu-xml/module/{$area}/{@name}.xml" xpointer="xpointer(/*/*)"/>

-    </xsl:if>

-  </xsl:template>

-

-</xsl:stylesheet>

diff --git a/trunk/src/webapp/lenya/xslt/notification/message2xslt.xsl b/trunk/src/webapp/lenya/xslt/notification/message2xslt.xsl
deleted file mode 100644
index f728483..0000000
--- a/trunk/src/webapp/lenya/xslt/notification/message2xslt.xsl
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!--
-	This stylesheet converts a notification message to a named stylesheet.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xslt="http://apache.org/cocoon/lenya/xslt/1.0"
-    xmlns:not="http://apache.org/cocoon/lenya/notification/1.0"
-    xmlns="http://www.w3.org/1999/xhtml"
-    >
-    
-<xsl:param name="server-uri"/>
-<xsl:param name="document-url"/>
-    
-<xsl:namespace-alias stylesheet-prefix="xslt" result-prefix="xsl"/>
-    
-<xsl:template match="/">
-	<xslt:stylesheet exclude-result-prefixes="not" version="1.0">
-		<xsl:apply-templates/>
-	</xslt:stylesheet>
-</xsl:template>
-		
-		
-<xsl:template match="/not:notification[not(@enabled = 'true')]">
-	
-	<xslt:template match="not:notification"/>
-	<xslt:template match="not:notification-subject"/>
-	<xslt:template match="not:notification-comment"/>
-		
-	<xslt:template match="@*|node()">
-		<xslt:copy><xslt:apply-templates select="@*|node()"/></xslt:copy>
-	</xslt:template>
- 
-</xsl:template>
-	
-	
-<xsl:template match="/not:notification[@enabled = 'true']">
-	
-	<xslt:template match="not:notification">
-		<input id="notification.subject" type="hidden" name="notification.subject"
-			value="{not:message/not:subject}"/>
-		<div class="lenya-box">
-			<div class="lenya-box-title">Notification</div>
-			<div class="lenya-box-body">
-			<table class="lenya-table-noborder">
-				<tr>
-					<td class="lenya-entry-caption">Recipient(s):</td>
-					<td>
-						<xslt:apply-templates/>
-					</td>
-				</tr>
-				<tr>
-					<td class="lenya-entry-caption">Comment:</td>
-					<td>
-						<textarea id="notification.message" name="notification.message" class="lenya-form-element">
-							<xsl:text/>
-							<xsl:apply-templates select="not:message/not:body"/>
-							<xsl:text>&#160;</xsl:text>
-						</textarea>
-					</td>
-				</tr>
-			</table>	
-			</div>
-		</div>
-	</xslt:template>
-	
-	
-	<xslt:template match="not:select">
-		<select name="notification.tolist" class="lenya-form-element">
-		  <option value="">[no notification]</option>
-			<xslt:for-each select="not:users/not:user">
-				<option>
-					<xslt:attribute name="value"><xslt:value-of select="@email"/></xslt:attribute>
-					<xslt:value-of select="@id"/>
-					<xslt:if test="@name != ''">&#160;(<xslt:value-of select="@name"/>)</xslt:if>
-				</option>
-			</xslt:for-each>
-		</select>
-	</xslt:template>
-	
-	
-	<xslt:template match="not:textarea">
-		<textarea id="notification.tolist" name="notification.tolist" class="lenya-form-element">&#160;</textarea>
-	</xslt:template>
-	
-	
-	<xslt:template match="not:preset">
-		<xslt:variable name="user" select="not:users/not:user"/>
-		<input type="hidden" name="notification.tolist">
-			<xslt:attribute name="value"><xslt:value-of select="$user/@email"/></xslt:attribute>
-		</input> 
-		<span style="white-space: nobreak">
-			<xslt:value-of select="$user/@id"/>
-			<xslt:if test="@name != ''">&#160;(<xslt:value-of select="$user/@name"/>)</xslt:if>
-		</span>
-	</xslt:template>
-	
-	
-	<xslt:template match="@*|node()">
-		<xslt:copy><xslt:apply-templates select="@*|node()"/></xslt:copy>
-	</xslt:template>
- 
-</xsl:template>
-
-
-<xsl:template match="not:body">
-	<xsl:apply-templates select="node()"/>
-</xsl:template>
-
-<xsl:template match="not:body/text()"><xsl:value-of select="."/></xsl:template>
-
-<xsl:template match="not:document-url">
-	<xsl:value-of select="$server-uri"/><xsl:value-of select="$document-url"/>
-</xsl:template>
-	
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/notification/notification2message.xsl b/trunk/src/webapp/lenya/xslt/notification/notification2message.xsl
deleted file mode 100644
index 8636ffc..0000000
--- a/trunk/src/webapp/lenya/xslt/notification/notification2message.xsl
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<!--
-	This stylesheet filters the messages in notification.xconf.
-	Only the message of the specified usecase is forwarded.
--->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:not="http://apache.org/cocoon/lenya/notification/1.0"
-    >
-    
-<xsl:param name="usecase"/>
-
-<xsl:template match="not:message[@usecase != $usecase]"/>
-
-<xsl:template match="@*|node()">
-	<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
-</xsl:template>
- 
-</xsl:stylesheet>  
diff --git a/trunk/src/webapp/lenya/xslt/rc/rco-exception.xsl b/trunk/src/webapp/lenya/xslt/rc/rco-exception.xsl
deleted file mode 100644
index ffa52db..0000000
--- a/trunk/src/webapp/lenya/xslt/rc/rco-exception.xsl
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:rc="http://apache.org/cocoon/lenya/rc/1.0"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-  <xsl:import href="../util/page-util.xsl"/>
-  
-  <xsl:template match="/">
-    <xsl:apply-templates/>
-  </xsl:template>
-  
-  <xsl:template match="rc:exception">
-    <xsl:apply-templates/>
-  </xsl:template>
-  
-  <xsl:template match="rc:file-reserved-checkout-exception">
-    <page:page>
-      <page:title><i18n:text>lenya.rc.nocheckout</i18n:text></page:title>
-      <page:body>
-        <div class="lenya-box">
-          <div class="lenya-box-title"><i18n:text>lenya.rc.nocheckout</i18n:text></div>
-          <div class="lenya-box-body">
-            <p><i18n:text>lenya.rc.checkedoutalready</i18n:text></p>
-            <table>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>User</i18n:text>:</td>
-                <td><xsl:value-of select="rc:user"/></td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>Date</i18n:text>:</td>
-                <td><xsl:value-of select="rc:date"/></td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>Filename</i18n:text>:</td>
-                <td><xsl:value-of select="rc:filename"/></td>
-              </tr>
-            </table>
-            <form id="form-back">
-              <p>
-                <input type="button" value="OK" onClick="history.go(-1)" name="input-ok"/>
-              </p>
-            </form>		
-          </div>
-        </div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-  <xsl:template match="rc:file-reserved-checkin-exception">
-    <page:page>
-      <page:title><i18n:text>lenya.rc.nocheckin</i18n:text></page:title>
-      <page:body>
-        <div class="lenya-box">
-          <div class="lenya-box-title"><i18n:text>lenya.rc.nocheckin</i18n:text></div>
-          <div class="lenya-box-body">
-            <p><i18n:text>lenya.rc.checkedoutalready</i18n:text></p>
-            <table>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>User</i18n:text>:</td>
-                <td><xsl:value-of select="rc:user"/></td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>Date</i18n:text>:</td>
-                <td><xsl:value-of select="rc:date"/></td>
-              </tr>
-              <tr>
-                <td class="lenya-entry-caption"><i18n:text>Filename</i18n:text>:</td>
-                <td><xsl:value-of select="rc:filename"/></td>
-              </tr>
-            </table>
-            <form id="form-back">
-              <p>
-                <input type="button" value="OK" onClick="history.go(-1)" name="input-ok"/>
-              </p>
-            </form>		
-          </div>
-        </div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-  
-  <xsl:template match="rc:generic-exception">
-    <page:page>
-      <page:title><i18n:text>Generic Exception</i18n:text></page:title>
-      <page:body>
-        <div class="lenya-box">
-          <div class="lenya-box-title"><i18n:text>Generic Exception</i18n:text></div>
-          <div class="lenya-box-body">
-            <p><i18n:text>Reason</i18n:text>: <xsl:value-of select="rc:message"/><br />
-              <i18n:text>Check the log files.</i18n:text>
-            </p>
-            <table>
-              <tr><td><i18n:text>Filename</i18n:text>:</td><td><xsl:value-of select="rc:filename"/></td></tr>
-            </table>
-            <form id="form-back">
-              <input type="button" value="OK" onClick="history.go(-1)" name="input-ok"/>
-            </form>		
-          </div>
-        </div>
-      </page:body>
-    </page:page>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/resources/translate-rng-includes.xsl b/trunk/src/webapp/lenya/xslt/resources/translate-rng-includes.xsl
deleted file mode 100644
index a29bd94..0000000
--- a/trunk/src/webapp/lenya/xslt/resources/translate-rng-includes.xsl
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-
-<!-- FIXME: this file should be killed the sooner the better.
-     There is really no excuse to re-invent a fallback source resolver with substring guessing.
--->
-
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    >
-
-  <xsl:param name="publicationid" />
-  
-  <xsl:template match="@href[starts-with(.,'fallback://lenya/resources/')]" priority="10">
-    <xsl:attribute name="href">
-      <xsl:variable name="resource" select="substring-after(., 'fallback://lenya/resources/')"/>
-      <xsl:value-of select="concat('/lenya/', $resource )"/>
-    </xsl:attribute>
-  </xsl:template>
-
-  <xsl:template match="@href[starts-with(.,'fallback')]" priority="5">
-    <xsl:variable name="nofallback" select="substring-after(.,'fallback://lenya/modules/')"/>
-    <xsl:variable name="restype" select="substring-before($nofallback,'/resources')"/>
-    <xsl:variable name="resource" select="substring-after($nofallback,'resources/')"/>
-    <xsl:attribute name="href">
-      <xsl:value-of select="concat('/' , $publicationid, '/modules/' , $restype, '/', $resource)"/>
-    </xsl:attribute>
-  </xsl:template>
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/webapp/lenya/xslt/util/aggregate-publications.xsl b/trunk/src/webapp/lenya/xslt/util/aggregate-publications.xsl
deleted file mode 100644
index 56caf3d..0000000
--- a/trunk/src/webapp/lenya/xslt/util/aggregate-publications.xsl
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: xinclude.xsl 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:xi="http://www.w3.org/2001/XInclude"
-    xmlns:lenya="http://apache.org/cocoon/lenya/publication/1.1"
-    xmlns:dir="http://apache.org/cocoon/directory/2.0"
-    >
-
-<xsl:template match="/">
-  <xsl:apply-templates select="dir:directory"/>
-</xsl:template>                                                                                                                             
-
-<xsl:template match="dir:directory">
-  <lenya:publications>
-    <xsl:for-each select="dir:directory">
-      <lenya:publication dirname="{@name}">
-        <xi:include 
-          href="lenya/pubs/{@name}/config/publication.xml"
-          xpointer="xpointer(/*/*)"
-        >
-          <xi:fallback>
-            <lenya:name name="{@name}"/>
-          </xi:fallback>
-        </xi:include>
-      </lenya:publication>
-    </xsl:for-each>
-  </lenya:publications>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/util/identity.xsl b/trunk/src/webapp/lenya/xslt/util/identity.xsl
deleted file mode 100644
index a6283b9..0000000
--- a/trunk/src/webapp/lenya/xslt/util/identity.xsl
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-Identity transformation.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  
-  <xsl:template match="@*|node()">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/xslt/util/introduction.xsl b/trunk/src/webapp/lenya/xslt/util/introduction.xsl
deleted file mode 100644
index f17bfa3..0000000
--- a/trunk/src/webapp/lenya/xslt/util/introduction.xsl
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: publication.xsl 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<xsl:stylesheet
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lenya="http://apache.org/cocoon/lenya/publication/1.1"
-    xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-    xmlns="http://www.w3.org/1999/xhtml"
->
-
-
-<xsl:key name="workflows" match="lenya:resource-type" use="@workflow"/>   
-
-<xsl:template match="/*">
-<page:page>
-  <page:title><a href="../index.html">Apache Lenya</a> &#187;
-    <i18n:translate>
-      <i18n:text>... Publication</i18n:text>
-      <i18n:param><xsl:value-of select="lenya:publication/lenya:name"/></i18n:param>
-    </i18n:translate>
-  </page:title>
-  <page:head/>
-  <page:body>
-    <div class="lenya-sidebar">
-      <div class="lenya-sidebar-heading"><i18n:text>This Publication</i18n:text></div>
-      <ul>
-        <li><a href="authoring/"><i18n:text>Login as Editor</i18n:text></a></li>
-        <li><a href="live/"><i18n:text>Live View</i18n:text></a></li>
-      </ul>
-      <div class="lenya-publication-item"><a href="../index.html"><i18n:text>Other Publications</i18n:text></a></div>
-      <div class="lenya-publication-item"><a href="http://lenya.apache.org/docs/index.html"><i18n:text>Documentation</i18n:text></a></div>
-      <div class="lenya-publication-item"><a href="http://wiki.apache.org/lenya">Wiki</a></div>
-    </div>
-
-    <div class="lenya-frontpage">
-      <h2><i18n:text>Publication properties</i18n:text>:</h2>
-      <xsl:apply-templates select="lenya:publication"/>
-      <xsl:apply-templates select="page:page"/>
-      
-    </div>
-  </page:body>
-</page:page>
-</xsl:template>
-
-<xsl:template match="lenya:publication">
-  <table class="lenya-table-list-noborder">
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Name</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:name"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Revision</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:version"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Description</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:description"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Available languages</i18n:text></th>
-      <td class="border">
-        <xsl:for-each select="lenya:languages/lenya:language">
-          <xsl:choose>
-            <xsl:when test="@default">
-              <strong><xsl:value-of select="."/></strong>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="."/>
-            </xsl:otherwise>
-          </xsl:choose>
-          <xsl:if test="position() != last()">
-            <xsl:text>, </xsl:text>
-          </xsl:if>
-        </xsl:for-each>
-      </td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Available resource types</i18n:text></th>
-      <td class="border">
-        <xsl:if test="lenya:templates/lenya:template">
-          <i18n:text>Inherited: see template publication</i18n:text><br/>
-        </xsl:if>
-        <xsl:for-each 
-          select="lenya:resource-types/lenya:resource-type[generate-id(.)=generate-id(key('workflows', @workflow)[1])]"
-        >
-          <xsl:sort select="@workflow"/>
-          <xsl:for-each select="key('workflows', @workflow)">
-            <xsl:sort select="@name"/>
-            <xsl:value-of select="@name"/>
-            <xsl:if test="position() != last()">
-              <xsl:text>, </xsl:text>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text> (Workflow: </xsl:text>
-          <xsl:value-of select="@workflow"/>
-          <xsl:text>)</xsl:text>
-          <xsl:if test="position() != last()">
-            <xsl:text>;</xsl:text><br />
-          </xsl:if>
-        </xsl:for-each>
-      </td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Required Lenya version</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:lenya-version"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Required Lenya revision</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:lenya-revision"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Required Cocoon version</i18n:text></th>
-      <td class="border"><xsl:value-of select="lenya:cocoon-version"/></td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Modules used</i18n:text></th>
-      <td class="border">
-        <xsl:if test="lenya:templates/lenya:template">
-          <i18n:text>Inherited: see template publication</i18n:text><br/>
-        </xsl:if>
-        <xsl:for-each select="lenya:modules/lenya:module">
-          <xsl:value-of select="@name"/>
-          <xsl:if test="position() != last()">
-            <xsl:text>, </xsl:text>
-          </xsl:if>
-        </xsl:for-each>
-      </td>
-    </tr>
-    <tr>
-      <th style="white-space: nowrap;"><i18n:text>Template used</i18n:text></th>
-      <td class="border">
-        <xsl:choose>
-          <xsl:when test="lenya:template">
-            <a href="../{lenya:template/@id}/introduction.html">
-              <xsl:value-of select="lenya:template/@id"/>
-            </a>
-          </xsl:when>
-          <xsl:otherwise>
-            <i18n:text>none</i18n:text>
-          </xsl:otherwise>
-        </xsl:choose>
-      </td>
-    </tr>
-  </table>
-</xsl:template>
-
-<xsl:template match="page:page">
-<!-- FIXME: aggregate-fallback seems to return the last document twice.
-     The position predicate is just a quick workaround and needs to be fixed! -->
-  <xsl:for-each select="page:body[position() &lt; last()]">
-    <xsl:apply-templates select="*"/>
-  </xsl:for-each>
-</xsl:template>
-
-<!-- we are aggretating into a new context: 
-     (another good reason to move to xhtml2) -->
-<xsl:template match="xhtml:h1">
-  <h2><xsl:apply-templates select="@*|node()"/></h2>
-</xsl:template>
-<xsl:template match="xhtml:h2">
-  <h3><xsl:apply-templates select="@*|node()"/></h3>
-</xsl:template>
-<xsl:template match="xhtml:h3">
-  <h4><xsl:apply-templates select="@*|node()"/></h4>
-</xsl:template>
-<xsl:template match="xhtml:h4">
-  <h5><xsl:apply-templates select="@*|node()"/></h5>
-</xsl:template>
-<xsl:template match="xhtml:h5|xhtml:h6">
-  <h6><xsl:apply-templates select="@*|node()"/></h6>
-</xsl:template>
-
-<xsl:template match="@*|node()">
-  <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/util/page-util.xsl b/trunk/src/webapp/lenya/xslt/util/page-util.xsl
deleted file mode 100644
index a0e718b..0000000
--- a/trunk/src/webapp/lenya/xslt/util/page-util.xsl
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
-  xmlns="http://www.w3.org/1999/xhtml"
-  >
-  
-  
-  <!-- includes the default CSS stylesheet -->
-  <xsl:template name="include-css">
-    <xsl:param name="contextprefix"/>
-    <link rel="stylesheet" type="text/css" href="{$contextprefix}/lenya/css/default.css" media="screen"/>
-  </xsl:template>
-  
-  <!-- prints a list of $separator-separated strings -->
-  <xsl:template name="print-list">
-    <xsl:param name="list-string"/>
-    <xsl:param name="separator" select="','"/>
-    <xsl:choose>
-      <xsl:when test="contains($list-string, $separator)">
-        <li><xsl:value-of select="substring-before($list-string, $separator)"/></li>
-        <xsl:call-template name="print-list">
-          <xsl:with-param name="list-string" select="substring-after($list-string, $separator)"/>
-          <xsl:with-param name="separator" select="$separator"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <li><xsl:value-of select="$list-string"/></li>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  <!-- prints a list of $separator-separated strings -->
-  <xsl:template name="print-list-simple">
-    <xsl:param name="list-string"/>
-    <xsl:param name="separator" select="','"/>
-    
-    <xsl:choose>
-      <xsl:when test="contains($list-string, $separator)">
-        <xsl:value-of select="substring-before($list-string, $separator)"/><br />
-        <xsl:call-template name="print-list-simple">
-          <xsl:with-param name="list-string" select="substring-after($list-string, $separator)"/>
-          <xsl:with-param name="separator" select="$separator"/>
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$list-string"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-  
-  
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/util/page2xhtml.xsl b/trunk/src/webapp/lenya/xslt/util/page2xhtml.xsl
deleted file mode 100644
index c527a17..0000000
--- a/trunk/src/webapp/lenya/xslt/util/page2xhtml.xsl
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml"
-  xmlns:xhtml="http://www.w3.org/1999/xhtml"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"    
-  exclude-result-prefixes="page xhtml i18n"
-  >
-  
-  <xsl:include href="fallback://lenya/xslt/util/toggle.xsl"/>
-  
-  <xsl:template match="page:page">
-    <html>
-      <head>
-        <title><xsl:apply-templates select="page:title/node()" mode="htmlTitle"/></title>
-        <link rel="stylesheet" type="text/css" href="/lenya/css/default.css" title="default css"/>
-        <xsl:comment>[if IE 6]<![CDATA[>]]>&lt;link rel="stylesheet" type="text/css" href="/lenya/css/ie6hacksonly.css" /><![CDATA[<![endif]]]></xsl:comment>
-        <link rel="icon" href="/favicon.ico" type="image/ico"/>
-        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
-        <xsl:apply-templates select="xhtml:script"/>
-        <xsl:copy-of select="page:head/*"/>
-      </head>
-      <body>
-        <xsl:copy-of select="page:body/@*"/>
-        <xsl:if test="page:body//xhtml:div[@class = 'lenya-box-toggled']">
-          <xsl:call-template name="toggle-script"/>
-        </xsl:if>
-        
-        <xsl:apply-templates select="page:title"/>
-        <table class="lenya-body" border="0" cellpadding="0" cellspacing="0">
-          <tr>
-            <xsl:if test="//xhtml:div[@class = 'lenya-sidebar']">
-              <td class="lenya-sidebar">
-                <xsl:apply-templates select="//xhtml:div[@class = 'lenya-sidebar']/node()"/>
-              </td>
-            </xsl:if>
-            <td class="lenya-content">
-              <xsl:apply-templates select="page:body/node()[local-name() != 'div' or not(@class = 'lenya-sidebar')]"/>
-            </td>
-          </tr>
-        </table>
-      </body>
-    </html>
-  </xsl:template>
-  
-  
-  <xsl:template match="i18n:*" mode="htmlTitle">
-    <xsl:copy>
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates select="node()" mode="htmlTitle"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="node()" mode="htmlTitle">
-    <xsl:value-of select="."/>
-  </xsl:template>
-  
-  
-  <xsl:template match="page:title">
-    <table width="100%" border="0" cellpadding="10" cellspacing="0">
-      <tr>
-        <td class="lenya-header">
-          <h1><xsl:apply-templates select="node()"/></h1>
-        </td>
-        <td class="lenya-project-logo">
-          <img src="/lenya/images/project-logo-small.png" alt="Apache Lenya Project Logo"/>
-        </td>
-      </tr>
-    </table>
-    <div class="lenya-page-subtitle">
-      Open Source Content Management System
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@class = 'lenya-box']">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-      <div class="lenya-box-bottom">
-        <div class="lenya-box-bottom-content">&#160;</div>
-      </div>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@class = 'lenya-box-toggled']">
-    <xsl:variable name="number" select="count(preceding::xhtml:div[@class = 'lenya-box-toggled']) + 1"/>
-    <div class="lenya-box">
-      <xsl:apply-templates select="@*[local-name() != 'class']|node()">
-        <xsl:with-param name="number" select="$number"/>
-      </xsl:apply-templates>
-      <div class="lenya-box-bottom">
-        <div class="lenya-box-bottom-content">&#160;</div>
-      </div>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@class = 'lenya-box-toggled']/xhtml:div[@class = 'lenya-box-title']">
-    <xsl:param name="number"/>
-    <div class="lenya-box">
-      <xsl:apply-templates select="@*|node()"/>
-      <xsl:text> </xsl:text>
-      <span class="switch" onclick="toggle('{$number}')" id="{$number}-switch"><i18n:text i18n:key="show"/></span>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@class = 'lenya-box-toggled']/xhtml:div[@class = 'lenya-box-body']">
-    <xsl:param name="number"/>
-    <div id="{$number}" style="display: none">
-      <xsl:apply-templates select="@*"/>
-      <div class="lenya-box-content">
-        <xsl:apply-templates select="node()"/>
-      </div>
-    </div>
-  </xsl:template>
-  
-  
-  <xsl:template match="xhtml:div[@class = 'lenya-box']/xhtml:div[@class = 'lenya-box-body']">
-    <xsl:copy>
-      <xsl:apply-templates select="@*"/>
-      <div class="lenya-box-content">
-        <xsl:apply-templates select="node()"/>
-      </div>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-  <xsl:template match="@*|node()" priority="-2">
-    <xsl:copy>
-      <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-  </xsl:template>
-  
-  
-</xsl:stylesheet> 
diff --git a/trunk/src/webapp/lenya/xslt/util/string-functions.xsl b/trunk/src/webapp/lenya/xslt/util/string-functions.xsl
deleted file mode 100644
index 0b068df..0000000
--- a/trunk/src/webapp/lenya/xslt/util/string-functions.xsl
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!-- search and replace from XSLT cookbook -->
-<xsl:template name="search-and-replace">
-  <xsl:param name="input"/>
-  <xsl:param name="search-string"/>
-  <xsl:param name="replace-string"/>
-  
-  <xsl:choose>
-    <!-- See if the input contains the search string -->
-    <xsl:when test="$search-string and contains($input, $search-string)">
-      <!-- If so, then concatenate the substring before the search
-      string to the replacement string and to the result of
-      recursively applying this template to the remaining substring.
-      -->
-      <xsl:value-of select="substring-before($input, $search-string)"/>
-      <xsl:value-of select="$replace-string"/>
-      <xsl:call-template name="search-and-replace">
-        <xsl:with-param name="input" select="substring-after($input, $search-string)"/>
-        <xsl:with-param name="search-string" select="$search-string"/>
-        <xsl:with-param name="replace-string" select="$replace-string"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>
-      <!-- There are no more occurences of the search string so
-      just return the current input string -->
-      <xsl:value-of select="$input"/>
-    </xsl:otherwise>
-  </xsl:choose>
-  
-</xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/trunk/src/webapp/lenya/xslt/util/strip_namespaces.xsl b/trunk/src/webapp/lenya/xslt/util/strip_namespaces.xsl
deleted file mode 100644
index f90be1a..0000000
--- a/trunk/src/webapp/lenya/xslt/util/strip_namespaces.xsl
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-The XHTML namespace is declared as the default namespace
-to cause the stylesheet to output XHTML using the empty string
-as namespace prefix (<html> instead of <xhtml:html>).
--->
-
-<!-- $Id$ -->
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns="http://www.w3.org/1999/xhtml">
-  
-  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
-  
-  <xsl:template match="*">
-    <xsl:element name="{local-name()}" namespace="{namespace-uri()}">
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-    </xsl:element>
-  </xsl:template>
-
-  <!-- fixme: this might be generalized to also pass on processing instructions etc...-->
-  <xsl:template match="comment()">
-    <xsl:copy/>
-  </xsl:template>
-                                          
-  <!--
-    Workaround to prevent the serializer from collapsing these
-    elements, since browsers currently can not handle things like
-      <textarea/>
-    The XHTML serializer currently used by Lenya can not be
-    configured to avoid this collapsing; as long as that is the case
-    this workaround is needed.
-    -->  
-  <xsl:template match="textarea|script|style">
-   <xsl:element name="{local-name()}">
-      <xsl:copy-of select="@*"/>
-      <xsl:apply-templates/>
-	  <xsl:if test="string-length(.) = 0"><xsl:text> </xsl:text></xsl:if>
-    </xsl:element>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/lenya/xslt/util/toggle.xsl b/trunk/src/webapp/lenya/xslt/util/toggle.xsl
deleted file mode 100644
index ce6d85e..0000000
--- a/trunk/src/webapp/lenya/xslt/util/toggle.xsl
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>

-<!--

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

--->

-

-<!-- $Id: page-util.xsl 42703 2004-03-13 12:57:53Z gregor $ -->

-

-<xsl:stylesheet version="1.0"

-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

-  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"

-  xmlns="http://www.w3.org/1999/xhtml"

-  >

-

-  <xsl:template name="toggle-script">

-    <script>

-      function toggle(id) {

-          var element = document.getElementById(id);

-          with (element.style) {

-              if ( display == "none" ){

-                  display = ""

-              } else{

-                  display = "none"

-              }

-          }

-          var text = document.getElementById(id + "-switch").firstChild;

-          if (text.nodeValue == "<i18n:text i18n:key="show" />") {

-              text.nodeValue = "<i18n:text i18n:key="hide" />";

-          } else {

-              text.nodeValue = "<i18n:text i18n:key="show" />";

-          }

-      }

-    </script>

-  </xsl:template>

-

-</xsl:stylesheet>

diff --git a/trunk/src/webapp/lenya/xslt/util/welcome.xsl b/trunk/src/webapp/lenya/xslt/util/welcome.xsl
deleted file mode 100644
index 0e38ad2..0000000
--- a/trunk/src/webapp/lenya/xslt/util/welcome.xsl
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id$ -->
-
-<xsl:stylesheet version="1.0"
-    xmlns:lenya="http://apache.org/cocoon/lenya/publication/1.1"
-    xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
->
-
-<xsl:template match="/*">
-  <page:page>
-    <page:title>Apache Lenya - Content Management System</page:title>
-    <page:head>
-      <xhtml:meta http-equiv="cache-control" content="no-cache"/>
-      <xhtml:meta http-equiv="pragma" content="no-cache"/>
-    </page:head>  
-    <page:body>
-      <xsl:apply-templates select="lenya:publications"/>
-      <xsl:apply-templates select="page:page"/>
-    </page:body>
-  </page:page>
-</xsl:template>
-
-<xsl:template match="lenya:publications">
-  <div class="lenya-sidebar">
-    <div class="lenya-sidebar-heading"><i18n:text>Publications</i18n:text></div>
-  <div class="lenya-publication-item-createpublication">
-    <a href="index.html?lenya.usecase=templating.createPublicationFromTemplate">
-      <i18n:text>create-publication</i18n:text> &#187;
-    </a>
-  </div>
-  <!-- do not list publications with @show="false" 
-     (can be used to hide template publications -->
-  <xsl:for-each select="lenya:publication[not(@show) or @show != 'false']">
-    <div class="lenya-publication-item">
-      <a>
-        <xsl:attribute name="href"><xsl:value-of select="@dirname"/><xsl:text>/introduction.html</xsl:text></xsl:attribute>
-        <xsl:attribute name="title"><xsl:value-of select="lenya:description"/></xsl:attribute>
-        <xsl:value-of select="lenya:name"/>
-      </a>
-    </div>
-  </xsl:for-each>
-  </div>
-</xsl:template>
-
-<xsl:template match="page:page">
-   <xsl:apply-templates select="page:body/*"/>
-</xsl:template>
-
-<!-- we are aggretating into a new context: 
-     (another good reason to move to xhtml2) -->
-<xsl:template match="xhtml:h1">
-  <h2><xsl:apply-templates select="@*|node()"/></h2>
-</xsl:template>
-<xsl:template match="xhtml:h2">
-  <h3><xsl:apply-templates select="@*|node()"/></h3>
-</xsl:template>
-<xsl:template match="xhtml:h3">
-  <h4><xsl:apply-templates select="@*|node()"/></h4>
-</xsl:template>
-<xsl:template match="xhtml:h4">
-  <h5><xsl:apply-templates select="@*|node()"/></h5>
-</xsl:template>
-<xsl:template match="xhtml:h5|xhtml:h6">
-  <h6><xsl:apply-templates select="@*|node()"/></h6>
-</xsl:template>
-
-
-<xsl:template match="@*|node()">
-  <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/trunk/src/webapp/readme.xml b/trunk/src/webapp/readme.xml
deleted file mode 100644
index 098af14..0000000
--- a/trunk/src/webapp/readme.xml
+++ /dev/null
@@ -1,288 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!-- $Id: introduction.xml 473861 2006-11-12 03:51:14Z gregor $ -->
-
-<page:page 
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
-  xmlns="http://www.w3.org/1999/xhtml"
->
-  <page:head/>
-  <page:body>
-    <h1>README: Apache Lenya</h1>
-<!--
-    <h2>Note to developers</h2>
-    <p>
-      Please use this new README to inform users
-      about changes in the code or behaviour of Lenya, particularly those
-      that require custom code or publications to be modified. This file is located under
-      <code>src/webapp/readme.xml</code>. Its contents will be shown on the global 
-      welcome page, and also on the introduction page of every publication.
-    </p>
--->
-    
-    <h2>Important notes for beta testers of Lenya 2.0</h2>
-
-    <h3>2007-11-08: Redirection changes</h3>
-    <p>
-      Most of our sitemap redirects have been changed to make them work with
-      proxy environments. If you notice any regressions, please complain to
-      the dev list immediately.
-    </p>
-    <h3>2007-11-08: New Proxy test scaffold</h3>
-    <p>
-      If you are a developer or a user interested in proxying, please take a
-      look at the proxy test scaffold in tools/proxytest and read the
-      README. It's important to regularly test new code in proxied
-      environments and non-root contexts.
-    </p>
-    
-    <h3>2007-08-22: User names are now case insensitive</h3>
-    <p>
-      User names are now case insensitive to better support Windows, user assumptions, auto form 
-      completion, and support. This is done by converting all user names to lower case. Any
-      previously created accounts with upper case characters will no longer work. To fix
-      delete and recreate the account using the built in tools. Or optionally, rename any
-      *.iml files in your publication's <code>config/access-control/passwd</code> directory
-      so that the file names are all lower case. You will also have to edit the <code>id</code> 
-      attribute of the <code>identity</code> element to make it lower case in those files as well.
-    </p>
-
-    <h3>2007-08-13: Workflow schema validation fixed</h3>
-    <p>
-      The old XSD-based schema validation in <code>workflow.xml</code> was
-    never used. It has now been ported to RNG for consistency and is applied to your custom
-      workflows during deployment. You will need to remove the
-    <code>xsi:schemaLocation</code> attribute (and you can then also remove
-      the <code>xmlns:xsi</code> declaration) from your custom publications'
-      <code>config/workflow/workflow.xml</code> if you have defined one.
-    </p>    
-    
-    <h3>2007-08-12: Resource type configuration changed</h3>
-    <p>
-      The configuration syntax of resource types has been changed for consistency. 
-      Please apply the following changes to your custom resource type configurations:
-    </p>
-    <ul>
-      <li>
-        <code>&lt;sample-name mime-type="baz" name="bar"&gt;fallback://foo&lt;/sample-name&gt;</code>
-        becomes
-        <code>&lt;sample mime-type="baz" name="bar" uri="fallback://foo"/&gt;</code>
-      </li>
-      <li>
-        <code>&lt;schema src="fallback://foo.rng" language="http://relaxng.org/ns/structure/0.9"/&gt;</code>
-        becomes
-        <code>&lt;schema uri="fallback://foo.rng" namespace="http://relaxng.org/ns/structure/0.9"/&gt;</code>
-      </li>
-    </ul>
-    <p>
-      After that, you need to delete
-    <code>build/lenya/webapp/WEB-INF/cocoon.xconf</code> and rebuild Lenya
-      to deploy the changes.
-    </p>
-    
-    <h3>2007-07-27: PolicyAuthorizer removed</h3>
-    <p>
-      The access control for Lenya documents is now also handled by the
-    UsecaseAuthorizer via a newly introduced usecase "ac.visit". For your
-      custom publications, you will need to give your users the appropriate
-    permissions. We suggest copying the <code>visit.rml</code> role from the default
-      publication.<br />
-      Moreover, be sure to remove the <code>&lt;authorizer
-      type="policy"/&gt;</code> line from your publications'
-    <code>config/access-control/access-control.xml</code>.
-    </p>
-    <h3>2007-07-27: new generic editor usecases</h3>
-    <p>
-      A new generic set of editor helper usecases has been introduced:
-    </p>
-    <ul>
-      <li>editors.insertLink</li>
-      <li>editors.insertImage</li>
-      <li>editors.insertAsset</li>
-      <li>editors.createResource</li>
-    </ul>
-    <p>
-      These are now re-used by all editors, which got us rid of a lot of
-      code duplication. Internet Explorer users watch out: if you have
-      problems with selections not working properly when using those new
-      usecases, please complain on the dev list.
-    </p>
-    
-    <h3>2007-07-19: <code>mime-type</code> attribute for resource type samples</h3>
-    <p>
-      The <code>&lt;sample-name&gt;</code> elements of the resource type declaration
-      must have a <code>mime-type</code> attribute. This allows the Create usecase to initialize
-      the MIME type of the document correctly.
-    </p>
-    
-    <h3>2007-07-12: <code>publication.xml/proxies</code> wrapper element re-introduced</h3>
-    <p>
-      The <code>&lt;proxies&gt;</code> wrapper element is now required again for consistency reasons.
-    </p>
-    
-    <h3>
-      2007-07-03: <code>publication.xml/proxies</code> replaced by <code>cocoon.xconf/GlobalProxies</code>
-    </h3>
-    <p>
-      The <code>&lt;proxies&gt;</code> element in <code>publication.xml</code> is not
-      supported anymore. Instead, you have to configure the <code>GlobalProxies</code>
-      service entry in <code>cocoon.xconf</code>. For more information, see
-      <a href="http://www.nabble.com/-1.4---Proposal--Global-proxy-configuration-tf3999411.html">[Proposal] Global proxy configuration</a>.
-    </p>
-    
-    <h3>
-      2007-06-26: <code>base-url</code> and <code>proxy-url</code> input modules
-      replaced by <code>proxy</code> module
-    </h3>
-    <p>
-      The <code>base-url</code> and <code>proxy-url</code> input modules have been replaced by the
-      <code>proxy</code> module. The functionality of this module corresponds to the ProxyTransformer
-      with one exception: If the <em>webappUrl</em> parameter is an empty string, the root
-      proxy URL (or the context prefix, resp.) is returned.
-    </p>
-    <p>
-      Usage: <code>{proxy:{webappUrl}}</code>.
-    </p>
-    
-    <h3>2007-06-13: Apply ProxyTransformer after UuidToUrlTransformer</h3>
-    <p>
-      The uuid2url and proxy transformers now complement each other. You have
-      to apply the proxy transformer right after the uuid2url transformer:
-    </p>
-    <p><code><![CDATA[<map:transform type="uuid2url"/>
-<map:transform type="proxy"/>
-...]]></code></p>
-    <p>
-      Internal links (to documents, CSS, etc.) don't need to contain the context path
-      anymore, this is now handled by the proxy transformer.
-    </p>
-    
-    <h3>2007-05-29: Using UUID-based URLs for navigation elements</h3>
-    <p>
-      Now the sitetree module uses <code>lenya-document:{uuid}</code> URLs for navigation elements.
-      Because no HTTP URLs are evaluated anymore, you need to pass the document's path instead
-      of URL to the navigation element calls, i.e. the step <code>/{6}</code> in the following call
-      has to be the document's path in the site structure: 
-    </p>
-    <p><code><![CDATA[<map:generate src="cocoon://modules/sitetree/{1}/{2}/{3}/{4}/{5}/{6}.xml>]]></code></p>
-    
-    <h3>2007-05-25: Converted "About Lenya" page to usecase</h3>
-    <p>
-      To enable the "About Lenya" usecase, please set the permissions for the <code>admin.aboutLenya</code>
-      usecase in your <code>config/access-control/usecase-policies.xml</code> file, or use the
-      tab "Usecases" in the administration GUI.
-    </p>
-    
-    <h3>2007-05-08: Fixed <code>create-use-case</code> attribute</h3>
-    <p>
-      The value of the <code>create-use-case</code> attribute of the <code>user-type</code>
-      element in <code>access-control.xml</code> was invalid. The admin area didn't use
-      this attribute yet. Since this has been fixed, you have to update your
-      <code>$PUB_HOME/config/access-control/access-control.xml</code> files:
-    </p>
-    <p><code><![CDATA[<user-type class="org.apache.lenya.ac.file.FileUser"
-    create-use-case="admin.addUser">Local User</user-type>]]></code></p>
-    
-    <h3>2007-05-05: Introduced <code>workflow.multiWorkflowInvoke</code> usecase</h3>
-    <p>
-      Please add the permissions for this usecase to your
-      <code>config/access-control/usecase-policies.xml</code> file, or use the
-      tab "Usecases" in the administration GUI.
-    </p>
-    
-    <h3>2007-04-30: Renamed
-      <code>$PUB_HOME/config/publication.xconf</code> to <code>publication.xml</code></h3>
-    
-    <p>
-      Please rename your <code>$PUB_HOME/config/publication.xconf</code> file to
-      <code>$PUB_HOME/config/publication.xml</code>.
-      This change was done to preserve consistency with the other configuration file names.
-    </p>
-    
-    <h3>2007-04-23: Moved and renamed
-    <code>$PUB_HOME/config/lucene_index.xconf</code></h3>
-    
-    <p>
-      Please move and rename your <code>$PUB_HOME/config/lucene_index.xconf</code> file to
-      <code>$PUB_HOME/config/search/lucene_index.xml</code>.
-      This change was done to preserve consistency with the other configuration file names and locations.
-    </p>
-    
-    <h3>2007-04-23: Moved <code>$MODULE_HOME/module.xml</code></h3>
-    
-    <p>
-      If you are using custom modules, please move your <code>module.xml</code> file into the
-      <code>config/</code> directory of the module (create one if necessary).
-      This change was done to preserve consistency with the <code>publication.xml</code> location.
-    </p>
-    
-    <h3>2007-04-18: <code>ac/</code> is now <code>access-control/</code></h3>
-    <p>
-      In order to make the Lenya publication configuration more
-      self-explanatory, the directory <code>$PUB_HOME/config/ac</code> has
-      been renamed to <code>$PUB_HOME/config/access-control</code>.
-      Additionally, the access control configuration file has been renamed
-      from <code>ac.xconf</code> to <code>access-control.xml</code>.<br />
-      You will have to change your custom publications accordingly. Don't
-      forget to change the path settings in <code>access-control.xml</code> as well!
-    </p>
-    <p>
-      <em>Note the new suffix! From now on, "xconf" will only be used for patchfiles
-      that are integrated into cocoon.xconf at build time. All other
-      configuration files that are parsed directly should end in .xml.</em>
-    </p>
-    
-    <h3>2007-04-13: You need to update your custom <code>publication.xconf</code> files!</h3>
-    <p>
-      As of revision 528490, the file <code>$PUB_HOME/publication.xml</code>
-      is no longer used. Its contents should be merged into <code>$PUB_HOME/config/publication.xconf.</code>
-      To accomodate this, the format of <code>publication.xconf</code> has changed a bit (see
-      below).<br />
-      Sorry for the breakage, but we were able to eliminate a lot of old ad-hoc code
-      and duplication with this change, and the new xconf file looks a lot nicer and more intuitive.
-    </p>
-    <p>
-      <em>Most important changes:</em> All elements in <code>publication.xconf</code> 
-      must now be in the namespace <code>http://apache.org/cocoon/lenya/publication/1.1</code>,
-      and <code>&lt;module/&gt;</code>, <code>&lt;proxy/&gt;</code>, and 
-      <code>&lt;resource-type&gt;</code> elements must now be grouped 
-      in <code>&lt;modules/&gt;</code>, <code>&lt;proxies/&gt;</code>, 
-      and <code>&lt;resource-types/&gt;</code>. See the default publication
-      for an example.<br />
-      You can use the RNG schema at <code>src/resources/build/publication.rng</code>
-      to verify that your file is correct:
-    </p>
-    <p>
-      <code>
-        cd $LENYA_HOME<br />
-        java -jar lib/jing-20030619.jar \<br />
-        &#160;&#160;src/resources/build/publication.rng \<br />
-        &#160;&#160;$YOURPUB/config/publication.xconf
-      </code>
-    </p>
-    <h3>New per-publication <code>readme.xml</code></h3>
-    <p>
-      If you want to provide a custom README for your publication (maybe you
-      have used the old &lt;lenya:readme/&gt; in the now gone
-      publication.xconf), you can put it in <code>$YOURPUB/readme.xml</code>. 
-      It is now a standard Lenya CMS page in the
-      <code>http://apache.org/cocoon/lenya/cms-page/1.0</code> namespace.
-    </p>  
-  </page:body>
-</page:page>
diff --git a/trunk/tools/anttasks/README.txt b/trunk/tools/anttasks/README.txt
deleted file mode 100644
index 0175d99..0000000
--- a/trunk/tools/anttasks/README.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-This directory contains tasks which are needed for the build process.
-
-Build these tasks (in case of an update) with
-
-./build.sh compile-build-tasks
-
-Related:
-
-  http://antinstaller.sourceforge.net/
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/BulkCopyTask.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/BulkCopyTask.class
deleted file mode 100644
index 5b3a605..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/BulkCopyTask.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyJavaSourcesTask.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyJavaSourcesTask.class
deleted file mode 100644
index 88eb52d..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyJavaSourcesTask.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyPublicationsTask.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyPublicationsTask.class
deleted file mode 100644
index 67ce1fc..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/CopyPublicationsTask.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/GenerateModuleList.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/GenerateModuleList.class
deleted file mode 100644
index 01ca090..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/GenerateModuleList.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/JavaFilenameFilter.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/JavaFilenameFilter.class
deleted file mode 100644
index 42e9976..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/JavaFilenameFilter.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/SCMFilenameFilter.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/SCMFilenameFilter.class
deleted file mode 100644
index f73ee0c..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/SCMFilenameFilter.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/TwoTuple.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/TwoTuple.class
deleted file mode 100644
index b599f5b..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/cms/ant/TwoTuple.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/build/classes/org/apache/lenya/xml/AntDocumentHelper.class b/trunk/tools/anttasks/build/classes/org/apache/lenya/xml/AntDocumentHelper.class
deleted file mode 100644
index f3868c3..0000000
--- a/trunk/tools/anttasks/build/classes/org/apache/lenya/xml/AntDocumentHelper.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/BulkCopyTask.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/BulkCopyTask.java
deleted file mode 100644
index fe65c2f..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/BulkCopyTask.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: BulkCopyTask.java 416058 2006-06-21 18:24:05Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.taskdefs.Copy;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-
-/**
- * Copies all files matching filename or a all specififed filesets from each source directory.
- * <br/><br/>
- * Usage:
- * &lt;bulkCopy 
- *     sourcedirs="dirOne:dirTwo" 
- *     todir="WEB-INF/" 
- *     flatten="true">
- *     &lt;fileset includes="java/lib/*"/&gt;
- * &lt;/bulkCopy&gt;
- * <br/><br/>
- * The above sample copies <em>dirOne/java/lib/*</em> and <em>dirTwo/java/lib/*</em>
- * to <em>WEB-INF/lib</em>.  
- */
-public class BulkCopyTask extends Copy {
-    
-    private Path sourceDirs;
-    
-    /** 
-     * @see org.apache.tools.ant.taskdefs.Copy#execute()
-     */
-    public void execute() throws BuildException {
-                
-        final StringTokenizer sourceDirTokens = new StringTokenizer(this.sourceDirs.toString(), File.pathSeparator);
-            
-        while (sourceDirTokens.hasMoreTokens()) {
-            final String sourceDir = sourceDirTokens.nextToken();
-            
-            for(int i=0; i<getFileSets().size(); i++)
-                ((FileSet) getFileSets().get(i)).setDir(new File(sourceDir));
-            
-            super.execute();
-        }
-    }
-
-    /**
-     * @param _sourceDirs Colon separated list of source directories
-     */
-    public void setSourceDirs(Path _sourceDirs) {
-        this.sourceDirs = _sourceDirs;
-    }
-    
-    /**
-     * @return Returns the fileSet.
-     */
-    private List getFileSets() {
-        return super.filesets;
-    }    
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyJavaSourcesTask.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyJavaSourcesTask.java
deleted file mode 100644
index 254b2d2..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyJavaSourcesTask.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: CopyJavaSourcesTask.java 416059 2006-06-21 18:27:27Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.StringTokenizer;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-
-/**
- * Task to copy java sources.
- */
-public class CopyJavaSourcesTask extends Task {
-
-    private Path pubsRootDirs;
-    private String javaDir;
-    private String buildDir;
-
-    /**
-     * @see org.apache.tools.ant.Task#execute()
-     */
-    public void execute() throws BuildException {
-        int numberOfDirectoriesCreated = 0;
-        int numberOfFilesCopied = 0;
-        TwoTuple twoTuple = new TwoTuple(numberOfDirectoriesCreated, numberOfFilesCopied);
-
-        String translatedBuildDir = Project.translatePath(this.buildDir);
-        File absoluteBuildDir = null;
-        if (translatedBuildDir != null && translatedBuildDir.startsWith(File.separator)) {
-            absoluteBuildDir = new File(translatedBuildDir);
-        } else {
-            absoluteBuildDir = new File(getProject().getBaseDir(), translatedBuildDir);
-        }
-
-        StringTokenizer st = new StringTokenizer(this.pubsRootDirs.toString(), File.pathSeparator);
-
-        while (st.hasMoreTokens()) {
-            String pubsRootDir = st.nextToken();
-
-            File path = new File(pubsRootDir);
-
-            if (path.isDirectory()) {
-                // In the case of a publication
-                if (new File(path, "/config/publication.xml").isFile()) {
-                    copyContentOfDir(new File(path, this.javaDir),
-                            absoluteBuildDir,
-                            twoTuple,
-                            new JavaFilenameFilter(),
-                            this);
-                    // In the case of a module
-                } else if (new File(path, "/config/module.xml").isFile()) {
-                    copyContentOfDir(new File(path, this.javaDir),
-                            absoluteBuildDir,
-                            twoTuple,
-                            new JavaFilenameFilter(),
-                            this);
-                } else {
-                    // FIXME: Look for publications defined by the file "publication.xml" or modules
-                    // defined by the file "module.xml"
-                    String[] pubs = path.list();
-                    if (pubs != null) {
-                        for (int i = 0; i < pubs.length; i++) {
-                            File pubJavaDir = new File(path, new File(pubs[i], this.javaDir).toString());
-
-                            copyContentOfDir(pubJavaDir,
-                                    absoluteBuildDir,
-                                    twoTuple,
-                                    new JavaFilenameFilter(),
-                                    this);
-                        }
-                    }
-                }
-            } else {
-                throw new BuildException("No such directory: " + path);
-            }
-        }
-
-        numberOfDirectoriesCreated = twoTuple.x;
-        numberOfFilesCopied = twoTuple.y;
-        log("Copying " + numberOfDirectoriesCreated + " directories to " + absoluteBuildDir,
-                Project.MSG_INFO);
-        log("Copying " + numberOfFilesCopied + " files to " + absoluteBuildDir, Project.MSG_INFO);
-    }
-
-    /**
-     * Copies the directory "source" into the directory "destination"
-     * @param source The source directory
-     * @param destination The destination directory
-     * @param twoTuple The twoTuple to use
-     * @param filenameFilter The filename filter to apply
-     * @param client The client task
-     */
-    public static void copyDir(File source, File destination, TwoTuple twoTuple,
-            FilenameFilter filenameFilter, Task client) {
-        File actualDestination = new File(destination, source.getName());
-        actualDestination.mkdirs();
-        copyContentOfDir(source, actualDestination, twoTuple, filenameFilter, client);
-    }
-
-    /**
-     * Copies the content of a directory into another directory
-     * @param source The source directory
-     * @param destination The destination directory
-     * @param twoTuple The twoTuple to use
-     * @param filenameFilter The filename filter to use
-     * @param client The client task
-     */
-    public static void copyContentOfDir(File source, File destination, TwoTuple twoTuple,
-            FilenameFilter filenameFilter, Task client) {
-        if (source.isDirectory()) {
-            String[] files;
-
-            if (filenameFilter != null) {
-                files = source.list(filenameFilter);
-            } else {
-                files = source.list();
-            }
-
-            for (int i = 0; i < files.length; i++) {
-                File file = new File(source, files[i]);
-
-                if (file.isFile()) {
-                    copyFile(file, new File(destination, files[i]), twoTuple, client, false);
-                } else if (file.isDirectory()) {
-                    copyContentOfDir(file,
-                            new File(destination, files[i]),
-                            twoTuple,
-                            filenameFilter,
-                            client);
-                } else {
-                    client.log("CopyJavaSourcesTask.copyContentOfDir(): Neither file nor directory: "
-                            + file,
-                            Project.MSG_ERR);
-                }
-            }
-        }
-    }
-
-    /**
-     * Copies the content of a file into another file
-     * @param source The source file (not a directory!)
-     * @param destination File (not a directory!)
-     * @param twoTuple The twoTuple to use
-     * @param client The client task
-     */
-    public static void copyFile(File source, File destination, TwoTuple twoTuple, Task client,
-            boolean force) {
-        if (source.isFile()) {
-            File parentDest = new File(destination.getParent());
-
-            if (!parentDest.exists()) {
-                parentDest.mkdirs();
-
-                int numberOfDirectoriesCreated = twoTuple.x;
-                numberOfDirectoriesCreated++;
-                twoTuple.x = numberOfDirectoriesCreated;
-            }
-
-            if (destination.isFile()) {
-                if (destination.lastModified() > source.lastModified() && !force) {
-                    return;
-                }
-            }
-
-            byte[] buffer = new byte[1024];
-            int bytesRead = -1;
-            InputStream in = null;
-            OutputStream out = null;
-
-            try {
-                in = new FileInputStream(source);
-                out = new FileOutputStream(destination);
-
-                while ((bytesRead = in.read(buffer)) >= 0) {
-                    out.write(buffer, 0, bytesRead);
-                }
-            } catch (final FileNotFoundException e) {
-                StringWriter writer = new StringWriter();
-                e.printStackTrace(new PrintWriter(writer));
-                client.log("Exception caught: " + writer.toString());
-            } catch (final IOException e) {
-                StringWriter writer = new StringWriter();
-                e.printStackTrace(new PrintWriter(writer));
-                client.log("Exception caught: " + writer.toString());
-            } finally {
-                try {
-                    if (out != null) {
-                        out.close();
-                    }
-                    if (in != null) {
-                        in.close();
-                    }
-                } catch (final IOException e1) {
-                    StringWriter writer = new StringWriter();
-                    e1.printStackTrace(new PrintWriter(writer));
-                    client.log("Exception closing stream: " + writer.toString());
-                }
-            }
-
-            int numberOfFilesCopied = twoTuple.y;
-            numberOfFilesCopied++;
-            twoTuple.y = numberOfFilesCopied;
-
-        } else {
-            client.log("No such file: " + source, Project.MSG_ERR);
-        }
-    }
-
-    /**
-     * Set the root publication root directories
-     * @param _pubsRootDirs The root directories
-     */
-    public void setPubsRootDirs(Path _pubsRootDirs) {
-        this.pubsRootDirs = _pubsRootDirs;
-    }
-
-    /**
-     * Set the java directory
-     * @param _javaDir The java directory
-     */
-    public void setJavaDir(String _javaDir) {
-        this.javaDir = _javaDir;
-    }
-
-    /**
-     * Set the build directory
-     * @param _buildDir The build directory
-     */
-    public void setBuildDir(String _buildDir) {
-        this.buildDir = _buildDir;
-    }
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyPublicationsTask.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyPublicationsTask.java
deleted file mode 100644
index eeaf387..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/CopyPublicationsTask.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: CopyPublicationsTask.java 416058 2006-06-21 18:24:05Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.StringTokenizer;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-
-
-/**
- * Task to copy files of publications and modules
- */
-public class CopyPublicationsTask extends Task {
-    private Path pubsRootDirs;
-    private Path toDir;
-    private String excludes;
-
-    /** (non-Javadoc)
-     * @see org.apache.tools.ant.Task#execute()
-     */
-    public void execute() throws BuildException {
-        int numberOfDirectoriesCreated = 0;
-        int numberOfFilesCopied = 0;
-        TwoTuple twoTuple = new TwoTuple(numberOfDirectoriesCreated, numberOfFilesCopied);
-
-        StringTokenizer st = new StringTokenizer(this.pubsRootDirs.toString(), File.pathSeparator);
-
-        log("Excludes " + this.excludes);
-        FilenameFilter filter = new SCMFilenameFilter(this.excludes);
-
-        while (st.hasMoreTokens()) {
-            String pubsRootDir = st.nextToken();
-
-            copy(pubsRootDir, filter, twoTuple);
-        }
-
-        numberOfDirectoriesCreated = twoTuple.x;
-        numberOfFilesCopied = twoTuple.y;
-        log("Copying " + numberOfDirectoriesCreated + " directories to " + this.toDir);
-        log("Copying " + numberOfFilesCopied + " files to " + this.toDir);
-    }
-
-    /**
-     *
-     */
-    public void copy(String pubsRootDir, FilenameFilter filter, TwoTuple twoTuple) {
-            // In the case the pubsRootDir is publication dir
-            if (new File(pubsRootDir, "/config/publication.xml").isFile()) {
-                File pubDir = new File(pubsRootDir);
-                log("Copy publication: " + pubDir);
-                CopyJavaSourcesTask.copyDir(pubDir, new File(this.toDir.toString()), twoTuple, filter, this);
-                File localPublicationXConf = new File(pubDir, "/config/local.publication.xml");
-                if (localPublicationXConf.isFile()) {
-                    File publicationXConf = new File(this.toDir.toString() + "/" + pubDir.getName() + "/config/publication.xml");
-                    log("Patch config file with local version: " + localPublicationXConf + " " + publicationXConf);
-                    CopyJavaSourcesTask.copyFile(localPublicationXConf, publicationXConf, twoTuple, this, true);
-                }
-
-                File localAccessControlXConf = new File(pubDir, "/config/access-control/local.access-control.xml");
-                if (localAccessControlXConf.isFile()) {
-                    File accessControlXConf = new File(this.toDir.toString() + "/" + pubDir.getName() + "/config/access-control/access-control.xml");
-                    log("Patch access control config file with local version: " + localAccessControlXConf + " " + accessControlXConf);
-                    CopyJavaSourcesTask.copyFile(localAccessControlXConf, accessControlXConf, twoTuple, this, true);
-                }
-
-            // In the case the pubsRootDir is module dir
-	    } else if (new File(pubsRootDir, "/config/module.xml").isFile()) {
-                log("Copy module: " + pubsRootDir);
-                CopyJavaSourcesTask.copyDir(new File(pubsRootDir), new File(this.toDir.toString()), twoTuple, filter, this);
-            } else {
-                File[] files = new File(pubsRootDir).listFiles(filter);
-                if (files != null) {
-                    for (int i = 0; i < files.length; i++) {
-                        copy(files[i].getAbsolutePath(), filter, twoTuple);
-                    }
-                }
-                else log("ERROR: No children: " + pubsRootDir);
-            }
-    }
-
-    /**
-     * Where the publications are located
-     * 
-     * @param _pubsRootDirs
-     */
-    public void setPubsRootDirs(Path _pubsRootDirs) {
-        this.pubsRootDirs = _pubsRootDirs;
-    }
-
-    /**
-     * Where the publications shall be copied to
-     * 
-     * @param _toDir
-     */
-    public void setToDir(Path _toDir) {
-        this.toDir = _toDir;
-    }
-
-    /**
-     * Which filenames shall be excluded
-     *
-     * @param _excludes
-     */
-    public void setExcludes(String _excludes) {
-        this.excludes = _excludes;
-    }
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/GenerateModuleList.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/GenerateModuleList.java
deleted file mode 100644
index 3fa9c7d..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/GenerateModuleList.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: BulkCopyTask.java 383219 2006-03-04 23:04:55Z michi $  */
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.lenya.xml.AntDocumentHelper;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Generate an XML containing modules.
- */
-public class GenerateModuleList extends Task {
-
-    private Path moduleDirectories;
-
-    private String moduleFile;
-
-    /**
-     * @see org.apache.tools.ant.Task#execute()
-     */
-    public void execute() throws BuildException {
-
-        List descriptors = new ArrayList();
-
-        StringTokenizer st = new StringTokenizer(this.moduleDirectories
-                .toString(), File.pathSeparator);
-
-        while (st.hasMoreTokens()) {
-            String moduleDir = st.nextToken();
-            File path = new File(moduleDir);
-
-            if (path.isDirectory()) {
-                if (isModuleDirectory(path)) {
-                    descriptors.add(path);
-                } else {
-                    String[] dirs = path.list();
-                    boolean matched = false;
-                    for (int i = 0; i < dirs.length; i++) {
-                        File moduleSubDir = new File(path, dirs[i]);
-                        if (isModuleDirectory(moduleSubDir)) {
-                            descriptors.add(moduleSubDir);
-                            matched = true;
-                        }
-                    }
-                    if (!matched) {
-                        log("No module(s) found in directory [" + path + "]");
-                    }
-                }
-            } else {
-                throw new BuildException("No such directory: " + path);
-            }
-        }
-
-        try {
-            Document doc = AntDocumentHelper.createDocument(NAMESPACE,
-                    "modules", null);
-            File[] modules = (File[]) descriptors.toArray(new File[descriptors
-                    .size()]);
-            HashMap keys = new HashMap();
-            for (int i = 0; i < modules.length; i++) {
-                Element element = doc.createElementNS(NAMESPACE, "module");
-                String absolutePath = modules[i].getAbsolutePath();
-                String key = absolutePath.substring(absolutePath
-                        .lastIndexOf("/") + 1);
-                if (keys.containsKey(key)) {
-                    String error = "\nThe module ["
-                            + key
-                            + "] is already registered with the path ["
-                            + keys.get(key)
-                            + "]!\n"
-                            + "You are trying to reuse the key for the path ["
-                            + absolutePath
-                            + "]\nPlease make sure you are using unique naming for modules.";
-                    throw new BuildException(error);
-                }
-                keys.put(key, absolutePath);
-                element.setAttribute("src", absolutePath);
-                doc.getDocumentElement().appendChild(element);
-            }
-            File file = new File(this.moduleFile.replace('/',
-                    File.separatorChar));
-            AntDocumentHelper.writeDocument(doc, file);
-        } catch (Exception e) {
-            throw new BuildException(e);
-        }
-
-    }
-
-    protected static final String NAMESPACE = "http://apache.org/lenya/module-list/1.0";
-
-    protected boolean isModuleDirectory(File path) {
-        File moduleFile = new File(path, "config" + File.separator + "module.xml");
-        return moduleFile.isFile();
-    }
-
-    /**
-     * Set the module source directories.
-     * 
-     * @param dirs
-     *            The module directories.
-     */
-    public void setModuleDirs(Path dirs) {
-        this.moduleDirectories = dirs;
-    }
-
-    /**
-     * Set the file to generate.
-     * 
-     * @param file
-     *            The file.
-     */
-    public void setModuleFile(String file) {
-        this.moduleFile = file;
-    }
-
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/JavaFilenameFilter.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/JavaFilenameFilter.java
deleted file mode 100644
index 1688629..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/JavaFilenameFilter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: JavaFilenameFilter.java 416058 2006-06-21 18:24:05Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.Arrays;
-import java.util.StringTokenizer;
-
-/**
- * A filename filter for .java, .properties, .xml and .xsl files
- * FIXME this class is named badly
- */
-public class JavaFilenameFilter implements FilenameFilter {
-    
-    private static final String[] SUFFIXES = { "java", "properties", "xml", "xsl" };
-
-	/**
-	 * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)
-	 */
-    public boolean accept(File dir, String name) {
-        boolean accept = true;
-        if (new File(dir, name).isFile()) {
-            String suffix = getExtension(name);
-            if (!Arrays.asList(SUFFIXES).contains(suffix)) {
-                accept = false;
-            }
-        }
-        return accept;
-    }
-
-	/**
-	 * Get the extension
-	 * @param filename the file name from which the extension is extracted
-	 * @return the extension
-	 */
-    static public String getExtension(String filename) {
-        StringTokenizer st = new StringTokenizer(filename, ".");
-        st.nextToken();
-
-        String extension = "";
-
-        while (st.hasMoreTokens()) {
-            extension = st.nextToken();
-        }
-
-        return extension;
-    }
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/SCMFilenameFilter.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/SCMFilenameFilter.java
deleted file mode 100644
index 075722b..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/SCMFilenameFilter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: SCMFilenameFilter.java 416058 2006-06-21 18:24:05Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Filter to exclude SCM files, such as CVS and .svn.
- * A set of filenames (provided as comma-separated list) is excluded.
- */
-public class SCMFilenameFilter implements FilenameFilter {
-    
-    private List excludes;
-
-    /**
-     * Ctor.
-     * @param _excludes A comma-separated list of file names, e.g. CVS,.svn
-     */
-    public SCMFilenameFilter(String _excludes) {
-        this.excludes = Arrays.asList(_excludes.split(","));
-    }
-
-    /**
-     * @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)
-     */
-    public boolean accept(File dir, String name) {
-        return !this.excludes.contains(name);
-    }
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/TwoTuple.java b/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/TwoTuple.java
deleted file mode 100644
index 571eb24..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/cms/ant/TwoTuple.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.
- *
- */
-
-/* $Id: TwoTuple.java 416058 2006-06-21 18:24:05Z andreas $  */
-
-package org.apache.lenya.cms.ant;
-
-/**
- * Helper class to hold two values.
- */
-public class TwoTuple {
-    /**
-     * <code>x</code> The x value
-     */
-    public int x;
-    /**
-     * <code>y</code> The y value
-     */
-    public int y;
-
-    /**
-     * Constructor
-     * @param _x The x value
-     * @param _y The y value
-     * 
-     */
-    public TwoTuple(int _x, int _y) {
-        this.x = _x;
-        this.y = _y;
-    }
-}
diff --git a/trunk/tools/anttasks/src/org/apache/lenya/xml/AntDocumentHelper.java b/trunk/tools/anttasks/src/org/apache/lenya/xml/AntDocumentHelper.java
deleted file mode 100644
index 0d90871..0000000
--- a/trunk/tools/anttasks/src/org/apache/lenya/xml/AntDocumentHelper.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.apache.lenya.xml;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-import org.xml.sax.SAXException;
-
-/**
- * Slightly modified version of Lenya's DocumentBuilder to be used in Ant tasks.
- */
-public class AntDocumentHelper {
-
-    /**
-     * Creates a non-validating and namespace-aware DocumentBuilder.
-     * @return A new DocumentBuilder object.
-     * @throws ParserConfigurationException if an error occurs
-     */
-    public static DocumentBuilder createBuilder() throws ParserConfigurationException {
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        DocumentBuilder builder = factory.newDocumentBuilder();
-        return builder;
-    }
-
-    /**
-     * Creates a document. A xmlns:prefix="namespaceUri" attribute is added to the document element.
-     * @param namespaceUri The namespace URL of the root element.
-     * @param qualifiedName The qualified name of the root element.
-     * @param documentType The type of document to be created or null. When doctype is not null, its
-     *            Node.ownerDocument attribute is set to the document being created.
-     * @return A new Document object.
-     * @throws DOMException if an error occurs
-     * @throws ParserConfigurationException if an error occurs
-     * @see org.w3c.dom.DOMImplementation#createDocument(String, String, DocumentType)
-     */
-    public static Document createDocument(String namespaceUri, String qualifiedName,
-            DocumentType documentType) throws DOMException, ParserConfigurationException {
-        DocumentBuilder builder = createBuilder();
-        Document document = builder.getDOMImplementation().createDocument(namespaceUri,
-                qualifiedName,
-                documentType);
-
-        // add xmlns:prefix attribute
-        String name = "xmlns";
-        int index = qualifiedName.indexOf(":");
-
-        if (index > -1) {
-            name += (":" + qualifiedName.substring(0, index));
-        }
-
-        document.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/",
-                name,
-                namespaceUri);
-
-        return document;
-    }
-
-    /**
-     * Writes a document to a file. A new file is created if it does not exist.
-     * @param document The document to save.
-     * @param file The file to save the document to.
-     * @throws IOException if an error occurs
-     * @throws TransformerConfigurationException if an error occurs
-     * @throws TransformerException if an error occurs
-     */
-    public static void writeDocument(Document document, File file)
-            throws TransformerConfigurationException, TransformerException, IOException {
-        // sanity checks
-        if (document == null)
-            throw new IllegalArgumentException("illegal usage, parameter document may not be null");
-        if (file == null)
-            throw new IllegalArgumentException("illegal usage, parameter file may not be null");
-
-        file.getParentFile().mkdirs();
-        file.createNewFile();
-
-        DOMSource source = new DOMSource(document);
-        FileOutputStream out = new FileOutputStream(file);
-        StreamResult result = new StreamResult(out);
-        getTransformer(document.getDoctype()).transform(source, result);
-        out.close();
-    }
-
-    /**
-     * Get the transformer.
-     * @param documentType the document type
-     * @return a transformer
-     * @throws TransformerConfigurationException if an error occurs
-     */
-    protected static Transformer getTransformer(DocumentType documentType)
-            throws TransformerConfigurationException {
-        TransformerFactory factory = TransformerFactory.newInstance();
-        Transformer transformer = factory.newTransformer();
-        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-
-        if (documentType != null) {
-            if (documentType.getPublicId() != null)
-                transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, documentType.getPublicId());
-            if (documentType.getSystemId() != null)
-                transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, documentType.getSystemId());
-        }
-
-        return transformer;
-    }
-
-    /**
-     * Reads a document from a file.
-     * @return A document.
-     * @param file The file to load the document from.
-     * @throws ParserConfigurationException if an error occurs
-     * @throws SAXException if an error occurs
-     * @throws IOException if an error occurs
-     */
-    public static Document readDocument(File file) throws ParserConfigurationException,
-            SAXException, IOException {
-        DocumentBuilder builder = createBuilder();
-        return builder.parse(file);
-    }
-
-    /**
-     * Returns all child elements of an element that belong to a certain
-     * namespace and have a certain local name.
-     * @param element The parent element.
-     * @param namespaceUri The namespace that the childen must belong to.
-     * @param localName The local name of the children.
-     * @return The child elements.
-     */
-    public static Element[] getChildren(Element element, String namespaceUri, String localName) {
-        List childElements = new ArrayList();
-        NodeList children = element.getElementsByTagNameNS(namespaceUri, localName);
-
-        for (int i = 0; i < children.getLength(); i++) {
-            if (children.item(i).getParentNode() == element) {
-                childElements.add(children.item(i));
-            }
-        }
-
-        return (Element[]) childElements.toArray(new Element[childElements.size()]);
-    }
-
-    /**
-     * Returns the text inside an element. Only the child text nodes of this
-     * element are collected.
-     * @param element The element.
-     * @return The text inside the element.
-     */
-    public static String getSimpleElementText(Element element) {
-        StringBuffer buffer = new StringBuffer();
-        NodeList children = element.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node child = children.item(i);
-
-            if (child instanceof Text) {
-                buffer.append(child.getNodeValue());
-            }
-        }
-
-        return buffer.toString();
-    }
-
-}
diff --git a/trunk/tools/bin/ant b/trunk/tools/bin/ant
deleted file mode 100755
index de31bbe..0000000
--- a/trunk/tools/bin/ant
+++ /dev/null
@@ -1,300 +0,0 @@
-#! /bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-
-# Extract launch and ant arguments, (see details below).
-ant_exec_args=
-no_config=true
-use_jikes_default=false
-ant_exec_debug=false
-show_help=false
-for arg in "$@" ; do
-  if [ "$arg" = "--noconfig" ] ; then
-    no_config=true
-  elif [ "$arg" = "--usejikes" ] ; then
-    use_jikes_default=true
-  elif [ "$arg" = "--execdebug" ] ; then
-    ant_exec_debug=true
-  elif [ my"$arg" = my"--h"  -o my"$arg" = my"--help"  ] ; then
-    show_help=true
-    ant_exec_args="$ant_exec_args -h"
-  else
-    if [  my"$arg" = my"-h"  -o  my"$arg" = my"-help" ] ; then
-      show_help=true
-    fi
-    ant_exec_args="$ant_exec_args \"$arg\""
-  fi
-done
-
-# Source/default ant configuration
-if $no_config ; then
-  rpm_mode=false
-  usejikes=$use_jikes_default
-else
-  # load system-wide ant configuration
-  if [ -f "/etc/ant.conf" ] ; then
-    . /etc/ant.conf
-  fi
-
-  # load user ant configuration
-  if [ -f "$HOME/.ant/ant.conf" ] ; then
-    . $HOME/.ant/ant.conf
-  fi
-  if [ -f "$HOME/.antrc" ] ; then
-    . "$HOME/.antrc"
-  fi
-
-  # provide default configuration values
-  if [ -z "$rpm_mode" ] ; then
-    rpm_mode=false
-  fi
-  if [ -z "$usejikes" ] ; then
-    usejikes=$use_jikes_default
-  fi
-fi
-
-# Setup Java environment in rpm mode
-if $rpm_mode ; then
-  if [ -f /usr/share/java-utils/java-functions ] ; then
-    . /usr/share/java-utils/java-functions
-    set_jvm
-    set_javacmd
-  fi
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  Darwin*) darwin=true
-           if [ -z "$JAVA_HOME" ] ; then
-             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
-           fi
-           ;;
-esac
-
-if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
-  ## resolve links - $0 may be a link to ant's home
-  PRG="$0"
-  progname=`basename "$0"`
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-    PRG="$link"
-    else
-    PRG=`dirname "$PRG"`"/$link"
-    fi
-  done
-
-  ANT_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  ANT_HOME=`cd "$ANT_HOME" && pwd`
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$ANT_HOME" ] &&
-    ANT_HOME=`cygpath --unix "$ANT_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# set ANT_LIB location
-ANT_LIB="${ANT_HOME}/lib"
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD=`which java 2> /dev/null `
-    if [ -z "$JAVACMD" ] ; then
-        JAVACMD=java
-    fi
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit 1
-fi
-
-# Build local classpath using just the launcher in non-rpm mode or
-# use the Jpackage helper in rpm mode with basic and default jars
-# specified in the ant.conf configuration. Because the launcher is
-# used, libraries linked in ANT_HOME will also be include, but this
-# is discouraged as it is not java-version safe. A user should
-# request optional jars and their dependencies via the OPT_JAR_LIST
-# variable
-if $rpm_mode && [ -f /usr/bin/build-classpath ] ; then
-  LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)"
-  # If the user requested to try to add some other jars to the classpath
-  if [ -n "$OPT_JAR_LIST" ] ; then
-    _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
-    if [ -n "$_OPTCLASSPATH" ] ; then 
-      LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
-    fi
-  fi
-
-  # Explicitly add javac path to classpath, assume JAVA_HOME set
-  # properly in rpm mode
-  if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
-    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
-  fi
-  if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
-    LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
-  fi
-
-  # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
-  # user CLASSPATH first and ant-found jars after.
-  # In that case, the user CLASSPATH will override ant-found jars
-  #
-  # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
-  # with ant-found jars first and user CLASSPATH after
-  if [ -n "$CLASSPATH" ] ; then
-    # merge local and specified classpath 
-    if [ -z "$LOCALCLASSPATH" ] ; then 
-      LOCALCLASSPATH="$CLASSPATH"
-    elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
-      LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
-    else
-      LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
-    fi
-
-    # remove class path from launcher -cp option
-    CLASSPATH=""
-  fi
-else
-  # not using rpm_mode; use launcher to determine classpaths
-  if [ -z "$LOCALCLASSPATH" ] ; then
-      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
-  else
-      LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
-  fi
-fi
-
-if [ -n "$JAVA_HOME" ] ; then
-  # OSX hack to make Ant work with jikes
-  if $darwin ; then
-    OSXHACK="${JAVA_HOME}/../Classes"
-    if [ -d "${OSXHACK}" ] ; then
-      for i in "${OSXHACK}"/*.jar
-      do
-        JIKESPATH="$JIKESPATH:$i"
-      done
-    fi
-  fi
-fi
-
-# Allow Jikes support (off by default)
-if $usejikes; then
-  ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
-fi
-
-# For Cygwin, switch paths to appropriate format before running java
-# For PATHs convert to unix format first, then to windows format to ensure
-# both formats are supported. Probably this will fail on directories with ;
-# in the name in the path. Let's assume that paths containing ; are more
-# rare than windows style paths on cygwin.
-if $cygwin; then
-  if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
-    format=mixed
-  else
-    format=windows
-  fi
-  ANT_HOME=`cygpath --$format "$ANT_HOME"`
-  ANT_LIB=`cygpath --$format "$ANT_LIB"`
-  JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
-  LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
-  LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
-  if [ -n "$CLASSPATH" ] ; then
-    CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
-    CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
-  fi
-  CYGHOME=`cygpath --$format "$HOME"`
-fi
-
-# Show script help if requested
-if $show_help ; then
-  echo $0 '[script options] [options] [target [target2 [target3] ..]]'
-  echo 'Script Options:'
-  echo '  --help, --h            print this message and ant help'
-  echo '  --noconfig             suppress sourcing of /etc/ant.conf,'
-  echo '                         $HOME/.ant/ant.conf, and $HOME/.antrc'
-  echo '                         configuration files'
-  echo '  --usejikes             enable use of jikes by default, unless'
-  echo '                         set explicitly in configuration files'
-  echo '  --execdebug            print ant exec line generated by this'
-  echo '                         launch script'
-  echo '  '
-fi
-# add a second backslash to variables terminated by a backslash under cygwin
-if $cygwin; then
-  case "$ANT_HOME" in
-    *\\ )
-    ANT_HOME="$ANT_HOME\\"
-    ;;
-  esac
-  case "$CYGHOME" in
-    *\\ )
-    CYGHOME="$CYGHOME\\"
-    ;;
-  esac
-  case "$JIKESPATH" in
-    *\\ )
-    JIKESPATH="$JIKESPATH\\"
-    ;;
-  esac
-  case "$LOCALCLASSPATH" in
-    *\\ )
-    LOCALCLASSPATH="$LOCALCLASSPATH\\"
-    ;;
-  esac
-  case "$CLASSPATH" in
-    *\\ )
-    CLASSPATH="$CLASSPATH\\"
-    ;;
-  esac
-fi
-# Execute ant using eval/exec to preserve spaces in paths,
-# java options, and ant args
-ant_sys_opts=
-if [ -n "$CYGHOME" ]; then
-  if [ -n "$JIKESPATH" ]; then
-    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\""
-  else
-    ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
-  fi
-else
-  if [ -n "$JIKESPATH" ]; then
-    ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
-  fi
-fi
-ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"$CLASSPATH\" $ant_exec_args"
-if $ant_exec_debug ; then
-    echo $ant_exec_command
-fi
-eval $ant_exec_command
diff --git a/trunk/tools/bin/ant.bat b/trunk/tools/bin/ant.bat
deleted file mode 100644
index 3bd0350..0000000
--- a/trunk/tools/bin/ant.bat
+++ /dev/null
@@ -1,127 +0,0 @@
-@echo off

-

-rem  Licensed to the Apache Software Foundation (ASF) under one or more

-rem  contributor license agreements.  See the NOTICE file distributed with

-rem  this work for additional information regarding copyright ownership.

-rem  The ASF licenses this file to You under the Apache License, Version 2.0

-rem  (the "License"); you may not use this file except in compliance with

-rem  the License.  You may obtain a copy of the License at

-rem

-rem      http://www.apache.org/licenses/LICENSE-2.0

-rem

-rem  Unless required by applicable law or agreed to in writing, software

-rem  distributed under the License is distributed on an "AS IS" BASIS,

-rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-rem  See the License for the specific language governing permissions and

-rem  limitations under the License.

-

-if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"

-

-if "%OS%"=="Windows_NT" @setlocal

-if "%OS%"=="WINNT" @setlocal

-

-rem %~dp0 is expanded pathname of the current script under NT

-set DEFAULT_ANT_HOME=%~dp0..

-

-if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%

-set DEFAULT_ANT_HOME=

-

-set _USE_CLASSPATH=yes

-

-rem Slurp the command line arguments. This loop allows for an unlimited number

-rem of arguments (up to the command line limit, anyway).

-set ANT_CMD_LINE_ARGS=%1

-if ""%1""=="""" goto doneStart

-shift

-:setupArgs

-if ""%1""=="""" goto doneStart

-if ""%1""==""-noclasspath"" goto clearclasspath

-set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1

-shift

-goto setupArgs

-

-rem here is there is a -noclasspath in the options

-:clearclasspath

-set _USE_CLASSPATH=no

-shift

-goto setupArgs

-

-rem This label provides a place for the argument list loop to break out

-rem and for NT handling to skip to.

-

-:doneStart

-rem find ANT_HOME if it does not exist due to either an invalid value passed

-rem by the user or the %0 problem on Windows 9x

-if exist "%ANT_HOME%\lib\ant.jar" goto checkJava

-

-rem check for ant in Program Files

-if not exist "%ProgramFiles%\ant" goto checkSystemDrive

-set ANT_HOME=%ProgramFiles%\ant

-goto checkJava

-

-:checkSystemDrive

-rem check for ant in root directory of system drive

-if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive

-set ANT_HOME=%SystemDrive%\ant

-goto checkJava

-

-:checkCDrive

-rem check for ant in C:\ant for Win9X users

-if not exist C:\ant\lib\ant.jar goto noAntHome

-set ANT_HOME=C:\ant

-goto checkJava

-

-:noAntHome

-echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.

-goto end

-

-:checkJava

-set _JAVACMD=%JAVACMD%

-

-if "%JAVA_HOME%" == "" goto noJavaHome

-if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

-if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe

-goto checkJikes

-

-:noJavaHome

-if "%_JAVACMD%" == "" set _JAVACMD=java.exe

-

-:checkJikes

-if not "%JIKESPATH%"=="" goto runAntWithJikes

-

-:runAnt

-if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath

-if not "%CLASSPATH%"=="" goto runAntWithClasspath

-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%

-goto end

-

-:runAntNoClasspath

-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%

-goto end

-

-:runAntWithClasspath

-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%

-goto end

-

-:runAntWithJikes

-if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath

-if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath

-

-:runAntWithJikesNoClasspath

-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%

-goto end

-

-:runAntWithJikesAndClasspath

-"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS%  -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%

-goto end

-

-:end

-set _JAVACMD=

-set ANT_CMD_LINE_ARGS=

-

-if "%OS%"=="Windows_NT" @endlocal

-if "%OS%"=="WINNT" @endlocal

-

-:mainEnd

-if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"

-

diff --git a/trunk/tools/bin/ant.cmd b/trunk/tools/bin/ant.cmd
deleted file mode 100644
index e0e5cc9..0000000
--- a/trunk/tools/bin/ant.cmd
+++ /dev/null
@@ -1,93 +0,0 @@
-/* 

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

- 

-    Run ant

-*/

-

-'@echo off'

-parse arg mode envarg '::' antarg

-

-if mode\='.' & mode\='..' & mode\='/' then do

-  envarg = mode envarg

-  mode = ''

-end

-

-if antarg = '' then do

-  antarg = envarg

-  envarg = ''

-end

-

-x = setlocal()

-

-env="OS2ENVIRONMENT"

-antenv = _getenv_('antenv')

-if _testenv_() = 0 then interpret 'call "' || antenv || '"' '"' || envarg || '"'

-

-if mode = '' then mode = _getenv_('ANT_MODE' '..')

-if mode \= '/' then do

-  runrc = _getenv_('runrc')

-  antrc = _getenv_('antrc' 'antrc.cmd')

-  if mode = '..' then mode = '-r'

-  else mode = ''

-  interpret 'call "' || runrc || '"' antrc '"' || mode || '"'

-end

-

-if _testenv_() = 0 then do

-  say 'Ant environment is not set properly'

-  x = endlocal()

-  exit 16

-end

-

-settings = '-Dant.home=' || ANT_HOME '-Djava.home=' || JAVA_HOME

-

-java = _getenv_('javacmd' 'java')

-opts = value('ANT_OPTS',,env)

-args = value('ANT_ARGS',,env)

-lcp = value('LOCALCLASSPATH',,env)

-cp = value('CLASSPATH',,env)

-if value('ANT_USE_CP',,env) \= '' then do

-  if lcp \= '' & right(lcp, 1) \= ';' then lcp = lcp || ';'

-  lcp = lcp || cp

-  'SET CLASSPATH='

-end

-if lcp\='' then lcp = '-classpath' lcp

-

-cmd = java opts lcp '-jar' ANT_HOME ||'\lib\ant-launcher.jar' settings args antarg

-launcher = stream(ANT_HOME ||'\lib\ant-launcher.jar', 'C', 'query exists')

-if launcher = '' then entry = 'org.apache.tools.ant.Main'

-else entry = 'org.apache.tools.ant.launch.Launcher'

-java opts lcp entry settings args antarg

-

-x = endlocal()

-

-return rc

-

-_testenv_: procedure expose env ANT_HOME JAVA_HOME

-ANT_HOME = value('ANT_HOME',,env)

-if ANT_HOME = '' then return 0

-JAVA_HOME = value('JAVA_HOME',,env)

-if JAVA_HOME = '' then return 0

-cp = translate(value('CLASSPATH',,env))

-if pos(translate(ANT_HOME), cp) = 0 then return 0

-if pos(translate(JAVA_HOME), cp) = 0 then return 0

-return 1

-

-_getenv_: procedure expose env

-parse arg envar default

-if default = '' then default = envar

-var = value(translate(envar),,env)

-if var = '' then var = default

-return var

diff --git a/trunk/tools/bin/antRun b/trunk/tools/bin/antRun
deleted file mode 100755
index dbb41d0..0000000
--- a/trunk/tools/bin/antRun
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-
-# Args: DIR command
-cd "$1"
-CMD="$2"
-shift
-shift
-
-exec "$CMD" "$@"
diff --git a/trunk/tools/bin/antRun.bat b/trunk/tools/bin/antRun.bat
deleted file mode 100644
index 354f065..0000000
--- a/trunk/tools/bin/antRun.bat
+++ /dev/null
@@ -1,45 +0,0 @@
-@echo off

-

-rem  Licensed to the Apache Software Foundation (ASF) under one or more

-rem  contributor license agreements.  See the NOTICE file distributed with

-rem  this work for additional information regarding copyright ownership.

-rem  The ASF licenses this file to You under the Apache License, Version 2.0

-rem  (the "License"); you may not use this file except in compliance with

-rem  the License.  You may obtain a copy of the License at

-rem

-rem      http://www.apache.org/licenses/LICENSE-2.0

-rem

-rem  Unless required by applicable law or agreed to in writing, software

-rem  distributed under the License is distributed on an "AS IS" BASIS,

-rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-rem  See the License for the specific language governing permissions and

-rem  limitations under the License.

-

-if "%OS%"=="Windows_NT" @setlocal

-if "%OS%"=="WINNT" @setlocal

-

-if ""%1""=="""" goto runCommand

-

-rem Change drive and directory to %1

-if "%OS%"=="Windows_NT" cd /d ""%1""

-if not "%OS%"=="Windows_NT" cd ""%1""

-shift

-

-rem Slurp the command line arguments. This loop allows for an unlimited number

-rem of agruments (up to the command line limit, anyway).

-set ANT_RUN_CMD=%1

-if ""%1""=="""" goto runCommand

-shift

-:loop

-if ""%1""=="""" goto runCommand

-set ANT_RUN_CMD=%ANT_RUN_CMD% %1

-shift

-goto loop

-

-:runCommand

-rem echo %ANT_RUN_CMD%

-%ANT_RUN_CMD%

-

-if "%OS%"=="Windows_NT" @endlocal

-if "%OS%"=="WINNT" @endlocal

-

diff --git a/trunk/tools/bin/antRun.pl b/trunk/tools/bin/antRun.pl
deleted file mode 100644
index dbea10f..0000000
--- a/trunk/tools/bin/antRun.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/perl
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-#
-#######################################################################
-#
-# antRun.pl
-#
-# wrapper script for invoking commands on a platform with Perl installed
-# this is akin to antRun.bat, and antRun the SH script 
-#
-# created:         2001-10-18
-# author:          Jeff Tulley jtulley@novell.com 
-#######################################################################
-#be fussy about variables
-use strict;
-
-#turn warnings on during dev; generates a few spurious uninitialised var access warnings
-#use warnings;
-
-#and set $debug to 1 to turn on trace info (currently unused)
-my $debug=1;
-
-#######################################################################
-# change drive and directory to "%1"
-my $ANT_RUN_CMD = @ARGV[0];
-
-# assign current run command to "%2"
-chdir (@ARGV[0]) || die "Can't cd to $ARGV[0]: $!\n";
-if ($^O eq "NetWare") {
-    # There is a bug in Perl 5 on NetWare, where chdir does not
-    # do anything.  On NetWare, the following path-prefixed form should 
-    # always work. (afaict)
-    $ANT_RUN_CMD .= "/".@ARGV[1];
-}
-else {
-    $ANT_RUN_CMD = @ARGV[1];
-}
-
-# dispose of the first two arguments, leaving only the command's args.
-shift;
-shift;
-
-# run the command
-my $returnValue = system $ANT_RUN_CMD, @ARGV;
-if ($returnValue eq 0) {
-    exit 0;
-}
-else {
-    # only 0 and 1 are widely recognized as exit values
-    # so change the exit value to 1
-    exit 1;
-}
diff --git a/trunk/tools/bin/antenv.cmd b/trunk/tools/bin/antenv.cmd
deleted file mode 100644
index b9d1308..0000000
--- a/trunk/tools/bin/antenv.cmd
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-    Ant environment

-*/

-

-'@echo off'

-call RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs"

-call SysLoadFuncs

-

-/* Prepare the parameters for later use */

-parse arg argv

-mode = ''

-args = ''

-opts = ''

-cp = ''

-lcp = ''

-

-do i = 1 to words(argv)

-  param = word(argv, i)

-  select

-    when param='-lcp' then mode = 'l'

-    when param='-cp' | param='-classpath' then mode = 'c'

-    when abbrev('-opts', param, 4) then mode = 'o'

-    when abbrev('-args', param, 4) then mode = 'a'

-  otherwise

-    select

-      when mode = 'a' then args = space(args param, 1)

-      when mode = 'c' then cp = space(cp param, 1)

-      when mode = 'l' then lcp = space(lcp param, 1)

-      when mode = 'o' then opts = space(opts param, 1)

-    otherwise

-      say 'Option' param 'ignored'

-    end

-  end

-end

-

-env="OS2ENVIRONMENT"

-antconf = _getenv_('antconf' 'antconf.cmd')

-runrc = _getenv_('runrc')

-interpret 'call "' || runrc || '"' '"' || antconf || '"' 'ETC'

-ANT_HOME = value('ANT_HOME',,env)

-JAVA_HOME = value('JAVA_HOME',,env)

-classpath = value('CLASSPATH',,env)

-classes = stream(JAVA_HOME || "\lib\classes.zip", "C", "QUERY EXISTS")

-if classes \= '' then classpath = prepend(classpath classes)

-classes = stream(JAVA_HOME || "\lib\tools.jar", "C", "QUERY EXISTS")

-if classes \= '' then classpath = prepend(classpath classes)

-

-classpath = prepend(classpath ANT_HOME || '\lib\ant-launcher.jar')

-'SET CLASSPATH=' || classpath

-

-/* Setting classpathes, options and arguments */

-envset = _getenv_('envset')

-if cp\=''   then interpret 'call "' || envset || '"' '"; CLASSPATH"' '"' || cp || '"'

-if lcp\=''  then interpret 'call "' || envset || '"' '"; LOCALCLASSPATH"' '"' || lcp || '"'

-if opts\='' then interpret 'call "' || envset || '"' '"-D ANT_OPTS"' '"' || opts || '"'

-if args\='' then interpret 'call "' || envset || '"' '"ANT_ARGS"' '"' || args || '"'

-

-exit 0

-

-addpath: procedure

-parse arg path elem

-if elem = '' then do

-  if path\='' & right(path, 1)\=';' then path = path || ';'

-  return path

-end

-if substr(path, length(path)) = ';' then glue = ''

-else glue = ';'

-if pos(translate(elem), translate(path)) = 0 then path = path || glue || elem || ';'

-return path

-

-prepend: procedure

-parse arg path elem

-if elem = '' then do

-  if path\='' & right(path, 1)\=';' then path = path || ';'

-  return path

-end

-if pos(translate(elem), translate(path)) = 0 then path = elem || ';' || path

-return path

-

-_getenv_: procedure expose env

-parse arg envar default

-if default = '' then default = envar

-var = value(translate(envar),,env)

-if var = '' then var = default

-return var

diff --git a/trunk/tools/bin/appendcp.bat b/trunk/tools/bin/appendcp.bat
deleted file mode 100644
index 386feff..0000000
--- a/trunk/tools/bin/appendcp.bat
+++ /dev/null
@@ -1,18 +0,0 @@
-@echo off

-rem  Licensed to the Apache Software Foundation (ASF) under one or more

-rem  contributor license agreements.  See the NOTICE file distributed with

-rem  this work for additional information regarding copyright ownership.

-rem  The ASF licenses this file to You under the Apache License, Version 2.0

-rem  (the "License"); you may not use this file except in compliance with

-rem  the License.  You may obtain a copy of the License at

-rem

-rem      http://www.apache.org/licenses/LICENSE-2.0

-rem

-rem  Unless required by applicable law or agreed to in writing, software

-rem  distributed under the License is distributed on an "AS IS" BASIS,

-rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-rem  See the License for the specific language governing permissions and

-rem  limitations under the License.

-

-set CLASSPATH=%CLASSPATH%;%1

-

diff --git a/trunk/tools/bin/complete-ant-cmd.pl b/trunk/tools/bin/complete-ant-cmd.pl
deleted file mode 100644
index 32622e0..0000000
--- a/trunk/tools/bin/complete-ant-cmd.pl
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-#
-# A script to allow Bash or Z-Shell to complete an Ant command-line.  
-#
-# To install for Bash 2.0 or better, add the following to ~/.bashrc:
-# 
-#     $ complete -C complete-ant-cmd ant build.sh
-#
-# To install for Z-Shell 2.5 or better, add the following to ~/.zshrc:
-#
-#     function ant_complete () {
-#         local args_line args
-#         read -l args_line
-#         set -A args $args_line
-#         set -A reply $(COMP_LINE=$args_line complete-ant-cmd ${args[1]} $1)
-#     }
-#     compctl -K ant_complete ant build.sh
-#     
-# @author Mike Williams <mikew@cortexebusiness.com.au>
-
-my $cmdLine = $ENV{'COMP_LINE'};
-my $antCmd = $ARGV[0];
-my $word = $ARGV[1];
-
-my @completions;
-if ($word =~ /^-/) {
-    list( restrict( $word, getArguments() ));
-} elsif ($cmdLine =~ /-(f|buildfile)\s+\S*$/) {
-    list( getBuildFiles($word) );
-} else {
-    list( restrict( $word, getTargets() ));
-}
-
-exit(0);
-
-sub list {
-    for (@_) {
-        print "$_\n";
-    }
-}
-
-sub restrict {
-    my ($word, @completions) = @_;
-    grep( /^\Q$word\E/, @completions );
-}
-
-sub getArguments {
-    qw(-buildfile -debug -emacs -f -find -help -listener -logfile 
-       -logger -projecthelp -quiet -verbose -version); 
-}
-
-
-sub getBuildFiles {
-    my ($word) = @_;
-    grep( /\.xml$/, glob( "$word*" ));
-}
-
-sub getTargets {
-
-    # Look for build-file
-    my $buildFile = 'build.xml';
-    if ($cmdLine =~ /-(f|buildfile)\s+(\S+)/) {
-        $buildFile = $2;
-    }
-    return () unless (-f $buildFile);
-
-    # Run "ant -projecthelp" to list targets.  Keep a cache of results in a
-    # cache-file.
-    my $cacheFile = $buildFile;
-    $cacheFile =~ s|(.*/)?(.*)|${1}.ant-targets-${2}|;
-    if ((!-e $cacheFile) || (-M $buildFile) < (-M $cacheFile)) {
-        open( CACHE, '>'.$cacheFile ) || die "can\'t write $cacheFile: $!\n";
-        open( HELP, "$antCmd -projecthelp -f '$buildFile'|" ) || return(); 
-        my %targets;
-        while( <HELP> ) {
-            if (/^\s+(\S+)/) {
-                $targets{$1}++;
-            }
-        }
-        my @targets = sort keys %targets;
-        for (@targets) { print CACHE "$_\n"; }
-        return @targets;
-    }
-    
-    # Read the target-cache
-    open( CACHE, $cacheFile ) || die "can\'t read $cacheFile: $!\n";
-    my @targets;
-    while (<CACHE>) {
-        chop;
-        s/\r$//;  # for Cygwin
-        push( @targets, $_ );
-    }
-    close( CACHE );
-    @targets;
-
-}
-
-
-
diff --git a/trunk/tools/bin/envset.cmd b/trunk/tools/bin/envset.cmd
deleted file mode 100644
index 5ffa806..0000000
--- a/trunk/tools/bin/envset.cmd
+++ /dev/null
@@ -1,130 +0,0 @@
-/*

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-SET environment variables

-First optional parameter:

-   ;     parameters are considered parts of a path variable, semicolons are

-         appended to each element if not already present

-   -D    parameters are properties for Java or Makefile etc., -D will be

-         prepended and the parameters will be separated by a space

-   =D    the same as above but equal sign is not required

-   ,     parameters should be comma separated in the environment variable

-   -     parameters should be separated by the next parameter

-   Other values mean that the first parameter is missing and the environment

-   variable will be set to the space separated parameters

-

-Second parameter: name of the environment variable

-

-Next parameters: values

-; implies that the equal sign is considered a part of the parameter and is

-not interpreted

-

--D requires parameters in the form name=value. If the equal sign is not found,

-the parameters are changed to name=expanded_name

-

-Other options have optional equal sign. If it is found, only the part after

-the equal sign will be oprionally expanded.

-

-If the parameter is the minus sign, the next parameter will not be expanded.

-If the parameter is a single dot, it will be replaced with the value of the

-environment variable as it existed before envset was invoked.

-

-For other parameters the batch looks for the environment variable with the

-same name (in uppercase). If it is found, it forms the expanded_name. If

-the environment variable with such a name does not exist, the expanded_name

-will hold the parameter name without case conversion.

-*/

-

-parse arg mode envar args

-

-equal = 0

-sep = ' '

-

-/* Parse command line parameters */

-select

-  when mode='-' then do

-    sep = envar

-    parse var args envar args

-  end

-  when mode=';' then do

-    sep = ''

-    equal = -1

-  end

-  when mode='-D' then equal = 1

-  when mode='=D' then mode = '-D'

-  when mode=',' then sep = ','

-otherwise

-  args = envar args

-  envar = mode

-  mode = ''

-end

-

-env = 'OS2ENVIRONMENT'

-envar = translate(envar)

-orig = value(envar,,env)

-newval = ''

-expand = 1

-

-/* for each parameter... */

-do i = 1 to words(args)

-  if expand > 0 & word(args, i) = '-' then expand = 0

-  else call addval word(args, i)

-end

-

-/* Optionally enclose path variable by quotes */

-if mode = ';' & pos(' ', newval) > 0 then newval = '"' || newval || '"'

-

-/* Set the new value, 'SET' cannot be used since it does not allow '=' */

-x = value(envar, newval, env)

-exit 0

-

-addval: procedure expose sep equal orig expand newval mode env

-parse arg var

-

-if var = '.' then expvar = orig

-else do

-  if equal >= 0 then do

-    parse var var name '=' val

-    if val = '' then var = name

-    else var = val

-  end

-  if expand = 0 then expvar = var

-  else expvar = value(translate(var),,env)

-  if expvar = '' then expvar = var

-  if equal >= 0 then do

-    if val = '' then do

-      parse var expvar key '=' val

-      if val <> '' then name = key

-      else do

-        if equal > 0 then val = key

-        else name = key

-      end

-    end

-    else val = expvar

-    if pos(' ', val) > 0 | pos('=', val) > 0 then val = '"' || val || '"'

-    if val = '' then expvar = name

-    else expvar = name || '=' || val

-  end

-  if mode = '-D' then expvar = '-D' || expvar

-  if mode = ';' then do

-    if right(expvar, 1) <> ';' then expvar = expvar || ';'

-  end

-end

-

-if newval = '' then newval = expvar

-else newval = newval || sep || expvar

-expand = 1

-return

diff --git a/trunk/tools/bin/lcp.bat b/trunk/tools/bin/lcp.bat
deleted file mode 100644
index be2204c..0000000
--- a/trunk/tools/bin/lcp.bat
+++ /dev/null
@@ -1,28 +0,0 @@
-rem  Licensed to the Apache Software Foundation (ASF) under one or more

-rem  contributor license agreements.  See the NOTICE file distributed with

-rem  this work for additional information regarding copyright ownership.

-rem  The ASF licenses this file to You under the Apache License, Version 2.0

-rem  (the "License"); you may not use this file except in compliance with

-rem  the License.  You may obtain a copy of the License at

-rem

-rem      http://www.apache.org/licenses/LICENSE-2.0

-rem

-rem  Unless required by applicable law or agreed to in writing, software

-rem  distributed under the License is distributed on an "AS IS" BASIS,

-rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-rem  See the License for the specific language governing permissions and

-rem  limitations under the License.

-

-set _CLASSPATHCOMPONENT=%1

-if ""%1""=="""" goto gotAllArgs

-shift

-

-:argCheck

-if ""%1""=="""" goto gotAllArgs

-set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1

-shift

-goto argCheck

-

-:gotAllArgs

-set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH%

-

diff --git a/trunk/tools/bin/runant.pl b/trunk/tools/bin/runant.pl
deleted file mode 100644
index 5f8307a..0000000
--- a/trunk/tools/bin/runant.pl
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/perl
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-#
-#######################################################################
-#
-# runant.pl
-#
-# wrapper script for invoking ant in a platform with Perl installed
-# this may include cgi-bin invocation, which is considered somewhat daft.
-# (slo: that should be a separate file which can be derived from this
-# and returns the XML formatted output)
-#
-# the code is not totally portable due to classpath and directory splitting
-# issues. oops. (NB, use File::Spec::Functions  will help and the code is
-# structured for the catfile() call, but because of perl version funnies
-# the code is not included. 
-#
-# created:         2000-8-24
-# author:          Steve Loughran steve_l@sourceforge.net
-#######################################################################
-#
-# Assumptions:
-#
-# - the "java" executable/script is on the command path
-# - ANT_HOME has been set
-# - target platform uses ":" as classpath separator or perl indicates it is dos/win32
-# - target platform uses "/" as directory separator.
-
-#be fussy about variables
-use strict;
-
-#platform specifics (disabled)
-#use File::Spec::Functions;
-
-#turn warnings on during dev; generates a few spurious uninitialised var access warnings
-#use warnings;
-
-#and set $debug to 1 to turn on trace info
-my $debug=1;
-
-#######################################################################
-#
-# check to make sure environment is setup
-#
-
-my $HOME = $ENV{ANT_HOME};
-if ($HOME eq "")
-        {
-    die "\n\nANT_HOME *MUST* be set!\n\n";
-        }
-
-my $JAVACMD = $ENV{JAVACMD};
-$JAVACMD = "java" if $JAVACMD eq "";
-
-my $onnetware = 0;
-if ($^O eq "NetWare")
-{
-  $onnetware = 1;
-}
-
-my $oncygwin = ($^O eq "cygwin");
-
-#ISSUE: what java wants to split up classpath varies from platform to platform 
-#and perl is not too hot at hinting which box it is on.
-#here I assume ":" 'cept on win32, dos, and netware. Add extra tests here as needed.
-my $s=":";
-if(($^O eq "MSWin32") || ($^O eq "dos") || ($^O eq "cygwin") ||
-   ($onnetware == 1))
-        {
-        $s=";";
-        }
-
-#build up standard classpath
-my $localpath = "$HOME/lib/ant-launcher.jar";
-#set JVM options and Ant arguments, if any
-my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
-my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
-
-#jikes
-if($ENV{JIKESPATH} ne "")
-        {
-        push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
-        }
-
-#construct arguments to java
-my @ARGS;
-push @ARGS, @ANT_OPTS;
-
-my $CYGHOME = "";
-
-my $classpath=$ENV{CLASSPATH};
-if ($oncygwin == 1) {
-  $localpath = `cygpath --path --windows $localpath`;
-  chomp ($localpath);
-  if (! $classpath eq "")
-  {
-    $classpath = `cygpath --path --windows "$classpath"`;
-    chomp ($classpath);
-  }
-  $HOME = `cygpath --path --windows $HOME`;
-  chomp ($HOME);
-  $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
-  chomp ($CYGHOME);
-}
-push @ARGS, "-classpath", "$localpath";
-push @ARGS, "-Dant.home=$HOME";
-if ( ! $CYGHOME eq "" )
-{
-  push @ARGS, "-Dcygwin.user.home=\"$CYGHOME\""
-}
-push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
-push @ARGS, @ARGV;
-if (! $classpath eq "")
-{
-  if ($onnetware == 1)
-  {
-    # make classpath literally $CLASSPATH
-    # this is to avoid pushing us over the 512 character limit
-    # even skip the ; - that is already in $localpath
-    push @ARGS, "-lib", "\$CLASSPATH";
-  }
-  else
-  {
-    push @ARGS, "-lib", "$classpath";
-  }
-}
-print "\n $JAVACMD @ARGS\n\n" if ($debug);
-
-my $returnValue = system $JAVACMD, @ARGS;
-if ($returnValue eq 0)
-        {
-        exit 0;
-        }
-else
-        {
-        # only 0 and 1 are widely recognized as exit values
-        # so change the exit value to 1
-        exit 1;
-        }
diff --git a/trunk/tools/bin/runant.py b/trunk/tools/bin/runant.py
deleted file mode 100644
index 424ee8c..0000000
--- a/trunk/tools/bin/runant.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/python
-# Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You 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.
-#
-
-"""
-
- runant.py
-
-    This script is a translation of the runant.pl written by Steve Loughran.
-    It runs ant with/out arguments, it should be quite portable (thanks to
-    the python os library)
-    This script has been tested with Python2.0/Win2K
-
- created:         2001-04-11
- author:          Pierre Dittgen pierre.dittgen@criltelecom.com
-
- Assumptions:
-
- - the "java" executable/script is on the command path
-"""
-import os, os.path, string, sys
-
-# Change it to 1 to get extra debug information
-debug = 0
-
-#######################################################################
-
-# If ANT_HOME is not set default to script's parent directory
-if os.environ.has_key('ANT_HOME'):
-    ANT_HOME = os.environ['ANT_HOME']
-else:
-    ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
-
-# set ANT_LIB location
-ANT_LIB = os.path.join(ANT_HOME, 'lib')
-
-# set JAVACMD (check variables JAVACMD and JAVA_HOME)
-JAVACMD = None
-if not os.environ.has_key('JAVACMD'):
-    if os.environ.has_key('JAVA_HOME'):
-        if not os.path.exists(os.environ['JAVA_HOME']):
-            print "Warning: JAVA_HOME is not defined correctly."
-        else:
-            JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
-    else:
-        print "Warning: JAVA_HOME not set."
-else:
-    JAVACMD = os.environ['JAVACMD']
-if not JAVACMD:
-    JAVACMD = 'java'
-
-launcher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
-if not os.path.exists(launcher_jar):
-    print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
-        ANT_LIB
-
-# Build up standard classpath (LOCALCLASSPATH)
-LOCALCLASSPATH = launcher_jar
-if os.environ.has_key('LOCALCLASSPATH'):
-    LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
-
-ANT_OPTS = ""
-if os.environ.has_key('ANT_OPTS'):
-    ANT_OPTS = os.environ['ANT_OPTS']
-
-OPTS = ""
-if os.environ.has_key('JIKESPATH'):
-    OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
-
-ANT_ARGS = ""
-if os.environ.has_key('ANT_ARGS'):
-    ANT_ARGS = os.environ['ANT_ARGS']
-
-CLASSPATH = ""
-if os.environ.has_key('CLASSPATH'):
-    CLASSPATH = os.environ['CLASSPATH']
-
-# Builds the commandline
-cmdline = ('%s %s -classpath %s -Dant.home=%s %s ' + \
-    'org.apache.tools.ant.launch.Launcher %s -lib %s %s') \
-     % (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
-        CLASSPATH, string.join(sys.argv[1:], ' '))
-
-if debug:
-    print '\n%s\n\n' % (cmdline)
-
-# Run the biniou!
-os.system(cmdline)
diff --git a/trunk/tools/bin/runrc.cmd b/trunk/tools/bin/runrc.cmd
deleted file mode 100644
index 61d6264..0000000
--- a/trunk/tools/bin/runrc.cmd
+++ /dev/null
@@ -1,60 +0,0 @@
-/* 

-  Licensed to the Apache Software Foundation (ASF) under one or more

-  contributor license agreements.  See the NOTICE file distributed with

-  this work for additional information regarding copyright ownership.

-  The ASF licenses this file to You 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.

-

-    Run RC file, name is in the first arg, second arg is either PATH

-    ENV  or -r or nothing 

-*/

-

-parse arg name path rest

-

-if name = '' then do

-  say 'RC file name is missing'

-  exit 1

-end

-

-if rest \= '' then do

-  say 'Too many parameters'

-  exit 1

-end

-

-call runit name path

-exit 0

-

-runit: procedure

-parse arg name path dir

-

-if path \= '' & path \= '-r' then do

-  dir = value(translate(path),,'OS2ENVIRONMENT')

-  if dir = '' then return

-  dir = translate(dir, '\', '/') /* change UNIX-like path to OS/2 */

-end

-

-if dir = '' then dir = directory()

-

-if path = '-r' then do /* recursive call */

-  subdir = filespec('path', dir)

-  if subdir \= '\' then do

-    subdir = left(subdir, length(subdir)-1)

-    call runit name path filespec('drive', dir) || subdir

-  end

-end

-

-/* Look for the file and run it */

-if right(dir, 1) \= '\' then dir = dir || '\'

-rcfile = stream(dir || name, 'c', 'query exists')

-if rcfile \= '' then interpret 'call "' || rcfile || '"'

-

-return

diff --git a/trunk/tools/configure/README.txt b/trunk/tools/configure/README.txt
deleted file mode 100644
index d45d8aa..0000000
--- a/trunk/tools/configure/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains classes which are called by the configure process
-
-Build these classes (in case of an update) with
-
-./build.sh compile-configure
diff --git a/trunk/tools/configure/build.xml b/trunk/tools/configure/build.xml
deleted file mode 100644
index 16cd40a..0000000
--- a/trunk/tools/configure/build.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<project default="compile" name="lenya-configure">
-
-  <target name="compile" description="Compile java classes and create libs">
-    <echo>Hello Configure Build Tool. See README.txt</echo>
-  </target>
-</project>
diff --git a/trunk/tools/configure/lib/apache-lenya-configure-core-1.4-dev-r414579.jar b/trunk/tools/configure/lib/apache-lenya-configure-core-1.4-dev-r414579.jar
deleted file mode 100644
index 8085da5..0000000
--- a/trunk/tools/configure/lib/apache-lenya-configure-core-1.4-dev-r414579.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/configure/lib/apache-lenya-configure-impl-1.4-dev-r414579.jar b/trunk/tools/configure/lib/apache-lenya-configure-impl-1.4-dev-r414579.jar
deleted file mode 100644
index 7144ce0..0000000
--- a/trunk/tools/configure/lib/apache-lenya-configure-impl-1.4-dev-r414579.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/Configuration.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/Configuration.java
deleted file mode 100644
index 850ae3d..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/Configuration.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-/**
- * Configuration
- */
-abstract public class Configuration {
-
-    protected Parameter[] params;
-
-    /**
-     *
-     */
-    abstract public Parameter[] getParameters();
-
-    /**
-     *
-     */
-    abstract public Parameter[] getConfigurableParameters();
-
-    /**
-     *
-     */
-    public void setParameter(Parameter param) {
-        for (int i = 0; i < params.length; i++) {
-            if(param.getName().equals(params[i].getName())) {
-                params[i] = param;
-            }
-        }
-    }
-
-    /**
-     *
-     */
-    public Parameter getParameter(String name) {
-        for (int i = 0; i < params.length; i++) {
-            if(name.equals(params[i].getName())) {
-                return params[i];
-            }
-        }
-        return null;
-    }
-
-    /**
-     *
-     */
-    abstract public void readDefault();
-
-    /**
-     *
-     */
-    abstract public void readLocal();
-
-    /**
-     * Read default and local and combine the two of them
-     */
-    abstract public void read();
-
-    /**
-     *
-     */
-    abstract public String getVersionDefault();
-
-    /**
-     *
-     */
-    abstract public String getVersionLocal();
-
-    /**
-     *
-     */
-    abstract public void writeLocal();
-
-    /**
-     *
-     */
-    abstract public boolean localConfigExists();
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/ConfigureCommandLine.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/ConfigureCommandLine.java
deleted file mode 100644
index 4c5fce2..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/ConfigureCommandLine.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.Vector;
-
-import org.apache.lenya.config.core.Configuration;
-import org.apache.lenya.config.core.FileConfiguration;
-import org.apache.lenya.config.core.Parameter;
-import org.apache.lenya.config.impl.BuildPropertiesConfiguration;
-
-/**
- * A command line tool to configure Lenya build
- */
-abstract public class ConfigureCommandLine {
-
-    /**
-     *
-     */
-    static public void changeConfigurations(Vector configs) {
-
-        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-	for (int i = 0; i < configs.size(); i++) {
-            Configuration config = (Configuration) configs.elementAt(i);
-            config.read();
-
-            Parameter[] params = config.getConfigurableParameters();
-            readParameters(params, config);
-
-            if (config.localConfigExists()) {
-                System.out.println("\nWARNING: Local configuration already exists!");
-                System.out.print("Do you want to overwrite (y/N)? ");
-                try {
-                    String value = br.readLine();
-                    if (value.equals("y")) {
-                        config.writeLocal();
-                    } else {
-                        System.out.println("Local configuration has NOT been overwritten.");
-                    }
-                } catch (Exception e) {
-                    System.err.println(e.getMessage());
-                }
-            } else {
-                config.writeLocal();
-            }
-        }
-    }
-
-    /**
-     *
-     */
-    abstract public Vector setConfigurations(String rootDir);
-
-    /**
-     *
-     */
-    static public void readParameters(Parameter[] params, Configuration config) {
-        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-	    for (int k = 0; k < params.length; k++) {
-                try {
-                    boolean notOK = true;
-                    while (notOK) {
-                        System.out.println("\nParameter " + params[k].getName() + ":");
-                        System.out.println("  Default Value        : " + params[k].getDefaultValue());
-                        System.out.println("  Local Value          : " + params[k].getLocalValue());
-                        System.out.print  ("  New Local Value (d/L): ");
-
-                        // Read new value
-                        String newValue = br.readLine();
-                        if (newValue.equals("d")) {
-                            newValue = params[k].getDefaultValue();
-                        } else if (newValue.equals("L") || newValue.equals("")) {
-                            newValue = params[k].getLocalValue();
-                        }
-
-                        // Test entered value
-                        if (params[k].test(newValue)) {
-                            params[k].setLocalValue(newValue);
-                            notOK = false;
-                        } else {
-                            System.err.println("  WARNING: No such value available!");
-                            String[] aValues = params[k].getAvailableValues();
-                            System.err.print("           Available values: ");
-                            for (int j = 0; j < aValues.length; j++) {
-                                System.err.print(aValues[j] + " ");
-                            }
-                            System.err.println("");
-                            System.err.println("           Re-enter value ...");
-                        }
-                    }
-
-                    System.out.println("  Value entered        : " + params[k].getLocalValue());
-                    Parameter[] subParams = params[k].getSubsequentParameters(params[k].getLocalValue(), config);
-                    if (subParams != null) {
-                        String sp = "";
-	                for (int j = 0; j < subParams.length; j++) {
-                            sp = sp + subParams[j].getName();
-                            if (j != subParams.length -1) sp = sp + ", ";
-                        }
-                        System.out.println("  " + subParams.length + " Subsequent Params  : " + sp);
-                        readParameters(subParams, config);
-                    }
-                } catch (Exception e) {
-                    System.err.println(e.getMessage());
-                }
-                config.setParameter(params[k]);
-            }
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/ContextEventQueue.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/ContextEventQueue.java
deleted file mode 100644
index e915d24..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/ContextEventQueue.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-import java.awt.AWTEvent;
-import java.awt.Component;
-import java.awt.EventQueue;
-import java.awt.Point;
-import java.awt.Toolkit;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.Transferable;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.JPopupMenu;
-import javax.swing.MenuSelectionManager;
-import javax.swing.SwingUtilities;
-import javax.swing.text.JTextComponent;
-
-public class ContextEventQueue extends EventQueue {
-    
-    protected void dispatchEvent(AWTEvent event) {
-        super.dispatchEvent(event);
-        
-        if (!(event instanceof MouseEvent))
-            return;
-        
-        MouseEvent me = (MouseEvent) event;
-        
-        if (!me.isPopupTrigger())
-            return;
-        
-        Component comp = SwingUtilities.getDeepestComponentAt(
-                me.getComponent(), me.getX(), me.getY());
-        
-        if (!(comp instanceof JTextComponent))
-            return;
-        
-        if (MenuSelectionManager.defaultManager().getSelectedPath().length > 0)
-            return;
-        
-        JTextComponent tc = (JTextComponent) comp;
-        JPopupMenu menu = new JPopupMenu();
-        
-        menu.add(new CopyAction(tc));
-        menu.add(new CutAction(tc));
-        menu.add(new PasteAction(tc));
-        menu.addSeparator();
-        menu.add(new SelectAllAction(tc));
-        
-        
-        Point pt = SwingUtilities.convertPoint(me.getComponent(),
-                me.getPoint(), tc);
-        menu.show(tc, pt.x, pt.y);
-    }
-}
-
-class CutAction extends AbstractAction {
-    JTextComponent comp;
-    
-    public CutAction(JTextComponent comp) {
-        super("Cut");
-        this.comp = comp;
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        comp.cut();
-    }
-    
-    public boolean isEnabled() {
-        return comp.isEditable() && comp.isEnabled()
-        && comp.getSelectedText() != null;
-    }
-}
-
-class PasteAction extends AbstractAction {
-    JTextComponent comp;
-    
-    public PasteAction(JTextComponent comp) {
-        super("Paste");
-        this.comp = comp;
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        comp.paste();
-    }
-    
-    public boolean isEnabled() {
-        if (comp.isEditable() && comp.isEnabled()) {
-            Transferable contents = Toolkit.getDefaultToolkit()
-            .getSystemClipboard().getContents(this);
-            return contents.isDataFlavorSupported(DataFlavor.stringFlavor);
-        } else
-            return false;
-    }
-}
-
-class DeleteAction extends AbstractAction {
-    JTextComponent comp;
-    
-    public DeleteAction(JTextComponent comp) {
-        super("Delete");
-        this.comp = comp;
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        comp.replaceSelection(null);
-    }
-    
-    public boolean isEnabled() {
-        return comp.isEditable() && comp.isEnabled()
-        && comp.getSelectedText() != null;
-    }
-}
-
-class CopyAction extends AbstractAction {
-    JTextComponent comp;
-    
-    public CopyAction(JTextComponent comp) {
-        super("Copy");
-        this.comp = comp;
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        comp.copy();
-    }
-    
-    public boolean isEnabled() {
-        return comp.isEnabled() && comp.getSelectedText() != null;
-    }
-}
-
-class SelectAllAction extends AbstractAction {
-    JTextComponent comp;
-    
-    public SelectAllAction(JTextComponent comp) {
-        super("Select All");
-        this.comp = comp;
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        comp.selectAll();
-    }
-    
-    public boolean isEnabled() {
-        return comp.isEnabled() && comp.getText().length() > 0;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/FileConfiguration.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/FileConfiguration.java
deleted file mode 100644
index 2718537..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/FileConfiguration.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-import java.io.File;
-
-/**
- * File Configuration
- */
-abstract public class FileConfiguration extends Configuration {
-
-    private File filenameDefault;
-    private File filenameLocal;
-
-    /**
-     *
-     */
-    public File getFilenameDefault() {
-        return filenameDefault;
-    }
-
-    /**
-     *
-     */
-    public File getFilenameLocal() {
-        return filenameLocal;
-    }
-
-    /**
-     *
-     */
-    public void setFilenameDefault(String filename) {
-        this.filenameDefault = new File(filename);
-    }
-
-    /**
-     * @param String Filename
-     */
-    public void setFilenameLocal(String filename) {
-        this.filenameLocal = new File(filename);
-    }
-
-    /**
-     *
-     */
-    public boolean localConfigExists() {
-        if (getFilenameLocal().exists()) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/Parameter.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/Parameter.java
deleted file mode 100644
index b330f94..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/Parameter.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-/**
- * Parameter
- */
-public class Parameter {
-
-    private String name;
-    private String defaultValue;
-    private String localValue;
-
-    /**
-     *
-     */
-    public void setName(String name) { 
-        this.name = name;
-    }
-
-    /**
-     *
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     *
-     */
-    public void setDefaultValue(String value) { 
-        this.defaultValue = value;
-    }
-
-    /**
-     *
-     */
-    public String getDefaultValue() { 
-        return defaultValue;
-    }
-
-    /**
-     *
-     */
-    public void setLocalValue(String value) { 
-        this.localValue = value.trim();
-    }
-
-    /**
-     *
-     */
-    public String getLocalValue() { 
-        return localValue;
-    }
-
-    /**
-     *
-     */
-    public boolean test(String value) {
-        // No tests are being executed!
-        return true;
-    }
-
-    /**
-     *
-     */
-    public String[] getAvailableValues() {
-        return null;
-    }
-
-    /**
-     *
-     */
-    public Parameter[] getSubsequentParameters(String value, Configuration config) {
-        return null;
-    }
-
-    /**
-     *
-     */
-    public String toString() { 
-        return name + ":::" + defaultValue + ":::" + localValue;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/core/PropertiesConfiguration.java b/trunk/tools/configure/src/java/org/apache/lenya/config/core/PropertiesConfiguration.java
deleted file mode 100644
index 59e20d8..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/core/PropertiesConfiguration.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.core;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.PrintWriter;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
-
-/**
- * Properties Configuration
- */
-abstract public class PropertiesConfiguration extends FileConfiguration {
-
-    private Properties defaultProps;
-    private Properties localProps;
-
-    /**
-     *
-     */
-    public void readDefault() {
-        try {
-        defaultProps = new Properties();
-        defaultProps.load(new FileInputStream(getFilenameDefault()));
-        } catch (Exception e) {
-            System.err.println(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    public void readLocal() {
-        try {
-        localProps = new Properties();
-        localProps.load(new FileInputStream(getFilenameLocal()));
-        } catch (Exception e) {
-            System.err.println(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    public void writeLocal() {
-        String header = "Created by org.apache.lenya.config.PropertiesConfiguration";
-
-        try {
-        PrintWriter out = new PrintWriter(new FileOutputStream(getFilenameLocal()));
-        out.println("#" + header);
-        for (int i = 0; i < params.length; i++) {
-            out.println("\n#");
-            out.println(params[i].getName() + "=" + params[i].getLocalValue());
-        }
-        out.close();
-        } catch(Exception e) {
-            System.err.println(e.getMessage());
-        }
-
-/*
-        Properties newLocalProperties = new Properties();
-        for (int i = 0; i < params.length; i++) {
-            newLocalProperties.setProperty(params[i].getName(), params[i].getLocalValue());
-        }
-
-        try {
-            newLocalProperties.store(new FileOutputStream(getFilenameLocal()), header);
-        } catch(Exception e) {
-            System.err.println(e.getMessage());
-        }
-*/
-    }
-
-    /**
-     *
-     */
-    public void read() {
-        readDefault();
-        readLocal();
-
-        Vector p = new Vector();
-        Enumeration names = defaultProps.propertyNames();
-        while (names.hasMoreElements()) {
-            String name = (String) names.nextElement();
-            Parameter param = new Parameter();
-            param.setName(name);
-            param.setDefaultValue(defaultProps.getProperty(name));
-            String localValue = localProps.getProperty(name);
-            if (localValue != null) {
-                param.setLocalValue(localProps.getProperty(name));
-            } else {
-                param.setLocalValue(defaultProps.getProperty(name));
-            }
-            p.addElement(param);
-        }
-        params = new Parameter[p.size()];
-        for (int i = 0; i < params.length; i++) {
-            params[i] = (Parameter) p.elementAt(i);
-        }
-    }
-
-    /**
-     *
-     */
-    public Parameter[] getParameters() {
-        return params;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/BuildPropertiesConfiguration.java b/trunk/tools/configure/src/java/org/apache/lenya/config/impl/BuildPropertiesConfiguration.java
deleted file mode 100644
index 998b39e..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/BuildPropertiesConfiguration.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.impl;
-
-import java.io.FileInputStream;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
-
-import org.apache.lenya.config.core.Configuration;
-import org.apache.lenya.config.core.Parameter;
-import org.apache.lenya.config.core.PropertiesConfiguration;
-
-/**
- * Build Properties Configuration
- */
-public class BuildPropertiesConfiguration extends PropertiesConfiguration {
-
-    /**
-     *
-     */
-    public String getVersionDefault() {
-        return getParameter("build.properties.version").getDefaultValue();
-    }
-
-    /**
-     *
-     */
-    public String getVersionLocal() {
-        return getParameter("build.properties.version").getLocalValue();
-    }
-
-    /**
-     *
-     */
-    public Parameter[] getConfigurableParameters() {
-        Parameter[] p = new Parameter[6];
-
-        p[0] = getParameter("cocoon.src.dir");
-        p[1] = getParameter("pubs.root.dirs");
-        p[2] = getParameter("modules.root.dirs");
-
-        p[3] = new ServerParameter();
-	p[3].setName(getParameter("web.app.server").getName());
-	p[3].setDefaultValue(getParameter("web.app.server").getDefaultValue());
-	p[3].setLocalValue(getParameter("web.app.server").getLocalValue());
-
-        p[4] = getParameter("enable.uploads");
-        p[5] = getParameter("lenya.revision");
-        return p;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureCommandLine.java b/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureCommandLine.java
deleted file mode 100644
index 14cea5e..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureCommandLine.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.impl;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.Vector;
-
-import org.apache.lenya.config.core.Configuration;
-import org.apache.lenya.config.core.FileConfiguration;
-import org.apache.lenya.config.core.Parameter;
-
-/**
- * A command line tool to configure the Lenya build
- */
-public class ConfigureCommandLine extends org.apache.lenya.config.core.ConfigureCommandLine {
-
-    /**
-     * @param args Command line args
-     */
-    public static void main(String[] args) {
-        System.out.println("\nWelcome to the command line interface to configure the building process of Apache Lenya");
-
-        if (args.length != 1) {
-            System.err.println("No root dir specified (e.g. /home/USERNAME/src/lenya/trunk)!");
-            return;
-        }
-        String rootDir = args[0];
-
-        ConfigureCommandLine ccl = new ConfigureCommandLine();
-        Vector configs = ccl.setConfigurations(rootDir);
-        ccl.changeConfigurations(configs);
-    }
-
-    /**
-     *
-     */
-    public Vector setConfigurations(String rootDir) {
-        // Define all configuration files
-        FileConfiguration buildProperties = new BuildPropertiesConfiguration();
-        buildProperties.setFilenameDefault(rootDir + "/build.properties");
-        buildProperties.setFilenameLocal(rootDir + "/local.build.properties");
-
-        /*
-        FileConfiguration defaultPub = new PublicationConfiguration();
-        defaultPub.setFilenameDefault(rootDir + "src/pubs/default/config/publication.xml");
-        defaultPub.setFilenameLocal(rootDir + "src/pubs/default/config/local.publication.xml");
-        */
-
-        /*
-        FileConfiguration log4j = new Log4jConfiguration();
-        // src/confpatch/log4j-*
-        log4j.setFilenameDefault(rootDir + "src/webapp/WEB-INF/log4j.xconf");
-        log4j.setFilenameLocal(rootDir + "src/webapp/WEB-INF/local.log4j.xconf");
-        */
-
-	Vector configs = new Vector();
-        configs.addElement(buildProperties);
-        //configs.addElement(defaultPub);
-
-        return configs;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureGUI.java b/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureGUI.java
deleted file mode 100644
index c5b2ae4..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ConfigureGUI.java
+++ /dev/null
@@ -1,855 +0,0 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- *  contributor license agreements.  See the NOTICE file distributed with

- *  this work for additional information regarding copyright ownership.

- *  The ASF licenses this file to You 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.lenya.config.impl;

-

-import java.awt.Container;

-import java.awt.FlowLayout;

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.Insets;

-import java.awt.Toolkit;

-import java.awt.event.ActionEvent;

-import java.awt.event.ActionListener;

-import java.awt.event.MouseEvent;

-import java.awt.event.MouseListener;

-

-import javax.swing.BoxLayout;

-import javax.swing.ButtonGroup;

-import javax.swing.JButton;

-import javax.swing.JCheckBox;

-import javax.swing.JComboBox;

-import javax.swing.JFrame;

-import javax.swing.JLabel;

-import javax.swing.JOptionPane;

-import javax.swing.JPanel;

-import javax.swing.JRadioButton;

-import javax.swing.JTextField;

-import javax.swing.UIManager;

-

-import org.apache.lenya.config.core.FileConfiguration;

-import org.apache.lenya.config.core.ContextEventQueue;

-import org.apache.lenya.config.core.Parameter;

-

-/**

- * A GUI tool to configure the Lenya build

- */

-public class ConfigureGUI {

-

-    protected JFrame frame;

-    private JPanel contentPanel;

-    private JPanel checkBoxPanel;

-    private JPanel buttonPanel;

-    private JCheckBox[] checkBoxes;

-    private JLabel defaultValueLabel;

-    private JLabel localValueLabel;

-    private JLabel newLocalValueLabel;

-    private JLabel stepsLabel;

-    private JLabel paraValueLabel;

-    private JLabel warning1;

-    private JLabel warning2;

-    private JLabel saveMessage;

-    private JRadioButton radioButtonDefault;

-    private JRadioButton radioButtonLocal;

-    private JRadioButton radioButtonNewLocal;

-    private JTextField localValueTextField;

-    private JTextField defaultValueTextField;

-    private JTextField newLocalValueTextField;

-    private JTextField defaultValueCTextField;

-    private JTextField localValueCTextField;

-    private JComboBox newLocalValueComboBox;

-    private JButton cancelButton;

-    protected JButton backButton;

-    protected JButton nextButton;

-    private JButton saveButton;

-    private JButton yesButton;

-    private JButton noButton;

-    private JButton exitButton;

-    private Parameter[] params;

-    private Parameter[] tmpParams;

-    private Parameter[] tmpSubParams;

-    protected Parameter[] subParams;

-    private int steps = 0;

-    private String rootDir;

-    private SubParamsGUI spGui;

-    private FileConfiguration buildProperties;

-    protected FileConfiguration tmpBuildProperties;

-

-    /**

-     * Main method which creates the GUI

-     * 

-     * @param args

-     */

-    public static void main(String[] args) {

-

-        System.out

-                .println("\nWelcome to the GUI to configure the building process of Apache Lenya");

-

-        if (args.length != 1) {

-

-            System.err

-                    .println("No root dir specified (e.g. /home/USERNAME/src/lenya/trunk)!");

-            return;

-        }

-        String rootDir = args[0];

-

-        new ConfigureGUI(rootDir);

-    }

-

-    /**

-     * .ctor

-     * 

-     * @param rootDir

-     */

-    public ConfigureGUI(String rootDir) {

-

-        // pushes the eventQueue which will take care of copy/paste operations

-        Toolkit.getDefaultToolkit().getSystemEventQueue().push(

-                new ContextEventQueue());

-

-        this.rootDir = rootDir;

-        System.out.println("Starting GUI ...");

-

-        buildProperties = new BuildPropertiesConfiguration();

-        buildProperties.setFilenameDefault(rootDir + "/build.properties");

-        buildProperties.setFilenameLocal(rootDir + "/local.build.properties");

-

-        buildProperties.read();

-        params = buildProperties.getConfigurableParameters();

-

-        tmpBuildProperties = new BuildPropertiesConfiguration();

-        tmpBuildProperties.setFilenameDefault(rootDir + "/build.properties");

-        tmpBuildProperties

-                .setFilenameLocal(rootDir + "/local.build.properties");

-        tmpBuildProperties.read();

-        tmpParams = tmpBuildProperties.getConfigurableParameters();

-        // Empty temporary local fields of temporary parameters

-        for (int k = 0; k < tmpParams.length; k++) {

-            tmpParams[k].setLocalValue("");

-        }       

-

-        JFrame.setDefaultLookAndFeelDecorated(true);

-        try {

-            UIManager.setLookAndFeel(UIManager

-                    .getCrossPlatformLookAndFeelClassName());

-        } catch (Exception e) {

-            e.getMessage();

-        }

-

-        frame = new JFrame("Apache Lenya Configuration");

-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

-        frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));

-

-        contentPanel = new JPanel();

-        checkBoxPanel = new JPanel();

-        buttonPanel = new JPanel();

-

-        defaultValueLabel = new JLabel();

-        localValueLabel = new JLabel();

-        newLocalValueLabel = new JLabel();

-

-        defaultValueTextField = new JTextField(20);

-        localValueTextField = new JTextField(20);

-        newLocalValueTextField = new JTextField(20);

-

-        defaultValueCTextField = new JTextField();

-        localValueCTextField = new JTextField();

-        newLocalValueComboBox = new JComboBox();

-

-        radioButtonDefault = new JRadioButton();

-        radioButtonLocal = new JRadioButton();

-        radioButtonNewLocal = new JRadioButton();

-        ButtonGroup g = new ButtonGroup();

-

-        cancelButton = new JButton();

-        backButton = new JButton();

-        nextButton = new JButton();

-        saveButton = new JButton();

-        noButton = new JButton();

-        yesButton = new JButton();

-        exitButton = new JButton();

-

-        warning1 = new JLabel();

-        warning2 = new JLabel();

-

-        saveMessage = new JLabel();

-

-        Container contentPane = frame.getContentPane();

-        contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));

-

-        contentPanel.setLayout(new GridBagLayout());

-        GridBagConstraints c = new GridBagConstraints();

-

-        stepsLabel = new JLabel();

-        stepsLabel.setText("Parameters");

-        c.gridx = 0;

-        c.gridy = 0;

-        contentPanel.add(stepsLabel, c);

-

-        checkBoxPanel = new JPanel();

-        checkBoxPanel.setLayout(new BoxLayout(checkBoxPanel, BoxLayout.Y_AXIS));

-        c.gridx = 0;

-        c.gridy = 1;

-        c.gridheight = 4;

-        c.ipadx = 20;

-        contentPanel.add(checkBoxPanel, c);

-

-        checkBoxes = new JCheckBox[params.length];

-

-        for (int i = 0; i < params.length; ++i) {

-            checkBoxes[i] = new JCheckBox();

-            checkBoxes[i].setEnabled(false);

-            checkBoxes[i].setText(params[i].getName());

-            checkBoxes[0].setSelected(true);

-            checkBoxPanel.add(checkBoxes[i]);

-        }

-

-        c.gridx = 1;

-        c.gridy = 0;

-        c.gridwidth = 1;

-        c.gridheight = 1;

-        paraValueLabel = new JLabel(params[0].getName());

-        contentPanel.add(paraValueLabel, c);

-

-        defaultValueLabel.setText("Default Value:");

-        contentPanel.add(defaultValueLabel, new GridBagConstraints(1, 1, 1, 1,

-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        contentPanel.add(defaultValueTextField, new GridBagConstraints(2, 1, 1,

-                1, 0.0, 0.0, GridBagConstraints.CENTER,

-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-        defaultValueTextField.setText(params[0].getDefaultValue());

-        defaultValueTextField.setEditable(false);

-        defaultValueTextField.addMouseListener(new MouseListener() {

-

-            public void mouseClicked(MouseEvent event) {

-                radioButtonDefault.setSelected(true);

-            }

-

-            public void mousePressed(MouseEvent event) {

-            }

-

-            public void mouseReleased(MouseEvent event) {

-            }

-

-            public void mouseEntered(MouseEvent event) {

-            }

-

-            public void mouseExited(MouseEvent event) {

-            }

-        });

-

-        contentPanel.add(radioButtonDefault, new GridBagConstraints(3, 1, 1, 1,

-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        g.add(radioButtonDefault);

-

-        localValueLabel.setText("Local Value:");

-        contentPanel.add(localValueLabel, new GridBagConstraints(1, 2, 1, 1,

-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        contentPanel.add(localValueTextField, new GridBagConstraints(2, 2, 1,

-                1, 0.0, 0.0, GridBagConstraints.CENTER,

-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-        localValueTextField.setText(params[0].getLocalValue());

-        localValueTextField.setEditable(false);

-        localValueTextField.addMouseListener(new MouseListener() {

-

-            public void mouseClicked(MouseEvent event) {

-            }

-

-            public void mousePressed(MouseEvent event) {

-                radioButtonLocal.setSelected(true);

-            }

-

-            public void mouseReleased(MouseEvent event) {

-            }

-

-            public void mouseEntered(MouseEvent event) {

-            }

-

-            public void mouseExited(MouseEvent event) {

-            }

-        });

-

-        contentPanel.add(radioButtonLocal, new GridBagConstraints(3, 2, 1, 1,

-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        g.add(radioButtonLocal);

-        radioButtonLocal.setSelected(true);

-

-        newLocalValueLabel.setText("New Local Value:");

-        contentPanel.add(newLocalValueLabel, new GridBagConstraints(1, 3, 1, 1,

-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        contentPanel.add(newLocalValueTextField, new GridBagConstraints(2, 3,

-                1, 1, 0.0, 0.0, GridBagConstraints.CENTER,

-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-        newLocalValueTextField.addMouseListener(new MouseListener() {

-

-            public void mouseClicked(MouseEvent event) {

-            }

-

-            public void mousePressed(MouseEvent event) {

-                radioButtonNewLocal.setSelected(true);

-            }

-

-            public void mouseEntered(MouseEvent event) {

-            }

-

-            public void mouseExited(MouseEvent event) {

-            }

-

-            public void mouseReleased(MouseEvent event) {

-            }

-        });

-

-        contentPanel.add(radioButtonNewLocal, new GridBagConstraints(3, 3, 1,

-                1, 0.0, 0.0, GridBagConstraints.CENTER,

-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-        g.add(radioButtonNewLocal);

-

-        buttonPanel = new JPanel();

-        buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));

-

-        cancelButton.setText("Cancel");

-        cancelButton.setPreferredSize(new java.awt.Dimension(74, 22));

-        cancelButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent evt) {

-

-                int n = JOptionPane

-                        .showConfirmDialog(contentPanel,

-                                "Do you want to Exit?", "Exit...",

-                                JOptionPane.YES_NO_OPTION,

-                                JOptionPane.QUESTION_MESSAGE);

-

-                if (n == JOptionPane.YES_OPTION) {

-                    System.exit(0);

-                }

-            }

-        });

-

-        backButton.setText("<Back");

-        backButton.setPreferredSize(new java.awt.Dimension(74, 22));

-        backButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent e) {

-                backButton.setEnabled(true);

-                if (contentPanel.isVisible())

-                    backButton.setEnabled(true);

-                if (getStep() != params.length) {

-                    saveButton.setVisible(false);

-                }

-                moveBack();

-            }

-        });

-

-        backButton.setEnabled(false);

-

-        nextButton.setText("Next>");

-        nextButton.setPreferredSize(new java.awt.Dimension(74, 22));

-        nextButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent e) {

-                backButton.setEnabled(true);

-                if (contentPanel.isVisible())

-                    nextButton.setEnabled(true);

-                moveNext();

-            }

-        });

-

-        buttonPanel.add(cancelButton);

-        buttonPanel.add(backButton);

-        buttonPanel.add(nextButton);

-

-        contentPanel.add(buttonPanel, new GridBagConstraints(1, 4, 6, 0, 0.0,

-                0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,

-                new Insets(0, 0, 0, 0), 0, 0));

-        contentPane.add(contentPanel);

-        contentPanel.revalidate();

-        frame.pack();

-        frame.setVisible(true);

-    }

-

-    /**

-     * Controls behavior if back button is pressed

-     */

-    public void moveBack() {

-        steps--;

-        frame.repaint();

-        nextButton.setVisible(true);

-        checkFirst();

-        currentStep("down");

-        showNormalOptions();

-        comboBox();

-        checkLast();

-        newLocalValueTextField.setText(tmpParams[getStep()].getLocalValue());

-        setRadioButton();

-    }

-

-    /**

-     * Controls behavior if next button is pressed

-     */

-    public void moveNext() {

-

-        setLocalValue();

-        String[] av = params[getStep()].getAvailableValues();

-

-        if (av != null) {

-

-            String selectedComboBoxValue = "";

-            // Grab the correct value out of the combobox

-            if (radioButtonDefault.isSelected())

-                selectedComboBoxValue = defaultValueCTextField.getText();

-            if (radioButtonLocal.isSelected())

-                selectedComboBoxValue = localValueCTextField.getText();

-            if (radioButtonNewLocal.isSelected())

-                selectedComboBoxValue = newLocalValueComboBox.getSelectedItem()

-                        .toString();

-

-            subParams = params[getStep()].getSubsequentParameters(

-                    selectedComboBoxValue, buildProperties);

-            tmpSubParams = params[getStep()].getSubsequentParameters(

-                    selectedComboBoxValue, tmpBuildProperties);

-

-            spGui = new SubParamsGUI(this, tmpSubParams, subParams,

-                    selectedComboBoxValue);

-        }

-

-        steps++;

-        frame.repaint();

-        checkFirst();

-        currentStep("up");

-        showNormalOptions();

-        comboBox();

-        checkLast();

-        newLocalValueTextField.setText(tmpParams[getStep()].getLocalValue());

-        setRadioButton();

-    }

-

-    /**

-     * Set radio button

-     */

-    public void setRadioButton() {

-        if (tmpParams[getStep()].getLocalValue() != "") {

-            radioButtonNewLocal.setSelected(true);

-        } else if (params[getStep()].getLocalValue() != "") {

-            radioButtonLocal.setSelected(true);

-        } else {

-            radioButtonDefault.setSelected(true);

-        }

-    }

-

-    /**

-     * Set local value depending on chosen value

-     */

-    public void setLocalValue() {

-        String[] av = params[getStep()].getAvailableValues();

-

-        if (av == null) {

-            if (radioButtonDefault.isSelected()) {

-                tmpParams[getStep()].setLocalValue(defaultValueTextField

-                        .getText());

-            } else if (radioButtonLocal.isSelected()) {

-                tmpParams[getStep()].setLocalValue(localValueTextField

-                        .getText());

-            } else if (radioButtonNewLocal.isSelected()) {

-                tmpParams[getStep()].setLocalValue(newLocalValueTextField

-                        .getText());

-            } else {

-                System.err.println("Fatal Error 0123456789!");

-            }

-        }

-    }

-

-    /**

-     * Takes care about the steps progress (list on left side)

-     * 

-     * @param direction

-     */

-    public void currentStep(String direction) {

-        if (direction.equals("up")) {

-            for (int i = 1; i <= getStep(); ++i) {

-                checkBoxes[i].setSelected(true);

-            }

-        }

-        if (direction.equals("down")) {

-            checkBoxes[getStep() + 1].setSelected(false);

-        }

-    }

-

-    /**

-     * Checks if its first step and disables the back button

-     */

-    public void checkFirst() {

-

-        if (getStep() == 0) {

-            backButton.setEnabled(false);

-        } else {

-            backButton.setEnabled(true);

-        }

-    }

-

-    /**

-     * Checks if its last step and disables next button but adding a save button

-     */

-    public void checkLast() {

-        saveButton = new JButton("Save");

-

-        warning1 = new JLabel("WARNING: Local configuration already exists!");

-        warning2 = new JLabel("Do you want to overwrite?");

-        if (getStep() == params.length - 1) {

-            nextButton.setEnabled(false);

-            nextButton.setVisible(false);

-

-            buttonPanel.add(saveButton);

-            contentPanel.revalidate();

-

-            saveButton.setPreferredSize(new java.awt.Dimension(74, 22));

-            saveButton.addActionListener(new ActionListener() {

-

-                public void actionPerformed(ActionEvent e) {

-                    setLocalValue();

-                    showSaveScreen();

-                    showWarningScreen();

-                }

-            });

-

-        } else {

-            nextButton.setEnabled(true);

-            warning1.setVisible(false);

-            warning2.setVisible(false);

-

-            if (spGui != null && spGui.subFrame.isVisible()) {

-                frame.setEnabled(false);

-            }

-        }

-    }

-

-    /**

-     * Shows the normal options (paramaters)

-     */

-    public void showNormalOptions() {

-

-        if (getStep() < params.length) {

-            defaultValueTextField.setText(params[getStep()].getDefaultValue());

-            localValueTextField.setText(params[getStep()].getLocalValue());

-            paraValueLabel.setText(params[getStep()].getName());

-            frame.pack();

-        }

-    }

-

-    /**

-     * Shows the save screen

-     */

-    private void showSaveScreen() {

-

-        paraValueLabel.setVisible(false);

-        defaultValueLabel.setVisible(false);

-        localValueLabel.setVisible(false);

-        newLocalValueLabel.setVisible(false);

-

-        defaultValueTextField.setVisible(false);

-        localValueTextField.setVisible(false);

-        newLocalValueTextField.setVisible(false);

-

-        radioButtonDefault.setVisible(false);

-        radioButtonLocal.setVisible(false);

-        radioButtonNewLocal.setVisible(false);

-        cancelButton.setVisible(false);

-        nextButton.setVisible(false);

-        backButton.setVisible(false);

-        saveButton.setVisible(false);

-

-        yesButton.setVisible(true);

-        noButton.setVisible(true);

-

-        warning1.setVisible(true);

-        warning2.setVisible(true);

-    }

-

-    /**

-     * Shows the Warning screen

-     */

-    private void showWarningScreen() {

-        contentPanel.add(warning1, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,

-                GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(

-                        0, 0, 0, 0), 0, 0));

-        contentPanel.add(warning2, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0,

-                GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(

-                        0, 0, 0, 0), 0, 0));

-        yesButton.setText("yes");

-        buttonPanel.add(yesButton);

-        yesButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent e) {

-

-                showYesScreen();

-

-            }

-        });

-

-        noButton.setText("no");

-        buttonPanel.add(noButton);

-        noButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent e) {

-

-                showNoScreen();

-

-            }

-        });

-    }

-

-    /**

-     * Screen if Yes is pressed

-     */

-    private void showYesScreen() {

-

-        // TODO: Why doesn't it work with the reference only?

-        for (int k = 0; k < tmpParams.length; k++) {

-            tmpBuildProperties.setParameter(tmpParams[k]);

-        }

-        tmpBuildProperties.writeLocal();

-

-        saveMessage.setText("Successful saved to: " + rootDir

-                + "/local.build.properties");

-        contentPanel.add(saveMessage, new GridBagConstraints(2, 2, 1, 1, 0.0,

-                0.0, GridBagConstraints.SOUTH, GridBagConstraints.PAGE_END,

-                new Insets(0, 0, 0, 0), 0, 0));

-        saveMessage.setVisible(true);

-

-        yesButton.setVisible(false);

-        noButton.setVisible(false);

-        warning1.setVisible(false);

-        warning2.setVisible(false);

-        exitButton.setPreferredSize(new java.awt.Dimension(74, 22));

-        exitButton.setText("Exit");

-        contentPanel.add(exitButton, new GridBagConstraints(2, 3, 1, 1, 0.0,

-                0.0, GridBagConstraints.SOUTH, GridBagConstraints.PAGE_END,

-                new Insets(0, 0, 0, 0), 0, 0));

-        exitButton.addActionListener(new ActionListener() {

-

-            public void actionPerformed(ActionEvent evt) {

-

-                System.exit(0);

-            }

-        });

-

-        contentPanel.revalidate();

-        contentPanel.repaint();

-        frame.pack();

-    }

-

-    /**

-     * Screen if No is pressed

-     */

-    private void showNoScreen() {

-

-        saveMessage.setVisible(false);

-        paraValueLabel.setVisible(true);

-        defaultValueLabel.setVisible(true);

-        localValueLabel.setVisible(true);

-        newLocalValueLabel.setVisible(true);

-        defaultValueTextField.setVisible(true);

-        localValueTextField.setVisible(true);

-        newLocalValueTextField.setVisible(true);

-

-        radioButtonDefault.setVisible(true);

-        radioButtonLocal.setVisible(true);

-        radioButtonNewLocal.setVisible(true);

-        cancelButton.setVisible(true);

-        nextButton.setVisible(false);

-

-        backButton.setVisible(true);

-        saveButton.setVisible(true);

-

-        yesButton.setVisible(false);

-        noButton.setVisible(false);

-

-        saveMessage.setVisible(false);

-        frame.pack();

-    }

-

-    /**

-     * Method to create the Comboboxes

-     */

-    public void comboBox() {

-        String[] availableValues = params[getStep()].getAvailableValues();

-

-        if (availableValues != null && availableValues.length > 0) {

-

-            defaultValueTextField.setVisible(false);

-            localValueTextField.setVisible(false);

-            newLocalValueTextField.setVisible(false);

-

-            // TODO: not nice solved, we need to exclude subParams without

-            // Values like WLS

-            String[] labels = new String[availableValues.length - 1];

-            for (int i = 0; i < availableValues.length; i++) {

-                if (availableValues[i].equals("WLS")) {

-                    continue;

-                }

-                labels[i] = availableValues[i];

-            }

-

-            defaultValueCTextField = new JTextField(params[getStep()]

-                    .getDefaultValue());

-            defaultValueCTextField.setPreferredSize(new java.awt.Dimension(204,

-                    22));

-            defaultValueCTextField.setEditable(false);

-

-            // MouseListener takes care to place radio button

-            defaultValueCTextField.addMouseListener(new MouseListener() {

-

-                public void mouseClicked(MouseEvent event) {

-                    radioButtonDefault.setSelected(true);

-                }

-

-                public void mousePressed(MouseEvent event) {

-                }

-

-                public void mouseReleased(MouseEvent event) {

-                }

-

-                public void mouseEntered(MouseEvent event) {

-                }

-

-                public void mouseExited(MouseEvent event) {

-                }

-

-            });

-            // ActionListener which looks what is selected in the Dropdown list

-            defaultValueCTextField.addActionListener(new ActionListener() {

-

-                public void actionPerformed(ActionEvent event) {

-                    JComboBox cb = (JComboBox) event.getSource();

-                    tmpParams[getStep()].setLocalValue(cb.getSelectedItem()

-                            .toString());

-                    subParams = params[getStep()].getSubsequentParameters(cb

-                            .getSelectedItem().toString(), tmpBuildProperties);

-                }

-            });

-

-            contentPanel.add(defaultValueCTextField, new GridBagConstraints(2,

-                    1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,

-                    GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-

-            localValueCTextField = new JTextField(params[getStep()]

-                    .getLocalValue());

-            localValueCTextField.setPreferredSize(new java.awt.Dimension(204,

-                    22));

-            localValueCTextField.setEditable(false);

-

-            localValueCTextField.addMouseListener(new MouseListener() {

-

-                public void mouseClicked(MouseEvent event) {

-                    radioButtonLocal.setSelected(true);

-                }

-

-                public void mousePressed(MouseEvent event) {

-                }

-

-                public void mouseReleased(MouseEvent event) {

-                }

-

-                public void mouseEntered(MouseEvent event) {

-                }

-

-                public void mouseExited(MouseEvent event) {

-                }

-            });

-            // ActionListener which looks what is selected in the Dropdown list

-            localValueCTextField.addActionListener(new ActionListener() {

-

-                public void actionPerformed(ActionEvent event) {

-                    JComboBox cb = (JComboBox) event.getSource();

-                    tmpParams[getStep()].setLocalValue(cb.getSelectedItem()

-                            .toString());

-                    subParams = params[getStep()].getSubsequentParameters(cb

-                            .getSelectedItem().toString(), tmpBuildProperties);

-                }

-            });

-            contentPanel.add(localValueCTextField, new GridBagConstraints(2, 2,

-                    1, 1, 0.0, 0.0, GridBagConstraints.CENTER,

-                    GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-

-            newLocalValueComboBox = new JComboBox(labels);

-            newLocalValueComboBox.setSelectedItem(tmpParams[getStep()].getLocalValue());

-

-            newLocalValueComboBox.addMouseListener(new MouseListener() {

-

-                public void mouseClicked(MouseEvent event) {

-                    radioButtonNewLocal.setSelected(true);

-                }

-

-                public void mousePressed(MouseEvent event) {

-                }

-

-                public void mouseEntered(MouseEvent event) {

-                }

-

-                public void mouseExited(MouseEvent event) {

-                }

-

-                public void mouseReleased(MouseEvent event) {

-                }

-            });

-            // ActionListener which looks what is selected in the Dropdown list

-            newLocalValueComboBox.addActionListener(new ActionListener() {

-

-                public void actionPerformed(ActionEvent event) {

-                    JComboBox cb = (JComboBox) event.getSource();

-                    tmpParams[getStep()].setLocalValue(cb.getSelectedItem()

-                            .toString());

-                    subParams = params[getStep()].getSubsequentParameters(cb

-                            .getSelectedItem().toString(), tmpBuildProperties);

-                }

-            });

-            newLocalValueComboBox.setMaximumRowCount(availableValues.length);

-            newLocalValueComboBox.setPreferredSize(new java.awt.Dimension(204,

-                    22));

-            contentPanel.add(newLocalValueComboBox, new GridBagConstraints(2,

-                    3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,

-                    GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

-

-            contentPanel.revalidate();

-        } else {

-            defaultValueCTextField.setVisible(false);

-            localValueCTextField.setVisible(false);

-            newLocalValueComboBox.setVisible(false);

-            defaultValueTextField.setVisible(true);

-            localValueTextField.setVisible(true);

-            newLocalValueTextField.setVisible(true);

-

-            warning1.setVisible(false);

-            warning2.setVisible(false);

-        }

-        frame.pack();

-    }

-

-    /**

-     * Returns the current step

-     * 

-     * @return steps

-     */

-    public int getStep() {

-        return steps;

-    }

-}

diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ServerParameter.java b/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ServerParameter.java
deleted file mode 100644
index 8a460e2..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/ServerParameter.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You 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.lenya.config.impl;
-
-import org.apache.lenya.config.core.Configuration;
-import org.apache.lenya.config.core.Parameter;
-
-/**
- * Server Parameter web.app.server
- */
-public class ServerParameter extends Parameter {
-
-    /**
-     *
-     */
-    public boolean test(String value) {
-        if (value.equals("Jetty") || value.equals("Tomcat") || value.equals("WLS")) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     *
-     */
-    public String[] getAvailableValues() {
-        String[] aValues = new String[3];
-        aValues[0] = "Jetty";
-        aValues[1] = "Tomcat";
-        aValues[2] = "WLS";
-        return aValues;
-    }
-
-    /**
-     *
-     */
-    public Parameter[] getSubsequentParameters(String value, Configuration config) {
-        if (value.equals("Jetty")) {
-            Parameter[] p = new Parameter[2];
-            p[0] = config.getParameter("web.app.server.jetty.port");
-            p[1] = config.getParameter("web.app.server.jetty.admin.port");
-            return p;
-        } else if (value.equals("Tomcat")) {
-            Parameter[] p = new Parameter[4];
-            p[0] = config.getParameter("tomcat.home.dir");
-            p[1] = config.getParameter("tomcat.webapps.dir");
-            p[2] = config.getParameter("tomcat.cache.dir");
-            p[3] = config.getParameter("tomcat.endorsed.dir");
-            return p;
-        }
-        return null;
-    }
-}
diff --git a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/SubParamsGUI.java b/trunk/tools/configure/src/java/org/apache/lenya/config/impl/SubParamsGUI.java
deleted file mode 100644
index 338e80d..0000000
--- a/trunk/tools/configure/src/java/org/apache/lenya/config/impl/SubParamsGUI.java
+++ /dev/null
@@ -1,468 +0,0 @@
-package org.apache.lenya.config.impl;
-
-import java.awt.Container;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-
-import javax.swing.BoxLayout;
-import javax.swing.ButtonGroup;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JTextField;
-
-import org.apache.lenya.config.core.ContextEventQueue;
-import org.apache.lenya.config.core.Parameter;
-
-public class SubParamsGUI {
-
-    private ConfigureGUI cGui;
-    protected JButton nextSubButton;
-    protected JFrame subFrame;
-    private JPanel contentPanel;
-    private JPanel checkBoxPanel;
-    private JPanel buttonPanel;
-    private JLabel defaultValueLabel;
-    private JLabel localValueLabel;
-    private JLabel newLocalValueLabel;
-    private JLabel stepsLabel;
-    private JTextField defaultValueTextField;
-    private JTextField localValueTextField;
-    private JTextField newLocalValueTextField;
-    private JRadioButton radioButtonDefault;
-    private JRadioButton radioButtonLocal;
-    private JRadioButton radioButtonNewLocal;
-    private JButton closeButton;
-    private JButton backButton;
-    private JButton nextButton;
-    private JButton doneButton;
-    protected JCheckBox[] checkBoxes;
-    private JLabel paraValueLabel;
-    private Parameter[] subParams;
-    private Parameter[] tmpSubParams;
-    private String selectedComboBoxValue;
-    int steps = 0;
-
-    /**
-     * 
-     * @param cGui
-     * @param tmpSubParams
-     * @param subParams
-     */
-    public SubParamsGUI(ConfigureGUI cGui, Parameter[] tmpSubParams,
-            Parameter[] subParams, String selectedComboBoxValue) {
-
-        this.cGui = cGui;
-        this.subParams = subParams;
-        this.tmpSubParams = tmpSubParams;
-        this.selectedComboBoxValue = selectedComboBoxValue;
-        
-        // clearing the second temporary array
-        for (int i = 0; i < tmpSubParams.length; i++) {
-            tmpSubParams[i].setLocalValue("");
-        }
-        createSubParamsGui();
-    }
-
-    public void createSubParamsGui() {
-
-        Toolkit.getDefaultToolkit().getSystemEventQueue().push(
-                new ContextEventQueue());
-
-        subFrame = new JFrame("Apache Subparameter \"" + selectedComboBoxValue
-                + "\" Configuration");
-        subFrame.setLocation(cGui.frame.getX() + 0, cGui.frame.getY() + 0);
-
-        contentPanel = new JPanel();
-        checkBoxPanel = new JPanel();
-        buttonPanel = new JPanel();
-
-        defaultValueLabel = new JLabel();
-        localValueLabel = new JLabel();
-        newLocalValueLabel = new JLabel();
-
-        defaultValueTextField = new JTextField(20);
-        localValueTextField = new JTextField(20);
-        newLocalValueTextField = new JTextField(20);
-
-        radioButtonDefault = new JRadioButton();
-        radioButtonLocal = new JRadioButton();
-        radioButtonNewLocal = new JRadioButton();
-        ButtonGroup g = new ButtonGroup();
-
-        closeButton = new JButton();
-        backButton = new JButton();
-        nextButton = new JButton();
-        doneButton = new JButton();
-
-        Container contentPane = subFrame.getContentPane();
-        contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));
-
-        contentPanel.setLayout(new GridBagLayout());
-        GridBagConstraints c = new GridBagConstraints();
-
-        stepsLabel = new JLabel();
-        stepsLabel.setText("Parameters  ");
-        c.gridx = 0;
-        c.gridy = 0;
-        contentPanel.add(stepsLabel, c);
-
-        checkBoxPanel = new JPanel();
-        checkBoxPanel.setLayout(new BoxLayout(checkBoxPanel, BoxLayout.Y_AXIS));
-        c.gridx = 0;
-        c.gridy = 1;
-        c.gridheight = 4;
-        c.ipadx = 20;
-        contentPanel.add(checkBoxPanel, c);
-
-        checkBoxes = new JCheckBox[subParams.length];
-
-        for (int i = 0; i < subParams.length; ++i) {
-            checkBoxes[i] = new JCheckBox();
-            checkBoxes[i].setEnabled(false);
-            checkBoxes[i].setText(subParams[i].getName());
-            checkBoxes[0].setSelected(true);
-            checkBoxPanel.add(checkBoxes[i]);
-        }
-
-        c.gridx = 1;
-        c.gridy = 0;
-        c.gridwidth = 1;
-        c.gridheight = 1;
-        paraValueLabel = new JLabel(subParams[0].getName());
-        paraValueLabel.repaint();
-        contentPanel.add(paraValueLabel, c);
-
-        defaultValueLabel.setText("Default Value:");
-        contentPanel.add(defaultValueLabel, new GridBagConstraints(1, 1, 1, 1,
-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-        contentPanel.add(defaultValueTextField, new GridBagConstraints(2, 1, 1,
-                1, 0.0, 0.0, GridBagConstraints.CENTER,
-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
-        defaultValueTextField.setText(subParams[0].getDefaultValue());
-        defaultValueTextField.setEditable(false);
-        defaultValueTextField.addMouseListener(new MouseListener() {
-
-            public void mouseClicked(MouseEvent event) {
-                radioButtonDefault.setSelected(true);
-            }
-
-            public void mousePressed(MouseEvent event) {
-            }
-
-            public void mouseReleased(MouseEvent event) {
-            }
-
-            public void mouseEntered(MouseEvent event) {
-            }
-
-            public void mouseExited(MouseEvent event) {
-            }
-        });
-
-        contentPanel.add(radioButtonDefault, new GridBagConstraints(3, 1, 1, 1,
-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-        g.add(radioButtonDefault);
-
-        localValueLabel.setText("Local Value:");
-        contentPanel.add(localValueLabel, new GridBagConstraints(1, 2, 1, 1,
-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-        contentPanel.add(localValueTextField, new GridBagConstraints(2, 2, 1,
-                1, 0.0, 0.0, GridBagConstraints.CENTER,
-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
-        localValueTextField.setText(subParams[0].getLocalValue());
-        localValueTextField.setEditable(false);
-        localValueTextField.addMouseListener(new MouseListener() {
-
-            public void mouseClicked(MouseEvent event) {
-            }
-
-            public void mousePressed(MouseEvent event) {
-                radioButtonLocal.setSelected(true);
-            }
-
-            public void mouseReleased(MouseEvent event) {
-            }
-
-            public void mouseEntered(MouseEvent event) {
-            }
-
-            public void mouseExited(MouseEvent event) {
-            }
-        });
-
-        contentPanel.add(radioButtonLocal, new GridBagConstraints(3, 2, 1, 1,
-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-        g.add(radioButtonLocal);
-        radioButtonLocal.setSelected(true);
-
-        newLocalValueLabel.setText("New Local Value:");
-        contentPanel.add(newLocalValueLabel, new GridBagConstraints(1, 3, 1, 1,
-                0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-        contentPanel.add(newLocalValueTextField, new GridBagConstraints(2, 3,
-                1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
-        newLocalValueTextField.addMouseListener(new MouseListener() {
-
-            public void mouseClicked(MouseEvent event) {
-            }
-
-            public void mousePressed(MouseEvent event) {
-                radioButtonNewLocal.setSelected(true);
-            }
-
-            public void mouseEntered(MouseEvent event) {
-            }
-
-            public void mouseExited(MouseEvent event) {
-            }
-
-            public void mouseReleased(MouseEvent event) {
-            }
-        });
-
-        contentPanel.add(radioButtonNewLocal, new GridBagConstraints(3, 3, 1,
-                1, 0.0, 0.0, GridBagConstraints.CENTER,
-                GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
-        g.add(radioButtonNewLocal);
-
-        buttonPanel = new JPanel();
-        buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
-
-        closeButton.setText("Close");
-        closeButton.setPreferredSize(new java.awt.Dimension(74, 22));
-        closeButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent evt) {
-                subFrame.setVisible(false);
-                cGui.frame.setEnabled(true);
-                cGui.frame.setVisible(true);
-            }
-        });
-
-        backButton.setText("<Back");
-        backButton.setPreferredSize(new java.awt.Dimension(74, 22));
-        backButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                moveBack();
-            }
-        });
-
-        backButton.setEnabled(false);
-
-        nextButton.setText("Next>");
-        nextButton.setPreferredSize(new java.awt.Dimension(74, 22));
-        nextButton.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-
-                backButton.setEnabled(true);
-                if (contentPanel.isVisible())
-                    nextButton.setEnabled(true);
-                moveNext();
-            }
-        });
-
-        buttonPanel.add(closeButton);
-        buttonPanel.add(backButton);
-        buttonPanel.add(nextButton);
-
-        contentPanel.add(buttonPanel, new GridBagConstraints(1, 4, 6, 0, 0.0,
-                0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
-                new Insets(0, 0, 0, 0), 0, 0));
-
-        subFrame.addWindowListener(new WindowListener() {
-
-            public void windowOpened(WindowEvent e) {
-            }
-
-            public void windowClosing(WindowEvent e) {
-                cGui.frame.setEnabled(true);
-            }
-
-            public void windowClosed(WindowEvent e) {
-                cGui.frame.setEnabled(true);
-            }
-
-            public void windowIconified(WindowEvent e) {
-            }
-
-            public void windowDeiconified(WindowEvent e) {
-            }
-
-            public void windowActivated(WindowEvent e) {
-            }
-
-            public void windowDeactivated(WindowEvent e) {
-            }
-        });
-
-        contentPane.add(contentPanel);
-        contentPanel.revalidate();
-        subFrame.pack();
-        subFrame.setVisible(true);
-    }
-
-    /**
-     * Controls behavior if back button is pressed
-     */
-    public void moveBack() {
-        steps--;
-        subFrame.repaint();
-        nextButton.setVisible(true);
-        doneButton.setVisible(false);
-        checkFirst();
-        currentStep("down");
-        showNormalOptions();
-        checkLast();
-        newLocalValueTextField.setText(tmpSubParams[getStep()].getLocalValue());
-        setRadioButton();
-    }
-
-    /**
-     * Controls behavior if next button is pressed
-     */
-    public void moveNext() {
-        setLocalValue();
-        steps++;
-        subFrame.repaint();
-        checkFirst();
-        currentStep("up");
-        showNormalOptions();
-        checkLast();
-        newLocalValueTextField.setText(tmpSubParams[getStep()].getLocalValue());
-        setRadioButton();
-    }
-
-    /**
-     * Set radio button
-     */
-    public void setRadioButton() {
-        if (tmpSubParams[getStep()].getLocalValue() != "") {
-            radioButtonNewLocal.setSelected(true);
-        } else if (subParams[getStep()].getLocalValue() != "") {
-            radioButtonLocal.setSelected(true);
-        } else {
-            radioButtonDefault.setSelected(true);
-        }
-    }
-
-    /**
-     * Set local value depending on chosen value
-     */
-    public void setLocalValue() {
-
-        if (radioButtonDefault.isSelected()) {
-            tmpSubParams[getStep()].setLocalValue(defaultValueTextField
-                    .getText());
-        } else if (radioButtonLocal.isSelected()) {
-            tmpSubParams[getStep()]
-                    .setLocalValue(localValueTextField.getText());
-        } else if (radioButtonNewLocal.isSelected()) {
-            tmpSubParams[getStep()].setLocalValue(newLocalValueTextField
-                    .getText());
-        } else {
-            System.err.println("Fatal Error 0123456789!");
-        }
-    }
-
-    /**
-     * Takes care about the steps progress (list on left side)
-     * 
-     * @param direction
-     */
-    public void currentStep(String direction) {
-        if (direction.equals("up")) {
-            for (int i = 1; i <= getStep(); ++i) {
-                checkBoxes[i].setSelected(true);
-            }
-        }
-        if (direction.equals("down")) {
-            checkBoxes[getStep() + 1].setSelected(false);
-        }
-    }
-
-    /**
-     * Checks if its first step and disables the back button
-     */
-    public void checkFirst() {
-
-        if (getStep() == 0) {
-            backButton.setEnabled(false);
-        } else {
-            backButton.setEnabled(true);
-        }
-    }
-
-    /**
-     * Checks if its last step and disables next button but adding a save button
-     */
-    public void checkLast() {
-        doneButton = new JButton("Done");
-
-        if (getStep() == subParams.length - 1) {
-            nextButton.setEnabled(false);
-            nextButton.setVisible(false);
-
-            buttonPanel.add(doneButton);
-            contentPanel.revalidate();
-
-            doneButton.setPreferredSize(new java.awt.Dimension(74, 22));
-            doneButton.addActionListener(new ActionListener() {
-
-                public void actionPerformed(ActionEvent e) {
-                    setLocalValue();
-                    subFrame.setVisible(false);
-                    cGui.frame.setEnabled(true);
-                    cGui.frame.setVisible(true);
-                }
-            });
-
-        } else {
-            nextButton.setEnabled(true);
-        }
-    }
-
-    /**
-     * Shows the normal options (paramaters)
-     */
-    public void showNormalOptions() {
-
-        if (getStep() < subParams.length) {
-
-            defaultValueTextField.setText(subParams[getStep()]
-                    .getDefaultValue());
-            localValueTextField.setText(subParams[getStep()].getLocalValue());
-            paraValueLabel.setText(subParams[getStep()].getName());
-            subFrame.pack();
-        }
-
-    }
-
-    /**
-     * Returns the current step
-     * 
-     * @return steps
-     */
-    public int getStep() {
-        return steps;
-    }
-}
diff --git a/trunk/tools/jetty/conf/admin.xml b/trunk/tools/jetty/conf/admin.xml
deleted file mode 100644
index 3650458..0000000
--- a/trunk/tools/jetty/conf/admin.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"  encoding="ISO-8859-1"?>
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
-
-<!-- =============================================================== -->
-<!-- Configure the Jetty Server for the Administration Interface     -->
-<!-- =============================================================== -->
-
-<Configure class="org.mortbay.jetty.Server">
-
-  <!-- =============================================================== -->
-  <!-- Configure the Request Listeners                                 -->
-  <!-- =============================================================== -->
-
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Add and configure a HTTP listener to port 8081                    -->
-  <!-- The default port can be changed using: java -Djetty.admin.port=80 -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <Call name="addListener">
-    <Arg>
-      <New class="org.mortbay.http.SocketListener">
-        <Set name="Host">127.0.0.1</Set>
-        <Set name="Port"><SystemProperty name="jetty.admin.port" default="8081"/></Set>
-        <Set name="MinThreads">5</Set>
-        <Set name="MaxThreads">100</Set>
-        <Set name="MaxIdleTimeMs">30000</Set>
-        <Set name="LowResourcePersistTimeMs">5000</Set>
-      </New>
-    </Arg>
-  </Call>
-
-  <!-- =============================================================== -->
-  <!-- Configure the Contexts                                          -->
-  <!-- =============================================================== -->
-
-  <Call name="addContext">
-    <Arg>/</Arg>   
-
-    <Call name="addServlet">
-      <Arg>Admin</Arg>
-      <Arg>/</Arg>
-      <Arg>org.mortbay.servlet.AdminServlet</Arg>
-    </Call>
-    <Call name="setAttribute">
-      <Arg>org.mortbay.http.HttpServer</Arg>
-      <Arg><Call name="getHttpServer"/></Arg>
-    </Call>
-  </Call>
-
-</Configure>
-
-
-
-
diff --git a/trunk/tools/jetty/conf/jaas.policy b/trunk/tools/jetty/conf/jaas.policy
deleted file mode 100644
index 042e5c8..0000000
--- a/trunk/tools/jetty/conf/jaas.policy
+++ /dev/null
@@ -1,83 +0,0 @@
-// Example permissions for JAAS demo

-//

-// For JSPs, you may need to set:

-//  + read,write,delete FilePermission for the scratchDir setting for JASPER

-//

-// If you have set the "javax.servlet.context.tempdir" attribute of the webapp

-// context, you will need to add read,write,delete FilePermissions for this directory.

-//

-// To run the JAAS demo, cd $jetty.home/extra/plus and type ant run.jaas.demo

-

-

-grant 

-{

-  permission java.util.PropertyPermission "*", "read";

-  permission java.io.FilePermission "${install.dir}/../..", "read";

-  permission java.io.FilePermission "${install.dir}/../../etc", "read";

-  permission java.io.FilePermission "${install.dir}/../../etc/-", "read";

-  permission java.io.FilePermission "${install.dir}/../../lib/-", "read";

-  permission java.io.FilePermission "${install.dir}/../../ext/-", "read";

-  permission java.io.FilePermission "${install.dir}/../../ext", "read";

-  permission java.io.FilePermission "${install.dir}/../../-", "read";

-  permission java.io.FilePermission "/usr/share/java/-", "read";

-  permission java.io.FilePermission "${jdk.home}${/}lib${/}-", "read";

-  permission java.io.FilePermission "${jdk.home}${/}jre${/}lib${/}-", "read";

-  permission java.io.FilePermission "${java.io.tmpdir}", "read,write,delete";

-  permission java.io.FilePermission "${java.io.tmpdir}${/}-", "read,write,delete";

-  permission java.io.FilePermission "${jetty.home}/logs/log4j.log", "write";

-  permission java.io.FilePermission "${jetty.home}${/}work${/}*", "read,write,execute";

-  permission java.security.SecurityPermission "getPolicy";

-  permission javax.security.auth.AuthPermission "doAsPrivileged";

-};

-

-

-grant codeBase "file:${jetty.home}/lib/-" 

-{

-  permission java.net.SocketPermission "localhost:1-65536", "connect,accept,listen,resolve";

-  permission java.net.SocketPermission "0.0.0.0:1-65536", "connect,accept,listen,resolve";

-  permission java.net.SocketPermission "127.0.0.1:1-65536", "connect,accept,resolve";

-  permission java.util.PropertyPermission "*", "read, write";

-  permission java.io.FilePermission "${jetty.home}${/}-", "read";

-  permission java.io.FilePermission "${jetty.home}${/}logs${/}*", "read,write,delete";

-  permission java.io.FilePermission "${jetty.home}${/}cgi-bin${/}-", "read,execute";

-  permission java.io.FilePermission "${java.io.tmpdir}/-", "read,write,delete";

-  permission java.security.SecurityPermission "putProviderProperty.SunJSSE";

-  permission java.security.SecurityPermission "insertProvider.SunJSSE";

-  permission javax.security.auth.AuthPermission "createLoginContext.jdbc";

-  permission java.lang.RuntimePermission "createClassLoader";

-  permission java.lang.RuntimePermission "getClassLoader";

-  permission java.lang.RuntimePermission "setContextClassLoader";

-  permission java.lang.RuntimePermission "accessDeclaredMembers";

-  permission java.lang.RuntimePermission "shutdownHooks";

-  permission java.lang.RuntimePermission "accessClassInPackage.sun.tools.*";

-  permission java.lang.RuntimePermission "setIO";

-};

-

-grant codeBase "file:${jetty.home}/ext/-" 

-{

-  permission java.lang.RuntimePermission "setIO";

-  permission java.io.FilePermission "/tmp/*", "read,write,delete";

-  permission java.io.FilePermission "/tmp/-", "read,write,delete";

-};

-

-grant codeBase "file:${jetty.home}/extra/lib/org.mortbay.jaas.jar"

-{

-  permission javax.security.auth.AuthPermission "createLoginContext.jdbc";

-  permission javax.security.auth.AuthPermission "modifyPrincipals";

-  permission javax.security.auth.AuthPermission "modifyPrivateCredentials";

-};

-

-

-// Permissions specific to a particular web application

-grant codeBase "file:${install.dir}/demo/webapps/jaas$/WEB-INF/classes/-" 

-{ 

-  permission java.io.FilePermission "${install.dir}${/}demo${/}webapps${/}jaas${/}-", "read";

-  permission java.io.FilePermission "${java.io.tmpdir}${/}-", "read,write,delete";

-  permission java.security.SecurityPermission "getPolicy";

-};

-

-// for test

-grant Principal org.mortbay.jaas.JAASPrincipal "me" {

-      permission java.security.SecurityPermission "mySecurityPermission";

-};

-

diff --git a/trunk/tools/jetty/conf/main.xml b/trunk/tools/jetty/conf/main.xml
deleted file mode 100644
index bd57da1..0000000
--- a/trunk/tools/jetty/conf/main.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0"  encoding="ISO-8859-1"?> 
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
-
-
-
-<!-- =============================================================== -->
-<!-- Configure the JettyPlus Server                                  -->
-<!-- =============================================================== -->
-<Configure class="org.mortbay.jetty.plus.Server">
-
-  <!-- =============================================================== -->
-  <!-- Configure Logging                                               -->
-  <!-- =============================================================== -->
-
-
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Configure Jetty Logging.                                        -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Uncomment if using jetty logging.
-  <Call class="org.apache.commons.logging.LogFactory" name="getFactory">
-    <Call name="getInstance">
-      <Arg/>
-      <Call name="reset"/>
-      <Call name="add">
-        <Arg>
-          <New class="org.mortbay.log.OutputStreamLogSink">
-            <Set name="filename"><SystemProperty name="jetty.home" default="."/>/logs/yyyy_mm_dd.jetty.log</Set>
-            <Set name="retainDays">90</Set>
-            <Set name="append">true</Set>
-            <Set name="logLabels">true</Set>
-            <Set name="logStackSize">true</Set>
-            <Set name="logStackTrace">false</Set>
-            <Set name="logOneLine">false</Set>
-            <Set name="suppressStack">false</Set>
-            <Set name="logTimeZone">GMT</Set>
-          </New>
-        </Arg>
-      </Call>
-    </Call>
-  </Call>
-  -->
-
-  <!-- =============================================================== -->
-  <!-- Configure context specific log4j logging                        -->
-  <!-- =============================================================== -->
-  <!-- Uncomment to enable per-context logging. You will also need to  -->
-  <!-- create and register a  ServletContextListener that will clean   -->
-  <!-- the repository when the context is stopped, by calling this line-->
-  <!-- in the contextDestroyed() method:                               -->
-  <!--  org.mortbay.log4j.CRS.remove(Thread.currentThread().getContextClassLoader()) -->
-  <!-- 
-  <Call class="org.apache.log4j.LogManager" name="setRepositorySelector">
-    <Arg><New class="org.mortbay.log4j.CRS"/></Arg>
-    <Arg><New class="java.lang.Object"/></Arg>
-  </Call>
-  -->
-
-  <!-- =============================================================== -->
-  <!-- Configure the Request Listeners                                 -->
-  <!-- =============================================================== -->
-
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Add and configure a HTTP listener to port 8888                       -->
-  <!-- The default port can be changed using: java -Djetty.port=80     -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <Call name="addListener">
-    <Arg>
-      <New class="org.mortbay.http.SocketListener">
-        <Set name="Port"><SystemProperty name="jetty.port" default="8888"/></Set>
-        <Set name="MinThreads">10</Set>
-        <Set name="MaxThreads">100</Set>
-        <Set name="MaxIdleTimeMs">30000</Set>
-        <Set name="LowResourcePersistTimeMs">5000</Set>
-      </New>
-    </Arg>
-  </Call>
-
-
-  <!-- =============================================================== -->
-  <!-- Set the default web application configuration mechanisms:       -->
-  <!--   XMLConfiguration       - handles WEB-INF/web.xml              -->
-  <!--   JettyWebConfiguration  - handles WEB-INF/jetty-web.xml        -->
-  <!--   jsr77.Configuration    - Adds jsr77 statistics to servlets    -->
-  <!--                                                                 -->
-  <!-- Order of these classes is significant. The defaults set here    -->
-  <!-- can be overridden by calling setConfigurationClassNames() on    -->
-  <!-- the webapp context.                                             -->
-  <!-- The TagLibconfiguration scans any tld files found for           -->
-  <!-- additional j2ee listener classes - needed for JSF               -->
-  <!-- The jsr77 configuration requires additional jars on the         -->
-  <!-- on the classpath and it needs jmx enabled.                      -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <Set name="WebApplicationConfigurationClassNames">
-    <Array type="java.lang.String">
-      <Item>org.mortbay.jetty.servlet.XMLConfiguration</Item>
-      <Item>org.mortbay.jetty.servlet.JettyWebConfiguration</Item>
-      <Item>org.mortbay.jetty.servlet.TagLibConfiguration</Item>
-      <!--
-      <Item>org.mortbay.jetty.servlet.jsr77.Configuration</Item>
-      -->
-    </Array>
-  </Set>
-
-
-  <!-- =============================================================== -->
-  <!-- Configure the Contexts                                          -->
-  <!-- =============================================================== -->
-
-
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Uncomment to configure a list of configurations to be applied   -->
-  <!-- to each webapp context.                                         -->
-  <!-- Note that order is significant. This can be changed per webapp  -->
-  <!-- by calling setConfigurationClassNames() on the webapp context.  -->
-  <!--                                                                 -->
-  <!-- The jsr77 configuration is optional - if specified, jsr77       -->
-  <!-- statistics will be enabled. You will also need to build the     -->
-  <!-- extra/jsr77 package, include the jsr77 jars and start Jetty with -->
-  <!-- jmx enabled. To make this easier, the JettyPlus start config     -->
-  <!-- file sets up the classpath correctly, so make sure you use       -->
-  <!-- -DSTART=extra/etc/start-plus.config and see the JettyPlus        -->
-  <!-- README.TXT file for instructions on how to run with JMX enabled. -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!--
-  <Set name="WebApplicationConfigurationClassNames">
-    <Array type="java.lang.String">
-      <Item>org.mortbay.jetty.plus.PlusWebAppContext$Configuration</Item>
-      <Item>org.mortbay.jetty.servlet.JettyWebConfiguration</Item>
-      <Item>org.mortbay.jetty.servlet.jsr77.Configuration</Item>
-    </Array>
-  </Set>
-  -->
-
-
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <!-- Add and configure a specific web application                    -->
-  <!-- + Set Unpack WAR files                                          -->
-  <!-- + Set Default Descriptor.  Resource, file or URL                -->
-  <!-- + Set Virtual Hosts. A Null host or empty array means all hosts -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-  <Call name="addWebApplication">
-    <Arg>/</Arg>
-    <Arg><SystemProperty name="webapp" default="."/></Arg>
-    <Set name="defaultsDescriptor"><SystemProperty name="home" default="."/>/tools/jetty/conf/webdefaults.xml</Set>
-  </Call>
-
-  <!-- =============================================================== -->
-  <!-- Configure the Request Log                                       -->
-  <!-- =============================================================== -->
-  <Set name="RequestLog">
-    <New class="org.mortbay.http.NCSARequestLog">
-      <Arg><SystemProperty name="webapp" default="."/>/WEB-INF/logs/yyyy_mm_dd.request.log</Arg>
-      <Set name="retainDays">90</Set>
-      <Set name="append">true</Set>
-      <Set name="extended">false</Set>
-      <Set name="buffered">false</Set>
-      <Set name="LogTimeZone">GMT</Set>
-    </New>
-  </Set>
-
-  <!-- =============================================================== -->
-  <!-- Configure the Other Server Options                              -->
-  <!-- =============================================================== -->
-  <Set name="requestsPerGC">2000</Set>
-  <Set name="statsOn">false</Set>
-
-</Configure>
diff --git a/trunk/tools/jetty/conf/webdefaults.xml b/trunk/tools/jetty/conf/webdefaults.xml
deleted file mode 100644
index 55d40e6..0000000
--- a/trunk/tools/jetty/conf/webdefaults.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">   
-
-<!-- ===================================================================== -->
-<web-app>
-  <description>
-    This file is applied to a Web application before it's own WEB-INF/web.xml file
-  </description>
-
-  <!-- ==================================================================== -->
-  <!-- Context params to control Session Cookies                            -->
-  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-  <!-- UNCOMMENT TO ACTIVATE
-  <context-param>
-    <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-    <param-value>127.0.0.1</param-value>
-  </context-param>
-
-  <context-param>
-    <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-    <param-value>/</param-value>
-  </context-param>
-
-  <context-param>
-    <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-    <param-value>-1</param-value>
-  </context-param>
-  -->
-
-  <!-- ==================================================================== -->
-  <session-config>
-    <session-timeout>30</session-timeout>
-  </session-config>
-
-</web-app>
-
diff --git a/trunk/tools/jetty/ext/commons-logging.jar b/trunk/tools/jetty/ext/commons-logging.jar
deleted file mode 100644
index eecc0d6..0000000
--- a/trunk/tools/jetty/ext/commons-logging.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/commons-cli-1.0.jar b/trunk/tools/jetty/extra/ext/commons-cli-1.0.jar
deleted file mode 100644
index 22a004e..0000000
--- a/trunk/tools/jetty/extra/ext/commons-cli-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/howl.jar b/trunk/tools/jetty/extra/ext/howl.jar
deleted file mode 100644
index bfb2d88..0000000
--- a/trunk/tools/jetty/extra/ext/howl.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/jotm.jar b/trunk/tools/jetty/extra/ext/jotm.jar
deleted file mode 100644
index 17eb100..0000000
--- a/trunk/tools/jetty/extra/ext/jotm.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/jotm_iiop_stubs.jar b/trunk/tools/jetty/extra/ext/jotm_iiop_stubs.jar
deleted file mode 100644
index cf10b2b..0000000
--- a/trunk/tools/jetty/extra/ext/jotm_iiop_stubs.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/jotm_jrmp_stubs.jar b/trunk/tools/jetty/extra/ext/jotm_jrmp_stubs.jar
deleted file mode 100644
index dafdc4a..0000000
--- a/trunk/tools/jetty/extra/ext/jotm_jrmp_stubs.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/ext/log4j.jar b/trunk/tools/jetty/extra/ext/log4j.jar
deleted file mode 100644
index be4a917..0000000
--- a/trunk/tools/jetty/extra/ext/log4j.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/lib/org.mortbay.jaas-5.1.4.jar b/trunk/tools/jetty/extra/lib/org.mortbay.jaas-5.1.4.jar
deleted file mode 100644
index 2bdc294..0000000
--- a/trunk/tools/jetty/extra/lib/org.mortbay.jaas-5.1.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/lib/org.mortbay.jetty.plus-5.1.4.jar b/trunk/tools/jetty/extra/lib/org.mortbay.jetty.plus-5.1.4.jar
deleted file mode 100644
index 4361e74..0000000
--- a/trunk/tools/jetty/extra/lib/org.mortbay.jetty.plus-5.1.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/extra/resources/carol.properties b/trunk/tools/jetty/extra/resources/carol.properties
deleted file mode 100644
index 1daad9e..0000000
--- a/trunk/tools/jetty/extra/resources/carol.properties
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (C) 2002 - INRIA (www.inria.fr)
-# Copyright (C) 2002 - INRIA (www.inria.fr)
-#
-# CAROL: Common Architecture for RMI ObjectWeb Layer
-#
-# This library is developed inside the ObjectWeb Consortium,
-# http://www.objectweb.org
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or any later version.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-# USA
-#
-#
-# author  Guillaume Riviere (Guillaume.Riviere@inrialpes.fr)
-#
-# $Id: carol.properties,v 1.5 2005/03/21 14:46:07 janb Exp $
-#
-#carol.rmi.activated=lmi
-
-carol.protocols=lmi
-#carol.protocols=jrmp
-carol.start.ns=false
-carol.start.jndi=false
-carol.start.rmi=false
-
-# Interceptors for Transactions configuration
-# for iiop
-#carol.jvm.org.omg.PortableInterceptor.ORBInitializerClass.org.objectweb.jotm.ots.OTSORBInitializer
-
-# for jrmp
-#carol.jvm.org.objectweb.PortableInterceptor.JRMPInitializerClass.org.objectweb.jotm.jta.rmi.JTAInterceptorInitializer
-
-# configuration for rmi iiop jndi
-# java.naming.provider.url property
-#carol.jndi.iiop.java.naming.provider.url=iiop://localhost:19751
-
-#carol.jndi.java.naming.factory.url.pkgs=org.objectweb.carol.naming
-#carol.jndi.java.naming.factory.url.pkgs=org.objectweb.carol.naming:org.objectweb.carol.jndi.enc
-#carol.jndi.java.naming.factory.url.pkgs=org.mortbay.jndi
-#
-# CAROL: Common Architecture for RMI ObjectWeb Layer
-#
-# This library is developed inside the ObjectWeb Consortium,
-# http://www.objectweb.org
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or any later version.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-# USA
-#
-#
-# author  Guillaume Riviere (Guillaume.Riviere@inrialpes.fr)
-#
-# $Id: carol.properties,v 1.5 2005/03/21 14:46:07 janb Exp $
-#
-#carol.rmi.activated=lmi
-
-carol.protocols=lmi
-#carol.protocols=jrmp
-carol.start.ns=false
-carol.start.jndi=false
-carol.start.rmi=false
-
-# Interceptors for Transactions configuration
-# for iiop
-#carol.jvm.org.omg.PortableInterceptor.ORBInitializerClass.org.objectweb.jotm.ots.OTSORBInitializer
-
-# for jrmp
-#carol.jvm.org.objectweb.PortableInterceptor.JRMPInitializerClass.org.objectweb.jotm.jta.rmi.JTAInterceptorInitializer
-
-# configuration for rmi iiop jndi
-# java.naming.provider.url property
-#carol.jndi.iiop.java.naming.provider.url=iiop://localhost:19751
-
-#carol.jndi.java.naming.factory.url.pkgs=org.objectweb.carol.naming
-#carol.jndi.java.naming.factory.url.pkgs=org.objectweb.carol.naming:org.objectweb.carol.jndi.enc
-#carol.jndi.java.naming.factory.url.pkgs=org.mortbay.jndi
diff --git a/trunk/tools/jetty/extra/resources/jndi.properties b/trunk/tools/jetty/extra/resources/jndi.properties
deleted file mode 100644
index 4d346bf..0000000
--- a/trunk/tools/jetty/extra/resources/jndi.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-java.naming.factory.url.pkgs=org.mortbay.jndi
-java.naming.factory.url.pkgs=org.mortbay.jndi
-java.naming.factory.initial=org.mortbay.jndi.InitialContextFactory
-java.naming.factory.initial=org.mortbay.jndi.InitialContextFactory
diff --git a/trunk/tools/jetty/extra/resources/log4j.properties b/trunk/tools/jetty/extra/resources/log4j.properties
deleted file mode 100644
index c839cd5..0000000
--- a/trunk/tools/jetty/extra/resources/log4j.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-log4j.rootLogger=INFO, stdout, file
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${webapp}/WEB-INF/logs/jetty-log4j.log
-log4j.appender.file.MaxFileSize=100KB
-log4j.appender.file.MaxBackupIndex=0
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n
-
-log4j.rootLogger=INFO, stdout, file
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=${webapp}/WEB-INF/logs/jetty-log4j.log
-log4j.appender.file.MaxFileSize=100KB
-log4j.appender.file.MaxBackupIndex=0
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n
-
diff --git a/trunk/tools/jetty/lib/org.mortbay.jetty-5.1.4.jar b/trunk/tools/jetty/lib/org.mortbay.jetty-5.1.4.jar
deleted file mode 100644
index 1bda9b1..0000000
--- a/trunk/tools/jetty/lib/org.mortbay.jetty-5.1.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/lib/org.mortbay.jmx-5.1.4.jar b/trunk/tools/jetty/lib/org.mortbay.jmx-5.1.4.jar
deleted file mode 100644
index e6362c1..0000000
--- a/trunk/tools/jetty/lib/org.mortbay.jmx-5.1.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/jetty/lib/servlet-2.4.jar b/trunk/tools/jetty/lib/servlet-2.4.jar
deleted file mode 100644
index 28d7867..0000000
--- a/trunk/tools/jetty/lib/servlet-2.4.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/lib/ant-contrib-0.6.jar b/trunk/tools/lib/ant-contrib-0.6.jar
deleted file mode 100644
index db90b0a..0000000
--- a/trunk/tools/lib/ant-contrib-0.6.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/lib/ant-junit.jar b/trunk/tools/lib/ant-junit.jar
deleted file mode 100644
index 5ee4f7f..0000000
--- a/trunk/tools/lib/ant-junit.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/lib/ant-launcher.jar b/trunk/tools/lib/ant-launcher.jar
deleted file mode 100644
index 1a71612..0000000
--- a/trunk/tools/lib/ant-launcher.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/lib/ant-trax.jar b/trunk/tools/lib/ant-trax.jar
deleted file mode 100644
index f4e1540..0000000
--- a/trunk/tools/lib/ant-trax.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/lib/ant.jar b/trunk/tools/lib/ant.jar
deleted file mode 100644
index 3beb3b8..0000000
--- a/trunk/tools/lib/ant.jar
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/loader/Loader$RepositoryClassLoader.class b/trunk/tools/loader/Loader$RepositoryClassLoader.class
deleted file mode 100644
index fd59d45..0000000
--- a/trunk/tools/loader/Loader$RepositoryClassLoader.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/loader/Loader.class b/trunk/tools/loader/Loader.class
deleted file mode 100644
index 52ff3e7..0000000
--- a/trunk/tools/loader/Loader.class
+++ /dev/null
Binary files differ
diff --git a/trunk/tools/misc/copy-recursive.sh b/trunk/tools/misc/copy-recursive.sh
deleted file mode 100755
index afa4702..0000000
--- a/trunk/tools/misc/copy-recursive.sh
+++ /dev/null
@@ -1,180 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-
-
-#########################################################
-# DEFAULT CONFIGURATION
-#########################################################
-
-SOURCE_DIRECTORY=$HOME/tmp
-
-DESTINATION_DIRECTORY=$HOME/backup
-
-BATCH_FILE_DIR=`pwd`
-PUT_BATCH_FILE=$BATCH_FILE_DIR/sftp-put-batch.txt
-MKDIR_BATCH_FILE=$BATCH_FILE_DIR/sftp-mkdir-batch.txt
-
-USERNAME=$USER
-
-HOSTNAME=127.0.0.1
-
-#########################################################
-# FUNCTIONS
-#########################################################
-
-
-toString(){
-  echo ""
-  echo "INFO: .toString(): SourceDirectory: $SOURCE_DIRECTORY"
-  echo "INFO: .toString(): DestinationDirectory: $DESTINATION_DIRECTORY"
-  echo "INFO: .toString(): BatchFileDirectory: $BATCH_FILE_DIR"
-  echo "INFO: .toString(): BatchFileMkdir: $MKDIR_BATCH_FILE"
-  echo "INFO: .toString(): BatchFilePut: $PUT_BATCH_FILE"
-  echo "INFO: .toString(): RemoteUsername: $USERNAME"
-  echo "INFO: .toString(): RemoteHostname: $HOSTNAME"
-  echo ""
-  echo ""
-  echo ""
-  echo ""
-  }
-
-browseDirectory(){
-  CURRENT_DIRECTORY=$1
-  SOURCE_DIR=$2
-  DEST_DIR=$3
-  ##echo "DEBUG: Browsing Directory: $CURRENT_DIRECTORY"
-
-  FILES_AND_DIRS=`ls $CURRENT_DIRECTORY`
-  NUMBER_OF_FILES_AND_DIRS=`ls $CURRENT_DIRECTORY | wc -l`
-
-  ##echo "DEBUG: Number of files and dirs: $NUMBER_OF_FILES_AND_DIRS"
-  if [ $NUMBER_OF_FILES_AND_DIRS = 0 ];then
-    ##echo "DEBUG: No Files or Dirs within directory"
-    return
-  fi
-
-  for FILE_OR_DIR in $FILES_AND_DIRS; do
-    ##echo "DEBUG: File or Dir: $FILE_OR_DIR"
-    if [ -d $CURRENT_DIRECTORY/$FILE_OR_DIR ]; then
-      echo "INFO: .browseDirectory(): Directory: $CURRENT_DIRECTORY/$FILE_OR_DIR"
-
-      createDirectory $SOURCE_DIR $DEST_DIR $CURRENT_DIRECTORY/$FILE_OR_DIR
-
-      browseDirectory $CURRENT_DIRECTORY/$FILE_OR_DIR $SOURCE_DIR $DEST_DIR
-      CURRENT_DIRECTORY=`dirname $CURRENT_DIRECTORY`
-    else
-      if [ -f $CURRENT_DIRECTORY/$FILE_OR_DIR ]; then
-        echo "INFO: .browseDirectory(): File: $CURRENT_DIRECTORY/$FILE_OR_DIR"
-
-        copyFile $SOURCE_DIR $DEST_DIR $CURRENT_DIRECTORY/$FILE_OR_DIR
-      else
-       echo "Exception: Neither File nor Directory: $CURRENT_DIRECTORY/$FILE_OR_DIR"
-      fi
-    fi
-  done
-  }
-
-createDirectory(){
-  SOURCE_DIR=$1
-  DEST_DIR=$2
-  LDIRECTORY=$3
-
-  echo "INFO: .createDirectory(): $LDIRECTORY"
-  #echo "INFO: .createDirectory(): $SOURCE_DIR"
-  #echo "INFO: .createDirectory(): $DEST_DIR"
-
-  LPARENT=`dirname $LDIRECTORY`
-  NAME=`basename $LDIRECTORY`
-  RELATIVE_DIR=`echo $LDIRECTORY | sed -e "s%$SOURCE_DIR%%g"`
-  echo "DEBUG: .copyFile(): Relative Directory: $RELATIVE_DIR"
-  DPARENT=`dirname $DEST_DIR$RELATIVE_DIR`
-
-
-  #echo "INFO: .createDirectory(): lcd $LPARENT"
-  #echo "INFO: .createDirectory(): cd $DPARENT"
-  #echo "INFO: .createDirectory(): mkdir $NAME"
-  echo ""
-
-  echo "pwd" > $MKDIR_BATCH_FILE
-  echo "lcd $LPARENT" >> $MKDIR_BATCH_FILE
-  echo "cd $DPARENT" >> $MKDIR_BATCH_FILE
-  echo "mkdir $NAME" >> $MKDIR_BATCH_FILE
-  echo "quit" >> $MKDIR_BATCH_FILE
-
-  sftp -b $MKDIR_BATCH_FILE $USERNAME@$HOSTNAME
-  ##rm $MKDIR_BATCH_FILE
-  }
-
-copyFile(){
-  SOURCE_DIR=$1
-  DEST_DIR=$2
-  LFILE=$3
-
-  echo "INFO: .copyFile(): $LFILE"
-  #echo "INFO: .copyFile(): $SOURCE_DIR"
-  #echo "INFO: .copyFile(): $DEST_DIR"
-
-  RELATIVE_FILE=`echo $LFILE | sed -e "s%$SOURCE_DIR%%g"`
-  echo "DEBUG: .copyFile(): Relative File: $RELATIVE_FILE"
-  DFILE=$DEST_DIR$RELATIVE_FILE
-  LPARENT=`dirname $LFILE`
-  DPARENT=`dirname $DFILE`
-  NAME=`basename $LFILE`
-
-  #echo "INFO: .copyFile(): lcd $LPARENT"
-  #echo "INFO: .copyFile(): cd $DPARENT"
-  #echo "INFO: .copyFile(): put $NAME"
-  echo ""
-
-  echo "lcd $LPARENT" >> $PUT_BATCH_FILE
-  echo "cd $DPARENT" >> $PUT_BATCH_FILE
-  echo "put $NAME" >> $PUT_BATCH_FILE
-  }
-
-
-#########################################################
-# MAIN
-#########################################################
-
-toString
-
-SOURCE_DIRECTORY=$1
-DESTINATION_DIRECTORY=$2
-BATCH_FILE_DIR=$3
-USERNAME=$4
-HOSTNAME=$5
-if ! ([ $SOURCE_DIRECTORY ] && [ $DESTINATION_DIRECTORY ] && [ $BATCH_FILE_DIR ] && [ $USERNAME ] && [ $HOSTNAME ]);then
-  echo "Usage: copy-recursive.sh \"SourceDirectory DestinationDirectory BatchFileDirectory RemoteUsername RemoteHostname\""
-  exit 0
-fi
-
-PUT_BATCH_FILE=$BATCH_FILE_DIR/sftp-batch-put.txt
-MKDIR_BATCH_FILE=$BATCH_FILE_DIR/sftp-mkdir-batch.txt
-PUT_BATCH_FILE=$BATCH_FILE_DIR/sftp-put-batch.txt
-
-toString
-
-#exit 0
-
-echo "pwd" > $PUT_BATCH_FILE
-CURRENT_DIRECTORY=$SOURCE_DIRECTORY
-browseDirectory $CURRENT_DIRECTORY $SOURCE_DIRECTORY $DESTINATION_DIRECTORY
-echo "quit" >> $PUT_BATCH_FILE
-
-sftp -b $PUT_BATCH_FILE $USERNAME@$HOSTNAME
-##rm $PUT_BATCH_FILE
diff --git a/trunk/tools/misc/replicate.sh b/trunk/tools/misc/replicate.sh
deleted file mode 100755
index 166ba3d..0000000
--- a/trunk/tools/misc/replicate.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-#
-##############################################################
-#        GENERAL CONFIGURATION                               #
-##############################################################
-#
-
-if [ "$TOMCAT_HOME" = "" ] ; then
-  echo You must set TOMCAT_HOME to point at your Tomcat installation
-  exit 1
-fi
-
-CONTEXT=$TOMCAT_HOME/webapps/lenya
-PUBLICATION_DIR=$CONTEXT/lenya/pubs
-
-SFTP_BATCH=$CONTEXT/lenya/bin/copy-recursive.sh
-
-
-#
-##############################################################
-#        PUBLICATION CONFIGURATION                           #
-##############################################################
-#
-
-
-PUBLICATION_ID_2=default
-EXPORT_DIR_2=$PUBLICATION_DIR/default/resources/export
-PENDING_DIR_2=$EXPORT_DIR_2/pending/lenya/default
-REPLICATION_DIR_2=$EXPORT_DIR_2/replication
-RU_2_1=username
-RH_2_1=127.0.0.1
-RDOCS_2_1=/usr/local/jakarta-tomcat-4.0.4-b3/webapps/ROOT
-RU_2_2=username
-RH_2_2=127.0.0.1
-RDOCS_2_2=/usr/local/apache/htdocs_default
-
-
-
-###########################################
-#                MAIN                     #
-###########################################
-
-echo "START"
-date
-
-# Loop over all publications (BEGIN)
-
-
-
-#### PUBLICATION 2
-
-echo ""
-echo "=================================================="
-echo "= PUBLICATION: $PUBLICATION_ID_2"
-echo "=================================================="
-echo ""
-
-mkdir $REPLICATION_DIR_2
-
-if [ -d $REPLICATION_DIR_2 ];then
-  echo "DEBUG: Replication Directory: $REPLICATION_DIR_2"
-
-  PROCESS_ID=$$
-  DATUM=`date +%Y.%m.%d_%H.%M.%S`
-  TEMP_ID=$DATUM\_$PROCESS_ID
-
-  TEMP_DIR=$REPLICATION_DIR_2/temp\_$TEMP_ID
-  mkdir -p $TEMP_DIR
-  echo "DEBUG: Temporary Directory: $TEMP_DIR"
-
-  if [ -d $PENDING_DIR_2 ];then
-    echo "DEBUG: Pending Directory: $PENDING_DIR_2"
-
-    if [ -d $PENDING_DIR_2 ];then
-      mv $PENDING_DIR_2/* $TEMP_DIR/.
-    fi
-
-    if [ -d $TEMP_DIR ];then
-      scp -r $TEMP_DIR/* $RU_2_1@$RH_2_1:$RDOCS_2_1/.
-    fi
-    if [ -d $TEMP_DIR ];then
-      scp -r $TEMP_DIR/* $RU_2_2@$RH_2_2:$RDOCS_2_2/.
-    fi
-
-
-  else
-    echo "WARN: No such directory: $PENDING_DIR_2"
-  fi
-  rm -r $TEMP_DIR
-else
-  echo "FATAL: No such directory: $REPLICATION_DIR_2"
-  #exit 0
-fi
-
-# Loop over all publications (END)
-
-date
-echo "STOP"
diff --git a/trunk/tools/misc/sftp-copy-children.txt b/trunk/tools/misc/sftp-copy-children.txt
deleted file mode 100644
index 6975c3c..0000000
--- a/trunk/tools/misc/sftp-copy-children.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-cd public_html/children
-lcd ~/htdocs/children
-lls -R
-mput *
-quit
diff --git a/trunk/tools/misc/sftp-copy-index.txt b/trunk/tools/misc/sftp-copy-index.txt
deleted file mode 100644
index 48fc5fb..0000000
--- a/trunk/tools/misc/sftp-copy-index.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cd public_html
-ls
-lcd ~/htdocs
-lls -R
-put index.html
-quit
diff --git a/trunk/tools/misc/sftp-mkdir-children.txt b/trunk/tools/misc/sftp-mkdir-children.txt
deleted file mode 100644
index b542e90..0000000
--- a/trunk/tools/misc/sftp-mkdir-children.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-cd public_html
-ls
-mkdir children
-cd children
-ls
-quit
diff --git a/trunk/tools/misc/sftp.sh b/trunk/tools/misc/sftp.sh
deleted file mode 100755
index 2f38b48..0000000
--- a/trunk/tools/misc/sftp.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/ksh -p
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-
-BATCH_FILE=$1
-if ! [ $BATCH_FILE ];then
-  echo "Usage: sftp.sh \"batch-file.txt\""
-  exit 0
-fi
-
-echo "INFO: Batch File: $BATCH_FILE"
-
-sftp -b $1 user@host.com
diff --git a/trunk/tools/misc/tomcatctrl b/trunk/tools/misc/tomcatctrl
deleted file mode 100755
index 8ab849b..0000000
--- a/trunk/tools/misc/tomcatctrl
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/sh
-#
-# Start/stop script for tomcat located at /etc/init.d
-#
-# Author: Christian Egli <christian.egli@wyona.com>.
-# Author: Michael Wechner <michael.wechner@wyona.com>.
-#
-# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
-# --------------------                              --------------------
-
-# Has to be defined for tomcat
-USER="username"
-
-# Has to be defined for tomcat
-JAVA_HOME="/usr/local/j2sdk1.4.1_02"
-
-# The bin directories of all the servers
-DAEMONS="/usr/local/jakarta-tomcat-4.1.21-LE-jdk14/bin"
-
-# where you can also set more than one server, e.g.
-#DAEMONS="/usr/local/jakarta-tomcat-4.1.21-LE-jdk14/bin /home/username/build/jakarta-tomcat-4.1.21-LE-jdk14/bin"
-#
-# --------------------                              --------------------
-# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||
-
-NAME=$0
-DESC="Tomcat in virtual hosts"
-
-
-
-case "$1" in
-  start)
-	echo "Starting $DESC: $NAME"
-	for daemon in $DAEMONS; do 
-	    echo "Starting $daemon/startup.sh"
-	    su - $USER -c "export JAVA_HOME=$JAVA_HOME; sh $daemon/startup.sh"
-	done;
-	;;
-  stop)
-	echo "Stopping $DESC: $NAME "
-	for daemon in $DAEMONS; do 
-	    echo "Stopping $daemon/shutdown.sh"
-	    su - $USER -c "export JAVA_HOME=$JAVA_HOME; sh $daemon/shutdown.sh"
-	done;
-	;;
-  restart|force-reload)
-        # FIXME: Tomcat does not shutdown properly
-	#
-	#	If the "reload" option is implemented, move the "force-reload"
-	#	option to the "reload" entry above. If not, "force-reload" is
-	#	just the same as "restart".
-	#
-	echo "FIXME"
-	#echo "Restarting $DESC: $NAME"
-	#for daemon in $DAEMONS; do 
-	#    echo "Stopping $daemon/shutdown.sh"
-	#    eval $daemon/shutdown.sh
-	#done;
-        #
-	#sleep 10
-	#for daemon in $DAEMONS; do 
-	#    echo "Starting $daemon/startup.sh"
-	#    eval $daemon/startup.sh
-	#done;
-	#
-	;;
-  *)
-	#echo "Usage: $NAME {start|stop|restart|force-reload}" >&2
-	echo "Usage: $NAME {start|stop}" >&2
-	exit 1
-	;;
-esac
-
-exit 0
diff --git a/trunk/tools/proxytest/README b/trunk/tools/proxytest/README
deleted file mode 100644
index ac511aa..0000000
--- a/trunk/tools/proxytest/README
+++ /dev/null
@@ -1,116 +0,0 @@
-How to use Jetty 6.x with Lenya
-===============================
-
-If you want to play with Lenya in Jetty 6.1.6, please take a look at jetty6.xml
-and follow the instructions in the comment header. In a nutshell:
-
-  $LENYA_HOME:> wget http://dist.codehaus.org/jetty/jetty-6.1.6/jetty-6.1.6rc0.zip
-  $LENYA_HOME:> cd tools/
-  $LENYA_HOME/tools:> unzip ../jetty-6.1.6rc0.zip
-  $LENYA_HOME/tools:> cd jetty-6.1.6
-  $LENYA_HOME/tools/jetty-6.1.6:> java \
-         -Djava.endorsed.dirs="../../externals/cocoon_2_1_x/lib/endorsed/" \
-         -jar start.jar ../proxytest/jetty6.xml
-
-It would be nice to upgrade our included Jetty to 6.x real soon now, since
-the current version has a broken AJP connector that makes effective proxy
-testing impossible (it basically means you have to install Tomcat).
-
-Note that test-driving Jetty 6.1.6 is orthogonal to proxy testing; the server 
-configuration includes both ajp://localhost:8009 and http://localhost:8888, 
-so you can just drop it in, replacing the old version, without bothering about the
-proxy stuff. 
-
-Please follow up on bug
-   http://issues.apache.org/bugzilla/show_bug.cgi?id=43729 
-with success and problem reports.
-
-
-
-How to build a proxy test scaffold
-==================================
-
-The proxy example setting simulates the following situation:
-
-* A customer wants a company hostname and URLs without Lenya-specific
-  path components for the live site.
-
-* The server uses name-based virtual hosting with just one IP, i.e.
-  there can only be one SSL vhost, which is shared among several
-  customers. This implies the need for sub-directories in the proxy
-  URL.
-
-* "authoring" should be ssl-protected. There is no need for a
-  customer hostname here, since it's not publicly visible.
-
-* Any SSL-protected documents in "live" can be handled by the SSL
-  vhost (not using the company hostname is ok in this case).
-
-The desired customer hostname is customer.example.com, the live site will be
-available as http://customer.example.com.
-
-The SSL vhost is called www.example.com.
-
-The Lenya CMS for our customer is reachable as
-http[s]://www.example.com/lenya/customer/authoring/.
-
-The global proxy for non-publication-specific resources shall be
-http://www.example.com/lenya/.
-
-
-
-FIXME: The instructions below are currently Linux-specific. 
-Please contribute Windows and MacOS instructions!
-
-
-
-First of all, start Jetty6 as described above.
-Next get an Apache httpd server 2.2.x or later installed (your distro's 
-packages should be fine). Then apply the following tweaks:
-
-1. Install the bogus SSL keys:
-
-      $LENYA_HOME/tools/proxytest:> cp *.pem /tmp 
-
-   (yes, /tmp. it's just for testing, no need to clutter up your apache ssl 
-   directory)
-
-2. Configure some virtual hosts in your Apache HTTPD server:
-   Locate an active configuration file (distribution-dependent), and add the line
-
-      "Include $LENYA_HOME/tools/proxytest/apache_vhosts.conf"
-
-   to it.
-
-3. Append some fake host entries to your local resolver:
-
-      $LENYA_HOME/tools/proxytest:> cat hosts_fake >> /etc/hosts
-
-4. Make sure apache2 is configured to run SSL by passing it the -DSSL flag.
-   The best way to do it depends on your distribution. If in doubt, omit SSL
-   for now and try to add it later.
-
-5. Restart apache2:
-
-      $LENYA_HOME:> /etc/init.d/apache2 restart
-
-6. Uncomment the proxy settings in the default publication config
-   (src/pubs/default/config/publication.xml) and the global proxy settings
-   (src/modules-core/linking/config/cocoon-xconf/global-proxies.xconf).
-   You can use the patch provided in this directory:
-
-      $LENYA_HOME:> patch -p0 < tools/proxytest/activate_proxy.diff
-
-7. Build Lenya:
-
-      $LENYA_HOME:> ./build.sh clean && ./build.sh
-
-8. Surf to http://localhost:8888/webapp to check what the proxy does (look
-   at the page source frequently). Then try
-   http://www.example.com/lenya/default/authoring/ (authoring) and 
-   http://customer.example.com (live).
-
-9. Watch the logs in /tmp/LenyaTest_*.
-
-This should give you a working proxy setup.
-
diff --git a/trunk/tools/proxytest/activate_proxy.diff b/trunk/tools/proxytest/activate_proxy.diff
deleted file mode 100644
index db96c7b..0000000
--- a/trunk/tools/proxytest/activate_proxy.diff
+++ /dev/null
@@ -1,39 +0,0 @@
-Index: src/pubs/default/config/publication.xml
-===================================================================
---- src/pubs/default/config/publication.xml	(revision 594644)
-+++ src/pubs/default/config/publication.xml	(working copy)
-@@ -128,7 +128,7 @@
-        The global proxy for non-publication-specific resources shall be
-        http://www.example.com/lenya.
-      -->
--<!--
-+
-     <proxy area="live" ssl="true" url="https://www.example.com/lenya/customer/live"/>
-     <proxy area="live" ssl="false" url="http://customer.example.com"/>
-     <proxy area="authoring" ssl="true" url="https://www.example.com/lenya/customer/authoring"/>
-@@ -137,7 +137,7 @@
-     <proxy area="archive" ssl="false" url="http://www.example.com/lenya/customer/archive"/>
-     <proxy area="trash" ssl="true" url="https://www.example.com/lenya/customer/trash"/>
-     <proxy area="trash" ssl="false" url="http://www.example.com/lenya/customer/trash"/>
---->
-+
-   </proxies>
-   
- </publication>
-Index: src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf
-===================================================================
---- src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf	(revision 594644)
-+++ src/modules-core/linking/config/cocoon-xconf/globalproxies.xconf	(working copy)
-@@ -31,10 +31,10 @@
-   <component logger="lenya.proxy"
-     role="org.apache.lenya.cms.linking.GlobalProxies"
-     class="org.apache.lenya.cms.linking.impl.GlobalProxiesImpl">
--<!--
-+
-     <proxy ssl="false" url="http://www.example.com/lenya"/>
-     <proxy ssl="true" url="https://www.example.com/lenya"/>
---->
-+
-   </component>
-   
- </xconf>
diff --git a/trunk/tools/proxytest/apache_vhosts.conf b/trunk/tools/proxytest/apache_vhosts.conf
deleted file mode 100644
index e7fdbc2..0000000
--- a/trunk/tools/proxytest/apache_vhosts.conf
+++ /dev/null
@@ -1,142 +0,0 @@
-#  Lenya proxy testing environment for Apache HTTPD 2.2.x
-
-NameVirtualHost 127.0.0.1:80
-
-LoadModule rewrite_module /usr/lib/apache2/mod_rewrite.so
-LoadModule proxy_module /usr/lib/apache2/mod_proxy.so
-LoadModule proxy_ajp_module /usr/lib/apache2/mod_proxy_ajp.so
-
-
-#
-# NOTE: This apache config file should give you a working proxy setup.
-# However, it may not be the most elegant/effective/robust. Please
-# contribute your own experience, so that we can establish a set of
-# best practices for proxied production setups.
-#
-
-<VirtualHost www.example.com:80>
-
-  ServerAdmin lenyatest@www.example.com
-  ServerAlias www.example.com www
-  DocumentRoot /srv/www/htdocs
-
-  HostnameLookups Off
-  UseCanonicalName Off
-  ServerSignature On
- 
-  RewriteEngine On
-  ProxyRequests Off
-
-  # force SSL protection for authoring:
-  # better to disable this during testing as it can create confusion wrt Lenya's own redirects.
-#  RewriteRule ^/lenya/(.*)/authoring/(.*) https://www.example.com/lenya/$1/authoring/$2 [R]
-
-
-  # map official name "customer" to publication id "default"
-  <Location /lenya/customer>
-    ProxyPass ajp://localhost:8009/webapp/default
-    ProxyPassReverse http://www.example.com/lenya/customer
-    ProxyPassReverseCookiePath /webapp/default /lenya/customer
-  </Location>
-
-  # handle global Lenya resource requests
-  <Location /lenya>
-    ProxyPass ajp://localhost:8009/webapp
-    ProxyPassReverse http://www.example.com/lenya
-    ProxyPassReverseCookiePath /webapp /lenya
-  </Location>
-
-  ErrorLog /tmp/LenyaTest_www.example.com-errors
-  CustomLog /tmp/LenyaTest_www.example.com-access combined
-  RewriteLogLevel 4
-  RewriteLog /tmp/LenyaTest_www.example.com-rewrite.log
-
-</VirtualHost>
-
-
-<IfDefine SSL>
-<IfDefine !NOSSL>
-<VirtualHost www.example.com:443>
-
-  SSLEngine on
-  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
-  SSLCertificateFile /tmp/proxy-ssl-cert.pem
-  SSLCertificateKeyFile /tmp/proxy-ssl-key.pem
-
-  ServerAdmin lenyatest@www.example.com
-  ServerAlias www.example.com www
-  DocumentRoot /srv/www/htdocs
-
-  HostnameLookups Off
-  UseCanonicalName Off
-  ServerSignature On
- 
-  RewriteEngine On
-  ProxyRequests Off
-
-
-  # map official name "customer" to publication id "default"
-  <Location /lenya/customer>
-    ProxyPass ajp://localhost:8009/webapp/default
-    ProxyPassReverse https://www.example.com/lenya/customer
-    ProxyPassReverseCookiePath /webapp/default /lenya/customer
-  </Location>
-
-  # handle global Lenya resource requests
-  <Location /lenya>
-    ProxyPass ajp://localhost:8009/webapp
-    ProxyPassReverse https://www.example.com/lenya
-    ProxyPassReverseCookiePath /webapp /lenya
-  </Location>
-
-  ErrorLog /tmp/LenyaTest_www.example.com-SSL-errors
-  CustomLog /tmp/LenyaTest_www.example.com-SSL-access combined
-  RewriteLogLevel 4
-  RewriteLog /tmp/LenyaTest_www.example.com-SSL-rewrite.log
-
-</VirtualHost>                                  
-</IfDefine>
-</IfDefine>
-
-
-<VirtualHost customer.example.com:80>
-
-  ServerAdmin webmaster@customer.example.com
-  ServerAlias customer.example.com customer
-  DocumentRoot /srv/www/htdocs
-
-  HostnameLookups Off
-  UseCanonicalName Off
-  ServerSignature On
- 
-  RewriteEngine On
-  ProxyRequests Off
-
-  # catch funky addresses with "/"s and "."s to make
-  # cocoon matching behave like apache (where "foo/" and "foo" and "/./foo" all do the same):
-  # FIXME: could use some review and better documentation. Does this have security implications as well?
-  # RewriteRule ^/([^/\.]+)$ $1/ [R]
-
-  # all requests to customer.example.com are passed to the live area:
-  <Location />
-    # fixme: the trailing slash seems necessary here. looks like an inconsistency in our matchers...
-    ProxyPass ajp://localhost:8009/webapp/default/live/
-    ProxyPassReverse http://customer.example.com
-    ProxyPassReverseCookiePath /webapp/default/live /
-  </Location>
-
-  # handle global Lenya resource requests
-  <Location /lenya>
-    # fixme: the trailing slash seems necessary here. looks like an inconsistency in our matchers...
-    ProxyPass ajp://localhost:8009/webapp/
-    ProxyPassReverse http://www.example.com/lenya
-    ProxyPassReverseCookiePath /webapp /lenya
-  </Location>
-
-  ErrorLog /tmp/LenyaTest_customer.example.com-errors
-  CustomLog /tmp/LenyaTest_customer.example.com-access combined
-  RewriteLogLevel 4
-  RewriteLog /tmp/LenyaTest_customer.example.com-rewrite.log
-
-</VirtualHost>
-
diff --git a/trunk/tools/proxytest/hosts_fake b/trunk/tools/proxytest/hosts_fake
deleted file mode 100644
index bdba49b..0000000
--- a/trunk/tools/proxytest/hosts_fake
+++ /dev/null
@@ -1,2 +0,0 @@
-127.0.0.1	www.example.com www
-127.0.0.1	customer.example.com customer
diff --git a/trunk/tools/proxytest/jetty6.xml b/trunk/tools/proxytest/jetty6.xml
deleted file mode 100644
index 0633506..0000000
--- a/trunk/tools/proxytest/jetty6.xml
+++ /dev/null
@@ -1,251 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
-
-<!--
-  This file is provided for the convenience of Lenya beta testers to ease
-  the setup of a proxied environment in a non-root webapp context, which 
-  will hopefully help catch a lot of bugs.
-  The Jetty version currently shipped with Lenya is getting old-ish and has
-  a known bug in its AJP connector, which prevents us from using it with
-  Apache HTTPD + mod_proxy + mod_proxy_ajp in a proxied setup. Hence, it's
-  necessary to upgrade to Jetty 6.1 (unless you want to install tomcat,
-  which is likely a lot more difficult).
-  
-  Please download
-  http://dist.codehaus.org/jetty/jetty-6.1.6/jetty-6.1.6rc0.zip and unzip
-  it in $LENYA_HOME/tools.
-  
-  Now you can start Lenya using Jetty 6.1 from the command line as follows:
-  
-  $LENYA_HOME:> cd tools/jetty-6.1.6 
-  $LENYA_HOME:> java -Djava.endorsed.dirs="../../externals/cocoon_2_1_x/lib/endorsed/" \
-                     -jar start.jar ../proxytest/jetty6.xml
-  
-  The Lenya webapp is now available at http://localhost:8888/webapp/.
-  There are jetty example webapps and some Lenya garbarge in the root context which
-  should be fixable by being more specific under "webapp deployer" below, but it's quite 
-  desirable to have Lenya in a non-root context for testing, to make sure we always use
-  correct paths and don't wrongly assume "/".
-  
--->
-
-
-<!-- =============================================================== -->
-<!-- Configure the Jetty Server                                      -->
-<!--                                                                 -->
-<!-- Documentation of this file format can be found at:              -->
-<!-- http://docs.codehaus.org/display/JETTY/jetty.xml                -->
-<!--                                                                 -->
-<!-- =============================================================== -->
-
-
-<Configure id="Server" class="org.mortbay.jetty.Server">
-
-    <!-- =========================================================== -->
-    <!-- Server Thread Pool                                          -->
-    <!-- =========================================================== -->
-    <Set name="ThreadPool">
-      <!-- Default bounded blocking threadpool 
-      -->
-      <New class="org.mortbay.thread.BoundedThreadPool">
-        <Set name="minThreads">10</Set>
-        <Set name="maxThreads">250</Set>
-        <Set name="lowThreads">25</Set>
-      </New>
-
-      <!-- Optional Java 5 bounded threadpool with job queue 
-      <New class="org.mortbay.thread.concurrent.ThreadPool">
-        <Set name="corePoolSize">250</Set>
-        <Set name="maximumPoolSize">250</Set>
-      </New>
-      -->
-    </Set>
-
-
-
-    <!-- =========================================================== -->
-    <!-- Set connectors                                              -->
-    <!-- =========================================================== -->
-    <!-- One of each type!                                           -->
-    <!-- =========================================================== -->
-
-    <!-- Use this connector for many frequently idle connections
-         and for threadless continuations.
-    -->    
-    <Call name="addConnector">
-      <Arg>
-          <New class="org.mortbay.jetty.nio.SelectChannelConnector">
-<!-- changed from default: -->    
-            <Set name="host"><SystemProperty name="jetty.host" default="localhost"/></Set>
-<!-- changed from default: -->    
-            <Set name="port"><SystemProperty name="jetty.port" default="8888"/></Set>
-            <Set name="maxIdleTime">30000</Set>
-            <Set name="Acceptors">2</Set>
-            <Set name="statsOn">false</Set>
-            <Set name="confidentialPort">8443</Set>
-	    <Set name="lowResourcesConnections">5000</Set>
-	    <Set name="lowResourcesMaxIdleTime">5000</Set>
-          </New>
-      </Arg>
-    </Call>
-
-    <!-- Use this connector if NIO is not available.
-    <Call name="addConnector">
-      <Arg>
-          <New class="org.mortbay.jetty.bio.SocketConnector">
-            <Set name="port">8081</Set>
-            <Set name="maxIdleTime">50000</Set>
-            <Set name="lowResourceMaxIdleTime">1500</Set>
-          </New>
-      </Arg>
-    </Call>
-    -->
-
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-    <!-- To add a HTTPS SSL listener                                     -->
-    <!-- see jetty-ssl.xml to add an ssl connector. use                  -->
-    <!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-    
-    <!-- =========================================================== -->
-    <!-- Set up global session ID manager                            -->
-    <!-- =========================================================== -->
-    <!--
-    <Set name="sessionIdManager">
-      <New class="org.mortbay.jetty.servlet.HashSessionIdManager">
-        <Set name="workerName">node1</Set>
-      </New>
-    </Set>
-    -->
-
-    <!-- =========================================================== -->
-    <!-- Set handler Collection Structure                            --> 
-    <!-- =========================================================== -->
-    <Set name="handler">
-      <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
-        <Set name="handlers">
-         <Array type="org.mortbay.jetty.Handler">
-           <Item>
-             <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
-           </Item>
-           <Item>
-             <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
-           </Item>
-           <Item>
-             <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
-           </Item>
-         </Array>
-        </Set>
-      </New>
-    </Set>
-    
-    <!-- =========================================================== -->
-    <!-- Configure the context deployer                              -->
-    <!-- A context deployer will deploy contexts described in        -->
-    <!-- configuration files discovered in a directory.              -->
-    <!-- The configuration directory can be scanned for hot          -->
-    <!-- deployments at the configured scanInterval.                 -->
-    <!--                                                             -->
-    <!-- This deployer is configured to deploy contexts configured   -->
-    <!-- in the $JETTY_HOME/contexts directory                       -->
-    <!--                                                             -->
-    <!-- =========================================================== -->
-    <Call name="addLifeCycle">
-      <Arg>
-        <New class="org.mortbay.jetty.deployer.ContextDeployer">
-          <Set name="contexts"><Ref id="Contexts"/></Set>
-          <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
-          <Set name="scanInterval">1</Set>
-        </New>
-      </Arg>
-    </Call>
-
-    <!-- =========================================================== -->
-    <!-- Configure the webapp deployer.                              -->
-    <!-- A webapp  deployer will deploy standard webapps discovered  -->
-    <!-- in a directory at startup, without the need for additional  -->
-    <!-- configuration files.    It does not support hot deploy or   -->
-    <!-- non standard contexts (see ContextDeployer above).          -->
-    <!--                                                             -->
-    <!-- This deployer is configured to deploy webapps from the      -->
-    <!-- $JETTY_HOME/webapps directory                               -->
-    <!--                                                             -->
-    <!-- Normally only one type of deployer need be used.            -->
-    <!--                                                             -->
-    <!-- =========================================================== -->
-    <Call name="addLifeCycle">
-      <Arg>
-        <New class="org.mortbay.jetty.deployer.WebAppDeployer">
-          <Set name="contexts"><Ref id="Contexts"/></Set>
-<!-- changed from default: -->    
-          <Set name="webAppDir"><SystemProperty name="jetty.home"
-          default="."/>../../../build/lenya</Set>
-	  <Set name="parentLoaderPriority">false</Set>
-	  <Set name="extract">true</Set>
-	  <Set name="allowDuplicates">false</Set>
-          <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
-        </New>
-      </Arg>
-    </Call>
-
-<!-- changed from default: added AJP connector section as documented in 
-     http://docs.codehaus.org/display/JETTY/Configuring+AJP13+Using+mod_jk
--->    
-    <Call name="addConnector">
-      <Arg>
-        <New class="org.mortbay.jetty.ajp.Ajp13SocketConnector">
-          <Set name="port">8009</Set>
-        </New>
-      </Arg>
-    </Call>
-    
-    
-    <!-- =========================================================== -->
-    <!-- Configure Authentication Realms                             -->
-    <!-- Realms may be configured for the entire server here, or     -->
-    <!-- they can be configured for a specific web app in a context  -->
-    <!-- configuration (see $(jetty.home)/contexts/test.xml for an   -->
-    <!-- example).                                                   -->
-    <!-- =========================================================== -->
-    <Set name="UserRealms">
-      <Array type="org.mortbay.jetty.security.UserRealm">
-        <Item>
-          <New class="org.mortbay.jetty.security.HashUserRealm">
-            <Set name="name">Test Realm</Set>
-            <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
-            <Set name="refreshInterval">0</Set>
-          </New>
-        </Item>
-      </Array>
-    </Set>
-
-    <!-- =========================================================== -->
-    <!-- Configure Request Log                                       -->
-    <!-- Request logs  may be configured for the entire server here, -->
-    <!-- or they can be configured for a specific web app in a       -->
-    <!-- contexts configuration (see $(jetty.home)/contexts/test.xml -->
-    <!-- for an example).                                            -->
-    <!-- =========================================================== -->
-    <Ref id="RequestLog">
-      <Set name="requestLog">
-        <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
-          <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
-          <Set name="filenameDateFormat">yyyy_MM_dd</Set>
-          <Set name="retainDays">90</Set>
-          <Set name="append">true</Set>
-          <Set name="extended">true</Set>
-          <Set name="logCookies">false</Set>
-          <Set name="LogTimeZone">GMT</Set>
-        </New>
-      </Set>
-    </Ref>
-
-    <!-- =========================================================== -->
-    <!-- extra options                                               -->
-    <!-- =========================================================== -->
-    <Set name="stopAtShutdown">true</Set>
-    <Set name="sendServerVersion">true</Set>
-    <Set name="sendDateHeader">true</Set>
-    <Set name="gracefulShutdown">1000</Set>
-
-</Configure>
diff --git a/trunk/tools/proxytest/proxy-ssl-cert.pem b/trunk/tools/proxytest/proxy-ssl-cert.pem
deleted file mode 100644
index 29fb8db..0000000
--- a/trunk/tools/proxytest/proxy-ssl-cert.pem
+++ /dev/null
@@ -1,29 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFBTCCA+2gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCQ0gx
-GTAXBgNVBAoTEGxlbnlhLmFwYWNoZS5vcmcxNDAyBgNVBAMUK0xlbnlhIFRlc3Rp
-bmcgQ0EgKGRvbid0IHVzZSBpbiBwcm9kdWN0aW9uISkxIzAhBgkqhkiG9w0BCQEW
-FGRldkBsZW55YS5hcGFjaGUub3JnMB4XDTA3MTAzMDE0MzIxNFoXDTE3MTAyNjE0
-MzIxNFowgYYxCzAJBgNVBAYTAkNIMRkwFwYDVQQKExBsZW55YS5hcGFjaGUub3Jn
-MR8wHQYDVQQLExZGZWFybGVzcyBQcm94eSBUZXN0ZXJzMRYwFAYDVQQDEw1MZW55
-YVNTTFByb3h5MSMwIQYJKoZIhvcNAQkBFhRkZXZAbGVueWEuYXBhY2hlLm9yZzCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALW+2n4QVe3ak/G6mtjBioha
-UmGoihz1ezNa9jbV628jFqP/vVpa8GNnBUqlhjYuRaYkMaPgH7op2CQ85H1F1YKL
-OaoPQAjaUEt/8gH6h1IBdZZT/3d7AQTcs2P8Wt7Tndb58v6ey5vDaBSooSQSWMvi
-FWlf2CC0bAvVNxs+L4RG9SYpHLahX6mIB2yFxsyJ+F0zU+W3Cc3REGXEs29xhS2Q
-pkHv0mtyj0HNAhqsc/WB6//iKoGgAXFRtk0pL/boQcolFDCAieAZwJFmdkEUOERo
-QMkcKH6JQEwIIih5FLxBVGwlnVXW2zpdYFvpwoMM38sPQ9ul4EmB7KCrWOf0j6cC
-AwEAAaOCAX0wggF5MAkGA1UdEwQCMAAwMAYJYIZIAYb4QgENBCMWIVlhU1QgR2Vu
-ZXJhdGVkIFNlcnZlciBDZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAwCwYD
-VR0PBAQDAgWgMB0GA1UdDgQWBBShViuhiaMVnX6VB51FFLPh7GIK4TCBuAYDVR0j
-BIGwMIGtgBRdHJ3MOIz+rXDzu8PxGferhmU9kaGBiaSBhjCBgzELMAkGA1UEBhMC
-Q0gxGTAXBgNVBAoTEGxlbnlhLmFwYWNoZS5vcmcxNDAyBgNVBAMUK0xlbnlhIFRl
-c3RpbmcgQ0EgKGRvbid0IHVzZSBpbiBwcm9kdWN0aW9uISkxIzAhBgkqhkiG9w0B
-CQEWFGRldkBsZW55YS5hcGFjaGUub3JnggkAhlawhqjepYgwHwYDVR0RBBgwFoEU
-ZGV2QGxlbnlhLmFwYWNoZS5vcmcwHwYDVR0SBBgwFoEUZGV2QGxlbnlhLmFwYWNo
-ZS5vcmcwDQYJKoZIhvcNAQEFBQADggEBAMh5y/T25t1liWE8WC9KMMF+IiqaC7CX
-WQEOhs8vDgXseY55N7GRwWP7lhM/eZi6IO/+O5f0C0/SZ7makeRdhYA5rwRHhsO8
-uyMPShYZu5mFmLOauDOmRyrViKJUCnumwZX0WTd2Jzz2N1/o9UXzDXG5s6kIW5Bh
-+PCG4tLS3JEJfBoUz9lzVjlQsoHBErQZarSI2JW/zhQBiTXWBcAyS3MuuoYy320y
-Jwb2unEaGnGrK7BA2Ete9S122tPXh+1gklogGxjLLDM4GuG4BWme7r6E2lfXki34
-yNeZA+xfoD8Ti3px5FK8y3nRZgjYvcdtixl+JGoR/18FtpUcEPhdfx8=
------END CERTIFICATE-----
diff --git a/trunk/tools/proxytest/proxy-ssl-key.pem b/trunk/tools/proxytest/proxy-ssl-key.pem
deleted file mode 100644
index c3ab804..0000000
--- a/trunk/tools/proxytest/proxy-ssl-key.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAtb7afhBV7dqT8bqa2MGKiFpSYaiKHPV7M1r2NtXrbyMWo/+9
-WlrwY2cFSqWGNi5FpiQxo+AfuinYJDzkfUXVgos5qg9ACNpQS3/yAfqHUgF1llP/
-d3sBBNyzY/xa3tOd1vny/p7Lm8NoFKihJBJYy+IVaV/YILRsC9U3Gz4vhEb1Jikc
-tqFfqYgHbIXGzIn4XTNT5bcJzdEQZcSzb3GFLZCmQe/Sa3KPQc0CGqxz9YHr/+Iq
-gaABcVG2TSkv9uhByiUUMICJ4BnAkWZ2QRQ4RGhAyRwofolATAgiKHkUvEFUbCWd
-VdbbOl1gW+nCgwzfyw9D26XgSYHsoKtY5/SPpwIDAQABAoIBAQCcaDMAam6I06Ke
-VUkNYQIndhOPl8vEQD5WY+GgL1j9u+SwHlaGe9yErxQOuYRW/FtUL7HIpgin3Xr1
-NLIuXPrx7X8iqx0ggUC4uNM8gK4UFM1tIbyoxmKKHKUFVxecy+D6MQC9v0raMcBQ
-hw6mTGO+kkJ6/NCy1JJnXIagG1QpMLRgefXx7xwSqTNuqnO45JUoUVczRvBP2/mk
-aKP/g37HPRwc1kiSaDg77xD7kNdHeW0C3GDeW1NgtlMfTjBtRFxNq2LDteEAM6ng
-16bAO6IYShOXmMp00Si3l6Y5gr+TE2GvSXq99/BjmYYRBLMuJSI011/jpYk7pr4f
-bHLMkOKBAoGBANnu8S5yMW0o4JlD74KJGwglguvCLwp+/BDszViWI2jdn1iBMWPv
-Ysz4hlCWm+ZCoCNlDvAVdZAjdjcj+qO+HllxpscAG/x0SXuidU2bZ9wViejwnc6c
-pbIzjzW6v1wF6SZpTE/yQ5edEfXmfXINY40gTIVNuTe1H1zd+yOTDh2rAoGBANV9
-vnlcc/NdsqjNmTvATyNJTqgsG/0rxXxiXqksWmROgj8JpcmWo22WcUPguYly5ZzB
-tYINxY9Q3RO5aEj+FjEtrs/9OeaTcfUZWPoPL2+g5+AnTqCzpbDFK7vpErerSsuX
-5T1guxHQhbBrpIGc/Gc/O8mLEUZ1hRYWTaW2fYH1AoGAESYZOmNn+kP+MHFFFot9
-Yg25mJ2mH/hQE3De07q0vJq74DYCUe/TYXeo8gx35g2WFlLscv3tS1NPCRW+skXS
-k40652vdx+bKpXzqKBozeQEE4hyU/l4bN8OQ4FR6nF4ms4wTojLZGMQWVrg1ZNUi
-4UcKXm74RSbuedtJ2MnIkZMCgYBpKFPfAXwXnsp2vTbCKLqSXfSBf6CVtq7C0s1f
-tPodOFKNbFoeDrYXL6hAz/tzyYVyDjQyiEgMjL8ojQXiFk2mEaNuzYNsoKncGY0r
-Nrmd2Xr9fT8MhxCRHr2pBGf00km4OOxwrCnY34ZKXOsd8M6eqJXxcy+iLhbMx1Wd
-z2LI1QKBgQCqec2KAdF3NiHYnEXc8TInUvyfBPbqXXhCir9wtKm2GVbHa/Ham6IO
-BMSR50Mqrp01EOh1+c+SgbgZoDWgj7+2oZNkIR4xFydkdcVqX2PUIKy+GQA2whI9
-/RbO7xsNoMFtg6cr1a3vY0j1ic0u9QFKj58idOANY3MB0ic5BSFATA==
------END RSA PRIVATE KEY-----