DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
This Wiki contains concepts, results and brainstormings concerning the repository integration done at the SprintZurich20040514.
Goals
- independence from repository implementation
- reuse of Cocoon components
- exclude repository markup from sitemap URLs i.e. user name and credentials
- Lenya protocol as single entry point for PageEnvelope access if using
lenya:/
Ideas
- based on
- repository block interfaces
- default implementation: Slide block (SlideSource and the Slide protocol
slide:)
- extension of repository block
- new methods in VersionableSource
- new interfaces TransactionableSource, TransactionManager
lenya:*protocol + LenyaSourceFactory, which delegates to further protocols i.e.slide:- The lenya protocol should be configureable i.e. the delegation protocol (
slide:) and a delegation prefix i.e. a namespace if the delegation protocol isslide:. - using
src="lenya:/"is equivalent to usingsrc="lenya://{page-envelope:publication-id}/{page-envelope:area}". This will heavily reduce sitemap redundancies and still provides enough flexibility
- The lenya protocol should be configureable i.e. the delegation protocol (
Definitions
;Delegation Protocol:The protocol to be delegated to by the LenyaSourceFactory used to access the repository ;Delegation Prefix: A prefix to be prepended to the url before it is delegated to the delegation protocol
Reasons
- why slide?
- JCR is not ready
- why
o.a.c.c.repository.*Sourceinstead ofo.a.c.c.repository.Repository?- existing Slide implementation
Repositoryfocuses too much on Flow
- we want to reuse the repository source interfaces
*we need to add transaction support with a new interface *transactionable*
*we want to use the underlying slide block and have to implement *transactionable* for the slide source
Diagrams
<map:generate>
- - - - - - - - - - - |
Lenya API v
+-------------------+ +--------+ +----------+
|LenyaSourceFactory | |Version | |Resource |
+-------------------+ +--------+ +----------+
- - - - - - - - - - - - - - - A - - - - -
Repository Block |
+----------+-------+-------+
v v v
+------+ +-----------+ +---------------+
|Source| |Versionable| |Transactionable|
+------+ +-----------+ +---------------+
+------------------+
|TransactionManager|
+------------------+
- - - - - - - - - - - - - - - - - - - - -
Repository Block Implementation
Slide | JCR | ...
- - - - - - - - - - - - - - - - - - - - -
Approach
- move publication API draft from University of Zurich Publication into Lenya and merge
- extend Slide source with transactable interface
- Implement a LenyaSourceFactory as described in this document
- Replace
<map:generate src="path"/>by<map:generate src="lenya://path"/>or<map:generate src="lenya:/path"/>. The LenyaSourceFactory will delegate to thecontext:protocol until the Lenya API uses ModifiableTraversableSource to change/create files in the repository.
Transactions
- LenyaSource implements Transactionable
- Transactionable is marker interface for communication with TransactionManager
- TransactionManager accesses repository transaction manager
Interface extensions
Versionable Source
- void checkout()
- void uncheckout()
- void checkin()
- setVersioned()
- Source getSource(String Revision)
String[] getRevisions()
- boolean isCheckedOut()
Results
- Implemented and tested LenyaSourceFactory
- Started integration of new Lenya/Publication API