chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1071656 [4/5] - in /incubator/chemistry/site/trunk: content/ content/images/ content/resources/ lib/ templates/
Date Thu, 17 Feb 2011 15:49:39 GMT
Added: incubator/chemistry/site/trunk/content/opencmis-inmemory-repository.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-inmemory-repository.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-inmemory-repository.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-inmemory-repository.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,116 @@
+Title: OpenCMIS InMemory Repository
+<a name="OpenCMISInMemoryRepository-OpenCMISInMemoryRepository"></a>
+# OpenCMIS InMemory Repository
+
+This repository is not intended for production use!
+
+The OpenCMIS In-Memory Repository is an implementation of a CMIS repository
+that holds content and metadata in memory. Therefore, all data stored in
+the repository is lost after each restart. This implementation has two main
+purposes:
+  
+1. Provide a fast backend for testing purposes without any additional
+dependencies or configuration.	
+1. Provide a sample implementation for the server interface of OpenCMIS.
+
+
+<a name="OpenCMISInMemoryRepository-Status"></a>
+## Status
+
+  The code is unstable and under development. Expect any interface to
+change at any time.
+  The following features are implemented:
+  
+   * Type System and Repository Service   
+   * Navigation    
+   * Object Service   
+   * Versioning
+   
+  Not supported are currently:
+   
+   * Query   
+   * Relationships   
+   * ACLs   
+   * Policies	
+   * Renditions   
+   * Unfiling
+   
+     
+<a name="OpenCMISInMemoryRepository-BuildandDeploytheRepository"></a>
+## Build and Deploy the Repository
+
+1. [How to build OpenCMIS](opencmis-how-to-build.html)
+1. A ready-to-use WAR file should now exist in
+*/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/target*.
+1. Deploy the WAR file to your favorite servlet engine.
+1. AtomPub endpoint: *http://<host>:<port>/<context>/atom*
+    Web Services endpoint:
+*http://<host>:<port>/<context>/services/RepositoryService*
+
+  
+<a name="OpenCMISInMemoryRepository-ConfiguretheRepository"></a>
+## Configure the Repository
+
+The CMIS specification does not currently provide support for creating a
+repository or administrative capabilities such as the creation of type
+definitions.
+
+The in-memory repository therefore provides settings that allows the server
+to bootstrap itself, so that on successful startup, the server is in a
+usable state. These settings include the repository id, its type
+definitions and an initial folder/document data set.
+
+The types to be made available must be provided in a Java class as code. By
+default, the class
+*org.apache.chemistry.opencmis.inmemory.types.DefaultTypeSystemCreator.java*
+is provided. You can take this as an example if you want to provide your
+own custom types. Such a class must implement the
+*org.apache.chemistry.opencmis.inmemory.TypeCreator* interface which
+consists of a single method that returns a list of *TypeDefinition*
+objects. This method will be called once during startup.
+  
+Some clients just support read-only access. The in-memory repository
+supports such clients by providing the possibility to fill a repository on
+start-up with data (folders and documents). The folder and document types
+to be used can be configured and also the number of documents and folders
+that are created. Those configuration parameters start with the prefix
+*RepositoryFiller.* 
+
+Bootstrap settings are set in the repository.properties file
+(*/WEB-INF/classes/repository.properties*). 
+
+
+    
+    # In Memory Settings
+     # The class that enables the in-memory repository as server implementation
+    class=org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl
+    
+     # A repository that is created on start-up
+    InMemoryServer.RepositoryId=A1
+    
+     # The class that used to initialize the type system (creates all types
+that are available)
+    InMemoryServer.TypesCreatorClass=org.apache.chemistry.opencmis.inmemory.types.DefaultTypeSystemCreator
+    
+    # settings to initialize a repository with data on start-up
+      # enable or disable
+    RepositoryFiller.Enable=true
+      # Type id of documents that are created
+    RepositoryFiller.DocumentTypeId=ComplexType
+      # Type id of folders that are created
+    RepositoryFiller.FolderTypeId=cmis:folder
+      # Number of documents created per folder
+    RepositoryFiller.DocsPerFolder=3
+      # Number of folders created per folder
+    RepositoryFiller.FolderPerFolder=2
+      # number of folder levels created (depth of hierarchy)
+    RepositoryFiller.Depth=3
+      # Size of content for documents (0=do not create content), default=0
+    RepositoryFiller.ContentSizeInKB=32
+      # properties to set for a document
+    RepositoryFiller.DocumentProperty.0=StringProp
+    #RepositoryFiller.DocumentProperty.1=StringPropMV
+      # properties to set for a folder
+    #RepositoryFiller.FolderProperty.0=StringFolderProp
+
+

