JSR-170 Development Plan

Document created by resplin Employee on Jun 6, 2015
Version 1Show Document
  • View in full screen mode

Obsolete Pages{{Obsolete}}

The official documentation is at: http://docs.alfresco.com



JSR-170Back to JSR-170




Note: This page provided for archival purposes only - the plan outlined has been acted upon.

Alfresco Development Effort for JSR-170 Level 1 compliance

We are looking to complete Level-I by our October release - note: this was met.


Scope


JSR-170 defines three levels of compatibility


  1. Level 1 (read-only)
  2. Level 2 (read-write)
  3. Optional (transactions, version, locking, observation, SQL)

For the purposes of development efforts, we'll focus on 1. and transactions to start with.


Assumptions


  1. Alfresco's implementation of the JCR API is built against the Alfresco Java Services API
  2. Access control is provided by underlying service api (including filtering of results)
  3. It is possible to mix JCR and Alfresco Java Service API calls
  4. Remote JCR access is initially provided by JackRabbit's JCR-RMI project

Level 1 Estimates


Total - 20 days


  • Repository Interface & Simple Credentials - 0.5 day
  • Session & Workspace Interfaces - 6 days
  • Node / Property / Value Interfaces - 3.5 days
  • Query Interfaces - 1 day
  • Node Types - 4 days
  • JCR Path Support - 5 days (this could be delivered in parallel)

Level 1 Breakdown


Repository Interface & Simple Credentials


Includes:


  • login
  • getDescriptor

Notes:


  • workspace names map onto our workspace store names
  • authentication handled purely by Alfresco
  • Repository Interface accessed via Spring Bean
  • Descriptor option 'OPTION_TRANSACTIONS_SUPPORTED' = true to be supported
  • Transaction support
    • container managed controlled by Alfresco's Service Beans
    • user managed controlled by Alfresco's UserTransaction interface

Not supporting:


  • null credentials
  • login permission on a workspace
  • notion of 'null' workspace (unless we can determine suitable default workspace)

Session & Workspace Interfaces


Includes:


  • checkPermission (add_node, set_property, remove, read)  (0.5 days)
  • exportDocumentView / SystemView (5 days)
  • namespace prefixes (1 hour)
  • getXXX, itemExists (2 hours)
  • getWorkspace (getWorkspaceNames, getXXX) (2 hours)
  • logout

Notes:


  • estimates assume that JCR Path support is already provided

Not supporting:


  • impersonate
  • lock tokens
  • getValueFactory
  • import, copy, move, restore
  • save

Node / Property / Value Interfaces


Includes:


  • Node: getCorrespondingNodePath, getIndex, getNode, getNodes, getPropXXX, hasXXX (2 days)
  • Property & Value: getValue(), getXXX(), PropertyTypes mapping, conversion, equality (1 day)
  • Item: visitor, getAncestor, getDepth (0.5 day)

Not supporting:


  • getPrimaryItem

Query Interfaces


Includes:


  • createQuery, execute, nodeIterator, rowIterator (1 day)

Notes:


  • support JCR Path
  • optionally support Lucene syntax, full XPath syntax
  • assumption JCR Path is already provided

Not supporting:


  • SQL
  • getQuery, storeAsNode

Node Types


Includes:


  • NodeTypeManager, Node.getPrimaryNodeType, getMixin..., isNodeType (1 day)
  • NodeType, PropertyDefinition, NodeDefinition mapping to Alfresco meta-model (2 days)
  • nt:base type (plus support for jcr:primaryType, jcr:mixinTypes properties) (0.5 day)
  • mix:referencable aspect (plus support for jcr:uuid property)  (0.5 day)

Not supporting:


  • value constraints
  • access to meta model as node types
  • types defined in JCR specification such as nt:file, nt:folder

JCR Path Support


Options:


  1. Add JCR functions & order by to our Hibernate XPath implementation  (5 days)
  2. Take Jackrabbit JCR Path parser and implement engine against our lucene index  (10 days)

Notes:


  • mapping of /jcr:root is required

Attachments

    Outcomes