You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2004/09/25 11:43:05 UTC

svn commit: rev 47195 - in cocoon/whiteboard/block-deployer: . legal lib mapping src src/api src/api/org src/api/org/apache src/api/org/apache/cocoon src/api/org/apache/cocoon/blockdeployer src/api/org/apache/cocoon/blockdeployer/block src/api/org/apache/cocoon/blockdeployer/locking src/api/org/apache/cocoon/blockdeployer/repository src/api/org/apache/cocoon/blockdeployer/wiring src/documentation src/documentation/classes src/documentation/content src/documentation/content/xdocs src/documentation/content/xdocs/devdocs src/documentation/content/xdocs/images src/documentation/content/xdocs/userdocs src/documentation/images src/documentation/translations src/impl src/impl/org src/impl/org/apache src/impl/org/apache/cocoon src/impl/org/apache/cocoon/blockdeployer src/impl/org/apache/cocoon/blockdeployer/block src/impl/org/apache/cocoon/blockdeployer/locking src/impl/org/apache/cocoon/blockdeployer/repository src/impl/org/apache/cocoon/blockdeployer/utils src/impl/org/apache/cocoon/blockdeployer/wiring src/schema test test/junit test/junit/org test/junit/org/apache test/junit/org/apache/cocoon test/junit/org/apache/cocoon/blockdeployer test/junit/org/apache/cocoon/blockdeployer/repository test/junit/org/apache/cocoon/blockdeployer/utils test/sample-repositories test/sample-repositories/rep1 test/sample-repositories/rep1/mycompany.com test/sample-repositories/rep1/mycompany.com/invalid test/sample-repositories/rep1/mycompany.com/invalid/1.0.0 test/sample-repositories/rep1/mycompany.com/webmail test/sample-repositories/rep1/mycompany.com/webmail/1.3.43 test/sample-repositories/rep2 tools tools/lib

Author: reinhard
Date: Sat Sep 25 02:43:04 2004
New Revision: 47195

Added:
   cocoon/whiteboard/block-deployer/
   cocoon/whiteboard/block-deployer/.classpath
   cocoon/whiteboard/block-deployer/.project
   cocoon/whiteboard/block-deployer/CREDITS.txt
   cocoon/whiteboard/block-deployer/LICENSE.txt
   cocoon/whiteboard/block-deployer/build.bat
   cocoon/whiteboard/block-deployer/build.sh
   cocoon/whiteboard/block-deployer/build.xml
   cocoon/whiteboard/block-deployer/forrest.properties
   cocoon/whiteboard/block-deployer/legal/
   cocoon/whiteboard/block-deployer/legal/ant.license.txt
   cocoon/whiteboard/block-deployer/legal/asm-1.4.3.jar.license.txt
   cocoon/whiteboard/block-deployer/legal/castor-0.9.5.3.jar.txt
   cocoon/whiteboard/block-deployer/legal/cglib-2.0.1.jar.license.txt
   cocoon/whiteboard/block-deployer/legal/easymock-1.1.jar.txt
   cocoon/whiteboard/block-deployer/legal/easymockclassextension-1.1.jar.txt
   cocoon/whiteboard/block-deployer/legal/junit-3.8.1.jar.license.txt
   cocoon/whiteboard/block-deployer/lib/
   cocoon/whiteboard/block-deployer/lib/castor-0.9.5.3-xml.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/lib/xercesImpl-2.6.2.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/lib/xml-apis.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/mapping/
   cocoon/whiteboard/block-deployer/mapping/block.xml-mapping.xml
   cocoon/whiteboard/block-deployer/mapping/sample-block.xml
   cocoon/whiteboard/block-deployer/mapping/sample-wiring.xml
   cocoon/whiteboard/block-deployer/src/
   cocoon/whiteboard/block-deployer/src/api/
   cocoon/whiteboard/block-deployer/src/api/org/
   cocoon/whiteboard/block-deployer/src/api/org/apache/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDescriptor.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockProperty.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/RemoteBlock.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/Lock.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/LockingException.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Browsable.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Credentials.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Deployable.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Locator.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Lockable.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Repository.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Searchable.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnavailableBlockException.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnsupportedBlockException.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Writeable.java
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/wiring/
   cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/wiring/Wiring.java
   cocoon/whiteboard/block-deployer/src/documentation/
   cocoon/whiteboard/block-deployer/src/documentation/README.txt
   cocoon/whiteboard/block-deployer/src/documentation/classes/
   cocoon/whiteboard/block-deployer/src/documentation/classes/CatalogManager.properties
   cocoon/whiteboard/block-deployer/src/documentation/content/
   cocoon/whiteboard/block-deployer/src/documentation/content/hello.pdf
   cocoon/whiteboard/block-deployer/src/documentation/content/test1.html
   cocoon/whiteboard/block-deployer/src/documentation/content/test2.html
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/goals.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/overview.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/unit-testing.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/group-logo.gif   (contents, props changed)
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/group.svg
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/icon.png   (contents, props changed)
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/project-logo.gif   (contents, props changed)
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/project.svg
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/index.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/introduction.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/license.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/site.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/tabs.xml
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/userdocs/
   cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/userdocs/introduction.xml
   cocoon/whiteboard/block-deployer/src/documentation/images/
   cocoon/whiteboard/block-deployer/src/documentation/images/cocoon-project-logo.png   (contents, props changed)
   cocoon/whiteboard/block-deployer/src/documentation/skinconf.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/
   cocoon/whiteboard/block-deployer/src/documentation/translations/langcode.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/languages_en.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/languages_es.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_af.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_de.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_es.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_it.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_no.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_ru.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/menu_sk.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/tabs.xml
   cocoon/whiteboard/block-deployer/src/documentation/translations/tabs_es.xml
   cocoon/whiteboard/block-deployer/src/impl/
   cocoon/whiteboard/block-deployer/src/impl/org/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockPropertyImpl.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlock.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlockDescriptor.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealRemoteBlock.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RemoteBlockFactory.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/locking/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/locking/FilesystemLock.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServerLocator.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DefaultRepository.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DependencyBuilder.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/LocatorFactory.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/utils/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/utils/LocatorUtils.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringBuilder.java
   cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringWriter.java
   cocoon/whiteboard/block-deployer/src/schema/
   cocoon/whiteboard/block-deployer/src/schema/cob-schema-1.0.xsd
   cocoon/whiteboard/block-deployer/status.xml
   cocoon/whiteboard/block-deployer/test/
   cocoon/whiteboard/block-deployer/test/junit/
   cocoon/whiteboard/block-deployer/test/junit/org/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/DefaultRepositoryTest.java
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/FilesystemLocatorTest.java
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/utils/
   cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/utils/FilesystemUtilsTest.java
   cocoon/whiteboard/block-deployer/test/sample-repositories/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/invalid/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/invalid/1.0.0/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/invalid/1.0.0/invalid.cob   (contents, props changed)
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/webmail/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/webmail/1.3.43/
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/webmail/1.3.43/webmail-1.3.43.cob   (contents, props changed)
   cocoon/whiteboard/block-deployer/test/sample-repositories/rep2/
   cocoon/whiteboard/block-deployer/tools/
   cocoon/whiteboard/block-deployer/tools/lib/
   cocoon/whiteboard/block-deployer/tools/lib/asm-1.4.3.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/tools/lib/cglib-2.0.1.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/tools/lib/easymock-1.1.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/tools/lib/easymockclassextension-1.1.jar   (contents, props changed)
   cocoon/whiteboard/block-deployer/tools/lib/junit-3.8.1.jar   (contents, props changed)
Log:
initial import

Added: cocoon/whiteboard/block-deployer/.classpath
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/.classpath	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/api"/>
+	<classpathentry kind="src" path="test/junit"/>
+	<classpathentry kind="src" path="src/impl"/>
+	<classpathentry kind="lib" path="lib/castor-0.9.5.3-xml.jar"/>
+	<classpathentry kind="lib" path="tools/lib/asm-1.4.3.jar"/>
+	<classpathentry kind="lib" path="tools/lib/cglib-2.0.1.jar"/>
+	<classpathentry kind="lib" path="lib/xercesImpl-2.6.2.jar"/>
+	<classpathentry kind="lib" path="lib/xml-apis.jar"/>
+	<classpathentry kind="lib" path="tools/lib/junit-3.8.1.jar"/>
+	<classpathentry kind="lib" path="tools/lib/easymock-1.1.jar"/>
+	<classpathentry kind="lib" path="tools/lib/easymockclassextension-1.1.jar"/>	
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>	
+	<classpathentry kind="output" path="build/eclipse"/>
+</classpath>

