jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ju...@apache.org
Subject svn commit: r644653 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
Date Fri, 04 Apr 2008 09:37:35 GMT
Author: jukka
Date: Fri Apr  4 02:37:32 2008
New Revision: 644653

URL: http://svn.apache.org/viewvc?rev=644653&view=rev
Log:
JCR-1510: [PATCH] more verbose exception messages (BatchedItemOperations)
    - Patch by Dave Brosius + some line wrapping

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java?rev=644653&r1=644652&r2=644653&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
(original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/BatchedItemOperations.java
Fri Apr  4 02:37:32 2008
@@ -253,7 +253,9 @@
         int ind = destName.getIndex();
         if (ind > 0) {
             // subscript in name element
-            String msg = "invalid destination path (subscript in name element is not allowed)";
+            String msg =
+                "invalid destination path: " + safeGetJCRPath(destPath)
+                + " (subscript in name element is not allowed)";
             log.debug(msg);
             throw new RepositoryException(msg);
         }
@@ -302,7 +304,9 @@
 
         // 3. verify that source has mixin mix:shareable
         if (!isShareable(srcState)) {
-            String msg = "Cloning inside a workspace is only allowed for shareable nodes.";
+            String msg =
+                "Cloning inside a workspace is only allowed for shareable nodes; "
+                + safeGetJCRPath(srcPath) + " is not shareable.";
             log.debug(msg);
             throw new RepositoryException(msg);
         }
@@ -312,14 +316,18 @@
         NodeId destParentId = destParentState.getNodeId();
         if (destParentId.equals(srcId) ||
                 hierMgr.isAncestor(srcId, destParentId)) {
-            String msg = "This would create a share cycle.";
+            String msg =
+                "Cloning " + safeGetJCRPath(srcPath) + " to "
+                + safeGetJCRPath(destPath) + " would create a share cycle.";
             log.debug(msg);
             throw new RepositoryException(msg);
         }
 
         // 5. do clone operation (modify and store affected states)
         if (!srcState.addShare(destParentState.getNodeId())) {
-            String msg = "Adding a shareable node twice to the same parent is not supported.";
+            String msg =
+                "Adding a shareable node (" + safeGetJCRPath(srcPath)
+                + ") twice to the same parent is not supported.";
             log.debug(msg);
             throw new UnsupportedRepositoryOperationException(msg);
         }
@@ -413,7 +421,9 @@
         int ind = destName.getIndex();
         if (ind > 0) {
             // subscript in name element
-            String msg = "invalid destination path (subscript in name element is not allowed)";
+            String msg =
+                "invalid copy destination path: " + safeGetJCRPath(destPath)
+                + " (subscript in name element is not allowed)";
             log.debug(msg);
             throw new RepositoryException(msg);
         }
@@ -514,20 +524,21 @@
 
         // check precondition
         if (!stateMgr.inEditMode()) {
-            throw new IllegalStateException("not in edit mode");
+            throw new IllegalStateException("cannot move path " + safeGetJCRPath(srcPath)
+ " because manager is not in edit mode");
         }
 
         // 1. check paths & retrieve state
 
         try {
             if (srcPath.isAncestorOf(destPath)) {
-                String msg = safeGetJCRPath(destPath)
-                        + ": invalid destination path (cannot be descendant of source path)";
+                String msg =
+                    safeGetJCRPath(destPath) + ": invalid destination path"
+                    + " (cannot be descendant of source path)";
                 log.debug(msg);
                 throw new RepositoryException(msg);
             }
         } catch (MalformedPathException mpe) {
-            String msg = "invalid path: " + safeGetJCRPath(destPath);
+            String msg = "invalid path for move: " + safeGetJCRPath(destPath);
             log.debug(msg);
             throw new RepositoryException(msg, mpe);
         }
@@ -544,8 +555,9 @@
         int ind = destName.getIndex();
         if (ind > 0) {
             // subscript in name element
-            String msg = safeGetJCRPath(destPath)
-                    + ": invalid destination path (subscript in name element is not allowed)";
+            String msg =
+                safeGetJCRPath(destPath) + ": invalid destination path"
+                + " (subscript in name element is not allowed)";
             log.debug(msg);
             throw new RepositoryException(msg);
         }
@@ -573,7 +585,7 @@
         } else {
             // check shareable case
             if (target.isShareable()) {
-                String msg = "Moving a shareable node is not supported.";
+                String msg = "Moving a shareable node (" + safeGetJCRPath(srcPath) + " )
is not supported.";
                 log.debug(msg);
                 throw new UnsupportedRepositoryOperationException(msg);
             }
@@ -629,7 +641,9 @@
 
         // check precondition
         if (!stateMgr.inEditMode()) {
-            throw new IllegalStateException("not in edit mode");
+            throw new IllegalStateException(
+                    "cannot remove node (" + safeGetJCRPath(nodePath)
+                    + ") because manager is not in edit mode");
         }
 
         // 1. retrieve affected state
@@ -708,7 +722,8 @@
             }
             // make sure current session is granted write access on parent node
             if (!accessMgr.isGranted(parentPath, nodeName, Permission.ADD_NODE)) {
-                throw new AccessDeniedException(safeGetJCRPath(parentState.getNodeId())
+                throw new AccessDeniedException(
+                        safeGetJCRPath(parentState.getNodeId())
                         + ": not allowed to add child node");
             }
         }
