2. Introductions
David Nuescheler Chief Technology Officer
david@day.com
David Nuescheler
JSR-170 Spec Lead
jsr-170-comments@jcp.org
David Nuescheler
Jackrabbit Committer / Member
uncled@apache.org David Nuescheler
TC Member / CMIS-JCR Liaison
david@day.com
5. JCR.
“The API should be a standard,
implementation independent,
way to access content bi-
directionally on a granular level
to a content repository.”
6. A Content Repository!?
CONTENT REPOSITORY
FEATURES OF AN FEATURES OF A
RDBMS FILESYSTEM
Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control
+
ALL THE OTHER
GOOD STUFF
YOU ALWAYS WANTED
Data First, Versioning, Full-text,
Multi-Value, Sort-Order, Observation
8. Reality Check!
Task
write a “JSP snippet” that lists all the
documents in a folder by “title”.
...Code Snipp
ets courtesy
JSR- 70 Ex
1 of the early
pert-Group
:
9. Reality Check
List all documents in a folder
ession);
<% new LAPI_DOCUMENTS(s
LAPI_D OCUMENTS documents =
new LLValue();
LLValue childTable = ,
s(volumeID, folderID
<% documents.ListObject UMENTS.P ERM_SEE, childTable);
null, null, LAPI_DOC lues();
childCount = node.getContent ildTable.enumerateVa
Count(); Enum eration children = ch
for(int i=0;i<childCount;i reElements()) {
++) { while(children.hasMo alue)e.nextElement()
;
IContent child = node.getC LLValue child = (LLV
JCR API
ontent(i);
toString("Name");
Property title = child.get
PropertyByName("Title"); String title = child.
%><%= title.getValue() %>< %
br/><% %><%= title %><br/><
}
%>
<% }
<% NodeIterator children = node.getNodes();
%>
<%
fndocs
= new
IFnObj
while (children.hasNext()) { ile erator children = page.getPages();
PageIt
wh (chi
fnfold
(idmFo
lderCo
Set
er.get DualProxy(
Conten
ts
Node child = children.nextNode();ldren.hasNext()) extPage();
Page child = children
.n
{
int nu
derCon Property title = child.getProperty("Title");
mDocs ntent. Container toplevel =
for (i = fndo idmFol child.getContent();
nt i = cs.get tentDo Atom title = toplevel
Count( .getAtom("Title");
1;
IFnDoc i <= numDocs );
umentD %><%=ntitle %><br /><% } %><%= title %><br /><%
cume t
));
ual fn ; i++) {
new IF
nD
IFnPro ocumentDualP =
pertie
doc
roxy(f
} %>
= %> tItem(new I
IFnPro sD ndocs.
pertyD ual propset ge
Stri
ng tit ual id fndo
%><%= le = i mTitleProp = c.getPropert nteger(i)));
ti dmTi pr ies ;
if (co tle %><br/>< tleProp.getV opset<% etIte ();
.g er.getDocuments())
mClean % alue() m("Tit cuments = new IDocumentsProxy(bind
cleane up) ; ocuments dole");
ID
r.rele {
} ase(fn documents.cache(); ();
+800
} doc); documents.getCount
in t documentCount = {
%> documentCount; i++) ByIndex(i));
for (int i = 0; i< ocumentProxy (documents.getItem
document = new ID
ment.getTitle()
String title = docu
><%
%><%= title %><br/
}
%>
10. Beyond the Spec
RI & TCK
The S
300 pec: Apache Jackrabbit:
Pages more than a reference
implementation
y
nolog ility Kit:
T ch atib
e
Comp 0 T sts
e
+100
10
11. JSR-170: Some Specifics
Took about 4 years
Investment for Day ~30 man years of work to complete (Spec, TCK & RI)
First JSR in History of the JCP with a true Open Source License (Apache
Style)
Star Spec-Lead Award for process excellence
The OSS Reference Implementation “Jackrabbit” graduated to a Top Level
Apache Project
13. Why Java…
…because of its standardizing body: The JCP.
Good track record with respect to implementations and finished
specifications
Reference Implementations and Technology Compatibility Kit are mandatory
Efficient Specification Cycles
A lot of the JCR specification can still be applied other environments and
languages
18. Known Compliant Repositories
(* partially using 3rd party connectors)
Exo Microsoft
Apache Jackrabbit Oracle XML DB ECMS Platform Sharepoint OpenText Livelink
Day CRX IBM FileNet P8 Xythos Repository Alfresco ECM Vignette V7
Interwoven Saperion +hund
reds o
Repository IBM CM / Domino EMC Documentum Archive registe f TCKs
red
19. Some known JCR Applications
Fast
BEA Portal Sun Oracle WebCenter Enterprise Search
JBoss Portal Interface 21
OpenPortal
Day Communique Spring Framework
magnolia WCMS DAM
Apache Sling Day Communique
Alfresco ECMS Mindquarry Collab
Collaboration Apache Tapestry
QSLabs
Apache Compliance Day Communiqué
Cocoon WCMS IBM FileNet
Artifactory medic-2-medic WebSiteManager
Apache James Maven Proxy mapofmedicine
Exo
ECMS Platform TYPO3
GX WebManager v5.0 WCM
InfoQ Hippo Liferay
Nuxeo ECM Online Community CMS Enterprise Portal
Jahia Sakai
Percussion Framework E-learning
Rhythmix QuickWCM Sourcemix
WCMS Lutece Sourcemix
Portal
21. JSR-283: Some Specifics
Took about 4 years
Investment for Day ~30 man years of work to complete (Spec, TCK & RI)
Star Spec-Lead Award for process excellence
The OSS Reference Implementation “Apache Jackrabbit” Top Level Project
22. Backwards Compatible.
NEW
100%
& IMP
BACKWA ROVE
D
COMPAT RDS
IBLE
Binary Compatible
JSR-170 (JCR v1.0) Applications
do not require modification
Mixed environment supported (1.0 & 2.0 Apps)
23. Reorganized.
NEW
100DEL & BINDING
& IMP
BACKWA ROVE
D D
%
COMPAT RDS IMP ROVE
&
IBLE NEW
MO
Completely re-organized and clarified
Specification
Separate Content Repository model section
Removed a lot of the Java Language specification
24. Bundled.
NEW
100DEL & BINDING
& IMP
BACKWA ROVE
D D
%
COMPAT RDS IMP ROVE
&
IBLE NEW
MO NEW & IMPROVED
OSGI BUNDLE
Shipped jcr-2.0.jar is an OSGI Bundle
Ready to deploy in an OSGI Container
26. Query extensions
AQM
JQOM
NEW
#1 QUER
& IMP
ROVE SQL
2.0
D
Y Abstract Query Model
Java Query Object Model (Java Binding)
SQL Bindings
27. Query extensions
+JOIN
NEW
& IMP
#1 QUER
ROVE
2.0
D Revamped Result-Set to allow for multiple nodes
Y New and Improved query capabilities
28. Query extensions
-XPATH
*well, still available but deprecated
*
NEW
& IMP
Not enough support from the EG
#1 QUER
ROVE
2.0
D
JQOM allows for many implementations
Y Jackrabbit / CRX will support XPATH
29. Access Control Management
+ACL
+POLICY
NEW & IM
PROVED
#2 ACL
2.0 Allows to set ACL and Access Control Policies
30. Retention Policy & Hold
+RETENTION
+LEGAL HOLD
NEW
& IMP
ROVE
#3 RM
2.0
D
Support for interaction with RM systems
Allows setting and introspection of Retention
Policies and Holds
31. Simple versioning
+LINEAR
VERSIONING
2.0
ED
NEW & IMPROV
#4 SIMPLE Simplified Versioning Model to allow
VERSIONING for ease of adoption.
32. Lifecycle Management
+BPM
Allows to express and introspect Lifecycle status
NEW & IM and transitions.
PROVED
#5 LIFECYCLE
2.0
33. Nodetype Registration
+REGISTER
NODETYPES
NEW
& IMP
ROVE
#6 NODE
2.0
D
MANAGE TYPE
MENT Standardized way of registering new and modify
registered Nodetypes
34. New property & nodetypes
+mix:title
+URL +mix:created
+mix:lastModified
+WEAK REFERENCE +mix:language
+DECIMAL +mix:etag
+nt:address
NEW & IMPROVED
#7 NEW PROPERTY
& NODETYPES
2.0 Things we missed in JCR 1.0 applications
35. Workspace Management
+CREATE &
REMOVE WS
2.0
PROVED
NEW & IM
#8 WORKSPACE Standardized way of create and remove
MANAGEMENT workspaces
36. Shareable nodes
+GRAPH
Multi-filing. Nodes can have multiple parents.
2.0
NEW & IMPROVED
#9 SHAREABLE
NODES
37. Journalling Observation
+DELTA SINCE?
NEW
& IMP what changed since I last checked?
#10 JOU
ROVE
2.0
D
RNALLIN
OBSERVA G
TION
39. Beyond the Spec.
NEW
& IMP
APACHE ROVE
NEW & PJACKRABBIT
2.0
D
ROVEN ;)
Robust Code base
Fully JCR 2.0 Compliant ;)
More tooling than ever
Established eco-system
40. Beyond the Spec.
NEW
& IMP
APACHE ROVE
NEW & PJACKRABBIT
2.0
D
ROVEN ;) YST
ATAL
ING!
C
JCR
APACHE SL
Restful Web Framework
Running on top of JCR
Never build a JCR WebApp without it. Seriously!