You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2013/08/07 16:51:36 UTC
svn commit: r1511339 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version:
VersionHistoryImpl.java VersionImpl.java
Author: mreutegg
Date: Wed Aug 7 14:51:36 2013
New Revision: 1511339
URL: http://svn.apache.org/r1511339
Log:
OAK-168: Basic JCR VersionManager support
- Wrap JCR API method implementations with perform(new SessionOperation())
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java?rev=1511339&r1=1511338&r2=1511339&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryImpl.java Wed Aug 7 14:51:36 2013
@@ -45,7 +45,6 @@ import org.apache.jackrabbit.oak.util.TO
/**
* {@code VersionHistoryImpl}...
- * TODO: wrap all calls with sessionDelegate.perform()
*/
public class VersionHistoryImpl extends NodeImpl<VersionHistoryDelegate>
implements VersionHistory {
@@ -61,12 +60,22 @@ public class VersionHistoryImpl extends
@Override
public String getVersionableIdentifier() throws RepositoryException {
- return dlg.getVersionableIdentifier();
+ return perform(new SessionOperation<String>() {
+ @Override
+ public String perform() throws RepositoryException {
+ return dlg.getVersionableIdentifier();
+ }
+ });
}
@Override
public Version getRootVersion() throws RepositoryException {
- return new VersionImpl(dlg.getRootVersion(), sessionContext);
+ return perform(new SessionOperation<Version>() {
+ @Override
+ public Version perform() throws RepositoryException {
+ return new VersionImpl(dlg.getRootVersion(), sessionContext);
+ }
+ });
}
@Override
@@ -76,13 +85,18 @@ public class VersionHistoryImpl extends
@Override
public VersionIterator getAllVersions() throws RepositoryException {
- return new VersionIteratorAdapter(Iterators.transform(
- dlg.getAllVersions(), new Function<VersionDelegate, Version>() {
+ return perform(new SessionOperation<VersionIterator>() {
@Override
- public Version apply(VersionDelegate input) {
- return new VersionImpl(input, sessionContext);
+ public VersionIterator perform() throws RepositoryException {
+ return new VersionIteratorAdapter(Iterators.transform(
+ dlg.getAllVersions(), new Function<VersionDelegate, Version>() {
+ @Override
+ public Version apply(VersionDelegate input) {
+ return new VersionImpl(input, sessionContext);
+ }
+ }));
}
- }));
+ });
}
@Override
@@ -96,16 +110,26 @@ public class VersionHistoryImpl extends
}
@Override
- public Version getVersion(String versionName)
+ public Version getVersion(final String versionName)
throws VersionException, RepositoryException {
- return new VersionImpl(dlg.getVersion(versionName), sessionContext);
+ return perform(new SessionOperation<Version>() {
+ @Override
+ public Version perform() throws RepositoryException {
+ return new VersionImpl(dlg.getVersion(versionName), sessionContext);
+ }
+ });
}
@Override
- public Version getVersionByLabel(String label)
+ public Version getVersionByLabel(final String label)
throws VersionException, RepositoryException {
- String oakLabel = sessionContext.getOakName(label);
- return new VersionImpl(dlg.getVersionByLabel(oakLabel), sessionContext);
+ return perform(new SessionOperation<Version>() {
+ @Override
+ public Version perform() throws RepositoryException {
+ String oakLabel = sessionContext.getOakName(label);
+ return new VersionImpl(dlg.getVersionByLabel(oakLabel), sessionContext);
+ }
+ });
}
@Override
@@ -114,7 +138,7 @@ public class VersionHistoryImpl extends
final boolean moveLabel)
throws LabelExistsVersionException, VersionException,
RepositoryException {
- sessionDelegate.perform(new SessionOperation<Void>() {
+ perform(new SessionOperation<Void>() {
@Override
public Void perform() throws RepositoryException {
String oakLabel = sessionContext.getOakName(label);
@@ -129,7 +153,7 @@ public class VersionHistoryImpl extends
@Override
public void removeVersionLabel(final String label)
throws VersionException, RepositoryException {
- sessionDelegate.perform(new SessionOperation<Void>() {
+ perform(new SessionOperation<Void>() {
@Override
public Void perform() throws RepositoryException {
String oakLabel = sessionContext.getOakName(label);
@@ -152,25 +176,35 @@ public class VersionHistoryImpl extends
@Override
public String[] getVersionLabels() throws RepositoryException {
- List<String> labels = new ArrayList<String>();
- for (String label : dlg.getVersionLabels()) {
- labels.add(sessionContext.getJcrName(label));
- }
- return labels.toArray(new String[labels.size()]);
+ return perform(new SessionOperation<String[]>() {
+ @Override
+ public String[] perform() throws RepositoryException {
+ List<String> labels = new ArrayList<String>();
+ for (String label : dlg.getVersionLabels()) {
+ labels.add(sessionContext.getJcrName(label));
+ }
+ return labels.toArray(new String[labels.size()]);
+ }
+ });
}
@Override
- public String[] getVersionLabels(Version version)
+ public String[] getVersionLabels(final Version version)
throws VersionException, RepositoryException {
if (!version.getContainingHistory().getPath().equals(getPath())) {
throw new VersionException("Version is not contained in this " +
"VersionHistory");
}
- List<String> labels = new ArrayList<String>();
- for (String label : dlg.getVersionLabels(version.getIdentifier())) {
- labels.add(sessionContext.getJcrName(label));
- }
- return labels.toArray(new String[labels.size()]);
+ return perform(new SessionOperation<String[]>() {
+ @Override
+ public String[] perform() throws RepositoryException {
+ List<String> labels = new ArrayList<String>();
+ for (String label : dlg.getVersionLabels(version.getIdentifier())) {
+ labels.add(sessionContext.getJcrName(label));
+ }
+ return labels.toArray(new String[labels.size()]);
+ }
+ });
}
@Override
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java?rev=1511339&r1=1511338&r2=1511339&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionImpl.java Wed Aug 7 14:51:36 2013
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.oak.jcr.Ses
import org.apache.jackrabbit.oak.jcr.delegate.PropertyDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.VersionDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.VersionManagerDelegate;
+import org.apache.jackrabbit.oak.jcr.operation.SessionOperation;
import org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl;
import org.apache.jackrabbit.oak.plugins.version.VersionConstants;
import org.apache.jackrabbit.oak.util.TODO;
@@ -49,15 +50,25 @@ public class VersionImpl extends NodeImp
@Override
public VersionHistory getContainingHistory() throws RepositoryException {
- return new VersionHistoryImpl(
- getVersionManagerDelegate().createVersionHistory(
- dlg.getParent()), sessionContext);
+ return perform(new SessionOperation<VersionHistory>() {
+ @Override
+ public VersionHistory perform() throws RepositoryException {
+ return new VersionHistoryImpl(
+ getVersionManagerDelegate().createVersionHistory(
+ dlg.getParent()), sessionContext);
+ }
+ });
}
@Override
public Calendar getCreated() throws RepositoryException {
- PropertyDelegate dlg = getPropertyOrThrow(JcrConstants.JCR_CREATED);
- return ValueFactoryImpl.createValue(dlg.getSingleState(), sessionContext).getDate();
+ return sessionDelegate.perform(new SessionOperation<Calendar>() {
+ @Override
+ public Calendar perform() throws RepositoryException {
+ PropertyDelegate dlg = getPropertyOrThrow(JcrConstants.JCR_CREATED);
+ return ValueFactoryImpl.createValue(dlg.getSingleState(), sessionContext).getDate();
+ }
+ });
}
@Override
@@ -76,32 +87,47 @@ public class VersionImpl extends NodeImp
@Override
public Version[] getPredecessors() throws RepositoryException {
- PropertyDelegate p = getPropertyOrThrow(VersionConstants.JCR_PREDECESSORS);
- List<Version> predecessors = new ArrayList<Version>();
- VersionManagerDelegate vMgr = getVersionManagerDelegate();
- for (Value v : getValues(p)) {
- String id = v.getString();
- predecessors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
- }
- return predecessors.toArray(new Version[predecessors.size()]);
+ return perform(new SessionOperation<Version[]>() {
+ @Override
+ public Version[] perform() throws RepositoryException {
+ PropertyDelegate p = getPropertyOrThrow(VersionConstants.JCR_PREDECESSORS);
+ List<Version> predecessors = new ArrayList<Version>();
+ VersionManagerDelegate vMgr = getVersionManagerDelegate();
+ for (Value v : getValues(p)) {
+ String id = v.getString();
+ predecessors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
+ }
+ return predecessors.toArray(new Version[predecessors.size()]);
+ }
+ });
}
@Override
public Version[] getSuccessors() throws RepositoryException {
- PropertyDelegate p = getPropertyOrThrow(VersionConstants.JCR_SUCCESSORS);
- List<Version> successors = new ArrayList<Version>();
- VersionManagerDelegate vMgr = getVersionManagerDelegate();
- for (Value v : getValues(p)) {
- String id = v.getString();
- successors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
- }
- return successors.toArray(new Version[successors.size()]);
+ return perform(new SessionOperation<Version[]>() {
+ @Override
+ public Version[] perform() throws RepositoryException {
+ PropertyDelegate p = getPropertyOrThrow(VersionConstants.JCR_SUCCESSORS);
+ List<Version> successors = new ArrayList<Version>();
+ VersionManagerDelegate vMgr = getVersionManagerDelegate();
+ for (Value v : getValues(p)) {
+ String id = v.getString();
+ successors.add(new VersionImpl(vMgr.getVersionByIdentifier(id), sessionContext));
+ }
+ return successors.toArray(new Version[successors.size()]);
+ }
+ });
}
@Override
public Node getFrozenNode() throws RepositoryException {
- return sessionContext.createNodeOrNull(
- dlg.getChild(VersionConstants.JCR_FROZENNODE));
+ return perform(new SessionOperation<Node>() {
+ @Override
+ public Node perform() throws RepositoryException {
+ return sessionContext.createNodeOrNull(
+ dlg.getChild(VersionConstants.JCR_FROZENNODE));
+ }
+ });
}
//------------------------------< internal >--------------------------------