@@ -719,7 +734,8 @@
             NodeDef parentDef = ntReg.getNodeDef(parentState.getDefinitionId());
             // make sure parent node is not protected
             if (parentDef.isProtected()) {
-                throw new ConstraintViolationException(safeGetJCRPath(parentState.getNodeId())
+                throw new ConstraintViolationException(
+                        safeGetJCRPath(parentState.getNodeId())
                         + ": cannot add child node to protected parent node");
             }
             // make sure there's an applicable definition for new child node
@@ -740,8 +756,9 @@
                 try {
                     conflictingState = (NodeState) stateMgr.getItemState(conflictingId);
                 } catch (ItemStateException ise) {
-                    String msg = "internal error: failed to retrieve state of "
-                            + safeGetJCRPath(conflictingId);
+                    String msg =
+                        "internal error: failed to retrieve state of "
+                        + safeGetJCRPath(conflictingId);
                     log.debug(msg);
                     throw new RepositoryException(msg, ise);
                 }
@@ -750,7 +767,8 @@
                 // check same-name sibling setting of both target and existing node
                 if (!conflictingTargetDef.allowsSameNameSiblings()
                         || !newNodeDef.allowsSameNameSiblings()) {
-                    throw new ItemExistsException("cannot add child node '"
+                    throw new ItemExistsException(
+                            "cannot add child node '"
                             + nodeName.getLocalName() + "' to "
                             + safeGetJCRPath(parentState.getNodeId())
                             + ": colliding with same-named existing node");
@@ -861,12 +879,14 @@
                 }
                 // make sure current session is allowed to remove target node
                 if (!accessMgr.isGranted(targetPath, Permission.REMOVE_NODE)) {
-                    throw new AccessDeniedException(safeGetJCRPath(targetPath)
+                    throw new AccessDeniedException(
+                            safeGetJCRPath(targetPath)
                             + ": not allowed to remove node");
                 }
             } catch (ItemNotFoundException infe) {
-                String msg = "internal error: failed to check access rights for "
-                        + safeGetJCRPath(targetPath);
+                String msg =
+                    "internal error: failed to check access rights for "
+                    + safeGetJCRPath(targetPath);
                 log.debug(msg);
                 throw new RepositoryException(msg, infe);
             }
@@ -877,16 +897,19 @@
         if ((options & CHECK_CONSTRAINTS) == CHECK_CONSTRAINTS) {
             NodeDef parentDef = ntReg.getNodeDef(parentState.getDefinitionId());
             if (parentDef.isProtected()) {
-                throw new ConstraintViolationException(safeGetJCRPath(parentId)
+                throw new ConstraintViolationException(
+                        safeGetJCRPath(parentId)
                         + ": cannot remove child node of protected parent node");
             }
             NodeDef targetDef = ntReg.getNodeDef(targetState.getDefinitionId());
             if (targetDef.isMandatory()) {
-                throw new ConstraintViolationException(safeGetJCRPath(targetPath)
+                throw new ConstraintViolationException(
+                        safeGetJCRPath(targetPath)
                         + ": cannot remove mandatory node");
             }
             if (targetDef.isProtected()) {
-                throw new ConstraintViolationException(safeGetJCRPath(targetPath)
+                throw new ConstraintViolationException(
+                        safeGetJCRPath(targetPath)
                         + ": cannot remove protected node");
             }
         }
@@ -901,12 +924,14 @@
                     try {
                         NodeReferences refs = stateMgr.getNodeReferences(refsId);
                         if (refs.hasReferences()) {
-                            throw new ReferentialIntegrityException(safeGetJCRPath(targetPath)
+                            throw new ReferentialIntegrityException(
+                                    safeGetJCRPath(targetPath)
                                     + ": cannot remove node with references");
                         }
                     } catch (ItemStateException ise) {
-                        String msg = "internal error: failed to check references on "
-                                + safeGetJCRPath(targetPath);
+                        String msg =
+                            "internal error: failed to check references on "
+                            + safeGetJCRPath(targetPath);
                         log.error(msg, ise);
                         throw new RepositoryException(msg, ise);
                     }
@@ -1104,7 +1129,7 @@
 
         // check precondition
         if (!stateMgr.inEditMode()) {
-            throw new IllegalStateException("not in edit mode");
+            throw new IllegalStateException("cannot create node state for " + nodeName +
" because manager is not in edit mode");
         }
 
         NodeDef def = findApplicableNodeDefinition(nodeName, nodeTypeName, parent);
@@ -1153,8 +1178,9 @@
             // try default primary type from definition
             nodeTypeName = def.getDefaultPrimaryType();
             if (nodeTypeName == null) {
-                String msg = "an applicable node type could not be determined for "
-                        + nodeName;
+                String msg =
+                    "an applicable node type could not be determined for "
+                    + nodeName;
                 log.debug(msg);
                 throw new ConstraintViolationException(msg);
             }
@@ -1226,7 +1252,9 @@
 
         // check precondition
         if (!stateMgr.inEditMode()) {
-            throw new IllegalStateException("not in edit mode");
+            throw new IllegalStateException(
+                    "cannot create property state for " + propName
+                    + " because manager is not in edit mode");
         }
 
         // find applicable definition
@@ -1442,7 +1470,8 @@
         }
         boolean checkedOut = propState.getValues()[0].getBoolean();
         if (!checkedOut) {
-            throw new VersionException(safeGetJCRPath(nodePath) + " is checked-in");
+            throw new VersionException(
+                    safeGetJCRPath(nodePath) + " is checked-in");
         }
     }
 
@@ -1476,8 +1505,8 @@
         NodeState node = getNodeState(nodePath);
         NodeDef parentDef = ntReg.getNodeDef(node.getDefinitionId());
         if (parentDef.isProtected()) {
-            throw new ConstraintViolationException(safeGetJCRPath(nodePath)
-                    + ": node is protected");
+            throw new ConstraintViolationException(
+                    safeGetJCRPath(nodePath) + ": node is protected");
         }
     }
 
@@ -1528,8 +1557,9 @@
         } catch (NoSuchItemStateException nsise) {
             throw new ItemNotFoundException(safeGetJCRPath(id));
         } catch (ItemStateException ise) {
-            String msg = "internal error: failed to retrieve state of "
-                    + safeGetJCRPath(id);
+            String msg =
+                "internal error: failed to retrieve state of "
+                + safeGetJCRPath(id);
             log.debug(msg);
             throw new RepositoryException(msg, ise);
         }
@@ -1750,7 +1780,9 @@
                         // or an ancestor thereof
                         if (id.equals(destParentId)
                                 || hierMgr.isAncestor(id, destParentId)) {
-                            String msg = "cannot remove ancestor node";
+                            String msg =
+                                "cannot remove node " + safeGetJCRPath(srcPath)
+                                + " because it is an ancestor of the destination";
                             log.debug(msg);
                             throw new RepositoryException(msg);
                         }
@@ -1768,7 +1800,8 @@
                     }
                     break;
                 default:
-                    throw new IllegalArgumentException("unknown flag");
+                    throw new IllegalArgumentException(
+                            "unknown flag for copying node state: " + flag);
             }
             newState = stateMgr.createNew(id, srcState.getNodeTypeName(), destParentId);
             // copy node state