Added: incubator/chemistry/site/trunk/content/opencmis-maven-release-documentation.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-maven-release-documentation.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-maven-release-documentation.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-maven-release-documentation.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,223 @@
+Title: OpenCMIS Maven Release Documentation
+* [OpenCMIS Release Documentation](#OpenCMISMavenReleaseDocumentation-OpenCMISReleaseDocumentation)
+   * [Introduction](#OpenCMISMavenReleaseDocumentation-Introduction)
+   * [Build Environments](#OpenCMISMavenReleaseDocumentation-BuildEnvironments)
+   * [Release Artifacts](#OpenCMISMavenReleaseDocumentation-ReleaseArtifacts)
+         * [Documentation and JavaDoc](#OpenCMISMavenReleaseDocumentation-DocumentationandJavaDoc)
+   * [Preparation](#OpenCMISMavenReleaseDocumentation-Preparation)
+      * [Release Manager](#OpenCMISMavenReleaseDocumentation-ReleaseManager)
+      * [Version](#OpenCMISMavenReleaseDocumentation-Version)
+      * [Open Issues](#OpenCMISMavenReleaseDocumentation-OpenIssues)
+      * [Unit Tests and Integration Tests](#OpenCMISMavenReleaseDocumentation-UnitTestsandIntegrationTests)
+      * [Apache License and Code Style](#OpenCMISMavenReleaseDocumentation-ApacheLicenseandCodeStyle)
+      * [Release Notes](#OpenCMISMavenReleaseDocumentation-ReleaseNotes)
+      * [Release Tag](#OpenCMISMavenReleaseDocumentation-ReleaseTag)
+      * [Release Branch](#OpenCMISMavenReleaseDocumentation-ReleaseBranch)
+   * [Release Candidate](#OpenCMISMavenReleaseDocumentation-ReleaseCandidate)
+      * [Publishing The Release](#OpenCMISMavenReleaseDocumentation-PublishingTheRelease)
+   * [Post Release Cleanup](#OpenCMISMavenReleaseDocumentation-PostReleaseCleanup)
+
+<a name="OpenCMISMavenReleaseDocumentation-OpenCMISReleaseDocumentation"></a>
+# OpenCMIS Release Documentation
+
+<a name="OpenCMISMavenReleaseDocumentation-Introduction"></a>
+## Introduction
+
+This document describes the release process for Apache Chemistry OpenCMIS.
+It heavily refers to [standard Apache procedures to release](http://maven.apache.org/developers/release/apache-release.html)
+ Maven based projects at Apache. Also [general incubator best practices|http://incubator.apache.org/guides/releasemanagement.html]
+ have been implemented.
+
+<a name="OpenCMISMavenReleaseDocumentation-BuildEnvironments"></a>
+## Build Environments
+
+OpenCMIS is built and released with [Maven2](http://maven.apache.org)
+ and uses the [Apache POM version 7|http://svn.apache.org/repos/asf/maven/pom/tags/apache-7/pom.xml]
+ .
+
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseArtifacts"></a>
+## Release Artifacts
+
+An OpenCMIS release ([see an exampled of all released packages here](https://repository.apache.org/index.html#nexus-search;gav~org.apache.chemistry.opencmis~~0.1.0-incubating-SNAPSHOT)
+) consists of:
+
+* All POMs/JARs/WARs built as part of the standard Maven build process. For
+an overview on the released modules see artifacts with groupId
+_org.apache.chemistry.opencmis_ in the [Apache Maven Repository](https://repository.apache.org/index.html#nexus-search;gav~org.apache.chemistry.opencmis~~~~)
+. In detail, per every module, where applicable, the following artifacts
+are produced:
+** *Main artifact*: *<artifactId>-<version>.<ext>*
+** *Source artifact*: *<artifactId>-<version>-sources.<ext>*
+** *Javadoc artifact*: *<artifactId>-<version>-javadoc.<ext>*
+** *POM*: *<artifactId>-<version>.pom*
+
+* Also the following additional *distribution commodity packages* are
+provided as part of the release:
+** A source-release bundle containing all files the sources necessary to
+build all other artifacts.
+*** *Package formats*: zip.&nbsp;
+*** *Name*: *chemistry-opencmis-<version>-source-release.<ext>*
+** A package containing offline HTML documentation and the full javadocs:
+*** *Package formats*: tar.gz and zip.&nbsp;
+*** *Name*: *chemistry-opencmis-<version>-docs.<ext>*
+** A client distribution bundle with all the client related JARs:
+*** *Package formats*: tar.gz and zip.&nbsp;
+*** *Name*:&nbsp;*chemistry-opencmis-dist-<version>-client.<ext>*
+** A client bundle (as above) with OpenCMIS Client JARs and&nbsp;all
+dependencies.
+*** *Package formats*: tar.gz and zip.&nbsp;
+*** *Name*:
+*chemistry-opencmis-client-impl-<version>-with-dependencies.<ext>*
+** A bundle containing the OpenCMIS server WARs and support
+*** *Package formats*: tar.gz and zip.&nbsp;
+*** *Name*:&nbsp;*chemistry-opencmis-dist-<version>-server.<ext>*
+** A bundle containing all OpenCMIS server related WARs (_inmemory,
+fileshare, browser)_
+*** *Package formats*: tar.gz and zip.&nbsp;
+*** *Name*: *chemistry-opencmis-dist-<version>-server-webapps.<ext>*
+
+
+<a name="OpenCMISMavenReleaseDocumentation-DocumentationandJavaDoc"></a>
+#### Documentation and JavaDoc
+
+The documentation that will be part of the release must match the code. All
+examples in the documentation must work. The Java package documentation
+must be up-to-date. The JavaDoc must be generated with Maven without
+warnings.
+
+The Maven site documentation will be generated as part of the release and deployed as part of the vote at http:/people.apache.org/~gabriele/opencmis/<version> ([see an example](http://people.apache.org/~gabriele/chemistry/opencmis/0.1.0-incubating-SNAPSHOT/)
+) .
+Later, upon release approval, this will be synced in a sub folder of [http://incubator.apache.org/chemistry/](http://incubator.apache.org/chemistry/)
+ and linked from the wiki home page. This will allow to publish up to date
+Java Doc and test reports.
+
+<a name="OpenCMISMavenReleaseDocumentation-Preparation"></a>
+## Preparation
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseManager"></a>
+### Release Manager
+
+A release manager must be appointed for a release. He or she is in charge
+of the release process, following the guidelines and eventually generating
+the release artifacts. The release manager might tailor the process for a
+specific release.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-Version"></a>
+### Version
+
+The OpenCMIS community decides if the release will be a major or a minor
+release and agrees on a version number. The string "-incubating" will be
+attached to incubator release version numbers.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-OpenIssues"></a>
+### Open Issues
+
+There must not be any open JIRA issues for this release.  There might be
+open issues for future releases.
+
+<a name="OpenCMISMavenReleaseDocumentation-UnitTestsandIntegrationTests"></a>
+### Unit Tests and Integration Tests
+
+All unit tests and integration tests must succeed on a clean machine
+(starting with an empty local Maven repository).
+
+
+<a name="OpenCMISMavenReleaseDocumentation-ApacheLicenseandCodeStyle"></a>
+### Apache License and Code Style
+
+Each source code file must have a current ASF license header. The source
+code should follow the OpenCMIS code style.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseNotes"></a>
+### Release Notes
+
+Each release must provide a RELEASE-NOTES.txt file in the base directory of
+the source bundle. It must contain all known issues and should contain a
+description of all the changes since the previous release. The release
+notes should also contain the minimum target Java version and a list of all
+dependencies with their minimum version.
+NOTICE.txt and LICENSE.txt must be present in all bundles and must be
+up-to-date.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseTag"></a>
+### Release Tag
+
+A tag has to be created for every release candidate. The naming rule for
+the tags is *tags/chemistry-opencmis-<version>-RC<number>*.
+This is created as part of the Maven release process. The tag will be
+renamed to the final version number upon vote approval.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseBranch"></a>
+### Release Branch
+
+A branch has to be created for every release. The naming rule for this
+branch is *branches/chemistry-opencmis-<version>-release*.
+This has to be created manually upon release approval.
+
+<a name="OpenCMISMavenReleaseDocumentation-ReleaseCandidate"></a>
+## Release Candidate
+
+Once all preparations are done, a release candidate will be built.
+
+All release candidates must be cryptographically signed. The string
+"-RC<number>" will be attached to the version number of the release
+candidate artifacts, where <number> is the number of the release candidate
+starting with 1. If more than one release candidate is required a new tag
+has to be created and release candidate number will be increased by one.
+
+The release candidate artifacts:
+
+* *Maven artifacts* will be [staged](http://incubator.apache.org/guides/releasemanagement.html)
+ on *repository.apache.org*&nbsp;
+* *Distribution commodity packages*&nbsp;are staged
+at&nbsp;{color:#003366}http:/people.apache.org/~_<username>_/opencmis/<version>/dist/{color}&nbsp;
+* The *generated site reports/javadocs* will be staged
+at&nbsp;{color:#003366}http:/people.apache.org/~_<username>_/opencmis/<version>/site/{color}
+
+Once candidate artifacts are available, release manager kicks off the [VOTE process](http://incubator.apache.org/guides/releasemanagement.html#best-practice-incubator-release-vote)
+.
+
+
+If the vote fails, the raised issues will be fixed, a new release candidate
+will be built and the VOTE process will be  restarted.
+
+If the release candidate gets approved, we can proceed to release
+publishing.
+
+
+<a name="OpenCMISMavenReleaseDocumentation-PublishingTheRelease"></a>
+### Publishing The Release
+
+If the release candidate gets approved, we can proceed to release
+publishing:
+
+* *release candidate maven artifacts* are&nbsp;_promoted_ as in the Apache
+Maven Repository and made available at [https://repository.apache.org/content/groups/public/org/apache/chemistry/](https://repository.apache.org/content/groups/public/org/apache/chemistry/)
+ - Maven&nbsp;artifacts are automatically synced to Maven Central [http://repo1.maven.org/maven2]
+&nbsp;
+* *release candidate commodity packages* are synced (together with their
+checksum and signatures) to [http://www.apache.org/dist/incubator/chemistry](http://www.apache.org/dist/incubator/chemistry)
+* *maven site* is synced to [http://incubator.apache.org/chemistry/maven-site/<version>](http://incubator.apache.org/chemistry/maven-site/<version>)
+ and back-linked from [http://incubator.apache.org/chemistry/index.html]
+* *project version* at&nbsp;[http://incubator.apache.org/chemistry/index.html](http://incubator.apache.org/chemistry/index.html)
+&nbsp;is updated
+* *release tag is renamed* to final version
+* release branch is created
+* *Release is closed* in [](https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310936)
+* *Release is announced* to&nbsp;
+
+* {noformat}
+general@incubator.apache.org chemistry-dev@incubator.apache.org
+
+    
+    
+    
+    h2. Post Release Cleanup
+    
+    * Remove release candidate artifacts and sites

Added: incubator/chemistry/site/trunk/content/opencmis-modules.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-modules.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-modules.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-modules.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,93 @@
+Title: OpenCMIS Modules
+<a name="OpenCMISModules-OpenCMISModules"></a>
+# OpenCMIS Modules
+
+OpenCMIS is divided into four groups of modules:
+* *chemistry-opencmis-commons*: Modules used by all other modules.
+* *chemistry-opencmis-client*: CMIS client related modules.
+* *chemistry-opencmis-server*: CMIS server framework related modules.
+* *chemistry-opencmis-test*: Test modules that are not required at runtime.
+
+!opecncmis-layers.png|align=center!
+
+
+<a name="OpenCMISModules-ModuleDescription"></a>
+## Module Description
+
+<a name="OpenCMISModules-Commons"></a>
+### Commons
+
+<a name="OpenCMISModules-chemistry-opencmis-commons-api"></a>
+#### chemistry-opencmis-commons-api
+Interfaces, enums and exceptions used across all other modules.
+
+<a name="OpenCMISModules-chemistry-opencmis-commons-impl"></a>
+#### chemistry-opencmis-commons-impl
+Implementations of the interface defined in chemistry-opencmis-commons-api.
+It also generates and contains the JAXB classes.
+
+<a name="OpenCMISModules-Client"></a>
+### Client
+
+<a name="OpenCMISModules-chemistry-opencmis-client-api"></a>
+#### chemistry-opencmis-client-api
+Client API used by applications. See [OpenCMIS Client API](opencmis-client-api.html)
+ for details.
+
+<a name="OpenCMISModules-chemistry-opencmis-client-impl"></a>
+#### chemistry-opencmis-client-impl
+Implementations of the client API.
+
+<a name="OpenCMISModules-chemistry-opencmis-client-bindings"></a>
+#### chemistry-opencmis-client-bindings
+CMIS client AtomPub and Web Services binding implementation. See [OpenCMIS Client Bindings](opencmis-client-bindings.html)
+ for details.
+
+<a name="OpenCMISModules-Server"></a>
+### Server
+
+<a name="OpenCMISModules-chemistry-opencmis-server-bindings"></a>
+#### chemistry-opencmis-server-bindings
+CMIS server AtomPub and Web Services binding implementation. See [OpenCMIS Server Framework](opencmis-server-framework.html)
+ for details.
+
+<a name="OpenCMISModules-chemistry-opencmis-server-support"></a>
+#### chemistry-opencmis-server-support
+Convenience classes for repository connectors. This module contains the
+CMIS query parser.
+
+<a name="OpenCMISModules-chemistry-opencmis-server-inmemory"></a>
+#### chemistry-opencmis-server-inmemory
+CMIS in-memory repository for test purposes. See [OpenCMIS InMemory Repository](opencmis-inmemory-repository.html)
+ for details.
+
+<a name="OpenCMISModules-chemistry-opencmis-server-fileshare"></a>
+#### chemistry-opencmis-server-fileshare
+CMIS file system repository for test purposes. See [OpenCMIS FileShare Repository](opencmis-fileshare-repository.html)
+ for details.
+
+<a name="OpenCMISModules-Test"></a>
+### Test
+
+<a name="OpenCMISModules-chemistry-opencmis-test-fit"></a>
+#### chemistry-opencmis-test-fit
+Integration tests covering the whole stack.
+
+<a name="OpenCMISModules-chemistry-opencmis-test-browser"></a>
+#### chemistry-opencmis-test-browser
+Simple web based CMIS client. See [OpenCMIS Browser](opencmis-browser.html)
+ for details.
+
+<a name="OpenCMISModules-chemistry-opencmis-test-util"></a>
+#### chemistry-opencmis-test-util
+Utility classes for tests.
+
+<a name="OpenCMISModules-chemistry-opencmis-test-tools"></a>
+#### chemistry-opencmis-test-tools
+Development tools.
+
+
+
+
+
+

Added: incubator/chemistry/site/trunk/content/opencmis-release-documentation.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-release-documentation.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-release-documentation.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-release-documentation.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,183 @@
+Title: OpenCMIS Release Documentation
+<a name="OpenCMISReleaseDocumentation-OpenCMISReleaseDocumentation"></a>
+# OpenCMIS Release Documentation
+
+<a name="OpenCMISReleaseDocumentation-Introduction"></a>
+## Introduction
+
+This document describes the release guidelines for Apache Chemistry
+OpenCMIS.
+
+
+<a name="OpenCMISReleaseDocumentation-BuildEnvironments"></a>
+## Build Environments
+
+OpenCMIS has to be built with Maven 2.
+
+
+<a name="OpenCMISReleaseDocumentation-ReleaseArtifacts"></a>
+## Release Artifacts
+An OpenCMIS release consists of:
+* A source bundle containing all files that are necessary to build all
+other artifacts. It also contains the JavaDoc of the client API, the client
+bindings API and the server SPI as well as additional documentation and
+examples.
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-source.<ext>*
+
+* A client bundle containing all OpenCMIS JARs that are necessary to build
+a CMIS client application.
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-client.<ext>*
+
+* A client bundle (as above) with all dependencies. 
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-client-dep.<ext>*
+
+* A server bundle containing all OpenCMIS JARs and WARs and dependencies
+that are necessary to build a CMIS server. 
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-server.<ext>*
+
+* An InMemory repository bundle containing a ready-to-deploy WAR.
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-server-inmemory.<ext>*
+
+* A FileShare repository bundle containing a ready-to-deploy WAR.
+Package formats: tar.gz and zip. 
+Name: *chemistry-opencmis-<version>-server-fileshare.<ext>*
+
+* A browser bundle containing a ready-to-deploy WAR.
+Package formats: tar.gz and zip.
+Name: *chemistry-opencmis-<version>-browser.<ext>*
+
+<a name="OpenCMISReleaseDocumentation-Preparation"></a>
+## Preparation
+
+<a name="OpenCMISReleaseDocumentation-ReleaseManager"></a>
+### Release Manager
+
+A release manager must be appointed for a release. He or she is in charge
+of the release process, following the guidelines and eventually generating
+the release artifacts. The release manager might tailor the process for a
+specific release.
+
+
+<a name="OpenCMISReleaseDocumentation-Version"></a>
+### Version
+
+The OpenCMIS community decides if the release will be a major or a minor
+release and agrees on a version number. The string "-incubating" will be
+attached to incubator release version numbers.
+
+
+<a name="OpenCMISReleaseDocumentation-OpenIssues"></a>
+### Open Issues
+
+There must not be any open JIRA issues for this release.  There might be
+open issues for future releases.
+
+
+<a name="OpenCMISReleaseDocumentation-UnitTestsandIntegrationTests"></a>
+### Unit Tests and Integration Tests
+
+All unit tests and integration tests must succeed on a clean machine
+(starting with an empty local Maven repository).
+
+
+<a name="OpenCMISReleaseDocumentation-DocumentationandJavaDoc"></a>
+### Documentation and JavaDoc 
+
+The documentation that will be part of the release must match the code. All
+examples in the documentation must work. The Java package documentation
+must be up-to-date.
+The JavaDoc must be generated with Maven without warnings. 
+
+
+<a name="OpenCMISReleaseDocumentation-ApacheLicenseandCodeStyle"></a>
+### Apache License and Code Style
+
+Each source code file must have a current ASF license header. The source
+code should follow the OpenCMIS code style.
+
+
+<a name="OpenCMISReleaseDocumentation-ReleaseNotes"></a>
+### Release Notes
+
+Each release must provide a RELEASE-NOTES.txt file in the base directory of
+the source bundle. It must contain all known issues and should contain a
+description of all the changes since the previous release. The release
+notes should also contain the minimum target Java version and a list of all
+dependencies with their minimum version.
+NOTICE.txt and LICENSE.txt must be present in all bundles and must be
+up-to-date.
+
+
+<a name="OpenCMISReleaseDocumentation-ReleaseBranch"></a>
+### Release Branch
+
+A branch has to be created for every release. The naming rule for this
+branch is *branches/chemistry-opencmis-<version>-release*. 
+A tag has to be created for every release candidate. The naming rule for
+the tags is *tags/chemistry-opencmis-<version>-RC<number>*. 
+
+
+<a name="OpenCMISReleaseDocumentation-ReleaseCandidate"></a>
+## Release Candidate
+
+Once all preparations are done, a release candidate will be built. All
+release candidates must be cryptographically signed. The string
+"-RC<number>" will be attached to the version number of the release
+candidate artifacts, where <number> is the number of the release candidate
+starting with 1. If more than one release candidate is required a new tag
+has to be created and release candidate number will be increased by one.
+The release candidate artifacts will be made available on
+*people.apache.org* and the release manager kicks off the VOTE process.
+
+If the vote fails, the raised issues will be fixed, a new release candidate
+will be built and the VOTE process will be  restarted. 
+
+If the release candidate gets approved, the release candidate artifacts
+will be renamed and become the release artifacts. 
+
+
+<a name="OpenCMISReleaseDocumentation-ReleaseTool"></a>
+### Release Tool
+
+There is release tool that simplifies the creation of a release candidate. 
+
+1. Prerequisites: Java >= 1.5, ant >= 1.8, Maven 2, SVN command line tools,
+wget, GPG
+1. Create a new folder and copy *build.xml* from *trunk/release-tool* to
+this folder.
+1. Open *build.xml* with your favorite editor and adjust the following
+property values: snapshot version, release version, release candidate,
+tools.
+1. Run *ant prepare*. This will create new sub-folders, check out the
+current trunk, adjust the *pom.xml* files and download the documentation.
+1. Check everything. Check again. 
+1. Delete your local Maven repository.
+1. Run *ant build*. This will compile the whole project, run the JUnit
+tests and the integration test and create the JavaDoc. This will take some
+time.
+1. Make sure the build was successful. Make sure that there no warnings.
+1. Run *ant pack*. This will generate the release artifacts. You might be
+asked for the passphrase of your private GPG key.
+1. The *release* folder should now contain all release artifacts. Check
+them all carefully. Check again.
+1. If you are convinced that all artifacts are ok, upload *all artifacts* to
+*people.apache.org* and let the Chemistry community know.
+1. If this is the first release candidate for this release, create a release
+branch.
+1. Create a new release candidate tag.
+
+
+<a name="OpenCMISReleaseDocumentation-PublishingTheRelease"></a>
+## Publishing The Release 
+
+
+
+<a name="OpenCMISReleaseDocumentation-PostReleaseCleanup"></a>
+## Post Release Cleanup
+
+

Added: incubator/chemistry/site/trunk/content/opencmis-server-framework.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-server-framework.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-server-framework.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-server-framework.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,166 @@
+Title: OpenCMIS Server Framework
+<a name="OpenCMISServerFramework-OpenCMISServerFramework"></a>
+# OpenCMIS Server Framework
+
+The OpenCMIS Server Framework provides a server implementation of both CMIS
+bindings, AtomPub and Web Services, and maps them to Java interfaces.
+Requests and data from CMIS clients are converted and pushed to a
+repository connector. The connector translates the CMIS calls into native
+repository calls.
+
+
+<a name="OpenCMISServerFramework-RepositoryConnectorDevelopment"></a>
+## Repository Connector Development
+
+This is a brief description of the interfaces and classes a repository
+connector has to extend and implement. For interface details see the
+OpenCMIS Server Framework SPI JavaDoc.
+
+
+<a name="OpenCMISServerFramework-FrameworkEntryPoint"></a>
+### Framework Entry Point
+
+A repository connector has to extend the *AbstractServiceFactory* class.
+This class manages the objects that implement the CMIS service interface.
+There is only one active instance of this factory class per servlet
+context. The class name has to be set in the configuration file
+*/WEB-INF/classes/repository.properties*.
+
+
+    # set fully qualified class name
+    class=org.repository.ServicesFactory
+
+
+The configuration file may contain more key-value pairs. They are passed to
+the *init* method of the *AbstractServiceFactory* object when the
+servlet context starts up.
+
+For each request the *getService* method will be called and a
+*CallContext* object will be passed. This *CallContext* object contains
+data about the request, such as the used binding, the repository id,
+username and password. The *getService* method must return an object that
+implements the *CmisService* interface. This object will only be used in
+this thread. When the object is not needed anymore, the *close* method on
+the object will be called.
+
+It is up to the repository connector how these service objects are created
+and maintained. It is possible to create such an object for each request or
+keep an instance per thread in a ThreadLocal or manage service objects in a
+pool. If you reuse a service object make sure that it doesn't hold any
+state from previous requests.
+
+
+<a name="OpenCMISServerFramework-ServiceInterface"></a>
+### Service Interface
+
+The *CmisService* interface contains all operations of the CMIS
+specification and a few more. Most methods are named after the operations
+described in the CMIS specification. There are a few exceptions to that
+rule because the AtomPub binding doesn't always allow a one-to-one mapping.
+Those divergences are explained in the JavaDoc.
+
+The methods take the same parameters as described in the CMIS
+specification. There are also a few exceptions that are explained in the
+JavaDoc.
+
+It is recommended to extend the *AbstractCmisService* class instead of
+implementing the *CmisService* interface directly.
+*AbstractCmisService* contains several convenience methods and covers all
+AtomPub specifics in a generic way.
+
+
+<a name="OpenCMISServerFramework-AtomPubSpecifics"></a>
+### AtomPub Specifics
+
+The AtomPub binding needs more object data than many of the operations
+return. Therefore a repository connector has to provide *ObjectInfo*
+objects through the *getObjectInfo* method. *AbstractCmisService*
+provides a generic implementation of *getObjectInfo*. If you don't notice
+any performance issue with the AtomPub binding, you don't have to bother
+with *ObjectInfo* objects.
+
+If the generic assembly of *ObjectInfo* objects raises a problem, a
+repository connector can build them itself. *AbstractCmisService*
+provides a *addObjectInfo* method that takes and manages *ObjectInfo*
+objects. Which objects are required for which operation is documented in
+the JavaDoc.
+
+
+<a name="OpenCMISServerFramework-AuthenticationFramework"></a>
+### Authentication Framework
+
+Authentication information is transported to the service implementation via
+the *CallContext* object. The *CallContext* is basically a Map and can
+contain any kind of data. The OpenCMIS server fills it by default with a
+username and a password from either HTTP basic authentication for the
+AtomPub binding or WS-Security (UsernameToken) for the Web Services
+binding.
+
+Other authentication methods can be plugged in if needed. Here is how this
+works for the two CMIS bindings.
+
+<a name="OpenCMISServerFramework-AtomPubauthentication"></a>
+#### AtomPub authentication
+
+For the AtomPub binding a new class implementing the interface
+*org.apache.chemistry.opencmis.server.impl.atompub.CallContextHandler*
+has to be created. It gets the *HttpServletRequest* object of the current
+request and returns key-value pairs that are added to the *CallContext*.
+See the JavaDoc for details.
+
+The new *CallContext* handler can be activated by changing the servlet init parameter *callContextHandler* in {{/WEB-INF/web.xml]
+}}.
+
+    <init-param>
+      <param-name>callContextHandler</param-name>
+      <param-value>org.example.opencmis.MyCallContextHandler</param-value>
+    </init-param>
+
+
+
+<a name="OpenCMISServerFramework-WebServicesauthentication"></a>
+#### Web Services authentication
+
+For the Web Services binding a new *SOAPHandler* class has to be created
+and registered in */WEB-INF/sun-jaxws.xml*.
+
+The *handleMessage* method should look like this:
+
+    public boolean handleMessage(SOAPMessageContext context) {
+      Boolean outboundProperty = (Boolean)
+            context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+      if (outboundProperty.booleanValue()) {
+        // we are only looking at inbound messages
+        return true;
+      }
+    
+      // do whatever you have to do here
+      String user = ...
+      String secret = ...
+  
+      // set up key-value pairs for the CallContext
+      Map<String, String> callContextMap = new HashMap<String, String>();
+      callContextMap.put("org.example.opencmis.user", user);
+      callContextMap.put("org.example.opencmis.secret", secret);
+    
+      // add key-value pairs the SOAP message context
+      context.put(AbstractService.CALL_CONTEXT_MAP, callContextMap);
+      context.setScope(AbstractService.CALL_CONTEXT_MAP, Scope.APPLICATION);
+    
+      return true;
+    }
+
+<a name="OpenCMISServerFramework-RepositoryConnectorDeployment"></a>
+## Repository Connector Deployment
+
+The OpenCMIS build process creates a WAR file in
+*/chemistry-opencmis-server/chemistry-opencmis-server/target*. This WAR
+file should be used as a template. It can be deployed as it is but doesn't
+do anything.
+
+In order to use your connector, copy your compiled connector code into this
+WAR file and overwrite */WEB-INF/classes/repository.properties*.
+
+Have a look at the [OpenCMIS FileShare Repository](opencmis-fileshare-repository.html)
+ test repository code and *pom.xml*. It's a simple example of a
+repository connector.

Added: incubator/chemistry/site/trunk/content/opencmis-session-parameters.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-session-parameters.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-session-parameters.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-session-parameters.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,78 @@
+Title: OpenCMIS Session Parameters
+<a name="OpenCMISSessionParameters-OpenCMISSessionParameters"></a>
+# OpenCMIS Session Parameters
+
+<table>
+<tr><th>Key</th><th>Constant</th><th>Description</th><th>Values</th><th>Required</th><th>Default</th></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.spi.type</td><td>BINDING_TYPE</td><td>Binding to use
+for the session </td><td>"atompub", "webservices", "local", "custom"</td><td>yes</td><td> </td></tr>
+  
+  
+  
+  
+  
+  
+  
+  
+<tr><td>org.apache.chemistry.opencmis.locale.iso639</td><td>LOCALE_ISO639_LANGUAGE</td><td>Language
+code sent to server</td><td>ISO 639 code</td><td>no</td><td> </td><td> </td></tr>
+<tr><td>org.apache.chemistry.opencmis.locale.iso3166</td><td>LOCALE_ISO3166_COUNTRY</td><td>Country
+code sent to server if language code is set</td><td>ISO 3166 code</td><td>no</td><td> </td></tr>
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+<tr><td>org.apache.chemistry.opencmis.binding.webservices.memoryThreshold</td><td>WEBSERVICES_MEMORY_THRESHOLD</td><td>Documents
+smaller than the threshold are kept in main memory, larger documents are
+written to a temporary file</td><td>size in bytes</td><td>no</td><td>4194304 (4MB)</td></tr>
+  
+  
+<tr><td>org.apache.chemistry.opencmis.binding.auth.classname</td><td>AUTHENTICATION_PROVIDER_CLASS</td><td>Authentication
+Provider</td><td>class
+name</td><td>no</td><td>org.apache.chemistry.opencmis.client.bindings.spi.StandardAuthenticationProvider</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.auth.http.basic</td><td>AUTH_HTTP_BASIC</td><td>Switch
+to turn HTTP basic authentication on or off</td><td>"true", "false"</td><td>no</td><td>Depends on
+BINDING_TYPE</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.auth.soap.usernametoken</td><td>AUTH_SOAP_USERNAMETOKEN</td><td>Switch
+to turn UsernameTokens on or off</td><td>"true", "false"</td><td>no</td><td>Depends on
+BINDING_TYPE</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.compression</td><td>COMPRESSION</td><td>Switch to
+turn HTTP compression on or off</td><td>"true", "false"</td><td>no</td><td>false</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.classname</td><td>CACHE_CLASS</td><td>Cache
+implementation</td><td>class
+name</td><td>no</td><td>org.apache.chemistry.opencmis.client.runtime.cache.CacheImpl</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.objects.size</td><td>CACHE_SIZE_OBJECTS</td><td>Object
+cache size</td><td>number of objects</td><td>no</td><td>1000</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.objects.ttl</td><td>CACHE_TTL_OBJECTS</td><td>Object
+cache time-to-live</td><td>time in milliseconds</td><td>no</td><td>7200000 (2 hours)</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.pathtoid.size</td><td>CACHE_SIZE_PATHTOID</td><td>Path-to-id
+cache size</td><td>number of path to object links</td><td>no</td><td>1000</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.pathtoid.ttl</td><td>CACHE_TTL_PATHTOID</td><td>Path-to-id
+cache time-to-live</td><td>time in milliseconds</td><td>no</td><td>1800000 (30 minutes)</td></tr>
+<tr><td>org.apache.chemistry.opencmis.cache.path.omit</td><td>CACHE_PATH_OMIT</td><td>Turn off
+path-to-id cache</td><td>"true", "false"</td><td>no</td><td>false</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.cache.repositories.size</td><td>CACHE_SIZE_REPOSITORIES</td><td>Repository
+info cache size</td><td>number of objects</td><td>no</td><td>10</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.cache.types.size</td><td>CACHE_SIZE_TYPES</td><td>Type
+definition cache size</td><td>number of objects</td><td>no</td><td>100</td></tr>
+<tr><td>org.apache.chemistry.opencmis.binding.cache.links.size</td><td>CACHE_SIZE_LINKS</td><td>AtomPub
+link cache size</td><td>number of objects</td><td>no</td><td>400</td></tr>
+<tr><td>org.apache.chemistry.opencmis.objectfactory.classname</td><td>OBJECT_FACTORY_CLASS</td><td>Object
+factory implementation </td><td>class
+name</td><td>no</td><td>org.apache.chemistry.opencmis.client.runtime.repository.ObjectFactoryImpl</td></tr>

Added: incubator/chemistry/site/trunk/content/opencmis-swing-client.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis-swing-client.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis-swing-client.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis-swing-client.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,6 @@
+Title: OpenCMIS Swing Client
+<a name="OpenCMISSwingClient-OpenCMISSwingClient"></a>
+# OpenCMIS Swing Client
+
+The OpenCMIS Swing Client has been replaced by the [CMIS Workbench](cmis-workbench.html)
+.

Added: incubator/chemistry/site/trunk/content/opencmis.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/opencmis.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/opencmis.mdtext (added)
+++ incubator/chemistry/site/trunk/content/opencmis.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,151 @@
+Title: OpenCMIS
+<a name="OpenCMIS-WelcometoOpenCMIS"></a>
+# Welcome to OpenCMIS
+
+OpenCMIS is a collection of Java libraries, frameworks and tools around the [CMIS (Content Management Interoperability Services)](http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html)
+ specification.
+
+The aim of OpenCMIS is to make CMIS simple for Java client and server
+developers. It hides the binding details and provides APIs and SPIs on
+different abstraction levels. It also includes test tools for content
+repository developers and client application developers.
+
+<a name="OpenCMIS-GetOpenCMIS"></a>
+## Get OpenCMIS
+
+<a name="OpenCMIS-OpenCMISdownload"></a>
+### OpenCMIS download
+
+You can download the latest OpenCMIS releases here.
+
+
+h4. 0.2.0 [Full Download page](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/)
+ [Release Notes|https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&&pid=12310936&fixfor=12315134&sorter/field=priority&sorter/order=DESC]
+
+<table>
+<tr><th> Package </th><th> zip </th><th> tar.gz </th></tr>
+<tr><td> OpenCMIS Client with dependencies </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-client-impl-0.2.0-incubating-with-dependencies.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-client-impl-0.2.0-incubating-with-dependencies.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Server Webapps </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-dist-0.2.0-incubating-server-webapps.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-dist-0.2.0-incubating-server-webapps.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Workbench </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-workbench-0.2.0-incubating-full.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-workbench-0.2.0-incubating-full.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Docs </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-0.2.0-incubating-docs.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-0.2.0-incubating-docs.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Sources </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.2.0-incubating/chemistry-opencmis-0.2.0-incubating-source-release.zip)
+ </td><td>  </td></tr>
+</table>
+
+
+
+<a name="OpenCMIS-0.1.0[FullDownloadpage](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/)"></a>
+#### 0.1.0 [Full Download page|http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/]
+
+<table>
+<tr><th> Package </th><th> zip </th><th> tar.gz </th></tr>
+<tr><td> OpenCMIS Client with dependencies </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-client-impl-0.1.0-incubating-with-dependencies.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-client-impl-0.1.0-incubating-with-dependencies.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Server Webapps </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-dist-0.1.0-incubating-server-webapps.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-dist-0.1.0-incubating-server-webapps.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Docs </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-0.1.0-incubating-docs.zip)
+ </td><td> [Download</td><td>http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-0.1.0-incubating-docs.tar.gz]
+ </td></tr>
+<tr><td> OpenCMIS Sources </td><td> [Download](http://www.apache.org/dyn/closer.cgi/incubator/chemistry/opencmis/0.1.0-incubating/chemistry-opencmis-0.1.0-incubating-source-release.zip)
+ </td><td>  </td></tr>
+</table>
+
+
+
+<a name="OpenCMIS-UseOpenCMISwithMaven"></a>
+### Use OpenCMIS with Maven
+
+You can use OpenCMIS with [Maven](http://maven.apache.org/)
+. Check the latest version available by [searching the Apache repository|https://repository.apache.org/index.html#nexus-search;quick~opencmis]
+.
+You should add the repository declaration:
+
+Specifically in order to use the client you will need to add the following
+dependencies:
+
+*Client:*
+
+
+     <dependency>
+        <groupId>org.apache.chemistry.opencmis</groupId>
+        <artifactId>chemistry-opencmis-client-impl</artifactId>
+        <version>0.2.0-incubating</version>
+    </dependency>
+
+
+*Server:*
+
+
+     <dependency>
+        <groupId>org.apache.chemistry.opencmis</groupId>
+        <artifactId>chemistry-opencmis-server-support</artifactId>
+        <version>0.2.0-incubating</version>
+     </dependency>
+
+
+Please check the full Maven details for OpenCMIS on the [Maven generated site](http://incubator.apache.org/chemistry/maven-site/0.2.0-incubating/index.html)
+.
+
+
+<a name="OpenCMIS-CMISComponents"></a>
+## CMIS Components
+
+OpenCMIS is subdivided into these major areas:
+
+<a name="OpenCMIS-CMISClient"></a>
+### CMIS Client
+
+OpenCMIS provides two CMIS client APIs that are called [Client API](opencmis-client-api.html)
+ and [Client Bindings API|OpenCMIS Client Bindings]
+. The [Client API|OpenCMIS Client API]
+ is a high-level, object orientated API and suitable for most use cases. It
+sits on top of the Client Bindings API. The [Client Bindings API|OpenCMIS Client Bindings]
+ reflects the CMIS domain model. It allows fine-grained control which makes
+the interfaces a bit clunky.
+
+
+<a name="OpenCMIS-CMISServer"></a>
+### CMIS Server
+
+The OpenCMIS [Server Framework](opencmis-server-framework.html)
+ handles both CMIS bindings on the server side and maps them to a common
+set of Java interfaces. Repository vendors just need to implement those
+interfaces and don't need to worry about the protocol on the wire.
+
+There are two repository implementations based on the Server Framework that
+are handy test tools for client developers. The [InMemory Test Repository](opencmis-inmemory-repository.html)
+ stores all data in main memory. The [FileShare Test Repository|OpenCMIS FileShare Repository]
+ turns a branch of your file system into a CMIS repository.
+
+
+<a name="OpenCMIS-TestandTools"></a>
+### Test and Tools
+
+In order to make the implementation of CMIS clients and server even simpler
+OpenCMIS comes with a set of tests and tools. Currently, available are:
+* [CMIS Browser](opencmis-browser.html)
+. A simple web based browser for CMIS repositories that support the AtomPub
+binding.
+* [CMIS Workbench](cmis-workbench.html)
+. A CMIS desktop client for developers.
+
+
+<a name="OpenCMIS-OpenCMISGuides"></a>
+## OpenCMIS Guides
+
+* [How to build OpenCMIS](opencmis-how-to-build.html)
+* [Description of the OpenCMIS modules](opencmis-modules.html)
+* [How to build an OpenCMIS server](how-to-build-a-server.html)
+* [OpenCMIS server query integration](queryintegration.html)
+* [The OpenCMIS cookbook](opencmis-cookbook.html)
+* [Projects using OpenCMIS](projects-using-opencmis.html)

Added: incubator/chemistry/site/trunk/content/phpclient.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/phpclient.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/phpclient.mdtext (added)
+++ incubator/chemistry/site/trunk/content/phpclient.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,41 @@
+Title: phpclient
+<a name="phpclient-CMISPHPClient"></a>
+# CMIS PHP Client
+
+This code is available at: [https://svn.apache.org/repos/asf/incubator/chemistry/phpclient/](https://svn.apache.org/repos/asf/incubator/chemistry/phpclient/)
+
+To Run this example execute the following
+
+    php -f cmis_ls.php <rest-endpoint> <username> <password> <folderpath> [debug option 1](2.html)
+
+Notes:
+
+* The if the folder path has spaces in it you must URL encode the folder
+path i.e. /Data Dictionary \--> /Data+Dictionary
+* The debug option can be omitted. If it is 1 the program will display all
+of the arrays associated with the objects that
+* are returned. If the debug option is 2 or more, then the XML returned
+will also be displayed
+* This will not work on Pre CMIS-1.0 repositories
+* There is virtually no error checking.
+* Your version of php must support DOMDocument and curl
+
+Example Runs
+
+    php -f cmis_ls.php http://cmis.alfresco.com/service/api/cmis admin admin /
+    php -f cmis_ls.php http://cmis.alfresco.com/service/api/cmis admin admin /Data+Dictionary 1
+
+The cmis_repository_wrapper.php library provided the following
+functionality
+
+* Encapsulates access to a CMIS 1.0 compliant repository
+* Provides utilities for getting information out of:
+* Workspace (the repositoryInfo)
+* Object Entries
+* Non-Hierarchical Object feeds
+
+More information can be found on the following wiki pages
+
+* [Current Project Status](currentprojectstatus.html)
+* [Function Coverage](phpfunctioncoverage.html)
+* [Test Suite Description](testsuitedescription.html)

Added: incubator/chemistry/site/trunk/content/phpfunctioncoverage.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/phpfunctioncoverage.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/phpfunctioncoverage.mdtext (added)
+++ incubator/chemistry/site/trunk/content/phpfunctioncoverage.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,178 @@
+Title: PHPFunctionCoverage
+<a name="PHPFunctionCoverage-TableofFunctionsandTheirStatus(PHPClient)"></a>
+# Table of Functions and Their Status (PHP Client)
+
+The Tables below list the methods on all of the services and whether or not
+they are implemented via the API calls and their return values.
+
+This CMIS client leverages the REST Binding and turns the ATOM-PUB
+structures that are returned into PHP Data Structures that organize the
+information in a way that matches the Domain Model of the CMIS Spec.
+
+<a name="PHPFunctionCoverage-RepositoryServices"></a>
+## Repository Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Get Repositories </th><th> _N/A_ </th><th> _N/A_ </th></tr>
+<tr><th> Get Repository Info </th><th> Yes </th><th> Repository Definition </th></tr>
+<tr><th> Get Type Children </th><th> Yes </th><th> List of Types </th></tr>
+<tr><th> Get Type Descendants </th><th> Yes </th><th> Tree of Types </th></tr>
+<tr><th> Get Type Definition </th><th> Yes </th><th> Type Definition </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-NavigationServices"></a>
+## Navigation Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Get Folder Tree </th><th> Yes </th><th> Tree of Folders </th></tr>
+<tr><th> Get Descendants </th><th> Yes </th><th> Tree of Folders and Documents </th></tr>
+<tr><th> Get Children </th><th> Yes </th><th> List of Objects </th></tr>
+<tr><th> Get Folder Parent </th><th> Yes </th><th> Folder Object </th></tr>
+<tr><th> Get Object Parents </th><th> Yes </th><th> List Folder Objects </th></tr>
+<tr><th> Get Checkedout Docs </th><th> Yes </th><th> List of Document Objects </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-DiscoveryServices"></a>
+## Discovery Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Query </th><th> Yes </th><th> List Folder Objects </th></tr>
+<tr><th> Get Content Changes </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-ObjectServices"></a>
+## Object Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Get Object </th><th> Yes </th><th> CMIS Object </th></tr>
+<tr><th> Get Object By Path </th><th> Yes </th><th> CMIS Object </th></tr>
+<tr><th> Get Properties </th><th> Yes </th><th> CMIS Object </th></tr>
+<tr><th> Get Allowable Actions </th><th> No </th><th> ??? </th></tr>
+<tr><th> Get Renditions </th><th> Yes </th><th> CMIS Object </th></tr>
+<tr><th> Get Content Stream </th><th> Yes </th><th> Content Stream </th></tr>
+<tr><th> Create Document </th><th> Yes </th><th> Object ID (CMIS Object Returned) </th></tr>
+<tr><th> Create Document From Source </th><th> _N/A_ </th><th> _N/A_ </th></tr>
+<tr><th> Create Folder </th><th> Yes </th><th> Object ID (CMIS Object Returned) </th></tr>
+<tr><th> Create Relationship </th><th> No </th><th> Object ID (CMIS Object Returned) </th></tr>
+<tr><th> Create Policy </th><th> No </th><th> Object ID (CMIS Object Returned) </th></tr>
+<tr><th> Update Properties </th><th> Yes </th><th> Object ID+Change Token (CMIS Object
+Returned) </th></tr>
+<tr><th> Move Object </th><th> Yes </th><th> Object Id (CMIS Object Returned) </th></tr>
+<tr><th> Delete Object </th><th> Yes </th><th> None </th></tr>
+<tr><th> Delete Tree </th><th> No </th><th> List of Object IDs (Objects that could not be
+deleted) (CMIS Objects Returned?) </th></tr>
+<tr><th> Set Content Stream </th><th> Yes </th><th> Object ID+Change Token (CMIS Object
+Returned) </th></tr>
+<tr><th> Delete Content Stream </th><th> Yes </th><th> Object ID+Change Token (CMIS Object
+Returned) </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-VersioningServices"></a>
+# Versioning Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Check Out </th><th> No </th><th> ??? </th></tr>
+<tr><th> Check In </th><th> No </th><th> ??? </th></tr>
+<tr><th> Cancel Check Out </th><th> No </th><th> ??? </th></tr>
+<tr><th> Get Properties Of Latest Version </th><th> _Incomplete Do Not Use_ </th><th> ??? </th></tr>
+<tr><th> Get Object Of Latest Version </th><th> _Incomplete Do Not Use_ </th><th> ??? </th></tr>
+<tr><th> Get All Versions </th><th> No </th><th> ??? </th></tr>
+<tr><th> Delete All Versions </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-RelationshipServices"></a>
+## Relationship Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Get Object Relationships </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-Multi-FilingServices"></a>
+## Multi-Filing Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Add Object To Folder </th><th> No </th><th> ??? </th></tr>
+<tr><th> Remove Object From Folder </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-PolicyServices"></a>
+## Policy Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Apply Policy </th><th> No </th><th> ??? </th></tr>
+<tr><th> Remove Policy </th><th> No </th><th> ??? </th></tr>
+<tr><th> Get Applied Policies </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-ACLServices"></a>
+## ACL Services
+
+<table>
+<tr><th> *Function* </th><th> *Status* </th><th> *Return Type* </th></tr>
+<tr><th> Get ACL </th><th> No </th><th> ??? </th></tr>
+<tr><th> Apply ACL </th><th> No </th><th> ??? </th></tr>
+</table>
+
+<a name="PHPFunctionCoverage-DocumentationonVariousReturnTypes"></a>
+# Documentation on Various Return Types
+
+<table>
+<tr><th> *Return Type* </th><th> *Atom Pub Type* </th><th> *Description of PHP Structure* </th><th>
+*Comments* </th></tr>
+  
+  
+1. Links (used by the client to navigate the repository)
+1. URI Templates (used by the client to navigate the repository
+1. Collections (used by the client to navigate the repository)
+1. Capabilities
+1. Repository Information || ||
+  
+  
+1. Links  (used by the client to navigate the repository)
+1. Properties
+1. UUID
+  
+  
+* Document
+* Folder
+* Policy
+* Relationship
+* Object ID
+* Object ID+Change Token ||
+  
+  
+* *objectsById* \- an associative array of the Entries
+* *objectList* \- an array of references to the objets in the *objectsById*
+array || Objects in the feed may not be fully populated ||
+<tr><th> Tree of CMIS Objects </th><th> Feed with CMIS Hierarchy Extensions </th><th> Array
+similar to above. Hierarchy is achieved by adding a "children" object to
+each Entry that has children. The "Children" object contains the same
+structure as the Feed (2 arrays) </th><th> Objects in the feed may not be fully
+populated </th></tr>
+  
+  
+1. Links  (used by the client to navigate the repository)
+1. Properties
+1. Attributes
+1. ID (Object Type ID) || The Type Definition data structure needs work for
+completion. Currently it has enough to support the needs of the Object
+Services ||
+  
+  
+* *objectsById* \- an associative array of the Entries
+* *objectList* \- an array of references to the objets in the *objectsById*
+array || Objects in the feed may not be fully populated ||
+<tr><th> Tree of Type Definitions </th><th> Feed with CMIS Hierarchy Extensions </th><th> Array
+similar to above. Hierarchy is achieved by adding a "children" object to
+each Entry that has children. The "Children" object contains the same
+structure as the Feed (2 arrays) </th><th> Objects in the feed may not be fully
+populated </th></tr>
+<tr><th> Content Stream </th><th> Content </th><th> Content </th><th> </th></tr>

Added: incubator/chemistry/site/trunk/content/projects-using-opencmis.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/projects-using-opencmis.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/projects-using-opencmis.mdtext (added)
+++ incubator/chemistry/site/trunk/content/projects-using-opencmis.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,24 @@
+Title: Projects using OpenCMIS
+<a name="ProjectsusingOpenCMIS-ProjectsusingOpenCMISClientAPI"></a>
+# Projects using OpenCMIS Client API
+
+* *Spring Surf CMIS Application Browser* \- [Howto](http://blogs.alfresco.com/wp/cmis/2010/06/14/spring-surf-and-opencmis-integration-part-2/)
+&nbsp;\- [Source Code|https://anonsvn.springframework.org/svn/se-surf/branches/DEV_CMIS_2/]
+* *Confluence CMIS Plugin* \- [Project Site](http://code.google.com/p/confluence-cmis-plugin/)
+* *CMIS Explorer w/Adobe AIR* \- [Project Site](http://code.google.com/p/cmis-explorer/)
+* *CMIS connectivity for SAP Applications* on future SAP Netweaver release
+* *Struts2CmisExplorer* \- [Project Site](http://code.google.com/p/struts2cmisexplorer/)
+* *CMIS Workbench* \- [Project Site](cmis-workbench.html)
+* *Alfresco Web Quick Start* \- [Developer Guide](http://wiki.alfresco.com/wiki/Web_Quick_Start_Developer_Guide)
+* *Nuxeo CMIS Shell* - (upcoming)
+* _Add your project here_
+
+<a name="ProjectsusingOpenCMIS-ProjectsusingOpenCMISServerFramework"></a>
+# Projects using OpenCMIS Server Framework
+
+* *Open Text Enterprise Library CMIS Connector* (AtomPub binding)
+* *OpenWGA CMIS Connectivity Plugin* - [About](http://www.openwga.com/blog/openwga/archives/2010-10/cmis_the_new_content_interoperability_kid_on_the_block.int.html)
+* *Alfresco CMIS Preview* \- [Project Site](http://cmis.alfresco.com/preview)
+* *Nuxeo EP 5.4 CMIS Connector* - [Project Site](http://doc.nuxeo.com/display/NXDOC/CMIS+for+Nuxeo)
+ - [Source Code|http://hg.nuxeo.org/addons/nuxeo-chemistry]
+* _Add your project here_

Added: incubator/chemistry/site/trunk/content/queryintegration.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/queryintegration.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/queryintegration.mdtext (added)
+++ incubator/chemistry/site/trunk/content/queryintegration.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,194 @@
+Title: QueryIntegration
+
+<h3 style="color:#ff0000">Status: Experimental</h3>
+
+
+<a name="QueryIntegration-OpenCMISQueryIntegration"></a>
+# OpenCMIS Query Integration
+
+The CMIS standard contains a powerful query language that supports full
+text and relational metadata query capabilities and is modeled along a
+subset of SQL. Many repositories will have the demand to integrate into
+this query interface. OpenCMIS provides support to make a query integration
+easier. This article explains the various hooks that are provided to
+integrate into the query interface. These hooks provide different levels of
+comfort and flexibility. OpenCMIS integrates a query parser that uses ANTLR
+as parsing engine. However there is no strong dependency on ANTLR. If you
+prefer a different language parsing tool it is possible to do this.
+
+There are four different levels how you can integrate query:
+1. Implement query in the discovery service
+1. Use the built-in ANTLR and ANTLR CMISQL grammar
+1. Use OpenCMIS CMISQL grammar and integrate into ANTLR query walker
+1. Use predefined query walker and integrate into interface
+IQueryConditionProcessor.
+
+<a name="QueryIntegration-Implementqueryinthediscoveryservice"></a>
+## Implement query in the discovery service
+
+The first way is to implement the query() method like any other service
+method on your own. This gives you the maximum flexibility including using
+a parser tool of your choice and extensions of the query grammar as you
+like. This is also the method with the highest implementation effort.
+
+<a name="QueryIntegration-Usebuilt-inANTLRandANTLRCMISQLgrammar"></a>
+## Use built-in ANTLR and ANTLR CMISQL grammar
+
+OpenCMIS comes with a build-in integration of ANTLR and provides a grammar
+file for CMISQL. You can reuse this grammar file, modify or extend it and
+integrate query by using the ANTLR mechanisms for parsing and walking the
+abstract syntax tree. Please refer to the ANTLR documentation for further
+information. This is the right level to use if you need custom parser tree
+transformations or would like to extend the grammar with your own
+constructs. For demonstration purposes OpenCMIS provides a sample extended
+grammar as an example.
+
+<a name="QueryIntegration-UseOpenCMISCMSIQLgrammarandintegrateintoANTLRquerywalker"></a>
+## Use OpenCMIS CMSIQL grammar and integrate into ANTLR query walker
+
+If the standard CMISQL grammar is sufficient for you there is another level
+of integration. For many repositories there are common tasks for processing
+queries: The columns of the select part need to be evaluated and mapped to
+type and property definitions. The from area needs to be mapped to type
+definitions and some parts of the where part again refer to properties in
+types. In addition all aliases defined in the statement need to be resolved
+and many validations are performed. OpenCMIS provides a class that performs
+these common tasks. You can make use of the resolved types, properties and
+aliases and walk the resulting abstract syntax tree (AST) to evaluate the
+query. You are free to walk the AST as many times as you need and in the
+order you prefer. The basic idea is that the SELECT and FROM parts are
+processed by OpenCMIS and you are responsible for the WHERE part.&nbsp; The
+CMIS InMemory server provides an example for this level of integration: For
+each object contained in the repository the tree is traversed and checked
+if it matches the current query. You can take the InMemory code as an
+example if you decide to use this integration point.
+
+<a name="QueryIntegration-Usepredefinedquerywalker"></a>
+## Use predefined query walker
+
+For some repositories a simple and one-pass query traversal is sufficient.
+This can be the case if for example your query needs to be translated to a
+SQL query statement. Because ANTLR has some complexity OpenCMIS provides a
+predefined walker that does a simple one pass depth-first traversal. If
+this is sufficient this interface hides most of the complexity of ANTLR.
+All you have to do is to implement a Java interface
+(IQueryConditionProcessor). You can refer to the unit tests for example
+code. The class TestQueryProcessor nested in the unit test ProcessQueryTest
+provides an example of such a walker. Some utility methods like for example
+parsing literals like "abc", \-123 to Java objects like String and Integer
+are common tasks. Therefore this is implemented in an abstract class
+AbstractQueryConditionProcessor. This declares all interface methods as
+abstract and provides default implementations for common tasks. In most
+cases you will derive your implementation from
+AbstractQueryConditionProcessor and not directly implement the interface.
+
+Note: There is currently no predefined walker for the JOIN statements. If
+you need to support JOINS you have to build your own walker for this part
+as outlined in the previous section.
+
+<a name="QueryIntegration-UsingQueryObject"></a>
+## Using QueryObject
+
+The class QueryObject provides all the basic functionality for resolving
+types and properties and performs common validation tasks. The QueryObject
+processes the SELECT and FROM parts as well as all property references from
+the WHERE part. It maintains a list of Java objects and interface that you
+can use to access the property and type definitions given your current
+position in the statement. For an example refer to the class
+StoreManagerImpl of the InMemory Server and method query(). To be able to
+use this object QueryObj needs to get access to the types contained in your
+repository. For this purpose you need to pass an interface to a TypeManager
+as input parameter. The second parameter is your query walker implementing
+IQueryConditionProcessor. Your code will typically look like this:
+
+    TypeManager tm = new MyTypeManager(); // implements interface TypeManager
+
+    IQueryConditionProcessor myWalker = new MyWalker(); // implements interface
+        IQueryConditionProcessor or extends AbstractQueryConditionProcessor
+
+    queryObj = new QueryObject(tm, myWalker);
+
+queryObj then will process the statement and call the interface methods of
+your walker:
+
+    try {
+    
+        CmisQueryWalker walker = QueryObject.getWalker(statement);
+        walker.query(queryObj);
+    
+    } catch (RecognitionException e) {
+    
+        throw new RuntimeException("Walking of statement failed with
+		     RecognitionException error: \n   " + e);
+    
+    } catch (Exception e) {
+        throw new RuntimeException("Walking of statement failed with exception:
+		      \n   " + e);
+    }
+  
+
+After this method returns you may for example ask your walker object
+myWalker for the generated SQL string.
+
+<a name="QueryIntegration-Processinganodeandreferencingtypesandproperties"></a>
+## Processing a node and referencing types and properties
+
+While traversing the tree you often will need to access the property and
+type definitions that are referenced in the where clause. The QueryObject
+provides the necessary information for resolving the references. For
+example the statement
+
+   ... WHERE x < 123
+  
+
+will result in calling the method onLessThan() in your walker callback
+implementation:
+
+    public void onLessThan(Tree ltNode, Tree leftNode, Tree rightNode) {
+    
+        Object rVal = onLiteral(rightChild);
+        ColumnReference colRef;
+    
+        CmisSelector sel = queryObj.getColumnReference(columnNode
+			     .getTokenStartIndex());
+    
+        if (null == sel)
+           throw new RuntimeException("Unknown property query name " +
+		          columnNode.getChild(0));
+        else if (sel instanceof ColumnReference)
+           colRef = (ColumnReference) sel;
+    
+    
+       TypeDefinition td = colRef.getTypeDefinition();
+       PropertyDefinition pd =
+           td.getPropertyDefinitions().get(colRef.getPropertyId());
+    
+    
+       // … process the statement, for example append it to a WHERE
+       // in your generated SQL statement.
+    }
+  
+
+The right child node is a literal and you will get an Integer object with
+value 123. The left node is a reference to property and
+getColumnReference() will either give you a function (currently the only
+supported function is SCORE()) or a reference to a property in a type of
+your type system. The query object maintains several maps to resolve
+references. The key to the map is always the token index in the incoming
+token stream (an integer value). You can get the token index for each node
+by calling getTokenStartIndex() on the node.
+
+<a name="QueryIntegration-Buildingtheresultlist"></a>
+## Building the result list
+
+After processing the query an ObjectList has to be returned containing the
+requested properties and function results. You can ask the query object for
+the requested information:
+
+    Map props = queryObj.getRequestedProperties();
+    Map funcs = queryObj.getRequestedFuncs();
+  
+
+key of the map is the query name and value is the alias if an alias was
+used in the statement or the query name otherwise.
+  

Added: incubator/chemistry/site/trunk/content/quicklinks.mdtext
URL: http://svn.apache.org/viewvc/incubator/chemistry/site/trunk/content/quicklinks.mdtext?rev=1071656&view=auto
==============================================================================
--- incubator/chemistry/site/trunk/content/quicklinks.mdtext (added)
+++ incubator/chemistry/site/trunk/content/quicklinks.mdtext Thu Feb 17 15:49:37 2011
@@ -0,0 +1,3 @@
+Title: QuickLinks
+[License](http://www.apache.org/licenses/LICENSE-2.0.html)
+ [Site Map|SiteMap]



Mime
View raw message