You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/05/12 17:12:11 UTC
svn commit: r773930 - in
/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version:
VersionHistoryImpl.java VersionImpl.java
Author: angela
Date: Tue May 12 15:12:11 2009
New Revision: 773930
URL: http://svn.apache.org/viewvc?rev=773930&view=rev
Log:
JCR-2104: JSR 283 Versioning
Modified:
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionImpl.java
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java?rev=773930&r1=773929&r2=773930&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java Tue May 12 15:12:11 2009
@@ -36,6 +36,7 @@
import org.apache.jackrabbit.commons.iterator.RangeIteratorAdapter;
import org.apache.jackrabbit.commons.iterator.FrozenNodeIteratorAdapter;
+import org.apache.jackrabbit.commons.iterator.VersionIteratorAdapter;
import org.apache.jackrabbit.jcr2spi.ItemLifeCycleListener;
import org.apache.jackrabbit.jcr2spi.LazyItemIterator;
import org.apache.jackrabbit.jcr2spi.NodeImpl;
@@ -115,6 +116,42 @@
}
/**
+ * @see VersionHistory#getAllLinearVersions()
+ */
+ public VersionIterator getAllLinearVersions() throws RepositoryException {
+ checkStatus();
+
+ // TODO: improve and use lazy loading of versions as needed.
+ // TODO: change session.getNodeByUUID to Session.getNodeByIdentifier as soon as implemented
+
+ List versions = new ArrayList();
+ Version rootV = getRootVersion();
+ Node vn = session.getNodeByUUID(getVersionableUUID());
+ Version v = vn.getBaseVersion();
+ while (v != null && !rootV.isSame(v)) {
+ versions.add(0, v);
+ v = v.getLinearPredecessor();
+ }
+ versions.add(0, rootV);
+
+ return new VersionIteratorAdapter(versions);
+ }
+
+ /**
+ * @see VersionHistory#getAllFrozenNodes()
+ */
+ public NodeIterator getAllFrozenNodes() throws RepositoryException {
+ return new FrozenNodeIteratorAdapter(getAllVersions());
+ }
+
+ /**
+ * @see VersionHistory#getAllLinearFrozenNodes()
+ */
+ public NodeIterator getAllLinearFrozenNodes() throws RepositoryException {
+ return new FrozenNodeIteratorAdapter(getAllLinearVersions());
+ }
+
+ /**
* @see VersionHistory#getVersion(String)
*/
public Version getVersion(String versionName) throws VersionException, RepositoryException {
@@ -232,30 +269,6 @@
session.getVersionStateManager().removeVersion((NodeState) getItemState(), vState);
}
-
- /**
- * @see VersionHistory#getAllFrozenNodes()
- */
- public NodeIterator getAllFrozenNodes() throws RepositoryException {
- return new FrozenNodeIteratorAdapter(getAllVersions());
- }
-
- /**
- * @see VersionHistory#getAllLinearFrozenNodes()
- */
- public NodeIterator getAllLinearFrozenNodes() throws RepositoryException {
- // TODO
- throw new UnsupportedRepositoryOperationException("JCR-1104");
- }
-
- /**
- * @see VersionHistory#getAllLinearVersions()
- */
- public VersionIterator getAllLinearVersions() throws RepositoryException {
- // TODO
- throw new UnsupportedRepositoryOperationException("JCR-1104");
- }
-
/**
* @see VersionHistory#getVersionableIdentifier()
*/
Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionImpl.java?rev=773930&r1=773929&r2=773930&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionImpl.java Tue May 12 15:12:11 2009
@@ -27,6 +27,7 @@
import javax.jcr.version.Version;
import javax.jcr.version.VersionHistory;
+import javax.jcr.version.VersionIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.Node;
@@ -49,9 +50,6 @@
//------------------------------------------------------------< Version >---
/**
- *
- * @return
- * @throws RepositoryException
* @see Version#getContainingHistory()
*/
public VersionHistory getContainingHistory() throws RepositoryException {
@@ -59,9 +57,6 @@
}
/**
- *
- * @return
- * @throws RepositoryException
* @see Version#getCreated()
*/
public Calendar getCreated() throws RepositoryException {
@@ -69,9 +64,6 @@
}
/**
- *
- * @return
- * @throws RepositoryException
* @see Version#getSuccessors()
*/
public Version[] getSuccessors() throws RepositoryException {
@@ -82,14 +74,20 @@
* @see Version#getLinearSuccessor()
*/
public Version getLinearSuccessor() throws RepositoryException {
- // TODO
- throw new UnsupportedRepositoryOperationException("JCR-1104");
+ // TODO: improve.
+ VersionHistory vh = getContainingHistory();
+ for (VersionIterator it = vh.getAllLinearVersions(); it.hasNext();) {
+ Version v = it.nextVersion();
+ if (isSame(v.getLinearPredecessor())) {
+ return v;
+ }
+ }
+
+ // no linear successor found
+ return null;
}
/**
- *
- * @return
- * @throws RepositoryException
* @see Version#getPredecessors()
*/
public Version[] getPredecessors() throws RepositoryException {