@@ -1808,7 +1841,7 @@
                         if (stateMgr.hasItemState(mappedId)) {
                             NodeState destState = (NodeState) stateMgr.getItemState(mappedId);
                             if (!destState.isShareable()) {
-                                String msg = "Remapped child is not shareable.";
+                                String msg = "Remapped child (" + safeGetJCRPath(srcPath)
+ ") is not shareable.";
                                 throw new ItemStateException(msg);
                             }
                             if (!destState.addShare(id)) {
@@ -1892,7 +1925,9 @@
             }
             return newState;
         } catch (ItemStateException ise) {
-            String msg = "internal error: failed to copy state of " + srcState.getNodeId();
+            String msg =
+                "internal error: failed to copy state of "
+                + srcState.getNodeId();
             log.debug(msg);
             throw new RepositoryException(msg, ise);
         }
@@ -1999,8 +2034,9 @@
         try {
             return ntReg.getEffectiveNodeType(types).includesNodeType(NameConstants.MIX_REFERENCEABLE);
         } catch (NodeTypeConflictException ntce) {
-            String msg = "internal error: failed to build effective node type for node "
-                    + state.getNodeId();
+            String msg =
+                "internal error: failed to build effective node type for node "
+                + state.getNodeId();
             log.debug(msg);
             throw new RepositoryException(msg, ntce);
         }



Mime
View raw message