JSR-170 Development Plan

Showing results for 
Search instead for 
Did you mean: 

JSR-170 Development Plan

0 0 1,165

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.


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.


  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


  • login
  • getDescriptor


  • 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


  • 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


  • estimates assume that JCR Path support is already provided

Not supporting:

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

Node / Property / Value Interfaces


  • 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


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


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

Not supporting:

  • SQL
  • getQuery, storeAsNode

Node Types


  • NodeTypeManager, Node.getPrimaryNodeType, getMixin..., isNodeType (1 day)
  • NodeType, PropertyDefinition, NodeDefinition mapping to Alfresco meta-model (2 days)
  • nt:base type (plus support for jcrSmiley TonguerimaryType, 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


  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)


  • mapping of /jcr:root is required