You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2005/01/04 11:34:15 UTC

svn commit: r124087 - /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java

Author: tripod
Date: Tue Jan  4 02:34:13 2005
New Revision: 124087

URL: http://svn.apache.org/viewcvs?view=rev&rev=124087
Log:
- adapting Node.isCheckedOut() behaviour to spec 0.16 (--> no exception if non-versionable)
Modified:
   incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java
   incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
   incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java?view=diff&rev=124087&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java&r1=124086&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java&r2=124087
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java	(original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java	Tue Jan  4 02:34:13 2005
@@ -1088,7 +1088,7 @@
         NodeImpl parentNode = (NodeImpl) getParent();
 
         // check if versioning allows write
-        if (!parentNode.safeIsCheckedOut()) {
+        if (!parentNode.isCheckedOut(false)) {
             String msg = parentNode.safeGetJCRPath() + ": cannot remove a child of a checked-in node";
             log.error(msg);
             throw new VersionException(msg);

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java?view=diff&rev=124087&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java&r1=124086&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java&r2=124087
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java	(original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java	Tue Jan  4 02:34:13 2005
@@ -209,8 +209,8 @@
             log.error(msg);
             throw new RepositoryException(msg);
         }
-        // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        // check if versioning allows write (only cheep call)
+        if (!isCheckedOut(false)) {
             String msg = "Cannot set the value of a property of a checked-in node " + safeGetJCRPath() + "/" + name.toString();
             log.error(msg);
             throw new VersionException(msg);
@@ -524,8 +524,8 @@
             // no name collision
         }
 
-        // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        // check if versioning allows write (only cheep call)
+        if (!isCheckedOut(false)) {
             String msg = safeGetJCRPath() + ": cannot add a child to a checked-in node";
             log.error(msg);
             throw new VersionException(msg);
@@ -1201,8 +1201,8 @@
             throw new ItemNotFoundException(safeGetJCRPath() + " has no child node with name " + destName);
         }
 
-        // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        // check if versioning allows write (only cheep call)
+        if (!isCheckedOut(false)) {
             String msg = safeGetJCRPath() + ": cannot change child node ordering of a checked-in node";
             log.error(msg);
             throw new VersionException(msg);
@@ -1748,7 +1748,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        if (!isCheckedOut(true)) {
             String msg = safeGetJCRPath() + ": cannot add a mixin node type to a checked-in node";
             log.error(msg);
             throw new ConstraintViolationException(msg);
@@ -1857,7 +1857,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        if (!isCheckedOut(true)) {
             String msg = safeGetJCRPath() + ": cannot remove a mixin node type from a checked-in node";
             log.error(msg);
             throw new ConstraintViolationException(msg);
@@ -1974,7 +1974,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!safeIsCheckedOut()) {
+        if (!isCheckedOut(true)) {
             return false;
         }
 
@@ -2499,23 +2499,31 @@
     }
 
     /**
+     * Same as {@link javax.jcr.Node#isCheckedOut()} but if <code>inherit</code>
+     * is <code>true</code>, a non-versionable node will return the checked out
+     * state of its parent.
+     *
+     * @param inherit
+     *
      * @see Node#isCheckedOut()
      */
-    public boolean isCheckedOut()
-            throws UnsupportedRepositoryOperationException, RepositoryException {
-        checkVersionable();
-        return getProperty(VersionManager.PROPNAME_IS_CHECKED_OUT).getBoolean();
+    public boolean isCheckedOut(boolean inherit) throws RepositoryException {
+        // search nearest ancestor that is versionable
+        NodeImpl node = this;
+        while (!node.hasProperty(VersionManager.PROPNAME_IS_CHECKED_OUT)) {
+            if (node.isRepositoryRoot() || !inherit) {
+                return true;
+            }
+            node = (NodeImpl) node.getParent();
+        }
+        return node.getProperty(VersionManager.PROPNAME_IS_CHECKED_OUT).getBoolean();
     }
 
     /**
-     * Same as {@link #isCheckedOut()} but without UnsupportedException.
+     * @see Node#isCheckedOut()
      */
-    public boolean safeIsCheckedOut() throws RepositoryException {
-        // what if this node is not versionable but has OPV==Copy?
-        // do we need to search ancestors for a verionable node?
-        return hasProperty(VersionManager.PROPNAME_IS_CHECKED_OUT)
-                ? getProperty(VersionManager.PROPNAME_IS_CHECKED_OUT).getBoolean()
-                : true;
+    public boolean isCheckedOut() throws RepositoryException {
+        return isCheckedOut(false);
     }
 
     /**

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java?view=diff&rev=124087&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java&r1=124086&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java&r2=124087
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java	(original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java	Tue Jan  4 02:34:13 2005
@@ -190,7 +190,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -243,7 +243,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -533,7 +533,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -578,7 +578,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -618,7 +618,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -669,7 +669,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -713,7 +713,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -764,7 +764,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -804,7 +804,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -856,7 +856,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }
 
@@ -896,7 +896,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             String msg = "Cannot alter the value of a property of a checked-in node " + safeGetJCRPath();
             log.error(msg);
             throw new VersionException(msg);
@@ -942,7 +942,7 @@
         sanityCheck();
 
         // check if versioning allows write
-        if (!((NodeImpl) getParent()).safeIsCheckedOut()) {
+        if (!((NodeImpl) getParent()).isCheckedOut(false)) { // only cheep call yet
             throw new VersionException("Cannot alter the value of a property of a checked-in node " + safeGetJCRPath());
         }