Differences between revisions 49 and 50
Revision 49 as of 2005-05-15 17:50:54
Size: 3928
Comment:
Revision 50 as of 2009-09-20 23:27:19
Size: 3930
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 63: Line 63:
 1. move publication API draft from [http://wyona.org University of Zurich Publication] into Lenya and merge  1. move publication API draft from [[http://wyona.org|University of Zurich Publication]] into Lenya and merge

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 is slide:.

    • using src="lenya:/" is equivalent to using src="lenya://{page-envelope:publication-id}/{page-envelope:area}". This will heavily reduce sitemap redundancies and still provides enough flexibility

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.*Source instead of o.a.c.c.repository.Repository?

    • existing Slide implementation
    • Repository focuses 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

  1. move publication API draft from University of Zurich Publication into Lenya and merge

  2. extend Slide source with transactable interface
  3. Implement a LenyaSourceFactory as described in this document

  4. Replace <map:generate src="path"/> by <map:generate src="lenya://path"/> or <map:generate src="lenya:/path"/>. The LenyaSourceFactory will delegate to the context: 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 is!CheckedOut()

Results

  • Implemented and tested LenyaSourceFactory

  • Started integration of new Lenya/Publication API

ProposalRepository (last edited 2009-09-20 23:27:19 by localhost)