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
- Level 1 (read-only)
- Level 2 (read-write)
- Optional (transactions, version, locking, observation, SQL)
For the purposes of development efforts, we'll focus on 1. and transactions to start with.
Assumptions
- Alfresco's implementation of the JCR API is built against the Alfresco Java Services API
- Access control is provided by underlying service api (including filtering of results)
- It is possible to mix JCR and Alfresco Java Service API calls
- 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:
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:
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 jcrrimaryType, 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:
- Add JCR functions & order by to our Hibernate XPath implementation (5 days)
- Take Jackrabbit JCR Path parser and implement engine against our lucene index (10 days)
Notes:
- mapping of /jcr:root is required