Added: cocoon/whiteboard/block-deployer/.project
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/.project	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>CocoonBlockDeployer</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: cocoon/whiteboard/block-deployer/CREDITS.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/CREDITS.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,19 @@
+
+                                C R E D I T S
+                                 
+This is the file where major donations to the Cocoon 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 Cocoon community pays back.
+
+
+ Community Credits
+ -----------------
+                                   
+The Cocoon Blocks-Deployer project was originally created, proposed and bootstrapped by
+Reinhard P�tz (http://www.poetz.cc).
+
+Michael Gerzabek (http://www.gerzabek.cc) supported and influenced with his experience 
+in designing object models the initial design process of the API.
+
+

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

Added: cocoon/whiteboard/block-deployer/build.bat
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/build.bat	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,42 @@
+@echo off
+rem  Copyright 1999-2004 The Apache Software Foundation
+rem
+rem  Licensed under the Apache License, Version 2.0 (the "License");
+rem  you may not use this file except in compliance with the License.
+rem  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 Cocoon
+rem ----------------------------------------------------------------------------
+
+rem ----- Ignore system CLASSPATH variable
+set OLD_CLASSPATH=%CLASSPATH%
+set CLASSPATH=
+for %%i in (tools\ant\lib\*.jar) do call tools\ant\bin\appendcp.bat %%i
+
+rem ----- Use Ant shipped with Cocoon Block Deployer. Ignore installed in the system Ant
+set OLD_ANT_HOME=%ANT_HOME%
+set ANT_HOME=tools\ant
+
+set OLD_ANT_OPTS=%ANT_OPTS%
+set ANT_OPTS="-Djava.endorsed.dirs=lib\endorsed"
+
+call %ANT_HOME%\bin\ant -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=
+set ANT_OPTS=%OLD_ANT_OPTS%
+set OLD_ANT_OPTS=
+
+rem ----- Restore CLASSPATH
+set CLASSPATH=%OLD_CLASSPATH%
+set OLD_CLASSPATH=

Added: cocoon/whiteboard/block-deployer/build.sh
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/build.sh	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+#  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.
+
+chmod u+x ./tools/ant/bin/antRun
+chmod u+x ./tools/ant/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/endorsed/*.jar | tr ' ' $S`"
+export CLASSPATH
+
+# ----- Use Ant shipped with Cocoon. Ignore installed in the system Ant
+OLD_ANT_HOME="$ANT_HOME"
+ANT_HOME=tools/ant
+OLD_ANT_OPTS="$ANT_OPTS"
+ANT_OPTS="-Xms32M -Xmx512M -Djava.endorsed.dirs=lib/endorsed"
+export ANT_HOME ANT_OPTS
+
+"$ANT_HOME/bin/ant" -logger org.apache.tools.ant.NoBannerLogger -emacs  $@
+
+# ----- 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

Added: cocoon/whiteboard/block-deployer/build.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/build.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,201 @@
+<?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.
+-->
+<project default="junit" basedir="." name="BlockDeployer">
+
+	<!-- ************************************************************************************************ -->
+	<!-- init: initialize build properties -->
+  
+	<target name="init">
+		<property name="project.name" value="CocoonBlockDeployer"/>
+		<property name="project.version" value="0.1dev"/>
+		
+		<property name="src.dir" value="./src"/>
+		<property name="src.impl.dir" value="${src.dir}/impl"/>
+		<property name="src.api.dir" value="${src.dir}/api"/>	
+		<property name="src.test.junit.dir" value="./test/junit"/>
+		
+		<property name="build.dir" value="build"/>
+		<property name="build.classes" value="${build.dir}/classes"/>
+		<property name="build.classes.api" value="${build.classes}/api"/>
+		<property name="build.classes.impl" value="${build.classes}/impl"/>		
+		<property name="build.classes.test" value="${build.classes}/test"/>
+		<property name="build.test" value="${src.dir}/test"/>
+		<property name="build.test.output" value="${build.dir}/junit-output"/>
+		
+		<property name="tools.lib" value="./tools/lib"/>
+		
+		<property name="test.dir" value="./test/junit"/>
+		
+		<property name="compiler" value="modern"/>
+		<property name="compiler.debug" value="on"/>		
+		<property name="compiler.optimize" value="on"/>
+		<property name="compiler.deprecation" value="off"/>
+		<property name="compiler.nowarn" value="on"/>
+		<property name="source.vm" value="1.3"/>
+		<property name="target.vm" value="1.3"/>
+  
+
+		
+	</target>
+	
+	<!-- ************************************************************************************************ -->
+	<!-- compiling -->
+
+	<path id="classpath-libs">
+		<fileset dir="./lib">
+			<include name="*.jar"/>
+		</fileset>
+	</path>	
+
+	<target name="compile" depends="init">
+		<!-- compile the API first to avoid circular dependencies -->
+		<mkdir dir="${build.classes.api}"/>
+		<compiler
+			srcdir="${src.api.dir}"
+			builddestdir="${build.classes.api}"
+			classpath="classpath-libs"
+		/>		
+		
+		<!-- add the recently compiled API to the classpath -->
+		<path id="classpath-api">
+			<path refid="classpath-libs"/>
+			<dirset dir="${build.classes.api}"/>
+		</path>
+		
+		<mkdir dir="${build.classes.impl}"/>
+		<compiler
+			srcdir="${src.impl.dir}"
+			builddestdir="${build.classes.impl}"
+			classpath="classpath-api"
+		/>		
+	</target>	
+
+	<macrodef name="compiler">
+		<attribute name="srcdir"/>
+		<attribute name="builddestdir"/>
+		<attribute name="classpath"/>
+		<sequential>
+		    <javac srcdir="@{srcdir}"
+		           destdir="@{builddestdir}"
+		           debug="${compiler.debug}"
+		           optimize="${compiler.optimize}"
+		           deprecation="${compiler.deprecation}"
+		           target="${target.vm}"
+		           source="${source.vm}"
+		           nowarn="${compiler.nowarn}"
+		           compiler="${compiler}"
+		           classpathref="@{classpath}"/>			
+		</sequential>
+	</macrodef>	
+	
+	<!-- ************************************************************************************************ -->
+	<!-- packaging: create all JAR files -->
+	
+	<target name="package" depends="compile">
+	    <jar jarfile="${build.dir}/${project.name}-api-${project.version}.jar" index="true">
+	      <fileset dir="${build.classes.api}"/>
+	    </jar>
+	    <jar jarfile="${build.dir}/${project.name}-impl-${project.version}.jar" index="true">
+	      <fileset dir="${build.classes.impl}"/>
+	    </jar>		
+	</target>
+	
+	<!-- ************************************************************************************************ -->
+	<!-- testing: run all tests -->
+	<target name="junit" depends="package">
+		<path id="classpath-test">
+			<path refid="classpath-libs"/>
+			<fileset dir="${build.dir}">
+				<include name="*.jar"/>
+			</fileset>
+			<fileset dir="${tools.lib}">
+				<include name="*.jar"/>
+			</fileset>
+		</path>		
+
+		<mkdir dir="${build.classes.test}"/>		
+		
+		<compiler
+			srcdir="${src.test.junit.dir}"
+			builddestdir="${build.classes.test}"
+			classpath="classpath-test"
+		/>	
+		
+		<mkdir dir="${build.test.output}"/>
+		
+		<junit printsummary="yes" fork="yes" haltonfailure="yes">
+			<classpath>
+				<path refid="classpath-test"/>
+				<dirset dir="${build.classes.test}"/>
+			</classpath>
+		  	<formatter type="plain"/>
+		    <batchtest fork="true" todir="${build.test.output}">
+				<fileset dir="${build.classes.test}">
+			  		<include name="**/*Test.class"/>
+				</fileset>
+		  	</batchtest>
+		</junit>
+	</target>	
+	
+	<!-- ************************************************************************************************ -->
+	<!-- dist: create an inofficial distribution to share the project -->
+	<tstamp>
+	    <format property="timestamp" pattern="yyyyMMdd-kkmmss"/>
+  	</tstamp>
+	
+	<target name="dist" depends="init" description="Create a distribution">
+		<create-dist-zip name="${dist.dir}/${project.name}-${project.version}_${timestamp}.zip"/>
+	</target>
+	
+	<target name="publish" description="Create and publish a distribution" depends="init">
+		<property name="dist-file" value="${dist.dir}/${project.name}-${project.version}_${timestamp}.zip"/>
+		<create-dist-zip name="${dist-file}"/>		
+		<input addproperty="password" message="cvs.apache.org password:"/>
+		<scp file="${dist-file}" 
+			todir="reinhard@cvs.apache.org:/x1/home/reinhard/public_html/CocoonBlockDeployer" 
+			password="${password}" trust="true"/>	
+	</target>
+
+    <macrodef name="create-dist-zip">
+      <attribute name="name"/>
+      <sequential>
+		<mkdir dir="${dist.dir}"/>
+		<zip destfile="@{name}" compress="true">
+			<fileset dir=".">
+				<exclude name=".svn"/>
+				<exclude name=".svn/**"/>
+				<exclude name="${build.dir}/**"/>
+				<exclude name="lib/xmlbeans*"/>
+			</fileset>
+		</zip>
+      </sequential>
+    </macrodef>
+	
+	<!-- ************************************************************************************************ -->
+	<!-- doc: create all docs -->
+	
+	<!-- ************************************************************************************************ -->
+	<!-- schema2java: tasks to create beans out of schemas -->
+	
+
+	<!-- ************************************************************************************************ -->
+	<!-- clean: tidy up -->
+	<target name="clean" depends="init">
+		<delete dir="${build.dir}"/>
+	</target>
+
+</project>

Added: cocoon/whiteboard/block-deployer/forrest.properties
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/forrest.properties	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,107 @@
+# Copyright 2002-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.
+
+##############
+# Properties used by forrest.build.xml for building the website
+# These are the defaults, un-comment them if you need to change them.
+##############
+
+# Prints out a summary of Forrest settings for this project
+#forrest.echo=true 
+
+# Project name (used to name .war file)
+#project.name=my-project
+
+# Specifies name of Forrest skin to use
+#project.skin=tigris
+project.skin=pelt
+
+# comma separated list, file:// is supported
+#forrest.skins.descriptors=http://forrest.apache.org/skins/skins.xml,file:///c:/myskins/skins.xml
+
+##############
+# behavioural properties
+#project.menu-scheme=tab_attributes
+#project.menu-scheme=directories
+
+##############
+# layout properties
+
+# Properties that can be set to override the default locations
+#
+# Parent properties must be set. This usually means uncommenting
+# project.content-dir if any other property using it is uncommented
+
+project.status=status.xml
+project.build-dir=${project.home}/build/documentation
+project.site-dir=${project.build-dir}/site
+project.webapp-dir=${project.build-dir}/webapp
+#project.content-dir=src/documentation
+#project.raw-content-dir=${project.content-dir}/content
+#project.conf-dir=${project.content-dir}/conf
+#project.sitemap-dir=${project.content-dir}
+#project.xdocs-dir=${project.content-dir}/content/xdocs
+#project.resources-dir=${project.content-dir}/resources
+#project.stylesheets-dir=${project.resources-dir}/stylesheets
+#project.images-dir=${project.resources-dir}/images
+#project.schema-dir=${project.resources-dir}/schema
+#project.skins-dir=${project.content-dir}/skins
+#project.skinconf=${project.content-dir}/skinconf.xml
+#project.lib-dir=${project.content-dir}/lib
+#project.classes-dir=${project.content-dir}/classes
+#project.translations-dir=${project.content-dir}/translations
+
+##############
+# validation properties
+
+# This set of properties determine if validation is performed
+# Values are inherited unless overridden.
+# e.g. if forrest.validate=false then all others are false unless set to true.
+#forrest.validate=true
+#forrest.validate.xdocs=${forrest.validate}
+#forrest.validate.skinconf=${forrest.validate}
+#forrest.validate.sitemap=${forrest.validate}
+#forrest.validate.stylesheets=${forrest.validate}
+#forrest.validate.skins=${forrest.validate}
+#forrest.validate.skins.stylesheets=${forrest.validate.skins}
+
+# *.failonerror=(true|false) - stop when an XML file is invalid
+#forrest.validate.failonerror=true
+
+# *.excludes=(pattern) - comma-separated list of path patterns to not validate
+# e.g.
+#forrest.validate.xdocs.excludes=samples/subdir/**, samples/faq.xml
+#forrest.validate.xdocs.excludes=
+
+
+##############
+# General Forrest properties
+
+# The URL to start crawling from
+#project.start-uri=linkmap.html
+# Set logging level for messages printed to the console
+# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR)
+#project.debuglevel=ERROR
+# Max memory to allocate to Java
+#forrest.maxmemory=64m
+# Any other arguments to pass to the JVM. For example, to run on an X-less
+# server, set to -Djava.awt.headless=true
+#forrest.jvmargs=
+# The bugtracking URL - the issue number will be appended
+#project.bugtracking-url=http://issues.apache.org/bugzilla/show_bug.cgi?id=
+#project.bugtracking-url=http://issues.apache.org/jira/browse/
+# The issues list as rss
+#project.issues-rss-url=
+#I18n Property only works for the "forrest run" target.
+#project.i18n=true

Added: cocoon/whiteboard/block-deployer/legal/ant.license.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/ant.license.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,2 @@
+The ant-*-x.y.jar are from the Apache Ant project
+and are licensed as Apache License 2.0 (See ../LICENSE.txt).

Added: cocoon/whiteboard/block-deployer/legal/asm-1.4.3.jar.license.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/asm-1.4.3.jar.license.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,27 @@
+ASM: a very small and fast Java bytecode manipulation framework
+Copyright (c) 2000,2002,2003 INRIA, France Telecom
+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. Neither the name of the copyright holders 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.
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/legal/castor-0.9.5.3.jar.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/castor-0.9.5.3.jar.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,38 @@
+Copyright 1999-2003 (C) Intalio Inc. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation
+("Software"), with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements
+   and notices. Redistributions must also contain a copy of this
+   document.
+
+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 name "ExoLab" must not be used to endorse or promote products
+   derived from this Software without prior written permission of
+   Intalio Inc. For written permission, please contact info@exolab.org.
+
+4. Products derived from this Software may not be called "Castor"
+   nor may "Castor" appear in their names without prior written
+   permission of Intalio Inc. Exolab, Castor and Intalio are
+   trademarks of Intalio Inc.
+
+5. Due credit should be given to the ExoLab Project
+   (http://www.exolab.org/).
+
+THIS SOFTWARE IS PROVIDED BY INTALIO AND CONTRIBUTORS ``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 INTALIO 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.

Added: cocoon/whiteboard/block-deployer/legal/cglib-2.0.1.jar.license.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/cglib-2.0.1.jar.license.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,52 @@
+
+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
+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/>.
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/legal/easymock-1.1.jar.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/easymock-1.1.jar.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,19 @@
+EasyMock License (MIT License)
+Copyright (c) 2001-2004 OFFIS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of 
+this software and associated documentation files (the "Software"), to deal in the 
+Software without restriction, including without limitation the rights to use, copy, 
+modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
+and to permit persons to whom the Software is furnished to do so, subject to the 
+following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies 
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+DEALINGS IN THE SOFTWARE.

Added: cocoon/whiteboard/block-deployer/legal/easymockclassextension-1.1.jar.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/easymockclassextension-1.1.jar.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,19 @@
+EasyMock License (MIT License)
+Copyright (c) 2001-2004 OFFIS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of 
+this software and associated documentation files (the "Software"), to deal in the 
+Software without restriction, including without limitation the rights to use, copy, 
+modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, 
+and to permit persons to whom the Software is furnished to do so, subject to the 
+following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies 
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+DEALINGS IN THE SOFTWARE.

Added: cocoon/whiteboard/block-deployer/legal/junit-3.8.1.jar.license.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/legal/junit-3.8.1.jar.license.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,185 @@
+
+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. 

Added: cocoon/whiteboard/block-deployer/lib/castor-0.9.5.3-xml.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/lib/xercesImpl-2.6.2.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/lib/xml-apis.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/mapping/block.xml-mapping.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/mapping/block.xml-mapping.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
+                           "http://castor.exolab.org/mapping.dtd">
+<mapping>
+  <class name="org.apache.cocoon.blockdeployer.block.RealBlockDescriptor">
+    <map-to xml="block" ns-uri="http://apache.org/cocoon/blocks/cob/1.0"/>
+    <field name="name" type="string" >
+      <bind-xml name="name" node="element" />
+    </field>
+    <field name="blockId" type="string">
+      <bind-xml name="id" node="attribute"/>
+    </field>
+    <field name="properties" type="org.apache.cocoon.blockdeployer.block.BlockPropertyImpl" collection="collection" >
+      <bind-xml name="property" node="element" location="properties"/>
+    </field>      
+  </class>
+  <class name="org.apache.cocoon.blockdeployer.block.BlockPropertyImpl">
+    <map-to ns-uri="http://apache.org/cocoon/blocks/cob/1.0"/>
+    <field name="name" type="string">
+      <bind-xml name="name" node="attribute"/>
+    </field>
+    <field name="description" type="string" >
+      <bind-xml name="description" node="element" />
+    </field>
+    <field name="defaultValue" type="string" >
+      <bind-xml name="default" node="element" />
+    </field>
+  </class>
+</mapping>
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/mapping/sample-block.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/mapping/sample-block.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<block xmlns="http://apache.org/cocoon/blocks/cob/1.0"
+       id="http://mycompany.com/webmail/1.3.43">
+   
+   <!-- sample block.xml -->
+       
+   <!-- MANDATORY -->
+   
+   <name>Super Webmail</name>
+   <description href="http://www.mycompany.com/products/webmail/">This is a super webmail block with amazing functionalities</description>
+   <license href="http://www.mycompany.com/license/1.3">BSD License</license>
+   <author href="http://www.mycompany.com/">MyCompany Inc.</author>
+   <sitemap src="/webmail.xmap"/>
+   
+   <!-- OPTIONAL -->
+   
+   <requirements>
+      <requires 
+          block="http://mycompany.com/skin" 
+          name="external-skin"
+      />
+      <requires 
+          block="http://mycompany.com/skin/2.0"
+          name="internal-skin"
+      />
+      <requires 
+          block="http://anothercompany.com/MailRepository/2.0" 
+          name="repository">
+         <uses component="com.anothercompany.repository.Repository" 
+	       name="repository"
+         />
+      </requires>
+   </requirements>
+   
+   <properties>
+     <property name="database.user">
+       <default>saa</default>
+       <description>the database user �</description>
+       <test>test</test>
+     </property>
+
+     <property name="database.user1">
+       <default>sa1</default>
+       <description>the database user</description>
+       <test>test</test>
+     </property>     
+     
+   </properties>
+   
+   <implements block="http://mycompany.com/skin/1.2"/>
+   
+   <extends block="http://yetanothercompany.com/skins/fancy/1.2.2"/>
+   
+   <provides component="http://anothercompany.repository.Repository"/>
+   
+</block>

Added: cocoon/whiteboard/block-deployer/mapping/sample-wiring.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/mapping/sample-wiring.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,33 @@
+<blocks xmlns="http://apache.org/cocoon/blocks/wiring/1.0">
+
+  <block id="http://mycompany.com/webmail/1.3.43" 
+         location="WEB-INF/blocks/384938958499">
+    <mount>/mail/</mount>
+    <connections>
+      <connection 
+        name="external-skin">http://yetanothercompany.com/skins/fancy/1.2.2</connection>
+      <connection
+        name="internal-skin">http://mycompany.com/skins/corporate/34.3.345</connection>
+      <connection
+        name="repository">http://mycompany.com/repositories/email/exchange/3.2.1</connection>
+    </connections>
+    <properties>
+      <property name="user">guest</property>
+      <property name="password">sj3u493</property>
+    </properties>
+  </block>
+
+  <block id="http://mycompany.com/repositories/email/exchange/3.2.1" 
+         location="WEB-INF/blocks/394781274834">
+    <properties>
+      <property name="host">mail.blah.org</param>
+    </properties>
+  </block>
+
+  <block id="http://yetanothercompany.com/skins/fancy/1.2.2" 
+         location="WEB-INF/blocks/947384127832"/>
+
+  <block id="http://mycompany.com/skins/corporate/34.3.345" 
+         location="WEB-INF/blocks/746394782637"/>
+
+</blocks>
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/Block.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+
+/**
+ * The Block object contains a complete block with all files.
+ * 
+ * @since 0.1
+ */
+public interface Block {
+    
+    public InputStream getInputStream() throws IOException;
+    
+    public RemoteBlock getRemoteBlock();
+    
+}
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDescriptor.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockDescriptor.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import java.util.Iterator;
+
+/**
+ * The BlockDescriptor contains meta information about a Block.
+ * 
+ * @since 0.1
+ */
+public interface BlockDescriptor {
+
+    public static final String DEFFAULT_SITEMAP = "sitemap.xmap";
+    
+    /**
+     * @return returns the ID of the Block e.g. http://mycompany.com/webmail/1.3.43 
+     */
+    public String getBlockId();
+
+    /**
+     * @return returns the version of the COB interface e.g. 1.0 (from http://apache.org/cocoon/blocks/cob/1.0) 
+     */
+    public String getInterfaceVersion();
+    
+    /**
+     * @return returns the version of this block
+     */
+    public String getVersion();
+    
+    /**
+     * @return returns the name of the block
+     */
+    public String getName();
+    
+    /**
+     * @return returns the name of the Author
+     */
+    public String getAuthor();
+    
+    /**
+     * @return returns the URL with additional information about the author
+     */
+    public String getAuthorUrl();
+    
+    /**
+     * @return returns the description of the block
+     */
+    public String getDescription();
+
+    /**
+     * @return returns the URL with additional information about the block
+     */
+    public String getDescriptionUrl();
+    
+    /**
+     * @return returns the name of the root sitemap of the block, default value is @link DEFFAULT_SITEMAP
+     */
+    public String getSitemap();
+    
+    /**
+     * List all dependencies of this block
+     * 
+     * @return returns a flat list of the IDs of all dependend blocks
+     */
+    public Iterator getDependantBlockIDs();
+    
+    /**
+     * Get all parameters that could be set during
+     * installation.
+     * 
+     * @return Iterator with all parameter names
+     */
+    public Iterator getPropertyNames();
+
+    
+    /**
+     * Get a property by its name
+     * 
+     * @param name of the property
+     * @return returns a BlockProperty object containing the property information
+     */
+    public BlockProperty getProperty(String name);
+    
+    
+    /**
+     * @return returns an Iterator of the URIs (String) of blocks that are required by this block
+     */
+    public Iterator getRequiredBlockURIs();   
+    
+    /**
+     * @return returns the URI of the implemented interface block
+     */
+    public String getImplementedBlockURI();
+    
+    /**
+     * @return returns the URI of the block as String that this block extends
+     */
+    public String getExtendedBlockURI();
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockProperty.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/BlockProperty.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+/**
+ * A BlockProperty is a property that must/can be set at
+ * a block at deployment time. It has a name, a description and
+ * a default value.
+ * 
+ * @since 0.1
+ */
+public interface BlockProperty {
+    
+    /**
+     * @return returns the name of the property
+     */
+    public String getName();
+    
+    /**
+     * @return returns the description of the property
+     */
+    public String getDescription();
+    
+    /**
+     * @return returns the default value for the property
+     */
+    public String getDefaultValue();
+
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/RemoteBlock.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/block/RemoteBlock.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import org.apache.cocoon.blockdeployer.repository.Locator;
+
+
+/**
+ * The RemoteBlock points to a block that can be reached by a locator. This
+ * object gives access to this locator, to its meta information and has a method
+ * to get the complete block.
+ */
+public interface RemoteBlock {
+    
+    /**
+     * @return the locator that contains this block
+     */
+    public Locator getLocator();
+    
+    /**
+     * This method executes the call that reads the complete block as binary
+     * from the locator.
+     * 
+     * @return the Block object that gives access to the binary
+     */
+    public Block getBlock();
+    
+    
+    /**
+     * @return the meta information to a block
+     */
+    public BlockDescriptor getBlockDescriptor();
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/Lock.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/Lock.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.locking;
+
+import java.util.Date;
+
+/**
+ * @since 0.1
+ */
+public interface Lock {
+
+    public void setTimestamp(Date timestamp);
+    
+    public Date getLockTime();
+    
+    public void setComment(String comment);
+    
+    public String getComment();
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/LockingException.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/locking/LockingException.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,23 @@
+/*
+ * Copyright 004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.locking;
+
+/**
+ * @since 0.1
+ */
+public class LockingException extends Exception {
+
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Browsable.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Browsable.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. 
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+
+/** 
+ * Locator inferface
+ * 
+ * @since 0.1
+ */
+public interface Browsable {
+
+    /**
+     * Find all available blocks
+     * 
+     * @return returns an array of RemoteBlocks.
+     */
+    public RemoteBlock[] browse();
+
+}
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Credentials.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Credentials.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+/**
+ * @since 0.1
+ */
+public interface Credentials {
+
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Deployable.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Deployable.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.Block;
+
+/**
+ * This interface marks a locator that is able to deploy a block into
+ * a Cocoon application server.
+ * 
+ * @since 0.1
+ */
+public interface Deployable {
+
+    /**
+     * Deploy an array of blocks. The implementation has to make sure
+     * that either all or any block is deployed.
+     * 
+     * @param an array of blocks
+     * @return true if deployment was successfull, false if not
+     * @throws @link UnsupportedBlockException
+     */
+    public boolean deploy(Block[] blocks) throws UnsupportedBlockException;
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Locator.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Locator.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+
+
+/**
+ * The locator gives access to a group of blocks available in a certain physical destination.
+ * 
+ * @since 0.1
+ */
+public interface Locator extends Browsable, Searchable {
+
+    public static final String COB_INF_BLOCK_XML = "COB-INF/block.xml";
+
+    public RemoteBlock getBlock(String blockId) throws Exception;
+    
+    public String getIdentifier();
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Lockable.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Lockable.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.locking.Lock;
+import org.apache.cocoon.blockdeployer.locking.LockingException;
+
+/**
+ * A locator can be locked to indicate that someone is already
+ * using it (e.g. during deployment process).
+ * 
+ * @since 0.1
+ */
+public interface Lockable {
+
+    public void setLock(Lock lock) throws LockingException;
+    
+    public Lock getLockingStatus() throws LockingException;
+    
+    public boolean removeLock() throws LockingException;
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Repository.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Repository.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+
+
+/**
+ * The <code>Repository</code> represents all available <code>Locator</code> objects
+ * that can be searched for COcoon Blocks. Note, that the order
+ * of the locators is important.
+ * 
+ * A repository implementation has to implement Browsable and Searchable so that
+ * you can search/browse within a group of locators.
+ * 
+ * @since 0.1
+ */
+public interface Repository extends Browsable, Searchable {
+    
+    public void addLocator(Locator locator);
+    
+    public void removeLocator(Locator locator);
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Searchable.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Searchable.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+
+
+/**
+ * A repository interface.
+ * 
+ * @since 0.1
+ */
+public interface Searchable {
+
+    /**
+     * Search for a block by its ID. A locator can only return a single RemoteBlock, 
+     * a repository can return an array with RemoteBlocks available in several locators.
+     * Note that the order is important.
+     * 
+     * @return a sorted array of all locators that contain the named block
+     */
+    public RemoteBlock[] lookupBlock(String blockId);
+
+}
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnavailableBlockException.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnavailableBlockException.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+/**
+ * @since 0.1
+ */
+public class UnavailableBlockException extends Exception {
+
+    public UnavailableBlockException() {
+        super();
+    }
+    
+    public UnavailableBlockException(String s) {
+        super(s);
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnsupportedBlockException.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/UnsupportedBlockException.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+/**
+ * Exception if a block implementation is not supported e.g. by a deployable locator
+ * 
+ * @since 0.1
+ */
+public class UnsupportedBlockException extends Exception {
+
+    public UnsupportedBlockException() {
+        super();
+    }
+
+    public UnsupportedBlockException(String message) {
+        super(message);
+    }
+
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Writeable.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/repository/Writeable.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.Block;
+
+/**
+ * This interface marks a locator which a block can be added to.
+ * 
+ * @since 0.1
+ */
+public interface Writeable {
+
+    public void addBlock(final Block block, final Credentials credentials);
+    
+}

Added: cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/wiring/Wiring.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/api/org/apache/cocoon/blockdeployer/wiring/Wiring.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.wiring;
+
+/**
+ * @since 0.1
+ */
+public class Wiring {
+    
+}
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/documentation/README.txt
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/README.txt	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,10 @@
+This is the base documentation directory. It usually contains two files:
+
+skinconf.xml     # This file customizes Forrest for your project. In it, you
+                 # tell forrest the project name, logo, copyright info, etc
+
+sitemap.xmap     # Optional. This sitemap overrides the default one bundled
+                 # with Forrest. Typically, one would copy a sitemap from
+                 # xml-forrest/src/resources/conf/sitemap.xmap, and customize
+                 # it.
+

Added: cocoon/whiteboard/block-deployer/src/documentation/classes/CatalogManager.properties
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/classes/CatalogManager.properties	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,37 @@
+# Copyright 2002-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.
+
+#=======================================================================
+# CatalogManager.properties
+#
+# This is the default properties file for Apache Forrest.
+# This facilitates local configuration of application-specific catalogs.
+#
+# See the Apache Forrest documentation:
+# http://forrest.apache.org/docs/your-project.html
+# http://forrest.apache.org/docs/validation.html
+
+# verbosity ... level of messages for status/debug
+# See forrest/src/core/context/WEB-INF/cocoon.xconf
+
+# catalogs ... list of additional catalogs to load
+#  (Note that Apache Forrest will automatically load its own default catalog
+#  from src/core/context/resources/schema/catalog.xcat)
+# use full pathnames
+# pathname separator is always semi-colon (;) regardless of operating system
+# directory separator is always slash (/) regardless of operating system
+#
+#catalogs=/home/me/forrest/my-site/src/documentation/resources/schema/catalog.xcat
+catalogs=
+

Added: cocoon/whiteboard/block-deployer/src/documentation/content/hello.pdf
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/hello.pdf	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,70 @@
+%PDF-1.3
+%����
+4 0 obj
+<< /Type /Info
+/Producer (FOP 0.20.4) >>
+endobj
+5 0 obj
+<< /Length 203 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gar'!]afWZ&;9q-MRA)RFnblL2&]tQSZsjOOT[ck2SQkp(bfQ[R7ZPq=U24c0dqq_i?B[A.0s\)5f5<IA'lb0eeo`C+`q\Ip/Tke*)7%T+.hT8:QQidXoPLKZM,RXY"bP+;E@%,ZX;V'Aq+M9rH"!g=N5TToDMoqMeUiEe).I_W3q80:jF+;'9bVIeBRb]DhE9:E2be2~>
+endstream
+endobj
+6 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 595 842 ]
+/Resources 3 0 R
+/Contents 5 0 R
+>>
+endobj
+7 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+8 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+1 0 obj
+<< /Type /Pages
+/Count 1
+/Kids [6 0 R ] >>
+endobj
+2 0 obj
+<< /Type /Catalog
+/Pages 1 0 R
+ >>
+endobj
+3 0 obj
+<< 
+/Font << /F1 7 0 R /F5 8 0 R >> 
+/ProcSet [ /PDF /ImageC /Text ] >> 
+endobj
+xref
+0 9
+0000000000 65535 f 
+0000000687 00000 n 
+0000000745 00000 n 
+0000000795 00000 n 
+0000000015 00000 n 
+0000000071 00000 n 
+0000000365 00000 n 
+0000000471 00000 n 
+0000000578 00000 n 
+trailer
+<<
+/Size 9
+/Root 2 0 R
+/Info 4 0 R
+>>
+startxref
+883
+%%EOF

Added: cocoon/whiteboard/block-deployer/src/documentation/content/test1.html
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/test1.html	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,36 @@
+<!--
+  Copyright 2002-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.
+-->
+<html>
+  <head>
+		<title>Raw un-processed HTML page (test1)</title>
+  </head>
+	<body>
+		<h1>raw un-processed HTML page (test1)</h1>
+		<p>
+		This raw HTML page is linked to from xdocs/samples/static.xml
+    and from xdocs/samples/linking.xml
+		</p>
+		<p>All linked-to pages (for example: 
+     <a href="test2.html">&lt;a href="test2.html"&gt;</a>) are
+		also available.
+    </p>
+		<hr />
+    <p>
+		[return to <a href="index.html">Index</a>]<br>
+		[return to <a href="samples/linking.html">Linking demonstration</a>]
+    </p>
+	</body>
+</html>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/test2.html
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/test2.html	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,29 @@
+<!--
+  Copyright 2002-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.
+-->
+<html>
+  <head>
+		<title>Raw un-processed HTML page (test2)</title>
+  </head>
+  <body>
+		<h1>Raw un-processed HTML page (test2)</h1>
+	  <p>
+	  This raw HTML document was linked to from another raw html document.
+	  <hr />
+	  [return to <a href="index.html">Index</a>]
+    [return to the linkee <a href="test1.html">test1.html</a>]
+	  </p>
+  </body>
+</html>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/goals.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/goals.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Design goals</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Cocoon Blocks</title>
+      <p>add information about Cocoon Blocks that can be found at http://wiki.apache.org/cocoon/Blocks</p>
+    </section>
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/overview.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/overview.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Overview</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Directory structure</title>
+      <p></p>
+    </section>
+    <section>
+      <title>Package structure</title>
+      <p></p>
+    </section>    
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/unit-testing.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/devdocs/unit-testing.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Unit Testing</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Overview</title>
+      <p></p>
+    </section>
+    <section>
+      <title>Using Ant to run JUnit tests</title>
+      <p></p>
+    </section>    
+    <section>
+      <title>Using Eclipse to run JUnit tests</title>
+      <p></p>
+    </section>     
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/group-logo.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/group.svg
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/group.svg	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,81 @@
+<?xml version="1.0" standalone="no"?>
+<!--
+  Copyright 2002-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.
+-->
+
+<!--
+       SVG Anteater logo
+
+To get started with SVG, I'd recommend getting the Adobe SVG plugin, and the
+xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the
+SVG spec (http://www.w3.org/TR/SVG/) as a reference.
+-->
+
+<!-- See Forrest Issue: FOR-229
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg xmlns:for CDATA #FIXED "http://apache.org/forrest">
+ <!ENTITY % textExt "|for:group-name">
+ <!ELEMENT for:group-name (#PCDATA)>
+]>
+-->
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+     xsl:version="1.0"
+     xmlns:for="http://apache.org/forrest"
+     width="220" height="65" >
+  <title>Anteater logo</title>
+
+  <defs>
+
+    <!--
+    <radialGradient id="radialGradient">
+      <stop style="stop-color:gold" offset="0"/>
+      <stop style="stop-color:orange" offset=".5"/>
+      <stop style="stop-color:crimson" offset="1"/>
+    </radialGradient>
+    <linearGradient id="linearGradient">
+      <stop style="stop-color:gold" offset="0"/>
+      <stop style="stop-color:orange" offset=".5"/>
+      <stop style="stop-color:crimson" offset="1"/>
+    </linearGradient>
+    -->
+
+    <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
+      <stop style="stop-color:white" offset="0"/>
+      <stop style="stop-color:lightgreen" offset="1"/>
+    </linearGradient>
+
+    <filter id="shadowFilter"  filterUnits="objectBoundingBox">
+      <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' -->
+      <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/>
+      <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' -->
+      <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
+      <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the
+      former 'over' the latter, and using the merged result as the finished
+      image -->
+      <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
+    </filter>
+
+  </defs>
+
+  <g filter="url(#shadowFilter)" fill="url(#gradient)">
+    <text x="40%" y="60%" style="font-size:24pt; font-family:Verdana ; text-anchor: middle">
+    <for:group-name />
+    </text>
+  </g>
+</svg>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/icon.png
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/project-logo.gif
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/project.svg
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/images/project.svg	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,81 @@
+<?xml version="1.0" standalone="no"?>
+<!--
+  Copyright 2002-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.
+-->
+
+<!--
+       SVG Anteater logo
+
+To get started with SVG, I'd recommend getting the Adobe SVG plugin, and the
+xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the
+SVG spec (http://www.w3.org/TR/SVG/) as a reference.
+-->
+
+<!-- See Forrest Issue: FOR-229
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg xmlns:for CDATA #FIXED "http://apache.org/forrest">
+ <!ENTITY % textExt "|for:project-name">
+ <!ELEMENT for:project-name (#PCDATA)>
+]>
+-->
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+     xsl:version="1.0"
+     xmlns:for="http://apache.org/forrest"
+     width="220" height="65" >
+  <title>Anteater logo</title>
+
+  <defs>
+
+    <!--
+    <radialGradient id="radialGradient">
+      <stop style="stop-color:gold" offset="0"/>
+      <stop style="stop-color:orange" offset=".5"/>
+      <stop style="stop-color:crimson" offset="1"/>
+    </radialGradient>
+    <linearGradient id="linearGradient">
+      <stop style="stop-color:gold" offset="0"/>
+      <stop style="stop-color:orange" offset=".5"/>
+      <stop style="stop-color:crimson" offset="1"/>
+    </linearGradient>
+    -->
+
+    <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
+      <stop style="stop-color:white" offset="0"/>
+      <stop style="stop-color:lightgreen" offset="1"/>
+    </linearGradient>
+
+    <filter id="shadowFilter"  filterUnits="objectBoundingBox">
+      <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' -->
+      <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/>
+      <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' -->
+      <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
+      <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the
+      former 'over' the latter, and using the merged result as the finished
+      image -->
+      <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
+    </filter>
+
+  </defs>
+
+  <g filter="url(#shadowFilter)" fill="url(#gradient)">
+    <text x="51%" y="75%" style="font-size:32pt; font-family:Verdana ; text-anchor: middle" >
+    <for:project-name />
+    </text>
+  </g>
+</svg>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/index.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/index.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+"http://forrest.apache.org/dtd/document-v20.dtd">
+<document>
+  <header>
+    <title>Welcome to Cocoon Block Deployer</title>
+  </header>
+
+  <body>
+    <section>
+      <title>Congratulations</title>
+
+      <p>You have successfully generated and rendered an <a
+      href="ext:forrest">Apache Forrest</a> site. This page is from the site
+      template. It is found in
+      <code>my-site/src/documentation/content/xdocs/index.xml</code> Please
+      edit it and replace this text with content of your own.</p>
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/introduction.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/introduction.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Welcome to Cocoon Block Deployer</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Congratulations</title>
+      <p>You have successfully generated and rendered an <a
+          href="ext:forrest">Apache Forrest</a> site.
+        This page is from the site template. It is found in
+        <code>my-site/src/documentation/content/xdocs/index.xml</code>
+        Please edit it and replace this text with content of your own.</p>
+    </section>
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/license.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/license.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Welcome to Cocoon Block Deployer</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Congratulations</title>
+      <p>You have successfully generated and rendered an <a
+          href="ext:forrest">Apache Forrest</a> site.
+        This page is from the site template. It is found in
+        <code>my-site/src/documentation/content/xdocs/index.xml</code>
+        Please edit it and replace this text with content of your own.</p>
+    </section>
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/site.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/site.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+
+<site label="MyProj" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="">
+
+  <about label="About">
+    <index label="Index" href="index.html" description="Welcome to MyProj"/>
+    <changes label="Changes" href="changes.html" description="History of Changes" />
+    <todo label="Todo" href="todo.html" description="Todo List" />
+    <license label="License" href="license.html" description="License information"/>  
+  </about>
+  
+  <userdocs label="User Documentation" href="userdocs/" tab="userdocs">     
+    <intro label="Introduction" href="introduction.html" 
+      description="Introduction to documentation targeted at users"/> 
+  </userdocs >
+  
+  <devdocs label="Developer Documentation" href="devdocs/" tab="devdocs">
+    <overview label="Overview" href="overview.html" 
+      description="Overview of the project"/>
+    <!--goals label="Design goals" href="goals.html" 
+      description="Goals of the project"/-->      
+    <unittesting label="Unit Testing" href="unit-testing.html" 
+      description="About Unit Testing"/>        
+  </devdocs >    
+
+  <!--all label="All">
+    <whole_site_html label="Whole Site HTML" href="wholesite.html"/>
+    <whole_site_pdf label="Whole Site PDF" href="wholesite.pdf"/>
+  </all-->
+
+  <external-refs>
+    <forrest href="http://forrest.apache.org/"/>
+    <cocoon href="http://cocoon.apache.org/"/>
+    <xml.apache.org href="http://xml.apache.org/"/>
+  </external-refs>
+
+</site>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/tabs.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/tabs.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.1//EN" "http://forrest.apache.org/dtd/tab-cocoon-v11.dtd">
+
+<tabs software="MyProj"
+  title="MyProj"
+  copyright="Foo"
+  xmlns:xlink="http://www.w3.org/1999/xlink">
+
+  <!-- The rules for tabs are:
+    @dir will always have '/@indexfile' added.
+    @indexfile gets appended to @dir if the tab is selected. Defaults to 'index.html'
+    @href is not modified unless it is root-relative and obviously specifies a
+    directory (ends in '/'), in which case /index.html will be added
+    If @id's are present, site.xml entries with a matching @tab will be in that tab.
+
+   Tabs can be embedded to a depth of two. The second level of tabs will only 
+    be displayed when their parent tab is selected.    
+  -->
+
+  <tab id="" label="Home" dir="" indexfile="index.html"/>
+  <tab id="userdocs" label="User documentation" dir="userdocs" indexfile="introduction.html"/>
+  <tab id="devdocs" label="Developer documentation" dir="devdocs" indexfile="overview.html"/>
+  <tab label="Apache Cocoon" href="http://cocoon.apache.org"/>
+
+</tabs>

Added: cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/userdocs/introduction.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/content/xdocs/userdocs/introduction.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+<document> 
+  <header> 
+    <title>Introduction</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>TBD</title>
+      <p></p>
+    </section>
+  </body>
+</document>

Added: cocoon/whiteboard/block-deployer/src/documentation/images/cocoon-project-logo.png
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/src/documentation/skinconf.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/skinconf.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,342 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+
+<!--
+Skin configuration file. This file contains details of your project,
+which will be used to configure the chosen Forrest skin.
+-->
+
+<!-- See issue FOR-255
+  The parser is not getting the local copy of the DTD and is going to
+  the network. The workaround is to comment-out the document type declaration
+  and add the line "forrest.validate.skinconf=false" to forrest.properties
+-->
+<!DOCTYPE skinconfig PUBLIC "-//APACHE//DTD Skin Configuration V0.6-3//EN" "http://forrest.apache.org/dtd/skinconfig-v06-3.dtd">
+<skinconfig>
+  <!-- To enable lucene search add provider="lucene"
+    Add box-location="alt" to move the search box to an alternate location
+    (if the skin supports it) and box-location="all" to show it in all
+    available locations on the page.  Remove the <search> element to show
+    no search box. @domain will enable sitesearch for the specific domain with google.
+    In other words google will search the @domain for the query string.
+  -->
+  <search name="Cocoon Block Deployer" domain=""/>
+
+  <!-- Disable the print link? If enabled, invalid HTML 4.0.1 -->
+  <disable-print-link>true</disable-print-link>  
+  <!-- Disable the PDF link? -->
+  <disable-pdf-link>false</disable-pdf-link>
+  <!-- Disable the POD link? -->
+  <disable-pod-link>true</disable-pod-link>
+  <!-- Disable the Text link? FIXME: NOT YET IMPLEMENETED. -->
+  <disable-txt-link>true</disable-txt-link>
+  <!-- Disable the xml source link? -->
+  <!-- The xml source link makes it possible to access the xml rendition
+    of the source frim the html page, and to have it generated statically.
+    This can be used to enable other sites and services to reuse the
+    xml format for their uses. Keep this disabled if you don't want other
+    sites to easily reuse your pages.-->
+  <disable-xml-link>true</disable-xml-link>
+
+  <!-- Disable navigation icons on all external links? -->
+  <disable-external-link-image>false</disable-external-link-image>
+
+  <!-- Disable w3c compliance links? 
+    Use e.g. align="center" to move the compliance links logos to 
+    an alternate location default is left.
+    (if the skin supports it) -->
+  <disable-compliance-links>false</disable-compliance-links>
+
+  <!-- Render mailto: links unrecognisable by spam harvesters? -->
+  <obfuscate-mail-links>true</obfuscate-mail-links>
+  <obfuscate-mail-value>.at.</obfuscate-mail-value>
+
+  <!-- Disable the javascript facility to change the font size -->
+  <disable-font-script>true</disable-font-script>
+
+  <!-- mandatory project logo
+       default skin: renders it at the top -->
+  <project-name>CBD</project-name>
+  <project-description>Collection of tools that help to deploy Cocoon Blocks</project-description>
+  <project-url>http://cocoon.apache.org/block-deployer</project-url>
+  <project-logo>images/project.png</project-logo>
+  <!-- Alternative static image:
+  <project-logo>images/project-logo.gif</project-logo> -->
+
+  <!-- optional group logo
+       default skin: renders it at the top-left corner -->
+  <group-name>Cocoon</group-name>
+  <group-url>http://cocoon.apache.org/</group-url>
+  <group-logo>images/group.png</group-logo>  
+  <!--group-logo>images/cocoon-project-logo.png</group-logo-->
+
+  <!-- optional host logo (e.g. sourceforge logo)
+       default skin: renders it at the bottom-left corner -->
+  <host-url></host-url>
+  <host-logo></host-logo>
+
+  <!-- relative url of a favicon file, normally favicon.ico -->
+  <favicon-url></favicon-url>
+
+  <!-- The following are used to construct a copyright statement -->
+  <year>1999-2004</year>
+  <vendor>The Apache Software Foundation.</vendor>
+  <!-- The optional copyright-link URL will be used as a link in the
+    copyright statement -->
+  <copyright-link>http://www.apache.org/licenses/</copyright-link>
+
+
+  <!-- Some skins use this to form a 'breadcrumb trail' of links.
+    Use location="alt" to move the trail to an alternate location
+    (if the skin supports it).
+	  Omit the location attribute to display the trail in the default location.
+	  Use location="none" to not display the trail (if the skin supports it).
+    For some skins just set the attributes to blank.
+  -->
+  <trail>
+    <link1 name="Apache Group" href="http://www.apache.org/"/>
+    <link2 name="Apache Cocoon" href="http://cocoon.apache.org/"/>
+    <link3 name="Cocoon Block Deployer" href=""/>
+  </trail>
+
+  <!-- Configure the TOC, i.e. the Table of Contents.
+  @max-depth
+   how many "section" levels need to be included in the
+   generated Table of Contents (TOC). 
+  @min-sections
+   Minimum required to create a TOC.
+  @location ("page","menu","page,menu", "none")
+   Where to show the TOC.
+  -->
+  <toc max-depth="2" min-sections="1" location="page"/>
+
+  <!-- Heading types can be clean|underlined|boxed  -->
+  <headings type="boxed"/>
+  
+  <!-- The optional feedback element will be used to construct a
+    feedback link in the footer with the page pathname appended:
+    <a href="@href">{@to}</a>
+    -->
+  <feedback to="dev@cocoon.apache.org"
+    href="mailto:dev@cocoon.apache.org?subject=Feedback&#160; (Cocoon Block Deployer website)" >
+    Send feedback about the website to:
+  </feedback>
+  <!--
+    extra-css - here you can define custom css-elements that are 
+    a. overriding the fallback elements or 
+    b. adding the css definition from new elements that you may have 
+       used in your documentation.
+    -->
+  <extra-css>
+    <!--Example of b. 
+        To define the css definition of a new element that you may have used
+        in the class attribute of a <p> node. 
+        e.g. <p class="quote"/>
+    -->
+    p.quote {
+      margin-left: 2em;
+      padding: .5em;
+      background-color: #f0f0f0;
+      font-family: monospace;
+    }
+  </extra-css>
+
+  <colors>
+  <!-- These values are used for the generated CSS files. -->
+
+  <!-- Krysalis -->
+<!--
+    <color name="header"    value="#FFFFFF"/>
+
+    <color name="tab-selected" value="#a5b6c6" link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="tab-unselected" value="#F7F7F7"  link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="subtab-selected" value="#a5b6c6"  link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="subtab-unselected" value="#a5b6c6"  link="#000000" vlink="#000000" hlink="#000000"/>
+
+    <color name="heading" value="#a5b6c6"/>
+    <color name="subheading" value="#CFDCED"/>
+        
+    <color name="navstrip" value="#CFDCED" font="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="toolbox" value="#a5b6c6"/>
+    <color name="border" value="#a5b6c6"/>
+        
+    <color name="menu" value="#F7F7F7" link="#000000" vlink="#000000" hlink="#000000"/>    
+    <color name="dialog" value="#F7F7F7"/>
+            
+    <color name="body"    value="#ffffff" link="#0F3660" vlink="#009999" hlink="#000066"/>
+    
+    <color name="table" value="#a5b6c6"/>    
+    <color name="table-cell" value="#ffffff"/>    
+    <color name="highlight" value="#ffff00"/>
+    <color name="fixme" value="#cc6600"/>
+    <color name="note" value="#006699"/>
+    <color name="warning" value="#990000"/>
+    <color name="code" value="#a5b6c6"/>
+        
+    <color name="footer" value="#a5b6c6"/>
+-->
+  
+  <!-- Forrest -->
+<!--
+    <color name="header"    value="#294563"/>
+
+    <color name="tab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="tab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="subtab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="subtab-unselected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+
+    <color name="heading" value="#294563"/>
+    <color name="subheading" value="#4a6d8c"/>
+        
+    <color name="navstrip" value="#cedfef" font="#0F3660" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="toolbox" value="#4a6d8c"/>
+    <color name="border" value="#294563"/>
+    
+    <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/>    
+    <color name="dialog" value="#4a6d8c"/>
+            
+    <color name="body" value="#ffffff"  link="#0F3660" vlink="#009999" hlink="#000066"/>
+    
+    <color name="table" value="#7099C5"/>    
+    <color name="table-cell" value="#f0f0ff"/>    
+    <color name="highlight" value="#ffff00"/>
+    <color name="fixme" value="#cc6600"/>
+    <color name="note" value="#006699"/>
+    <color name="warning" value="#990000"/>
+    <color name="code" value="#CFDCED"/>
+        
+    <color name="footer" value="#cedfef"/>
+-->
+
+  <!-- Collabnet --> 
+<!--
+    <color name="header"    value="#003366"/>
+
+    <color name="tab-selected" value="#dddddd" link="#555555" vlink="#555555" hlink="#555555"/>
+    <color name="tab-unselected" value="#999999" link="#ffffff" vlink="#ffffff" hlink="#ffffff"/>
+    <color name="subtab-selected" value="#cccccc" link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="subtab-unselected" value="#cccccc" link="#555555" vlink="#555555" hlink="#555555"/>
+
+    <color name="heading" value="#003366"/>
+    <color name="subheading" value="#888888"/>
+    
+    <color name="navstrip" value="#dddddd" font="#555555"/>
+    <color name="toolbox" value="#dddddd" font="#555555"/>
+    <color name="border" value="#999999"/>
+    
+    <color name="menu" value="#ffffff"/>    
+    <color name="dialog" value="#eeeeee"/>
+            
+    <color name="body"      value="#ffffff"/>
+    
+    <color name="table" value="#ccc"/>    
+    <color name="table-cell" value="#ffffff"/>   
+    <color name="highlight" value="#ffff00"/>
+    <color name="fixme" value="#cc6600"/>
+    <color name="note" value="#006699"/>
+    <color name="warning" value="#990000"/>
+    <color name="code" value="#003366"/>
+        
+    <color name="footer" value="#ffffff"/>
+-->
+ <!-- Lenya using pelt-->
+<!--
+    <color name="header" value="#ffffff"/>
+
+    <color name="tab-selected" value="#4C6C8F" link="#ffffff" vlink="#ffffff" hlink="#ffffff"/>
+    <color name="tab-unselected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="subtab-selected" value="#000000" link="#000000" vlink="#000000" hlink="#000000"/>
+    <color name="subtab-unselected" value="#E5E4D9" link="#000000" vlink="#000000" hlink="#000000"/>
+
+    <color name="heading" value="#E5E4D9"/>
+    <color name="subheading" value="#000000"/>
+    <color name="published" value="#4C6C8F" font="#FFFFFF"/>
+    <color name="feedback" value="#4C6C8F" font="#FFFFFF" align="center"/>
+    <color name="navstrip" value="#E5E4D9" font="#000000"/>
+
+    <color name="toolbox" value="#CFDCED" font="#000000"/>
+
+    <color name="border" value="#999999"/>
+    <color name="menu" value="#4C6C8F" font="#ffffff" link="#ffffff" vlink="#ffffff" hlink="#ffffff" current="#FFCC33" />    
+    <color name="menuheading" value="#cfdced" font="#000000" />
+    <color name="searchbox" value="#E5E4D9" font="#000000"/>
+    
+    <color name="dialog" value="#CFDCED"/>
+    <color name="body" value="#ffffff" />            
+    
+    <color name="table" value="#ccc"/>    
+    <color name="table-cell" value="#ffffff"/>   
+    <color name="highlight" value="#ffff00"/>
+    <color name="fixme" value="#cc6600"/>
+    <color name="note" value="#006699"/>
+    <color name="warning" value="#990000"/>
+    <color name="code" value="#003366"/>
+        
+    <color name="footer" value="#E5E4D9"/>
+-->
+  </colors>
+ 
+  <!-- Settings specific to PDF output.  -->
+  <pdf>
+    <!-- 
+       Supported page sizes are a0, a1, a2, a3, a4, a5, executive,
+       folio, legal, ledger, letter, quarto, tabloid (default letter).
+       Supported page orientations are portrait, landscape (default
+       portrait).
+       Supported text alignments are left, right, justify (default left).
+    -->
+    <page size="a4" orientation="portrait" text-align="left"/>
+
+    <!--
+       Margins can be specified for top, bottom, inner, and outer
+       edges. If double-sided="false", the inner edge is always left
+       and the outer is always right. If double-sided="true", the
+       inner edge will be left on odd pages, right on even pages,
+       the outer edge vice versa.
+       Specified below are the default settings.
+    -->
+    <margins double-sided="false">
+      <top>1in</top>
+      <bottom>1in</bottom>
+      <inner>1.25in</inner>
+      <outer>1in</outer>
+    </margins>
+
+    <!--
+      Print the URL text next to all links going outside the file
+    -->
+    <show-external-urls>false</show-external-urls>
+  </pdf>
+
+  <!-- Credits are typically rendered as a set of small clickable
+    images in the page footer.
+    Use box-location="alt" to move the credit to an alternate location
+    (if the skin supports it). 
+  -->
+  <credits>
+    <credit box-location="alt">
+      <name>Built with Apache Forrest</name>
+      <url>http://forrest.apache.org/</url>
+      <image>images/built-with-forrest-button.png</image>
+      <width>88</width>
+      <height>31</height>
+    </credit>
+    <!-- A credit with @role='pdf' will have its name and url
+      displayed in the PDF page's footer. -->
+  </credits>
+
+</skinconfig>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/langcode.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/langcode.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<!--
+  This catalog is used so displays how the language name 
+  is named by their speakers.
+-->
+<catalogue >
+  <message key="en">English</message>
+  <message key="es">Espanol</message>
+  <message key="it">Italiano</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/languages_en.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/languages_en.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="en">
+  <message key="en">English</message>
+  <message key="es">Spanish</message>
+  <message key="nl">Dutch</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/languages_es.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/languages_es.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="es">
+  <message key="en">Ingles</message>
+  <message key="es">Espanol</message>
+  <message key="nl">Holandes</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="en">
+  <message key="About">About</message>
+  <message key="Index">Index</message>
+  <message key="Changes">Changes</message>
+  <message key="Todo">Todo</message>
+  <message key="Samples">Samples</message>
+  <message key="Apache document">Apache document</message>
+  <message key="Static content">Static content</message>
+  <message key="Linking">Linking</message>
+  <message key="Wiki page">Wiki page</message>
+  <message key="ihtml page">Ihtml page</message>
+  <message key="ehtml page">Ehtml page</message>
+  <message key="FAQ">FAQ</message>
+  <message key="Simplifed Docbook">Simplifed Docbook</message>
+  <message key="XSP page">XSP page</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_af.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_af.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="af">
+    <message key="About">Aangaande</message>
+    <message key="Index">Inhoud</message>
+    <message key="Changes">Veranderinge</message>
+    <message key="Todo">Om te doen</message>
+    <message key="Samples">Voorbeelde</message>
+    <message key="Apache document">Apache dokument</message>
+    <message key="Static content">Statise Inhoud</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Wiki bladsy</message>
+    <message key="ihtml page">Ihtml bladsy</message>
+    <message key="ehtml page">Ehtml bladsy</message>
+    <message key="FAQ">FAQ</message>
+    <message key="Simplifed Docbook">Vereenvoudigde Docbook</message>
+    <message key="XSP page">XSP bladsy</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_de.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_de.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="de">
+  <message key="About">Über</message>
+  <message key="Index">Index</message>
+  <message key="Changes">Änderungen </message>
+  <message key="Todo">Todo</message>
+  <message key="Samples">Beispiele</message>
+  <message key="Apache document">Apache Dokumentationsseite</message>
+  <message key="Static content">Statischer Inhalt</message>
+  <message key="Linking">Linking</message>
+  <message key="Wiki page">Wiki Seite</message>
+  <message key="ihtml page">ihtml Seite</message>
+  <message key="ehtml page">ehtml Seite</message>
+  <message key="FAQ">FAQ</message>
+  <message key="Simplifed Docbook">Vereinfachte Docbook</message>
+  <message key="XSP page">XSP Seite</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_es.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_es.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="es">
+    <message key="About">Acerca de</message>
+    <message key="Index">Indice</message>
+    <message key="Changes">Cambios</message>
+    <message key="Todo">Tareas pendientes</message>
+    <message key="Samples">Ejemplos</message>
+    <message key="Apache document">Documento Apache</message>
+    <message key="Static content">Contenido Estático</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Página Wiki</message>
+    <message key="ihtml page">Página ihtml</message>
+    <message key="ehtml page">Página ehtml</message>
+    <message key="FAQ">Preguntas Frecuentes</message>
+    <message key="Simplifed Docbook">Página Simplifed Docbook</message>
+    <message key="XSP page">Página XSP</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_it.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_it.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="it">
+    <message key="About">Riguardo a</message>
+    <message key="Index">Indice</message>
+    <message key="Changes">Cambiamenti</message>
+    <message key="Todo">Cose da fare</message>
+    <message key="Samples">Esempi</message>
+    <message key="Apache document">Apache document</message>
+    <message key="Static content">Contenuto Statico</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Pagina Wiki</message>
+    <message key="ihtml page">Pagina ihtml</message>
+    <message key="ehtml page">Pagina ehtml</message>
+    <message key="FAQ">Domande frequenti</message>
+    <message key="Simplifed Docbook">Simplifed Docbook</message>
+    <message key="XSP page">Pagina XSP</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_no.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_no.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="no">
+    <message key="About">Om</message>
+    <message key="Index">Indeks</message>
+    <message key="Changes">Endringer</message>
+    <message key="Todo">Oppgave liste</message>
+    <message key="Samples">Eksempler</message>
+    <message key="Apache document">Apache Dokument</message>
+    <message key="Static content">Statisk innhold</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Wiki side</message>
+    <message key="ihtml page">ihtml side</message>
+    <message key="ehtml page">ehtml side</message>
+    <message key="FAQ">FAQ</message>
+    <message key="Simplifed Docbook">Simplifed Docbook</message>
+    <message key="XSP page">XSP side</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_ru.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_ru.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="ru">
+    <message key="About">О проекте</message>
+    <message key="Index">Содержание</message>
+    <message key="Changes">Изменения</message>
+    <message key="Todo">План</message>
+    <message key="Samples">Примеры</message>
+    <message key="Apache document">Страница документа Apache</message>
+    <message key="Static content">Статическое содержание</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Страница Wiki</message>
+    <message key="ihtml page">Страница ihtml</message>
+    <message key="ehtml page">Страница ehtml</message>
+    <message key="FAQ">Вопросы/Ответы</message>
+    <message key="Simplifed Docbook">Docbook страница</message>
+    <message key="XSP page">XSP страница</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/menu_sk.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/menu_sk.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="sk">
+    <message key="About">O programe</message>
+    <message key="Index">Zoznám</message>
+    <message key="Changes">Zmeny</message>
+    <message key="Todo">Úlohy</message>
+    <message key="Samples">Príklady</message>
+    <message key="Apache document">Apache Document</message>
+    <message key="Static content">Statický Obsah</message>
+    <message key="Linking">Linking</message>
+    <message key="Wiki page">Wiki stránka</message>
+    <message key="ihtml page">ihtml stránka</message>
+    <message key="ehtml page">ehtml stránka</message>
+    <message key="FAQ">Casté Otázky</message>
+    <message key="Simplifed Docbook">Simplifed Docbook stránka</message>
+    <message key="XSP page">XSP stránka</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/tabs.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/tabs.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="en">
+  <message key="Home">Home</message>
+  <message key="Samples">Samples</message>
+  <message key="Apache XML Projects">Apache XML Projects</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/documentation/translations/tabs_es.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/documentation/translations/tabs_es.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-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.
+-->
+<catalogue xml:lang="es">
+  <message key="Home">Inicio</message>
+  <message key="Samples">Ejemplos</message>
+  <message key="Apache XML Projects">Projectos XML Apache</message>
+</catalogue>

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockPropertyImpl.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/BlockPropertyImpl.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+/**
+ * @since 0.1
+ */
+public class BlockPropertyImpl implements BlockProperty {
+
+    protected String name;
+    protected String description;
+    protected String defaultValue;
+    
+    public void setDefaultValue(String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    public String getName() {       
+        return this.name;
+    }
+
+    public String getDescription() {
+        return this.description;
+    }
+
+    public String getDefaultValue() {
+        return this.defaultValue;
+    }
+
+    public String toString() {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("BlockPropertyImpl[");
+        buffer.append("defaultValue = ").append(defaultValue);
+        buffer.append(" description = ").append(description);
+        buffer.append(" name = ").append(name);
+        buffer.append("]");
+        return buffer.toString();
+    }}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlock.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlock.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.cocoon.blockdeployer.block.Block;
+
+/**
+ * @since 0.1
+ */
+public class RealBlock implements Block{
+
+    public InputStream getInputStream() throws IOException {
+        return null;
+    }
+
+    public RemoteBlock getRemoteBlock() {
+        return null;
+    }
+
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlockDescriptor.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealBlockDescriptor.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.cocoon.blockdeployer.block.BlockDescriptor;
+import java.util.Map;
+
+/**
+ * @since 0.1
+ */
+public class RealBlockDescriptor implements BlockDescriptor {
+    
+    private String blockId;
+    private String interfaceVersion;
+    private String version;
+    private String name;
+    private String author;
+    private String authorUrl;
+    private String description;
+    private String descriptionUrl;
+    private String sitemap;
+    private List dependencies;
+    private Collection properties = new ArrayList();
+    private Map propertiesMap = new HashMap();
+
+    // **************** base meta information ********************    
+    
+    public String getName() {
+        return this.name;
+    }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+    
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+    
+    public String getAuthorUrl() {
+        return authorUrl;
+    }
+    
+    public void setAuthorUrl(String authorUrl) {
+        this.authorUrl = authorUrl;
+    }
+    
+    public String getBlockId() {
+        return blockId;
+    }
+    
+    public void setBlockId(String blockId) {
+        this.blockId = blockId;
+    }
+    
+    public String getDescription() {
+        return description;
+    }
+    
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    
+    public String getDescriptionUrl() {
+        return descriptionUrl;
+    }
+    
+    public void setDescriptionURL(String descriptionURL) {
+        this.descriptionUrl = descriptionURL;
+    }
+    
+    public String getInterfaceVersion() {
+        return interfaceVersion;
+    }
+    
+    public void setInterfaceVersion(String interfaceVersion) {
+        this.interfaceVersion = interfaceVersion;
+    }
+    
+    public String getSitemap() {
+        return sitemap;
+    }
+    
+    public void setSitemap(String sitemap) {
+        this.sitemap = sitemap;
+    }
+    
+    public String getVersion() {
+        return version;
+    }
+    
+    public void setVersion(String version) {
+        this.version = version;
+    }
+    
+    // **************** dependencies ********************
+
+    public Iterator getDependantBlockIDs() {
+        return this.dependencies.iterator();
+    }
+    
+    public void setDependantBlockName(String dependencies) {
+        this.dependencies.add(dependencies);
+    }
+
+    // **************** properties   ********************
+    
+    public Iterator getPropertyNames() {
+        Iterator propertiesIt = this.properties.iterator();
+        while( propertiesIt.hasNext() ) {
+            BlockProperty bp = (BlockProperty) propertiesIt.next();
+            this.propertiesMap.put(bp.getName(), bp);
+        }
+        return this.propertiesMap.keySet().iterator();
+    }
+
+
+    public BlockProperty getProperty(String name) {
+        return (BlockProperty) this.propertiesMap.get(name);
+    }
+
+    
+    public Collection getProperties() {
+        return this.properties;
+    }
+    
+    // **************** requirements ********************
+    
+    public Iterator getRequiredBlockURIs() {
+        return null;
+    }
+
+    
+    // **************** implements ******************** 
+    
+    public String getImplementedBlockURI() {
+        return null;
+    }
+    
+    // **************** extends  ********************
+    
+    public String getExtendedBlockURI() {
+        return null;
+    }
+     
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealRemoteBlock.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RealRemoteBlock.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import org.apache.cocoon.blockdeployer.block.Block;
+import org.apache.cocoon.blockdeployer.block.BlockDescriptor;
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.apache.cocoon.blockdeployer.repository.Locator;
+
+/**
+ * @since 0.1
+ */
+public class RealRemoteBlock implements RemoteBlock {
+
+    private Locator locator;
+    private Block block;
+    private BlockDescriptor blockDescriptor;
+    
+    public Locator getLocator() {
+        return this.locator;
+    }
+    
+    public void setLocator(Locator locator) {
+        this.locator = locator;
+    }
+
+    public Block getBlock() {
+        return this.block;
+    }
+    
+    public void setBlock(Block block) {
+        this.block = block;
+    }
+
+    public BlockDescriptor getBlockDescriptor() {
+        return this.blockDescriptor;
+    }
+    
+    public void setBlockDescriptor(BlockDescriptor blockDescriptor) {
+        this.blockDescriptor = blockDescriptor;
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RemoteBlockFactory.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/block/RemoteBlockFactory.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.block;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.apache.cocoon.blockdeployer.repository.Locator;
+import org.exolab.castor.mapping.Mapping;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * This factory class creates RemoteBlocks based on the descriptor
+ * file added to the block.
+ * 
+ * Currently blocks with the namespace 'http://apache.org/cocoon/blocks/cob/1.0' 
+ * are supported.
+ * 
+ * @since 0.1
+ */
+public class RemoteBlockFactory {
+
+    /**
+     * Creates a RemoteBlock based on the descriptor and is called from
+     * a locator which wants to provide a RemoteBlock.
+     * 
+     * @param descriptorString is a string containing the BlockDescription (block.xml)
+     * @return the RemoteBlock
+     */
+    /*
+     * FIXME the factory should analyse the descriptor and decide based on the results which BlockDescriptor
+     *       implementation is used
+     * FIXME the descriptor should be analyzed whether it is correct - otherwise raise an exception
+     */
+    public static RemoteBlock getRemoteBlock(InputStream descriptor, Locator locator) throws Exception {
+        // analyse the descriptor and decide which RemoteBlock implementation should be used
+        
+        // it's a RealRemoteBlock ...
+        RealRemoteBlock realRemoteBlock = new RealRemoteBlock();
+        realRemoteBlock.setBlockDescriptor(createCOB10Descriptor(descriptor));
+        realRemoteBlock.setLocator(locator);
+        
+        return realRemoteBlock;
+    }
+    
+    private static RealBlockDescriptor createCOB10Descriptor(InputStream descriptor) throws Exception {        
+        Mapping mapping = new Mapping();
+        mapping.loadMapping("mapping/block.xml-mapping.xml");
+        
+        Unmarshaller unmarshaller = new Unmarshaller(RealBlockDescriptor.class);
+        unmarshaller.setMapping(mapping);
+        unmarshaller.setIgnoreExtraAttributes(true);
+        unmarshaller.setIgnoreExtraElements(true);
+//        unmarshaller.setDebug(true);
+        RealBlockDescriptor realBlockDescriptor = (RealBlockDescriptor)unmarshaller.unmarshal(new InputStreamReader(descriptor));
+        return realBlockDescriptor;
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/locking/FilesystemLock.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/locking/FilesystemLock.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.locking;
+
+import java.util.Date;
+
+import org.apache.cocoon.blockdeployer.locking.Lock;
+
+/**
+ * @since 0.1
+ */
+public class FilesystemLock implements Lock {
+
+    public void setTimestamp(Date timestamp) {
+        
+    }
+
+    public Date getLockTime() {
+        return null;
+    }
+
+    public void setComment(String comment) {
+        
+    }
+
+    public String getComment() {
+        return null;
+    }
+
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServerLocator.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/ApplicationServerLocator.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import java.io.File;
+import java.net.MalformedURLException;
+
+import org.apache.cocoon.blockdeployer.block.Block;
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.apache.cocoon.blockdeployer.locking.Lock;
+import org.apache.cocoon.blockdeployer.locking.LockingException;
+import org.apache.cocoon.blockdeployer.repository.Browsable;
+import org.apache.cocoon.blockdeployer.repository.Deployable;
+import org.apache.cocoon.blockdeployer.repository.Locator;
+import org.apache.cocoon.blockdeployer.repository.Lockable;
+import org.apache.cocoon.blockdeployer.repository.Searchable;
+import org.apache.cocoon.blockdeployer.wiring.Wiring;
+
+
+/**
+ * The <code>ApplicationServerLocator</code> points to a Cocoon server that can manage
+ * <code>Block</code>s.
+ * 
+ * @since 0.1
+ */
+public class ApplicationServerLocator implements 
+		Locator, Browsable, Deployable, Searchable, Lockable {
+    
+    private File basedir;
+    private Wiring wiring;
+
+    /**
+     * Provide the basedir and the wiring.
+     * 
+     * @param basedir is a <code>File</code> object pointing to the directory where blocks can be deployed
+     * @param wiring is the @link Wiring (representing wiring.xml) of a Cocoon server
+     */
+    public ApplicationServerLocator(File basedir, Wiring wiring) {
+        if(!basedir.exists()) {
+            throw new IllegalArgumentException("The specified directory is not available!");
+        }
+        if(!basedir.isDirectory()) {
+            throw new IllegalArgumentException("The specified base dir (usually [appserv]/WEB-INF/blocks) " +
+                    "for this locator is not a directory!");
+        }    
+        if(!basedir.canWrite()) {
+            throw new IllegalArgumentException("The specified base dir is not writeable!");
+        }
+        if(wiring == null) {
+            throw new IllegalArgumentException("The wiring mustn't be null!");
+        }
+        this.basedir = basedir;        
+        this.wiring = wiring;
+    }
+
+    public RemoteBlock getBlock(String blockUri) {
+        return null;
+    }  
+    
+    public RemoteBlock[] browse() {
+        return null;
+    }
+
+    /**
+     * Deploy an array of blocks. It makes sure that either any or all blocks are
+     * deployed.
+     */
+    /*
+     * FIXME how to make sure that either any or all blocks is deployed ...?
+     */
+    public boolean deploy(Block[] blocks) {
+        // remove all blocks deployed into temp dirs (left from an unsuccessful deploy before)
+        
+        // extract all blocks into tmp dirs
+        
+        // add new blocks to wiring object
+        
+        // --- start transaction (but how ...)
+        //     rename all block directories
+        
+        //     write wiring
+        
+        // --- end transaction
+        
+        return false;
+    }
+
+    public RemoteBlock[] lookupBlock(String blockId) {
+        return null;
+    }
+
+    public void setLock(Lock lock) throws LockingException {
+        
+    }
+
+    public Lock getLockingStatus() throws LockingException {
+        return null;
+    }
+
+    public boolean removeLock() throws LockingException {
+        return false;
+    }
+
+    public String getIdentifier() {
+        try {
+            return this.basedir.toURL().toString();
+        } catch (MalformedURLException e) {
+        }
+        return null;
+    }
+
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DefaultRepository.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DefaultRepository.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.apache.cocoon.blockdeployer.repository.Locator;
+import org.apache.cocoon.blockdeployer.repository.Repository;
+
+/**
+ * @since 0.1
+ */
+public class DefaultRepository implements Repository {
+    
+    private List locators = new ArrayList();
+
+    public void addLocator(Locator locator) {
+        if(locator == null) {
+            throw new NullPointerException("You mustn't pass null.");
+        }           
+        this.locators.add(locator);
+    }
+
+    public void removeLocator(Locator locator) {
+        if(locator == null) {
+            throw new NullPointerException("You mustn't pass null.");
+        }        
+        this.locators.remove(locator);   
+    }
+
+    public RemoteBlock[] browse() {
+        return null;
+    }
+
+    public RemoteBlock[] lookupBlock(String blockId) {
+        ArrayList tempLocators = new ArrayList();
+        // if the locator has the requested block it is added
+        Iterator locatorsIterator = this.locators.iterator();
+        while(locatorsIterator.hasNext()) {
+            Locator locator = (Locator) locatorsIterator.next();
+            RemoteBlock remoteBlock = null;
+            try {
+                remoteBlock = locator.getBlock(blockId);
+    	        if(remoteBlock != null) {
+    	            tempLocators.add(remoteBlock);
+    	    	}                
+            } catch(Exception ex) { 
+                // don't add this RemoteBlock to the list
+            }
+        }
+        
+        Object[] array = tempLocators.toArray();
+        RemoteBlock[] resultRemoteBlock = new RemoteBlock[tempLocators.size()];
+        for(int i = 0; i < tempLocators.size(); i++) {
+            resultRemoteBlock[i] = (RemoteBlock) array[i];
+        }
+        return resultRemoteBlock;
+    }
+    
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("This repository uses following locators to get blocks:\n");
+        for(int i = 0; i < this.locators.size(); i++) {
+            Locator locator = (Locator) this.locators.get(i);
+            sb.append(" " + i + ". " + locator.getIdentifier() );            
+        }
+        return sb.toString();
+    }
+
+}
\ No newline at end of file

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DependencyBuilder.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/DependencyBuilder.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+
+/**
+ * @since 0.1
+ */
+public class DependencyBuilder {
+
+   public static RemoteBlock[] getDependingBlocks(RemoteBlock repositoryBlock) {
+       return null;
+   }
+   
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/FilesystemLocator.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.util.zip.ZipInputStream;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.apache.cocoon.blockdeployer.block.RemoteBlockFactory;
+import org.apache.cocoon.blockdeployer.utils.LocatorUtils;
+
+/**
+ * @since 0.1
+ */
+public class FilesystemLocator implements Locator {
+
+    private File basedir;
+
+    public FilesystemLocator(File basedir) {
+        this.basedir = basedir;
+        if(!basedir.exists()) {
+            throw new IllegalArgumentException("The specified directory is not available!");
+        }
+        if(!basedir.isDirectory()) {
+            throw new IllegalArgumentException("The specified base for this locator is not a directory!");
+        }        
+    }
+    
+    public String getIdentifier() {
+        try {
+            return this.basedir.toURL().toString();
+        } catch (MalformedURLException e) {
+        }
+        return null;
+    }
+    
+    public RemoteBlock getBlock(String blockUri) throws Exception {
+        // strip schema to get the path
+        if(!LocatorUtils.checkUri(blockUri)) {
+            throw new IllegalArgumentException("Can't find the requested block " + blockUri + 
+                    ". Wrong schema, only http:// block uris are allowed.");
+        }
+        
+        File cobFile = null;
+        try {
+            cobFile = LocatorUtils.getCobAsFile(this.basedir, blockUri.substring("http:/".length()));
+        } catch(FileNotFoundException fnfe) {
+            String cobFilePath = null;
+            if(cobFile != null) {
+                cobFilePath = cobFile.getAbsolutePath();
+            }
+            else {
+                return null;
+            }
+        }
+        
+        // read the descriptor from the ZIP file
+        InputStream descriptorInputStream = null;
+        try {
+            descriptorInputStream = LocatorUtils.getDescriptorInputStream(new ZipInputStream(new FileInputStream(cobFile)));
+        } catch (Exception e) {
+            throw new Exception("Can't read block from " + cobFile.getAbsolutePath());
+        } 
+        
+        // get the RemoteBlock from the factory
+        RemoteBlock remoteBlock = null;
+        try {
+            remoteBlock = RemoteBlockFactory.getRemoteBlock(descriptorInputStream, this);
+        } catch (Exception e) {
+            throw new Exception("Can't read block descriptor from " + 
+                    cobFile.getAbsolutePath() + "; " + e.getMessage());
+        }
+        
+        return remoteBlock;
+    }
+    
+    public RemoteBlock[] browse() {
+        return null;
+    }
+
+    public RemoteBlock[] lookupBlock(String blockId) {
+        return null;
+    }
+    
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("Filesystemlocator: basedir = " + this.basedir);
+        return sb.toString();
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/LocatorFactory.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/repository/LocatorFactory.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+/**
+ * The LocatorFactory creates based on the provided URL
+ * a Locator.
+ * 
+ * @since 0.1
+ */
+public class LocatorFactory {
+
+    public static Locator getLocator(String url) {
+        return null;
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/utils/LocatorUtils.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/utils/LocatorUtils.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import org.apache.cocoon.blockdeployer.repository.Locator;
+
+/**
+ * @since 0.1
+ */
+public class LocatorUtils {
+    
+    /**
+     * Check if a uri starts with the default protocol.
+     * 
+     * @param uri
+     * @return returns true if the URI is valid (= starts with http)
+     */
+    public static boolean checkUri(String uri) {
+        if(uri.startsWith("http://")) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Read the file @link Locator.COB_INF_BLOCK_XML (block.xml) from the ZipInputStream and
+     * return an @link InputStream. 
+     * 
+     * @throws FileNotFoundException if the ZipInputStream doesn't contain block.xml
+     * @throws IOException if there is a problem while reading the input stream
+     */
+    public static InputStream getDescriptorInputStream(ZipInputStream cobStream) 
+    	throws IOException, FileNotFoundException {
+        
+        boolean found = false;
+        ZipEntry document = null;
+        
+        do {
+            document = cobStream.getNextEntry();
+            if (document != null) {
+                if (document.getName().equals(Locator.COB_INF_BLOCK_XML)) {
+                    found = true;
+                } else {
+                    // go to next entry
+                    cobStream.closeEntry();
+                }
+            }
+        } while (document != null && found == false);        
+        
+        if(found == false) {
+            throw new FileNotFoundException("The ZIP file doesn't contain " + Locator.COB_INF_BLOCK_XML);
+        }
+        
+        // now we will extract the document and write it into a byte array
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try {
+            byte[] buffer = new byte[8192];
+            int length = -1;
+            while (cobStream.available() > 0) {
+                length = cobStream.read(buffer, 0, 8192);
+                if (length > 0) {
+                    baos.write(buffer, 0, length);
+                }
+            }
+        } finally {
+            cobStream.close();
+        }
+        baos.flush();
+        
+        return new ByteArrayInputStream(baos.toByteArray());        
+    }
+
+    /**
+     * This method returns the first .cob file from a directory. It takes as arguments
+     * a @link File with the base directory and a String indicating a subdirectory
+     * of the base directory. After computing the directory containing the .cob file
+     * the first .cob file is returned as @link File.
+     */
+    public static File getCobAsFile(File basedir, String blockPath) 
+    	throws FileNotFoundException, IllegalArgumentException {
+        
+        if(basedir == null || blockPath == null) {
+            throw new IllegalArgumentException("You mustn't provide <null> arguments!");
+        }
+        
+        File absoluteBlockBasedir = new File(basedir.getAbsoluteFile() + blockPath);
+        if(!absoluteBlockBasedir.exists()) {
+            throw new FileNotFoundException("Directory " + absoluteBlockBasedir.getAbsolutePath() + " does not exist!");
+        }
+                
+        // get the first!!! COB file
+        String[] directoryContent = absoluteBlockBasedir.list();
+        File cobFile = null;
+        for(int i = 0; i < directoryContent.length; i++) {
+            String name = directoryContent[i];
+            if(name.toLowerCase().endsWith(".cob")) {
+                cobFile = new File(absoluteBlockBasedir.getAbsoluteFile() + "/" + name);
+                if(cobFile.exists()) {
+                    return cobFile;
+                }
+            }
+        }        
+        throw new FileNotFoundException("No file found while searching for " + blockPath + ". Searched in directory " + 
+                absoluteBlockBasedir + " for the first available COB file.");
+    }
+
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringBuilder.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringBuilder.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.wiring;
+
+/**
+ * @author Cocoon Community
+ * @since 0.1
+ */
+public class WiringBuilder {
+
+}

Added: cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringWriter.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/impl/org/apache/cocoon/blockdeployer/wiring/WiringWriter.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.wiring;
+
+
+/**
+ * @since 0.1
+ */
+public class WiringWriter {
+
+}

Added: cocoon/whiteboard/block-deployer/src/schema/cob-schema-1.0.xsd
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/src/schema/cob-schema-1.0.xsd	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xs:schema targetNamespace="http://apache.org/cocoon/blocks/cob/1.0" xmlns="http://apache.org/cocoon/blocks/cob/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="block">
+    <xs:complexType>
+      <xs:all>
+        <xs:element ref="name"/>
+        <xs:element ref="description"/>
+        <xs:element ref="license"/>
+        <xs:element ref="author"/>
+        <xs:element ref="sitemap"/>
+        <xs:element name="parameters" type="parametersList" minOccurs="0"/>
+      </xs:all>
+      <xs:attribute name="id" type="xs:anyURI" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="name" type="xs:string"/>
+  <xs:element name="description" type="xs:string"/>
+  <xs:element name="license" type="xs:string"/>
+  <xs:element name="author" type="xs:string"/>
+  <xs:element name="sitemap" type="xs:string"/>
+  <xs:complexType name="parametersList">
+    <xs:sequence>
+      <xs:element name="param" type="param" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="param">
+    <xs:attribute name="name" type="xs:string" use="required"/>
+    <xs:attribute name="type" use="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="hidden-string"/>
+          <xs:enumeration value="string"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+</xs:schema>

Added: cocoon/whiteboard/block-deployer/status.xml
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/status.xml	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+  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. 
+-->
+<status>
+
+  <developers>
+    <person name="Reinhard P�tz" email="reinhard_AT_apache.org" id="RPO"/>
+  </developers>
+
+  <changes>
+    <!-- Add new releases here -->
+    <release version="0.1" date="unreleased">
+      <action dev="RPO" type="add" context="admin">
+        Initial Import
+      </action>
+    </release>
+  </changes>
+
+  <todo>
+    <actions priority="high">    
+      <action context="code" dev="RPO">
+        Implement ApplicationServerLocator
+      </action>
+      <action context="code" dev="RPO">
+        Logging
+      </action>        
+      <action context="code" dev="N.N.">
+        Commandline deployer client
+      </action>    
+      <action context="code" dev="RPO">
+        Refactoring: make it possible to use different Block implementations (via config files)
+      </action>           
+    </actions>
+  </todo>
+
+</status>

Added: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/Constants.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer;
+
+/**
+ * @since 0.1
+ */
+public interface Constants {
+
+    // repositories
+    public static final String VALID_LOCATION_1 = "test/sample-repositories/rep1";
+    public static final String INVALID_LOCATION = "bla";
+    
+    // available and valid block
+    public static final String AVAILABLE_VALID_WEBMAIL1343_BLOCKID = "http://mycompany.com/webmail/1.3.43";
+    public static final String AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH = "/mycompany.com/webmail/1.3.43";
+    public static final String AVAILABLE_VALID_WEBMAIL1343_BLOCKFILE = "webmail-1.3.43.cob";
+    
+    // available but invalid block (no block.xml)
+    public static final String AVAILABLE_INVALID_SAMPLE_BLOCKID = "http://bla";
+    
+    // unavailable block
+    public static final String UNAVAILABLE_INVALID_BLOCKID = "http://mycompany.com/invalid/1.0.0";
+    public static final String UNAVAILABLE_INVALID_BLOCKPATH = "/mycompany.com/invalid/1.0.0";
+    public static final String UNAVAILABLE_INVALID_BLOCKFILE = "invalid.cob";
+
+}

Added: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/DefaultRepositoryTest.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/DefaultRepositoryTest.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,179 @@
+
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cocoon.blockdeployer.repository;
+
+import junit.framework.TestCase;
+
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.easymock.MockControl;
+
+/**
+ * @since 0.1
+ */
+public class DefaultRepositoryTest extends TestCase {
+    
+    /**
+     * Test removing a locator
+     */
+    public void testLocatorAddingAndRemoving() {  
+        String locator1Name = "locator1";
+        String locator2Name = "locator2";
+        String locator3Name = "locator3";
+        
+        String[] allAvailableBlocks = {"myBlock"};
+        
+        DefaultRepository defaultRepository = new DefaultRepository();
+
+        // fill the repository with blocks
+        defaultRepository.addLocator(createMockLocator(locator1Name, allAvailableBlocks, new String[] {"myBlock"}));
+        Locator locator2 = createMockLocator(locator2Name, allAvailableBlocks, new String[] {"myBlock"});
+        defaultRepository.addLocator(locator2);  
+        defaultRepository.addLocator(createMockLocator(locator3Name, allAvailableBlocks, new String[] {"myBlock"}));                
+        
+        // test that all locators return the block
+        RemoteBlock[] resultRemoteBlock = defaultRepository.lookupBlock("myBlock");
+        assertEquals(resultRemoteBlock[0].getLocator().getIdentifier(), locator1Name);
+        assertEquals(resultRemoteBlock[1].getLocator().getIdentifier(), locator2Name);   
+        assertEquals(resultRemoteBlock[2].getLocator().getIdentifier(), locator3Name);      
+
+        // remove a locator and test whether it has been removed
+        defaultRepository.removeLocator(locator2);
+        resultRemoteBlock = defaultRepository.lookupBlock("myBlock");  
+        assertEquals(resultRemoteBlock[0].getLocator().getIdentifier(), locator1Name);        
+        assertEquals(resultRemoteBlock[1].getLocator().getIdentifier(), locator3Name);           
+        assertEquals(resultRemoteBlock.length, 2);
+    }
+    
+    public void testRepositoryWithoutLocators() {
+        DefaultRepository defaultRepository = new DefaultRepository();        
+    }
+
+    public void testSettingNullLocator() {
+        DefaultRepository defaultRepository = new DefaultRepository();  
+        try {
+            defaultRepository.addLocator(null);
+            fail("The method addLocator mustn't accept null references.");
+        } catch(NullPointerException npe) {
+            // correct behaviour
+        }
+    }
+    
+    /**
+     * Test whether the DefaultRepository returns the correct blocks in the correct order.
+     */
+    public void testBlockLookup() {  
+        
+        String locator1Name = "locator1";
+        String locator2Name = "locator2";
+        String locator3Name = "locator3";
+        
+        String[] allAvailableBlocks = {"myBlock1", "myBlock2", "myBlock3", "myBlock4"};
+        
+        DefaultRepository defaultRepository = new DefaultRepository();
+
+        // fill the repository with blocks
+        defaultRepository.addLocator(
+                createMockLocator(locator1Name, allAvailableBlocks, new String[] {"myBlock4"}));
+        defaultRepository.addLocator(
+                createMockLocator(locator2Name, allAvailableBlocks, new String[] {"myBlock3", "myBlock2"}));            
+        defaultRepository.addLocator(
+                createMockLocator(locator3Name, allAvailableBlocks, new String[] {"myBlock1", "myBlock4", "myBlock3"}));                
+        
+        // test that myBlock3 is returned twice, having the locators locator2 and locator3
+        RemoteBlock[] resultRemoteBlock = defaultRepository.lookupBlock("myBlock3");
+        assertEquals(resultRemoteBlock[0].getLocator().getIdentifier(), locator2Name);
+        assertEquals(resultRemoteBlock[1].getLocator().getIdentifier(), locator3Name);   
+        assertEquals(resultRemoteBlock.length, 2);
+
+        // test that myBlock1 is returned once, having the locator locator3
+        resultRemoteBlock = defaultRepository.lookupBlock("myBlock1");
+        assertEquals(resultRemoteBlock[0].getLocator().getIdentifier(), locator3Name);
+        assertEquals(resultRemoteBlock.length, 1);
+
+        // test that myBlock4 is returned once, having the locators locator1 and locator3
+        resultRemoteBlock = defaultRepository.lookupBlock("myBlock4");
+        assertEquals(resultRemoteBlock[0].getLocator().getIdentifier(), locator1Name);
+        assertEquals(resultRemoteBlock[1].getLocator().getIdentifier(), locator3Name);        
+        assertEquals(resultRemoteBlock.length, 2);        
+
+    }
+    
+    /**
+     * Create a mock locator containg all <code>locatorBlocks</code> and returning a RemoteBlock object for them.
+     * If they don't contain a certain block, the locator returns null.
+     * 
+     * @param name
+     * @param allAvailableBlocks - all blocks available repository wide
+     * @param locatorBlocks - all blocks that the locator should return (not null)
+     * @return returns a mock locator
+     */
+    private Locator createMockLocator(String name, String[] allAvailableBlocks, String[] locatorBlocks) {
+        // create a mock for a RemoteBlock
+        MockControl blockControl = MockControl.createControl(RemoteBlock.class);
+        RemoteBlock remoteBlock = (RemoteBlock) blockControl.getMock();
+
+        // create a mock for the locator
+        MockControl control1 = MockControl.createControl(Locator.class);
+        Locator locator = (Locator) control1.getMock();
+        
+        // give the locator mock behaviour (setting available blocks, identifier)
+        locator.getIdentifier();
+        control1.setReturnValue(name, MockControl.ZERO_OR_MORE);
+        try {
+            for(int i = 0; i < allAvailableBlocks.length; i++) {
+                locator.getBlock(allAvailableBlocks[i]);
+                if(hasItem(locatorBlocks, allAvailableBlocks[i])) {
+                    control1.setReturnValue(remoteBlock, MockControl.ZERO_OR_MORE);                       
+                }
+                else {
+                    control1.setReturnValue(null, MockControl.ZERO_OR_MORE);
+                }
+            }
+        } catch (Exception e) {
+        }
+
+        // activate the locator mock
+        control1.replay();
+
+        // give the remote block mock behaviour
+        remoteBlock.getLocator();
+        blockControl.setReturnValue(locator, MockControl.ZERO_OR_MORE);
+        
+        // activate the remote block mock
+        blockControl.replay();        
+        
+        return locator;
+    }
+    
+    /**
+     * Test whether an array of Strings contains a certain String
+     * 
+     * @param allItems
+     * @param item
+     * @return returns true if <code>allItems<code> contains the String <code>item>/code>
+     */
+    private boolean hasItem(String[] allItems, String item) {
+        for(int i = 0; i < allItems.length; i++) {
+            if(allItems[i].equals(item)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+}

Added: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/FilesystemLocatorTest.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/repository/FilesystemLocatorTest.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,188 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.repository;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.zip.ZipInputStream;
+
+import junit.framework.TestCase;
+
+import org.apache.cocoon.blockdeployer.Constants;
+import org.apache.cocoon.blockdeployer.block.RemoteBlock;
+import org.apache.cocoon.blockdeployer.utils.LocatorUtils;
+
+/**
+ * @since 0.1
+ */
+public class FilesystemLocatorTest extends TestCase {
+
+    public final void testFilesystemLocator() {
+
+        // this path is not available
+        try {
+            Locator l = new FilesystemLocator(new File(Constants.AVAILABLE_INVALID_SAMPLE_BLOCKID));
+            fail("The contructor of the FilesystemLocator has to check whether its base directory is available.");
+        } catch(IllegalArgumentException fnfe) {
+        }
+        // -------------------------------------------------------------------------------------
+        
+        // this path should be available
+        Locator filesystemLocator = null;
+        try {
+            filesystemLocator = new FilesystemLocator(new File(Constants.VALID_LOCATION_1));
+        } catch (IllegalArgumentException fnfe) {
+            fail("Testrepository is not found!" + fnfe.getLocalizedMessage());
+        }
+        assertNotNull(filesystemLocator);
+        
+        // get the block that should be available and test its data
+        RemoteBlock remoteBlock = null;
+        try {
+            remoteBlock = filesystemLocator.getBlock(Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKID);
+        } catch(Exception e) {
+            fail("Testrepository should be found!");
+        }
+ 
+        // FIXME this test has to move into RemoteBlockFactoryTest (it actually tests the XML mapping of Castor)
+        assertEquals(Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKID, remoteBlock.getBlockDescriptor().getBlockId());
+        
+        // test whether the blockdescriptor is set
+        assertNotNull(remoteBlock.getBlockDescriptor());
+        
+        // test whether the locator is available and the same as set before
+        assertNotNull(remoteBlock.getLocator());
+        assertSame(filesystemLocator, remoteBlock.getLocator());
+        
+    }
+    
+    public final void testUnavailableBlockAccess() {
+        // this path should be available
+        Locator filesystemLocator = null;
+        try {
+            String rep = Constants.VALID_LOCATION_1;
+            filesystemLocator = new FilesystemLocator(new File(rep));
+        } catch (IllegalArgumentException fnfe) {
+            fail("Test broken: Available Testrepository is not found!" + fnfe.getLocalizedMessage());
+        }
+
+        // try to get an unavailable block
+        RemoteBlock remoteBlock = null;
+        try {
+            remoteBlock = filesystemLocator.getBlock(Constants.AVAILABLE_INVALID_SAMPLE_BLOCKID);
+        } catch (Exception e) {
+            fail("The block URI is valid but at this place there is no block. This returns null and doesn't raise an exception.");
+        }
+        if(remoteBlock != null) {
+            fail("Tried to access a block that doesn't exist - this should raise an Exception!");
+        }     
+    }
+    
+    public final void testReadingDescriptor() {   
+        File cobFile = new File(Constants.VALID_LOCATION_1 + 
+                Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + "/" + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKFILE);
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+        } catch (FileNotFoundException e) {
+            fail("testReadingDescriptor() test is broken - file " + cobFile.getAbsolutePath() + " not found!");
+        }
+        
+        try {
+            InputStream is = LocatorUtils.getDescriptorInputStream(zipStream);
+        } catch (Exception e) {
+            fail("The COB " + cobFile.getAbsolutePath() + " should contain " + Locator.COB_INF_BLOCK_XML +
+                    " but it wasn't found. " + e.getMessage());
+        } 
+        
+    }
+
+    public final void testReadingUnavailableCOB() {
+        File cobFile = new File("invalid");
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+            fail("testReadingDescriptor test is broken - file " + cobFile.getAbsolutePath() + " not found!");            
+        } catch (FileNotFoundException e) {
+        }
+
+    }
+    
+    public final void testReadingCOBWithoutDescriptor() {
+        File cobFile = new File(Constants.VALID_LOCATION_1 + 
+                Constants.UNAVAILABLE_INVALID_BLOCKPATH + "/" + Constants.UNAVAILABLE_INVALID_BLOCKFILE);
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+        } catch (FileNotFoundException e) {
+            fail("testReadingDescriptor() test is broken - file " + cobFile.getAbsolutePath() + " not found!");
+        }
+        
+        try {
+            InputStream is = LocatorUtils.getDescriptorInputStream(zipStream);
+            fail("The COB " + cobFile.getAbsolutePath() + " doesn't contain the file " + cobFile.getAbsolutePath() + " and " +
+                    "this method should raise an exeption");
+        } catch (Exception e) {
+            // test passed
+        }         
+    }
+    
+    public final void testFileLookupWithNullArguments() {
+        try {
+            File x = LocatorUtils.getCobAsFile(null, null);
+            fail("If null arguments are passed, an exception has to be thrown.");
+        } catch(FileNotFoundException fnfe) { 
+            fail("Wrong exception thrown!");
+        } catch(IllegalArgumentException iae) {
+            // test passed
+        }
+    }
+    
+    public final void testSuccessFullFileLookup() {        
+        try {
+            File cobFile = new File(Constants.VALID_LOCATION_1 + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + "/" +
+                    Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKFILE);
+            File resultFile = LocatorUtils.getCobAsFile(new File(Constants.VALID_LOCATION_1), Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH);
+            assertEquals(cobFile.getAbsolutePath(), resultFile.getAbsolutePath());
+        } catch(FileNotFoundException fnfe) {
+            fail("The block " + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + " should be found in repository " + Constants.VALID_LOCATION_1);
+        }        
+    }
+    
+    public final void testUnavailableFileLookups() {
+        // unavailable block
+        try {
+            File x = LocatorUtils.getCobAsFile(new File(Constants.VALID_LOCATION_1), Constants.AVAILABLE_INVALID_SAMPLE_BLOCKID);
+            fail("If a block isn't found in a valid repository, a FileNotFoundException has to be thrown");
+        } catch(FileNotFoundException fnfe) {
+            // test passed
+        }
+        // unavailable repository
+        try {
+            File x = LocatorUtils.getCobAsFile(new File(Constants.INVALID_LOCATION), Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH);
+            fail("A non-existing repository can't return blocks!");
+        } catch(FileNotFoundException fnfe) {
+            // test passed
+        }        
+    }
+    
+    
+}

Added: cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/utils/FilesystemUtilsTest.java
==============================================================================
--- (empty file)
+++ cocoon/whiteboard/block-deployer/test/junit/org/apache/cocoon/blockdeployer/utils/FilesystemUtilsTest.java	Sat Sep 25 02:43:04 2004
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.blockdeployer.utils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.zip.ZipInputStream;
+
+import org.apache.cocoon.blockdeployer.Constants;
+import org.apache.cocoon.blockdeployer.repository.Locator;
+
+import junit.framework.TestCase;
+
+/**
+ * @since 17.08.2004
+ */
+public class FilesystemUtilsTest extends TestCase {
+    public final void testReadingDescriptor() {   
+        File cobFile = new File(Constants.VALID_LOCATION_1 + 
+                Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + "/" + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKFILE);
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+        } catch (FileNotFoundException e) {
+            fail("testReadingDescriptor() test is broken - file " + cobFile.getAbsolutePath() + " not found!");
+        }
+        
+        try {
+            InputStream is = LocatorUtils.getDescriptorInputStream(zipStream);
+        } catch (Exception e) {
+            fail("The COB " + cobFile.getAbsolutePath() + " should contain " + Locator.COB_INF_BLOCK_XML +
+                    " but it wasn't found. " + e.getMessage());
+        } 
+        
+    }
+
+    public final void testReadingUnavailableCOB() {
+        File cobFile = new File("invalid");
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+            fail("testReadingDescriptor test is broken - file " + cobFile.getAbsolutePath() + " not found!");            
+        } catch (FileNotFoundException e) {
+        }
+
+    }
+    
+    public final void testReadingCOBWithoutDescriptor() {
+        File cobFile = new File(Constants.VALID_LOCATION_1 + 
+                Constants.UNAVAILABLE_INVALID_BLOCKPATH + "/" + Constants.UNAVAILABLE_INVALID_BLOCKFILE);
+        ZipInputStream zipStream = null;
+        
+        try {
+            zipStream = new ZipInputStream(new FileInputStream(cobFile));
+        } catch (FileNotFoundException e) {
+            fail("testReadingDescriptor() test is broken - file " + cobFile.getAbsolutePath() + " not found!");
+        }
+        
+        try {
+            InputStream is = LocatorUtils.getDescriptorInputStream(zipStream);
+            fail("The COB " + cobFile.getAbsolutePath() + " doesn't contain the file " + cobFile.getAbsolutePath() + " and " +
+                    "this method should raise an exeption");
+        } catch (Exception e) {
+            // test passed
+        }         
+    }
+    
+    public final void testFileLookupWithNullArguments() {
+        try {
+            File x = LocatorUtils.getCobAsFile(null, null);
+            fail("If null arguments are passed, an exception has to be thrown.");
+        } catch(FileNotFoundException fnfe) { 
+            fail("Wrong exception thrown!");
+        } catch(IllegalArgumentException iae) {
+            // test passed
+        }
+    }
+    
+    public final void testSuccessFullFileLookup() {        
+        try {
+            File cobFile = new File(Constants.VALID_LOCATION_1 + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + "/" +
+                    Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKFILE);
+            File resultFile = LocatorUtils.getCobAsFile(new File(Constants.VALID_LOCATION_1), Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH);
+            assertEquals(cobFile.getAbsolutePath(), resultFile.getAbsolutePath());
+        } catch(FileNotFoundException fnfe) {
+            fail("The block " + Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH + " should be found in repository " + Constants.VALID_LOCATION_1);
+        }        
+    }
+    
+    public final void testUnavailableFileLookups() {
+        // unavailable block
+        try {
+            File x = LocatorUtils.getCobAsFile(new File(Constants.VALID_LOCATION_1), Constants.AVAILABLE_INVALID_SAMPLE_BLOCKID);
+            fail("If a block isn't found in a valid repository, a FileNotFoundException has to be thrown");
+        } catch(FileNotFoundException fnfe) {
+            // test passed
+        }
+        // unavailable repository
+        try {
+            File x = LocatorUtils.getCobAsFile(new File(Constants.INVALID_LOCATION), Constants.AVAILABLE_VALID_WEBMAIL1343_BLOCKPATH);
+            fail("A non-existing repository can't return blocks!");
+        } catch(FileNotFoundException fnfe) {
+            // test passed
+        }        
+    }
+}

Added: cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/invalid/1.0.0/invalid.cob
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/test/sample-repositories/rep1/mycompany.com/webmail/1.3.43/webmail-1.3.43.cob
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/tools/lib/asm-1.4.3.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/tools/lib/cglib-2.0.1.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/tools/lib/easymock-1.1.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/tools/lib/easymockclassextension-1.1.jar
==============================================================================
Binary file. No diff available.

Added: cocoon/whiteboard/block-deployer/tools/lib/junit-3.8.1.jar
==============================================================================
Binary file. No diff available.